lanan-system-vue/src/views/base/carmain/components/CarLabelForm.vue
2024-08-08 10:56:01 +08:00

186 lines
5.6 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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.licenseNumber }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
车辆品牌
</template>
<!-- <dict-tag :type="DICT_TYPE.DICT_SYS_USER_SEX" :value="formData.sex" /> -->
{{formData.brandStr}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
车辆型号
</template>
<!-- <dict-tag :type="DICT_TYPE.DICT_SYS_USER_SEX" :value="formData.sex" /> -->
{{formData.modelStr}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
车架号
</template>
{{ formData.vin }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
发动机号码
</template>
{{ formData.engineNumber }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
车辆注册日期
</template>
{{ parseTime(formData.carRegisterDate, '{y}-{m}-{d}') }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
车辆性质
</template>
<dict-tag :type="DICT_TYPE.DICT_CAR_NATURE" :value="formData.carNature" />
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
车辆类别
</template>
<dict-tag :type="DICT_TYPE.DICT_CAR_CATEGORY" :value="formData.carCategory" />
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
最近办理业务
</template>
<dict-tag :type="DICT_TYPE.DICT_CUS_BUSI_TYPE" :value="formData.recentlyHandledBusiness" />
</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 CarMainApi from '@/api/base/carmain';
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(id) {
this.dialogVisible = true;
this.formLoading = true;
this.reset()
try {
const res = await CarMainApi.getCarMain(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 CarMainApi.setLabelList(data);
this.$modal.msgSuccess("设置标签成功");
this.dialogVisible = false;
this.$emit('success');
} finally {
this.formLoading = false
}
},
}
};
</script>