|
@@ -44,6 +44,15 @@
|
|
|
{{ row.isActive === 1 ? '启用' : '禁用' }}
|
|
{{ row.isActive === 1 ? '启用' : '禁用' }}
|
|
|
</el-tag>
|
|
</el-tag>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 地区选择器插槽 -->
|
|
|
|
|
+ <template slot="regionNameForm" slot-scope="{value, column}">
|
|
|
|
|
+ <region-cascader
|
|
|
|
|
+ v-model="form.regionName"
|
|
|
|
|
+ @change="handleRegionChange"
|
|
|
|
|
+ :placeholder="column.placeholder || '请选择省/市/区'"
|
|
|
|
|
+ />
|
|
|
|
|
+ </template>
|
|
|
</avue-crud>
|
|
</avue-crud>
|
|
|
</basic-container>
|
|
</basic-container>
|
|
|
</template>
|
|
</template>
|
|
@@ -51,6 +60,7 @@
|
|
|
<script>
|
|
<script>
|
|
|
import { getList, add, update, remove, getDetail } from '@/api/order/address'
|
|
import { getList, add, update, remove, getDetail } from '@/api/order/address'
|
|
|
import { mapGetters } from 'vuex'
|
|
import { mapGetters } from 'vuex'
|
|
|
|
|
+import RegionCascader from '@/components/region-cascader'
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 客户地址查询参数
|
|
* 客户地址查询参数
|
|
@@ -104,6 +114,10 @@ import { mapGetters } from 'vuex'
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
name: 'OrderAddress',
|
|
name: 'OrderAddress',
|
|
|
|
|
+ components: {
|
|
|
|
|
+ RegionCascader
|
|
|
|
|
+ },
|
|
|
|
|
+ // 在data中添加regionCascaderValue
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
/**
|
|
/**
|
|
@@ -125,6 +139,12 @@ export default {
|
|
|
loading: true,
|
|
loading: true,
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * 地区级联选择器的值
|
|
|
|
|
+ * @type {Array}
|
|
|
|
|
+ */
|
|
|
|
|
+ regionCascaderValue: [],
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
* 分页信息
|
|
* 分页信息
|
|
|
* @type {{pageSize: number, currentPage: number, total: number}}
|
|
* @type {{pageSize: number, currentPage: number, total: number}}
|
|
|
*/
|
|
*/
|
|
@@ -219,11 +239,12 @@ export default {
|
|
|
prop: 'regionName',
|
|
prop: 'regionName',
|
|
|
search: true,
|
|
search: true,
|
|
|
width: 150,
|
|
width: 150,
|
|
|
|
|
+ formSlot: true, // 启用表单插槽
|
|
|
rules: [
|
|
rules: [
|
|
|
{
|
|
{
|
|
|
required: true,
|
|
required: true,
|
|
|
- message: '请输入地区名称',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
|
|
+ message: '请选择地区',
|
|
|
|
|
+ trigger: 'change'
|
|
|
}
|
|
}
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
@@ -374,6 +395,26 @@ export default {
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * 地区选择改变事件
|
|
|
|
|
+ * @param {Object} data - 选择的地区数据
|
|
|
|
|
+ */
|
|
|
|
|
+ handleRegionChange(data) {
|
|
|
|
|
+ const { values, regionName, regionCode } = data
|
|
|
|
|
+
|
|
|
|
|
+ // 直接设置表单字段值
|
|
|
|
|
+ this.form.regionName = regionName
|
|
|
|
|
+ // this.form.regionCode = regionCode
|
|
|
|
|
+ this.regionCascaderValue = values
|
|
|
|
|
+
|
|
|
|
|
+ // 手动触发表单验证
|
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
|
+ if (this.$refs.crud && this.$refs.crud.$refs.dialogForm) {
|
|
|
|
|
+ this.$refs.crud.$refs.dialogForm.validateField('regionName')
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
* 新增前的回调
|
|
* 新增前的回调
|
|
|
* @param {Function} done - 完成回调
|
|
* @param {Function} done - 完成回调
|
|
|
* @param {string} type - 操作类型
|
|
* @param {string} type - 操作类型
|
|
@@ -384,9 +425,19 @@ export default {
|
|
|
try {
|
|
try {
|
|
|
const res = await getDetail(this.form.id)
|
|
const res = await getDetail(this.form.id)
|
|
|
this.form = res.data.data
|
|
this.form = res.data.data
|
|
|
|
|
+
|
|
|
|
|
+ // 如果有地区数据,需要解析并设置级联选择器的值
|
|
|
|
|
+ if (this.form.regionCode) {
|
|
|
|
|
+ // 这里可能需要根据regionCode反向解析出完整的省市区路径
|
|
|
|
|
+ // 暂时清空,让用户重新选择
|
|
|
|
|
+ this.regionCascaderValue = []
|
|
|
|
|
+ }
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
|
window.console.log(error)
|
|
window.console.log(error)
|
|
|
}
|
|
}
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 新增时清空地区选择
|
|
|
|
|
+ this.regionCascaderValue = []
|
|
|
}
|
|
}
|
|
|
done()
|
|
done()
|
|
|
},
|
|
},
|