| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="记录名称:" prop="year" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.name" placeholder="记录名称"></el-input> |
| | | <el-form-item label="记录名称:" prop="recordName" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.recordName" placeholder="记录名称"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="编号:" prop="year" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.name" placeholder="编号"></el-input> |
| | | <el-form-item label="编号:" prop="number" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.number" placeholder="编号"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="客户单位/姓名:" prop="year" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.name" placeholder="客户单位/姓名"></el-input> |
| | | <el-form-item label="客户单位/姓名:" prop="client" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.client" placeholder="客户单位/姓名"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="联系电话:" prop="year" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.name" placeholder="联系电话"></el-input> |
| | | <el-form-item label="联系电话:" prop="phone" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.phone" placeholder="联系电话"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="沟通时间:" prop="year" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.name" placeholder="沟通时间"></el-input> |
| | | <el-form-item label="沟通时间:" prop="comTime" > |
| | | <el-date-picker |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.comTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择日期" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="沟通方式:" prop="year" > |
| | | <el-form-item label="沟通方式:" prop="comMethod" > |
| | | <el-checkbox-group v-model="state.checkMethodList" :disabled="title === '查看'" style="display: flex;flex-wrap: wrap" @change="changeCheck('method')" class="custom-checkbox-group"> |
| | | <div v-for="(item,index) in state.methodsList"> |
| | | <el-checkbox :label="item.id" :key="item.id" style="margin-left: 20px;"> |
| | |
| | | <el-input |
| | | :disabled="title === '查看'" |
| | | v-if="item.id == 5 && state.checkMethodList.includes(5)" |
| | | v-model="state.form.otherProduct" |
| | | v-model="state.form.methodMess" |
| | | style="margin-left: 5px;width: 160px" |
| | | placeholder="请输入其他" |
| | | size="small" |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="沟通地点:" prop="year" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.name" placeholder="沟通地点"></el-input> |
| | | <el-form-item label="沟通地点:" prop="comAddr" > |
| | | <el-input :disabled="title === '查看'" v-model="state.form.comAddr" placeholder="沟通地点"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="沟通类型:" prop="year" > |
| | | <el-form-item label="沟通类型:" prop="comType" > |
| | | <el-checkbox-group v-model="state.checkTypeList" :disabled="title === '查看'" style="display: flex;flex-wrap: wrap" @change="changeCheck('type')" class="custom-checkbox-group"> |
| | | <div v-for="(item,index) in state.typeList"> |
| | | <el-checkbox :label="item.id" :key="item.id" style="margin-left: 20px;"> |
| | |
| | | <el-input |
| | | :disabled="title === '查看'" |
| | | v-if="item.id == 5 && state.checkTypeList.includes(5)" |
| | | v-model="state.form.otherProduct" |
| | | v-model="state.form.typeMess" |
| | | style="margin-left: 5px;width: 160px" |
| | | placeholder="请输入其他" |
| | | size="small" |
| | |
| | | </el-row> |
| | | <el-row :gutter="24" style="margin-top: 10px"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="详细内容:" prop="year" > |
| | | <el-input :disabled="title === '查看'" type="textarea" :rows="4" v-model="state.form.name" placeholder="详细内容"></el-input> |
| | | <el-form-item label="详细内容:" prop="detailMess" > |
| | | <el-input :disabled="title === '查看'" type="textarea" :rows="4" v-model="state.form.detailMess" placeholder="详细内容"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="记录人:" prop="year" > |
| | | <el-select clearable v-model="state.form.fictionId" :disabled="state.title =='查看'" filterable placeholder="编制" style="width: 100%"> |
| | | <el-form-item label="记录人:" prop="detailUser" > |
| | | <el-select clearable v-model="state.form.detailUser" :disabled="title =='查看'" filterable placeholder="" style="width: 100%"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="时间:" prop="year" > |
| | | <el-form-item label="时间:" prop="detailTime" > |
| | | <el-date-picker |
| | | v-model="state.form.fictionTime" |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.detailTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择编制日期" |
| | | placeholder="请选择日期" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="处理过程描述:" prop="year" > |
| | | <el-input :disabled="title === '查看'" type="textarea" :rows="4" v-model="state.form.name" placeholder="详细内容"></el-input> |
| | | <el-form-item label="处理过程描述:" prop="disposeMess" > |
| | | <el-input :disabled="title === '查看'" type="textarea" :rows="4" v-model="state.form.disposeMess" placeholder="处理过程描述"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="记录人:" prop="year" > |
| | | <el-select clearable v-model="state.form.fictionId" :disabled="state.title =='查看'" filterable placeholder="编制" style="width: 100%"> |
| | | <el-form-item label="记录人:" prop="disposeUser" > |
| | | <el-select clearable v-model="state.form.disposeUser" :disabled="title =='查看'" filterable placeholder="" style="width: 100%"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="时间:" prop="year" > |
| | | <el-form-item label="时间:" prop="disposeTime" > |
| | | <el-date-picker |
| | | v-model="state.form.fictionTime" |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.disposeTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择编制日期" |
| | | placeholder="请选择日期" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | |
| | | </el-row> |
| | | <el-row :gutter="24"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="领导审阅:" prop="year" > |
| | | <el-input :disabled="title === '查看'" type="textarea" :rows="4" v-model="state.form.name" placeholder="详细内容"></el-input> |
| | | <el-form-item label="领导审阅:" prop="leaderMess" > |
| | | <el-input :disabled="title === '查看'" type="textarea" :rows="4" v-model="state.form.leaderMess" placeholder="领导审阅"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="记录人:" prop="year" > |
| | | <el-select clearable v-model="state.form.fictionId" :disabled="state.title =='查看'" filterable placeholder="编制" style="width: 100%"> |
| | | <el-form-item label="记录人:" prop="leaderUser" > |
| | | <el-select clearable v-model="state.form.leaderUser" :disabled="title =='查看'" filterable placeholder="" style="width: 100%"> |
| | | <el-option |
| | | v-for="item in state.peopleList" |
| | | :key="item.id" |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="时间:" prop="year" > |
| | | <el-form-item label="时间:" prop="leaderTime" > |
| | | <el-date-picker |
| | | v-model="state.form.fictionTime" |
| | | :disabled="title === '查看'" |
| | | v-model="state.form.leaderTime" |
| | | type="date" |
| | | value-format="YYYY-MM-DD" |
| | | placeholder="请选择编制日期" |
| | | placeholder="请选择日期" |
| | | style="width: 100%" |
| | | /> |
| | | </el-form-item> |
| | |
| | | import {getDept, getObject, getObjectPage} from "@/api/qualityObjectives/object"; |
| | | import {addTable, editTable, getTargetById} from "@/api/qualityObjectives/table"; |
| | | import {addNeedDiscren, editNeedDiscren} from "@/api/need/need"; |
| | | import {addCustomerCommunicate, editCustomerCommunicate} from "@/api/customerCommunicate"; |
| | | import {verifyPhone} from "@/utils/validate"; |
| | | |
| | | const dialogVisible = ref(false); |
| | | const title = ref(""); |
| | |
| | | const selectPopperClass = "max-width-select"; |
| | | const emit = defineEmits(["getList"]); |
| | | const dataRef = ref(); |
| | | const validatePhone = (rule, value, callback)=>{ |
| | | if(value === ''){ |
| | | callback(new Error('请输入手机号')) |
| | | }else{ |
| | | if(!verifyPhone(value)){ |
| | | callback(new Error('手机号格式有误')) |
| | | }else{ |
| | | callback() |
| | | } |
| | | } |
| | | } |
| | | const state = reactive({ |
| | | form: { |
| | | id: '', |
| | | companyId: null, |
| | | deptId: null, |
| | | year: '', |
| | | fictionId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | fictionTime: null, |
| | | frequency: '', |
| | | expectContents:[], |
| | | companyId: '', |
| | | recordName: "", |
| | | number: "", |
| | | client: "", |
| | | phone: "", |
| | | comTime: "", |
| | | comAddr: "", |
| | | comMethod: "", |
| | | methodMess: "", |
| | | comType: "", |
| | | typeMess: "", |
| | | detailMess: "", |
| | | detailUser: null, |
| | | detailTime: "", |
| | | disposeMess: "", |
| | | disposeUser: null, |
| | | disposeTime: "", |
| | | leaderMess: "", |
| | | leaderUser: null, |
| | | leaderTime: "" |
| | | }, |
| | | rules: { |
| | | companyId: [{ required: true, message: '请选择企业', trigger: 'blur' }], |
| | | deptId: [{ required: true, message: '请选择部门', trigger: 'blur' }], |
| | | year: [{ required: true, message: '请选择年份', trigger: 'blur' }], |
| | | fictionId: [{ required: true, message: '请选择编制人', trigger: 'blur' }], |
| | | ratifyId: [{ required: true, message: '请选择批准人', trigger: 'blur' }], |
| | | checkId: [{ required: true, message: '请选择审核人', trigger: 'blur' }], |
| | | fictionTime: [{ required: true, message: '请选择日期', trigger: 'blur' }], |
| | | frequency: [{ required: true, message: '请输入监测频率', trigger: 'blur' }], |
| | | stakeholder: [{required: true, message: "", trigger: "blur"}], |
| | | expectation: [{required: true, message: "", trigger: "blur"}], |
| | | solutions: [{required: true, message: "", trigger: "blur"}], |
| | | expectContents:[{ required: true, message: '请填写相关方期望或要求识别表', trigger: 'blur' }], |
| | | recordName: [{ required: true, message: '请输入记录名称', trigger: 'blur' }], |
| | | number: [{ required: true, message: '请输入编号', trigger: 'blur' }], |
| | | client: [{ required: true, message: '请输入客户单位/姓名', trigger: 'blur' }], |
| | | phone: [{required: true, trigger: "blur", validator: validatePhone}], |
| | | comTime: [{ required: true, message: '请选择沟通时间', trigger: 'blur' }], |
| | | comAddr: [{ required: true, message: '请输入沟通地点', trigger: 'blur' }], |
| | | comMethod: [{ required: true, message: '请选择沟通方式', trigger: 'blur' }], |
| | | methodMess: [{ required: true, message: '请输入其他详细内容', trigger: 'blur' }], |
| | | comType: [{ required: true, message: '请选择沟通类型', trigger: 'blur' }], |
| | | typeMess: [{ required: true, message: '请输入其他详细内容', trigger: 'blur' }], |
| | | detailMess: [{ required: true, message: '请输入详细内容', trigger: 'blur' }], |
| | | detailUser: [{ required: true, message: '请选择详细内容记录人', trigger: 'blur' }], |
| | | detailTime: [{ required: true, message: '请选择时间', trigger: 'blur' }], |
| | | disposeMess: [{ required: true, message: '请输入处理过程描述', trigger: 'blur' }], |
| | | disposeUser: [{ required: true, message: '请选择处理过程记录人', trigger: 'blur' }], |
| | | disposeTime: [{ required: true, message: '请选择时间', trigger: 'blur' }], |
| | | leaderMess: [{ required: true, message: '请输入领导审阅', trigger: 'blur' }], |
| | | leaderUser: [{ required: true, message: '请选择记录人', trigger: 'blur' }], |
| | | leaderTime: [{ required: true, message: '请选择时间', trigger: 'blur' }], |
| | | }, |
| | | peopleList: [], |
| | | isAdmin: false, |
| | | companyList: [], |
| | | deptList: [], |
| | | checkMethodList: [], |
| | | methodsList: [ |
| | | { |
| | |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '面谈' |
| | | name: '电话' |
| | | }, |
| | | { |
| | | id: 3, |
| | |
| | | } |
| | | title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ; |
| | | if(type === 'edit' || type === 'review') { |
| | | state.form = JSON.parse(JSON.stringify(value)); |
| | | for (let key in state.form) { |
| | | if (key in value) { |
| | | state.form[key] = value[key]; |
| | | } |
| | | } |
| | | state.checkMethodList = state.form.comMethod.split(',').map(Number) |
| | | state.checkTypeList = state.form.comType.split(',').map(Number) |
| | | if(state.isAdmin){ |
| | | state.form.companyId = value.companyId |
| | | state.form.companyName = value.companyName |
| | | } |
| | | } |
| | | await getDeptList() |
| | | await getPeopleList() |
| | | dialogVisible.value = true; |
| | | } |
| | |
| | | const valid = await busRef.value.validate(); |
| | | if(valid){ |
| | | if(title.value === '新增'){ |
| | | // console.log('sta',state.form) |
| | | // const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | // const res = await addNeedDiscren(data) |
| | | // if(res.code === 200){ |
| | | // ElMessage({ |
| | | // type: 'success', |
| | | // message: '新增成功' |
| | | // }); |
| | | // }else{ |
| | | // ElMessage.warning(res.message) |
| | | // } |
| | | // emit("getList") |
| | | // busRef.value.clearValidate(); |
| | | // reset(); |
| | | // dialogVisible.value = false; |
| | | console.log('sta',state.form) |
| | | const {id, ...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await addCustomerCommunicate(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | | message: '新增成功' |
| | | }); |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | emit("getList") |
| | | busRef.value.clearValidate(); |
| | | reset(); |
| | | dialogVisible.value = false; |
| | | }else if(title.value === '编辑'){ |
| | | const {...data} = JSON.parse(JSON.stringify(state.form)) |
| | | const res = await editNeedDiscren(data) |
| | | const res = await editCustomerCommunicate(data) |
| | | if(res.code === 200){ |
| | | ElMessage({ |
| | | type: 'success', |
| | |
| | | } |
| | | } |
| | | } |
| | | const getDeptList = async () => { |
| | | if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){ |
| | | return |
| | | } |
| | | const param = { |
| | | pageNum: 1, |
| | | pageSize: 999, |
| | | companyId: state.form.companyId |
| | | } |
| | | const res = await getDept(param) |
| | | if(res.code === 200){ |
| | | state.deptList = res.data |
| | | } |
| | | } |
| | | |
| | | const getPeopleList = async ()=> { |
| | | if(state.isAdmin && (state.form.companyId == 0 || state.form.companyId == null)){ |
| | | return |
| | |
| | | const reset = () => { |
| | | state.form = { |
| | | id: '', |
| | | companyId: null, |
| | | deptId: null, |
| | | year: '', |
| | | fictionId: null, |
| | | checkId: null, |
| | | ratifyId: null, |
| | | fictionTime: null, |
| | | frequency: '', |
| | | expectContents:[], |
| | | companyId: '', |
| | | recordName: "", |
| | | number: "", |
| | | client: "", |
| | | phone: "", |
| | | comTime: "", |
| | | comAddr: "", |
| | | comMethod: "", |
| | | methodMess: "", |
| | | comType: "", |
| | | typeMess: "", |
| | | detailMess: "", |
| | | detailUser: null, |
| | | detailTime: "", |
| | | disposeMess: "", |
| | | disposeUser: null, |
| | | disposeTime: "", |
| | | leaderMess: "", |
| | | leaderUser: null, |
| | | leaderTime: "" |
| | | } |
| | | state.companyList = [] |
| | | state.checkMethodList = [] |
| | | state.checkTypeList = [] |
| | | } |
| | | |
| | | |
| | | const changeCheck = (type) => { |
| | | switch (type) { |
| | | case 'type': state.form.qualification = state.checkTypeList.join(','); if(!state.checkTypeList.includes(8))state.form.otherQualifi = '' ;break; |
| | | case 'method': state.form.product = state.checkMethodList.join(',');if(!state.checkMethodList.includes(5))state.form.otherProduct = ''; break; |
| | | case 'type': state.form.comType = state.checkTypeList.join(','); if(!state.checkTypeList.includes(5))state.form.typeMess = '' ;break; |
| | | case 'method': state.form.comMethod = state.checkMethodList.join(',');if(!state.checkMethodList.includes(5))state.form.methodMess = ''; break; |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | const selectValueCom = (val) => { |
| | | state.form.fictionId = null |
| | | state.form.checkId = null |
| | | state.form.ratifyId = null |
| | | state.form.deptId = null |
| | | state.form.detailUser = null |
| | | state.form.detailTime = null |
| | | state.form.disposeUser = null |
| | | state.form.disposeTime = null |
| | | state.form.leaderUser = null |
| | | state.form.leaderTime = null |
| | | state.companyList.forEach(item => { |
| | | if(item.name === val){ |
| | | state.form.companyId = item.id |
| | | } |
| | | }) |
| | | getDeptList() |
| | | |
| | | getPeopleList() |
| | | } |
| | | |
| | | |
| | | const addTableData = () => { |
| | | state.form.expectContents.push({expectContentMesses: [{}]}) |
| | | } |
| | | const addObject = (val,itemIndex) => { |
| | | state.form.expectContents.forEach((item,index) => { |
| | | if(index == itemIndex){ |
| | | item.expectContentMesses.push({}) |
| | | } |
| | | }) |
| | | } |
| | | const delObject = (val,itemIndex) => { |
| | | state.form.expectContents.forEach((item,index) => { |
| | | if(index == itemIndex){ |
| | | if(item.expectContentMesses.length == 1){ |
| | | state.form.expectContents.splice(index,1) |
| | | }else { |
| | | item.expectContentMesses.pop() |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | defineExpose({ |
| | | openDialog |