first commit

This commit is contained in:
2026-01-08 14:58:16 +08:00
commit 556e5d64aa
9575 changed files with 1621095 additions and 0 deletions
@@ -0,0 +1,125 @@
let ADDRESS_DIALOG = {
template: /*language=HTML*/ `
<el-dialog
:append-to-body="true"
:modal-append-to-body="false"
:close-on-click-modal="false"
:visible.sync="dialogVisible"
title="收货地址"
width="30%">
<el-form :model="formData" label-position="right" label-suffix="" label-width="120px" ref="addForm">
<el-form-item :rules="{required:true,message: '请选择地址信息', trigger: 'blur'}"
label="地址信息"
prop="addressList">
<el-cascader
:options="dzOptions"
:props="{ expandTrigger: 'hover' }"
@change="handleChange"
clearable
placeholder="请选择地址信息"
style="width: 100%"
v-model="formData.addressList"></el-cascader>
</el-form-item>
<el-form-item
:rules="{required:true,message: '请填写您的详细地址', trigger: 'blur'}"
label="详细地址"
prop="addressDetail">
<el-input maxlength="100"
placeholder="请输入详细地址信息,如道路、门牌号、小区、楼栋号、单元等信息"
rows="3"
show-word-limit
type="textarea"
v-model="formData.addressDetail"></el-input>
</el-form-item>
<el-form-item
:rules="{required:true,message: '请填写收货人姓名', trigger: 'blur'}"
label="收货人姓名"
prop="userName">
<el-input maxlength="11"
placeholder="请填写收货人姓名"
v-model="formData.userName"></el-input>
</el-form-item>
<el-form-item
:rules="{required:true,message: '请填写手机号码', trigger: 'blur'}"
label="手机号码"
prop="tel">
<el-input maxlength="11" placeholder="请填写手机号码"
type="tel"
v-model="formData.tel"></el-input>
</el-form-item>
</el-form>
<span class="dialog-footer" slot="footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button @click="doSaveUserAddress" type="primary">保存</el-button>
</span>
</el-dialog>
`,
mixins: [initTableMixins],
data() {
return {
dzOptions: chengShiList,
dialogVisible: false
}
},
methods: {
handleChange(val) {
if (val) {
let provinceName = ""
let cityName = ""
let countyName = ""
const province = this.dzOptions.find(c => c.value === val[0])
provinceName = province.label
const city = province.children.find(p => p.value === val[1])
cityName = city.label
if (val.length === 3) {
const county = city.children.find(p => p.value === val[2])
countyName = county.label
this.$set(this.formData, "areaCode", county.value)
} else {
this.$set(this.formData, "areaCode", city.value)
}
this.$set(this.formData, "province", provinceName)
this.$set(this.formData, "city", cityName)
this.$set(this.formData, "county", countyName)
}
},
doSaveUserAddress() {
this.$refs["addForm"].validate(async (valid) => {
if (valid) {
const resp = await this.$axios.post("/platform/welfare/addressManage/doSaveUserAddress", { data: JSON.stringify(this.formData) })
if (resp.code === 0) {
this.$message({
message: resp.msg,
type: "success"
})
this.$emit("select_user_address")
this.dialogVisible = false
} else {
this.$message.error(resp.msg)
}
}
})
},
openEdit(row) {
row.addressList = []
const province = chengShiList.find(c => c.label === row.province)
row.addressList.push(province.value)
const city = province.children.find(p => p.label === row.city)
row.addressList.push(city.value)
if (row.county) {
const county = city.children.find(p => p.label === row.county)
if (county) {
row.addressList.push(county.value)
}
}
this.formData = row
this.dialogVisible = true
}
}
}
<!--#include("/platform/zhgh/welfare/include/chengSh.js"){}#-->
@@ -0,0 +1,139 @@
<!--#
layout("/layouts/platform.html"){
#-->
<div id="app">
<guava ref="guava">
<template>
<el-card shadow="never">
<table-tool :app="this" label="收货地址">
<el-button @click="openAddress" size="small" type="primary">新增地址</el-button>
</table-tool>
<el-table
:data="tableData"
:size="tableSize"
@sort-change="pageOrder"
ref="table"
row-key="id"
style="width: 100%"
v-loading="tableLoading"
>
<el-table-column label="序号" type="index" width="80px"></el-table-column>
<el-table-column
:key="column.prop"
:label="column.label"
:prop="column.prop"
:sortable="column.sortable"
:width="column.width"
show-overflow-tooltip
v-for="column in tableColumns"
>
<template scope="{row}" v-if="column.prop=='address'">{{row.province}} {{row.city}} {{row.county}}</template>
</el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="操作" prop="userOnline" width="170px">
<template scope="{row}">
<el-button @click="openEdit(row)" size="mini" type="primary">修改</el-button>
<el-button @click="doDelete(row.id)" size="mini" type="danger">删除</el-button>
</template>
</el-table-column>
<el-table-column align="center" fixed="right" header-align="center" label="" prop="userOnline" width="170px">
<template scope="{row}">
<span v-if="row.isDefault">
<el-tag type="danger">默认地址</el-tag>
</span>
<span v-else>
<el-button @click="doDefault(row)" size="mini" type="primary">设为默认</el-button>
</span>
</template>
</el-table-column>
</el-table>
</el-card>
</template>
</guava>
<address-dialog ref="addressDialog" @select_user_address="selectUserAddress"></address-dialog>
</div>
<script nonce="${cspNonce!}">
<!--#include("addressDialog.js"){}#-->
new Vue({
el: "#app",
mixins: [initTableMixins],
data() {
return {
dzOptions: chengShiList,
dialogVisible: false,
tableColumns: [
{ prop: "userName", label: "收货人" },
{ prop: "address", label: "所在地区" },
{ prop: "addressDetail", label: "详细地址" },
{ prop: "tel", label: "电话" }
]
}
},
components: {
"address-dialog": ADDRESS_DIALOG
},
methods: {
selectUserAddress(){
this.pageData()
},
pageData() {
this.tableLoading = true
this.$axios.post("/platform/welfare/addressManage/selectUserAddress", this.pageForm).then((resp) => {
this.tableLoading = false
if (resp.code === 0) {
this.tableData = resp.data
} else {
this.$message.error(resp.msg)
}
})
},
openAddress() {
this.$refs.addressDialog.dialogVisible = true
this.$refs.addressDialog.formData = {}
},
doDelete(id) {
this.$confirm("此操作将永久删除该地址, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(async () => {
const resp = await this.$axios.post("/platform/welfare/addressManage/deleteAddress", { id: id })
if (resp.code === 0) {
this.doSearch()
this.$message({
type: "success",
message: resp.msg
})
} else {
this.$message.error(resp.msg)
}
})
},
openEdit(row) {
this.$refs.addressDialog.dialogVisible = true
this.$refs.addressDialog.openEdit(row)
},
async doDefault(row) {
const resp = await this.$axios.post(loc() + "/doDefault", { id: row.id })
if (resp.code === 0) {
this.doSearch()
this.$message({
type: "success",
message: resp.msg
})
} else {
this.$message.error(resp.msg)
}
}
},
async created() {
this.pageData()
}
})
</script>
<!--#
}
#-->