lanan-system-vue/src/views/base/customer/CustomerLabelForm.vue

181 lines
5.1 KiB
Vue
Raw Normal View History

2024-08-06 17:12:38 +08:00
<template>
<div>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="60%" v-dialogDrag append-to-body>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>客户基本信息</span>
</div>
<el-descriptions class="margin-top" :column="3" border>
<el-descriptions-item>
<template slot="label">
客户名称
</template>
{{ formData.cusName }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
性别
</template>
<dict-tag :type="DICT_TYPE.DICT_SYS_USER_SEX" :value="formData.sex"/>
</el-descriptions-item>
2024-10-10 16:14:12 +08:00
2024-08-06 17:12:38 +08:00
<el-descriptions-item>
<template slot="label">
联系方式
</template>
{{ formData.phoneNumber }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
生日
</template>
{{ parseTime(formData.birthday, '{y}-{m}-{d}') }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
客户来源
</template>
<dict-tag :type="DICT_TYPE.DICT_CUS_DATA_FROM" :value="formData.dataFrom"/>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
最近办理业务
</template>
<dict-tag :type="DICT_TYPE.DICT_CUS_BUSI_TYPE" :value="formData.nearDoContent"/>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
联系地址
</template>
{{ formData.address }}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>客户标签</span>
<el-button @click="openBusiLabel" style="float: right; padding: 3px 0" type="text">打标签</el-button>
</div>
<el-row>
<el-empty v-if="formData.labelList.length == 0" description="暂无标签信息" :image-size="100"></el-empty>
<template v-for="item in formData.labelList">
<el-popover
placement="top-start"
width="200"
trigger="hover"
:content="item.labelContent">
<el-tag
style="margin-left: 5px"
:key="item.id"
closable
@close="tagClose(item)"
slot="reference"
:type="item.labelType">
{{ item.labelName }}
</el-tag>
</el-popover>
</template>
</el-row>
</el-card>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</div>
</el-dialog>
<BusiLabelForm ref="busiLabelForm" @ok="setLabel"/>
</div>
</template>
<script>
import * as CustomerMainApi from '@/api/base/customer';
import BusiLabelForm from '@/views/base/label/BusiLabelForm.vue';
export default {
name: "CustomerLabelForm",
components: {BusiLabelForm},
data() {
return {
// 弹出层标题
dialogTitle: "",
// 是否显示弹出层
dialogVisible: false,
// 表单的加载中1修改时的数据加载2提交的按钮禁用
formLoading: false,
//回参
formData: {
labelList: [],
},
};
},
methods: {
/** 删除标签 */
tagClose(row){
let id1 = this.formData.labelList.findIndex(item => {
if (item.id == row.id) {
return true
}
})
this.formData.labelList.splice(id1, 1)
},
/** 打开弹窗 */
async open(row) {
this.dialogVisible = true;
this.formLoading = true;
this.reset()
try {
const res = await CustomerMainApi.getCustomerMain(row.id);
this.formData = res.data
this.dialogTitle = "打标签";
} finally {
this.formLoading = false;
}
},
/**删除标签信息*/
deleteLabel(row) {
this.formData.labelList.forEach((item, index) => {
if (item.id == row.id) {
this.formData.labelList.splice(index, 1)
}
})
},
/**重置*/
reset() {
this.formData = {
labelList: [],
}
},
/**设置标签内容*/
setLabel(row){
this.formData.labelList.push(JSON.parse(JSON.stringify(row)))
},
/**新增业务标签*/
openBusiLabel(){
this.$refs["busiLabelForm"].open(this.formData);
},
/** 提交按钮 */
async submitForm() {
this.formLoading = true
try {
const data = this.formData;
await CustomerMainApi.setLabelList(data);
this.$modal.msgSuccess("设置标签成功");
this.dialogVisible = false;
this.$emit('success');
} finally {
this.formLoading = false
}
},
}
};
</script>