Browse Source

核对字段

feature
mk 1 year ago
parent
commit
f5b6e68283
  1. 3
      package.json
  2. 3
      src/main.js
  3. 101
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  4. 23
      src/views/modules/shequzhili/event/cpts/event-info.vue
  5. 42
      src/views/modules/shequzhili/event/cpts/process-form-assign.vue
  6. 176
      src/views/modules/shequzhili/event/cpts/process-form-complete.vue
  7. 61
      src/views/modules/shequzhili/event/cpts/process-form-contact.vue
  8. 46
      src/views/modules/shequzhili/event/cpts/process-form-process.vue
  9. 28
      src/views/modules/shequzhili/event/cpts/process-form.vue
  10. 2
      src/views/modules/shequzhili/event/eventList.vue

3
package.json

@ -62,7 +62,8 @@
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.0.7",
"vuex": "^3.1.1",
"xlsx": "^0.17.1"
"xlsx": "^0.17.1",
"dayjs": "^1.11.7"
},
"devDependencies": {
"@antv/f2": "^3.8.10-beta.1",

3
src/main.js

@ -48,6 +48,7 @@ import PopTips from "@/components/PopTips/index.vue";
import PopHomeTip from "@/components/PopHomeTip/index.vue";
import NameSplit from "@/components/NameSplit/index.vue";
import RelationGraph from "relation-graph";
import dayjs from 'dayjs'
// import AddNodeJw from "@/components/JwTree/addNode.vue";
//按钮
@ -103,7 +104,7 @@ Vue.directive("fixed", {
// 挂载全局
Vue.prototype.$http = http;
Vue.prototype.$sensitive = desensitization;
Vue.prototype.$dayjs = dayjs
// el-uploader的header配置
Vue.prototype.$getElUploadHeaders = () => ({
Authorization: localStorage.getItem("token") || "",

101
src/views/modules/shequzhili/event/cpts/event-detail.vue

@ -10,73 +10,75 @@
<div class="flex">
<div class="item">
<div class="label">受理员编号</div>
<div class="value">123456789</div>
<div class="value">{{ info.clerkNumber || '--' }}</div>
<div class="label">办结时限</div>
<div class="value border-right">2024-20-54</div>
<div class="value border-right">{{ info.closeCaseTime || '--' }}</div>
</div>
<div class="item">
<div class="label">工单编号</div>
<div class="value">{{eventDetailData.workOrderNum}}</div>
<div class="value">{{ info.workOrderNum || '--' }}</div>
<div class="label">紧急程度</div>
<div class="value border-right">一版</div>
<div class="value border-right">{{ info.exigency || '--' }}</div>
</div>
<div class="item">
<div class="label">来电类别</div>
<div class="value">诉求</div>
<div class="value">{{ info.callCategory || '--' }}</div>
<div class="label">信息来源</div>
<div class="value border-right">{{eventDetailData.sourceTypeName}}</div>
<div class="value border-right">{{ info.messageSource || '--' }}</div>
</div>
<div class="item">
<div class="label">是否回复</div>
<div class="value"></div>
<div class="value">{{ info.replayed === 0 ? '不回复' : info.replayed ===
1?'恢复':'--'}}</div>
<div class="label">是否保密</div>
<div class="value border-right"></div>
<div class="value border-right">{{ info.replayed ===
0 ? '不保密' :info.replayed === 1?'保密':'--'}}</div>
</div>
<div class="item">
<div class="label">联系人</div>
<div class="value">{{eventDetailData.name}}</div>
<div class="value">{{ info.name || '--' }}</div>
<div class="label">联系电话</div>
<div class="value border-right">{{eventDetailData.mobile || '--'}}</div>
<div class="value border-right">{{ info.mobile || '--' }}</div>
</div>
<div class="item">
<div class="label">联系地址</div>
<div class="value flex-1">{{eventDetailData.address}}</div>
<div class="value flex-1">{{ info.address || '--'}}</div>
</div>
<div class="item">
<div class="label">回复备注</div>
<div class="value flex-1"></div>
<div class="value flex-1">{{ info.replayRemark || '--'}}</div>
</div>
<div class="item">
<div class="label">问题分类</div>
<div class="value flex-1"></div>
<div class="value flex-1">{{ info.categoryAllName ||'--'}}</div>
</div>
<div class="item">
<div class="label">问题描述</div>
<div class="value flex-1">
{{eventDetailData.eventContent}}
{{ info.eventContent || '--'}}
</div>
</div>
<div class="item">
<div class="label">指派部门</div>
<div class="value flex-1"></div>
<div class="value flex-1">{{ info.deptName || '--'}}</div>
</div>
<div class="item">
<div class="label">转办意见</div>
<div class="value flex-1">{{ demandForm.content }}</div>
<div class="value flex-1">{{ info.transferAdvice || '--'}}</div>
</div>
<div class="item">
<div class="label">办理要求</div>
<div class="value flex-1">{{ demandForm.banliyaoqiu }}</div>
<div class="value flex-1">{{ info.handlingReq || '--'}}</div>
</div>
<div class="item">
<div class="label">联系当事人时限</div>
<div class="value ">{{eventDetailData.contactTime}}</div>
<div class="value ">{{ info.contactTime || '--'}}</div>
<div class="label">(部门)办结时限</div>
<div class="value border-right">{{eventDetailData.timeLimit}}</div>
<div class="value border-right">{{ info.timeLimit || '--'}}</div>
</div>
<div class="item">
<div class="label">办理结果</div>
<div class="value flex-1"></div>
<div class="value flex-1">--</div>
</div>
</div>
</div>
@ -97,22 +99,6 @@ function iniData() {
info: {},
eventDetailCopy: {},
showType: "",
projectId: "",
demandForm: {
gridId: "",
categoryCode: "",
parentCode: "",
content: "",
reportType: "",
reportUserName: "",
reportUserMobile: "",
reportTime: "",
wantServiceTime: "",
demandUserId: "",
demandUserName: "",
demandUserMobile: "",
banliyaoqiu: ""
},
satisfyLevel: "",
//
showSatisfy: false,
@ -174,9 +160,9 @@ export default {
}
this.$EventBus.$on('handelInputEventContent', ({ type, value }) => {
if (type === 'opinion') {
this.demandForm.content = value
} else if (type === 'banliyaoqiu') {
this.demandForm.banliyaoqiu = value
this.info.transferAdvice = value;
} else if (type === 'handlingReq') {
this.info.handlingReq = value;
}
})
},
@ -193,44 +179,7 @@ export default {
handleCloseEvent() {
this.$emit("handleClose");
},
async getApiData() { },
//
handleSatisfy() {
this.showSatisfy = true;
},
clickSatisfy(type) {
if (this.info.satisfactionName) {
return false;
}
this.satisfyLevel = type;
},
async handleComfirmSatisfy() {
if (!this.satisfyLevel) {
this.$message.info("请选择评价级别");
}
const url = "/governance/icEvent/comment";
let params = {
icEventId: this.eventId,
satisfaction: this.satisfyLevel,
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("评价成功");
this.info.satisfactionName =
this.satisfyLevel == "bad"
? "不满意"
: this.satisfyLevel == "good"
? "满意"
: "非常满意";
this.showSatisfy = false;
} else {
this.$message.error(msg);
}
},
},
};
</script>

23
src/views/modules/shequzhili/event/cpts/event-info.vue

@ -320,7 +320,7 @@ export default {
async handleComfirm() {
this.startLoading();
if (this.pageTypeCopy === "dispose" ||this.pageTypeCopy === "assign" ) {
if (this.pageTypeCopy === "dispose" ||this.pageTypeCopy === "assign" || this.pageTypeCopy === "check" ) {
await this.handelDispose();
}
this.endLoading();
@ -338,16 +338,17 @@ export default {
}
},
async submitDispose(url, params) {
const { data, code, msg } = await requestPost(url, {
...params,
});
if (code === 0) {
this.$message.success("操作成功!");
this.$emit("handleOk");
} else {
this.$message.error(msg);
}
console.log(params);
// const { data, code, msg } = await requestPost(url, {
// ...params,
// });
// if (code === 0) {
// this.$message.success("");
// this.$emit("handleOk");
// } else {
// this.$message.error(msg);
// }
},
handleClose() {

42
src/views/modules/shequzhili/event/cpts/process-form-assign.vue

@ -14,10 +14,10 @@
<el-cascader class="cell-width-1" ref="agencyIdArray" v-model.trim="agencyIdArray" :options="orgOptions"
:props="orgOptionProps" :show-all-levels="false" @change="handleChangeAgency"></el-cascader>
</el-form-item>
<el-form-item label="派件时间" prop="paijianshijian" label-width="150px"
<el-form-item label="派件时间" prop="createdTime" label-width="150px"
:class="{ 'form-item': source === 'visiual' }" style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-date-picker v-model.trim="formData.paijianshijian" class="cell-width-1" type="datetime"
<el-date-picker v-model.trim="formData.createdTime" class="cell-width-1" type="datetime"
placeholder="办结时限" value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</div>
@ -38,20 +38,20 @@
</el-date-picker>
</div>
</el-form-item>
<el-form-item label="转办意见" prop="content" label-width="150px" :class="{ 'form-item': source === 'visiual' }"
<el-form-item label="转办意见" prop="transferAdvice" label-width="150px" :class="{ 'form-item': source === 'visiual' }"
style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input class="cell-width-area" type="textarea" maxlength="500" show-word-limit :rows="5"
placeholder="请输入转办意见,不超过500字" v-model.trim="formData.content"
placeholder="请输入转办意见,不超过500字" v-model.trim="formData.transferAdvice"
@input="handelInputContent"></el-input>
</div>
</el-form-item>
<el-form-item label="办理要求" prop="banliyaoqiu" label-width="150px"
<el-form-item label="办理要求" prop="handlingReq" label-width="150px"
:class="{ 'form-item': source === 'visiual' }" style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input class="cell-width-area" type="textarea" maxlength="500" show-word-limit :rows="5"
placeholder="请输入办理要求,不超过500字" v-model.trim="formData.banliyaoqiu"
@input="handelInputBanliyaoqiu"></el-input>
placeholder="请输入办理要求,不超过500字" v-model.trim="formData.handlingReq"
@input="handelInputHandlingReq"></el-input>
</div>
</el-form-item>
@ -69,13 +69,13 @@ export default {
customerId: localStorage.getItem("customerId"),
formData: {
operationType: "5", //[0: 5 6]
content: "",//
banliyaoqiu: "",//
paijianshijian: new Date(),
contactTime: "",
timeLimit: "",//
deptId: "", //
deptName: "",
handlingReq:'',//
transferAdvice:'',//
createdTime: '',
contactTime:'',
timeLimit:'',//
deptId:'', //
deptName:'',
},
orgOptions: [],
orgOptionProps: {
@ -141,7 +141,7 @@ export default {
},
},
created() {
this.formData.createdTime = this.$dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss');
},
async mounted() {
const { user } = this.$store.state;
@ -149,24 +149,18 @@ export default {
this.getOrgTreeList();
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
// eventDetailCopy
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCategoryArray = this.eventDetailCopy.parentCategoryId.split(",");
this.selCategoryArray.push(this.eventDetailCopy.categoryId);
this.handleChangeCate(this.selCategoryArray)
}
}
},
methods: {
handelInputContent(val) {
this.$EventBus.$emit('handelInputEventContent', { type: 'opinion', value: val })
},
handelInputBanliyaoqiu(val) {
this.$EventBus.$emit('handelInputEventContent', { type: 'banliyaoqiu', value: val })
handelInputHandlingReq(val) {
this.$EventBus.$emit('handelInputEventContent', { type: 'handlingReq', value: val })
},
//
async getOrgTreeList() {
const url = "/gov/org/customeragency/agencygridtree"
const url = "/gov/org/customeragency/agencyGridDepttree"
let params = {
agencyId: this.agencyId,
purpose: "query"

176
src/views/modules/shequzhili/event/cpts/process-form-complete.vue

@ -1,44 +1,49 @@
<template>
<div class="">
<el-form ref="ref_form" :inline="false" :model="formData" :rules="dataRule" label-width="118px">
<el-form-item label="办理情况" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="content">
<el-form-item label="办理情况" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="handlingReq">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入办理情况"
v-model.trim="formData.content">
v-model.trim="formData.handlingReq" :disabled="pageType === 'check'">
</el-input>
</div>
</el-form-item>
<el-form-item label="上传录音" label-width="118px" :class="{ 'form-item': source === 'visiual' }" >
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
<el-form-item label="上传录音" label-width="118px" :class="{ 'form-item': source === 'visiual' }">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr" accept=".mp3"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleAudioSuccess"
:on-remove="handleAudioRemove" :before-upload="beforeAudioUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
<el-button type="primary" :disabled="pageType === 'check'">上传音频<i
class="el-icon-upload el-icon--right"></i></el-button>
</el-upload>
</el-form-item>
<el-form-item label="上传图片" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="files">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
accept=".jpg,.png,.jpeg"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleImgSuccess"
:on-remove="handleImgRemove" :before-upload="beforeImgUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
<el-button type="primary" :disabled="pageType === 'check'">上传图片<i
class="el-icon-upload el-icon--right"></i></el-button>
</el-upload>
</el-form-item>
<el-divider></el-divider>
<div class="flex">
<div class="item">
<el-form-item label="答复人" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="respondent">
<el-form-item label="答复人" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="respondent">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入" v-model.trim="formData.respondent">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.respondent">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="答复电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="respondentPhone">
<el-form-item label="答复电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="respondentPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入" v-model.trim="formData.respondentPhone">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.respondentPhone">
</el-input>
</div>
</el-form-item>
@ -52,9 +57,11 @@
</el-form-item>
</div>
<div class="item">
<el-form-item label="联系电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="contactsPhone">
<el-form-item label="联系电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="contactsPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入" v-model.trim="formData.contactsPhone">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.contactsPhone">
</el-input>
</div>
</el-form-item>
@ -62,19 +69,20 @@
<div class="item">
<el-form-item label-width="118px" label="填报不合规诉求">
<el-select v-model.trim="formData.irregularity" clearable class="item_width_4">
<el-option v-for="item in binaryOptionListReverse" :key="item.value" :label="item.label" :value="item.value">
<el-option v-for="item in binaryOptionListReverse" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="item" v-if="formData.irregularity === 0">
<!-- <div class="item" v-if="formData.irregularity === 0">
<el-form-item label-width="118px" label="不合规诉求类型">
<el-select v-model.trim="formData.irregularity" clearable class="item_width_4">
<el-option v-for="item in nonComplianceType" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
</div> -->
<div class="item">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="verified">
@ -101,8 +109,8 @@
<el-form-item label="回访时间" prop="returnTime" label-width="118px"
:class="{ 'form-item': source === 'visiual' }" style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-date-picker v-model.trim="formData.returnTime" class="cell-width-1" type="datetime"
placeholder="请选择" value-format="yyyy-MM-dd HH:mm:ss">
<el-date-picker v-model.trim="formData.returnTime" class="cell-width-1" type="datetime" placeholder="请选择"
value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</div>
</el-form-item>
@ -136,8 +144,7 @@
</el-form-item>
</div>
<div class="item">
<el-form-item label="服务过程满意度" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="nnn">
<el-form-item label="服务过程满意度" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="nnn">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-select v-model.trim="formData.nnn" clearable class="item_width_4">
<el-option v-for="item in satisfactionType" :key="item.value" :label="item.label" :value="item.value"
@ -148,7 +155,8 @@
</el-form-item>
</div>
<div class="item">
<el-form-item label="不满意原因" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="dissatisfyReason">
<el-form-item label="不满意原因" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="dissatisfyReason">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-select v-model.trim="formData.dissatisfyReason" clearable class="item_width_4">
<el-option v-for="item in noSatisfactionType" :key="item.value" :label="item.label" :value="item.value">
@ -170,44 +178,46 @@
</div>
</div>
<el-divider></el-divider>
<div :class="['process-title', { 'process-title-vis': source === 'visiual' },]" v-if="pageType === 'check'">
<img src="../../../../../assets/images/index/title-icon-chuli.png" width="30px" height="30px" alt="">
审核
</div>
<div class="flex">
<div class="item">
<el-form-item label="审核结果" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="examine">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-select v-model.trim="formData.examine" clearable class="item_width_4">
<el-option v-for="item in examineList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
</el-form-item>
<section v-if="pageType === 'check'">
<div :class="['process-title', { 'process-title-vis': source === 'visiual' },]">
<img src="../../../../../assets/images/index/title-icon-chuli.png" width="30px" height="30px" alt="">
审核
</div>
<div class="item">
<el-form-item label="上传图片" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="files">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleImgSuccess"
:on-remove="handleImgRemove" :before-upload="beforeImgUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
</el-upload>
</el-form-item>
</div>
<div :span="24">
<el-form-item label="审核结果说明" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="examineContent">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入审核结果说明"
v-model.trim="formData.examineContent">
</el-input>
</div>
</el-form-item>
<div class="flex">
<div class="item">
<el-form-item label="审核结果" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="examine">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-select v-model.trim="formData.examine" clearable class="item_width_4">
<el-option v-for="item in examineList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="上传图片" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="files">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleImgSuccess"
:on-remove="handleImgRemove" :before-upload="beforeImgUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
</el-upload>
</el-form-item>
</div>
<div :span="24">
<el-form-item label="审核结果说明" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="examineContent">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入审核结果说明"
v-model.trim="formData.examineContent">
</el-input>
</div>
</el-form-item>
</div>
</div>
</div>
</section>
</el-form>
</div>
</template>
@ -215,31 +225,31 @@
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import { binaryOptionList, nonComplianceType, satisfactionType, noSatisfactionType,binaryOptionListReverse } from "@/js/columns/constants";
import { binaryOptionList, nonComplianceType, satisfactionType, noSatisfactionType, binaryOptionListReverse } from "@/js/columns/constants";
let loading; //
function iniFmData() {
return {
operationType: "11", //[11,10,9]
eventId: '',
content:'',//
handlingReq: '',//
files: [],//
respondent:'',//
respondentPhone:'',//
contacts:'',//
contactsPhone:'',//
irregularity:'',// 0 1
//
respondent: '',//
respondentPhone: '',//
contacts: '',//
contactsPhone: '',//
irregularity: '',// 0 1
//
verified: '', // 0 1
returnVisitor: '',//访
returnTime: '',//访
loseContact: '',//0 1
putThrough:'',// 0 1
mmm:'',//访0 1
putThrough: '',// 0 1
mmm: '',//访0 1
nnn: '',//0 1 2
dissatisfyReason: '',//
visitComments: '',//访
examine:null,//
examineContent:''//
examine: null,//
examineContent: ''//
};
}
export default {
@ -254,7 +264,7 @@ export default {
assistanceUnitList: [], //
formData: iniFmData(),
okflag: false,
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
eventDetailCopy: {},
selectList: [{ label: '属实', value: 0 }, { label: '不属实', value: 1 }],
contactList: [{ label: '已联系', value: 0 }, { label: '未联系', value: 1 }],
@ -262,7 +272,7 @@ export default {
coordinateList: [{ label: '配合', value: 0 }, { label: '未配合', value: 1 }],
examineList: [{ label: '合格', value: 0 }, { label: '不合格', value: 1 }],
dataRule: {
content: [
handlingReq: [
{ required: true, message: "办理情况不能为空", trigger: "blur" },
],
verified: [
@ -289,7 +299,9 @@ export default {
nnn: [
{ required: true, message: "请选择服务过程满意度", trigger: "blur" },
],
}
},
imgList: [],
audioList: []
};
},
components: {},
@ -333,7 +345,7 @@ export default {
this.$delete(this.dataRule, 'dissatisfyReason');
}
},
beforeAudioUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isLt1M) {
@ -345,7 +357,7 @@ export default {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.formData.yinpin.push({
this.audioList.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
@ -359,11 +371,11 @@ export default {
},
handleAudioRemove(file) {
let index = this.formData.yinpin.findIndex(
let index = this.audioList.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.files.splice(index, 1);
console.log(this.formData.files);
this.audioList.splice(index, 1);
console.log(this.audioList);
},
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
@ -377,7 +389,7 @@ export default {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.formData.files.push({
this.imgList.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
@ -391,11 +403,11 @@ export default {
},
handleImgRemove(file) {
let index = this.formData.files.findIndex(
let index = this.imgList.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.files.splice(index, 1);
console.log(this.formData.files);
this.imgList.splice(index, 1);
console.log(this.imgList);
},
async getReplayInfo() {
this.okflag = false;

61
src/views/modules/shequzhili/event/cpts/process-form-contact.vue

@ -2,28 +2,28 @@
<div class="search">
<el-form ref="ref_form2" :inline="false" :model="formData" :rules="dataRule">
<el-form-item label="办理情况" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="internalRemark">
prop="handlingReq">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入回访意见"
v-model.trim="formData.internalRemark">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入"
v-model.trim="formData.handlingReq">
</el-input>
</div>
</el-form-item>
<el-form-item label="上传录音" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="luyin">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
accept=".mp3"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleAudioSuccess"
:on-remove="handleAudioRemove" :before-upload="beforeAudioUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
<el-button type="primary" >上传录音<i class="el-icon-upload el-icon--right"></i></el-button>
</el-upload>
</el-form-item>
<el-form-item label="上传图片" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="internalFile">
>
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
accept=".jpg,.png,.jpeg"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleImgSuccess"
:on-remove="handleImgRemove" :before-upload="beforeImgUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
<el-button type="primary" >上传图片<i class="el-icon-upload el-icon--right"></i></el-button>
</el-upload>
</el-form-item>
@ -33,7 +33,7 @@
<el-form-item label="答复人" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="respondent">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入答复人"
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.respondent">
</el-input>
</div>
@ -43,7 +43,7 @@
<el-form-item label="答复电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="respondentPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入答复电话"
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.respondentPhone">
</el-input>
</div>
@ -53,7 +53,7 @@
<el-form-item label="联系人" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="contacts">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入联系人"
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.contacts">
</el-input>
</div>
@ -63,7 +63,7 @@
<el-form-item label="联系电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="contactsPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入联系电话"
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.contactsPhone">
</el-input>
</div>
@ -78,7 +78,7 @@
</el-select>
</el-form-item>
</div>
<div class="item" v-if="formData.irregularity === 0">
<!-- <div class="item" v-if="formData.irregularity === 0">
<el-form-item label-width="118px" label="不合规诉求类型">
<el-select v-model.trim="formData.irregularity" clearable class="item_width_4">
<el-option v-for="item in nonComplianceType" :key="item.value" :label="item.label"
@ -86,7 +86,7 @@
</el-option>
</el-select>
</el-form-item>
</div>
</div> -->
<div class="item">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }">
<el-select v-model.trim="formData.verified" clearable class="item_width_4">
@ -115,7 +115,7 @@ export default {
formData: {
operationType: '9', //[11,10,9]
files: [],
content: '',//
handlingReq: '',//
respondent: '',//
respondentPhone: '',//
contacts: '',//
@ -130,12 +130,14 @@ export default {
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
selectList: [{ label: '属实', value: 0 }, { label: '不属实', value: 1 }],
dataRule: {
content: [
{ required: true, message: '办理情况不能为空', trigger: 'blur' },
],
handlingReq: [
{ required: true, message: '办理情况不能为空', trigger: 'blur' }
]
},
binaryOptionListReverse,
nonComplianceType
nonComplianceType,
imgList:[],
audioList:[]
};
},
components: {},
@ -168,7 +170,7 @@ export default {
beforeAudioUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
this.$message.error("M上传文件大小不能超过 10B!");
}
return isLt1M;
},
@ -176,25 +178,23 @@ export default {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.formData.yinpin.push({
this.audioList.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
type: file.raw.type,
url: res.data.url,
});
console.log(this.formData.internalFile);
} else {
this.$message.error(res.msg);
}
},
handleAudioRemove(file) {
let index = this.formData.yinpin.findIndex(
let index = this.audioList.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.internalFile.splice(index, 1);
console.log(this.formData.internalFile);
this.audioList.splice(index, 1);
},
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
@ -208,25 +208,24 @@ export default {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.formData.internalFile.push({
this.imgList.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
type: file.raw.type,
url: res.data.url,
});
console.log(this.formData.internalFile);
} else {
this.$message.error(res.msg);
}
},
handleImgRemove(file) {
let index = this.formData.internalFile.findIndex(
let index = this.imgList.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.internalFile.splice(index, 1);
console.log(this.formData.internalFile);
this.imgList.splice(index, 1);
console.log(this.imgList);
},

46
src/views/modules/shequzhili/event/cpts/process-form-process.vue

@ -10,28 +10,26 @@
<div class="search">
<el-form ref="ref_form2" :inline="false" :model="formData" :rules="dataRule">
<el-form-item label="办理情况" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="internalRemark">
prop="handlingReq">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入回访意见"
v-model.trim="formData.internalRemark">
v-model.trim="formData.handlingReq">
</el-input>
</div>
</el-form-item>
<el-form-item label="上传录音" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="luyin">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleAudioSuccess"
:on-remove="handleAudioRemove" :before-upload="beforeAudioUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
:on-remove="handleAudioRemove" :before-upload="beforeAudioUpload" accept=".mp3">
<el-button type="primary">上传录音<i class="el-icon-upload el-icon--right"></i></el-button>
</el-upload>
</el-form-item>
<el-form-item label="上传图片" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="internalFile">
<el-upload :headers="$getElUploadHeaders()" class="avatar-uploader" :action="uploadUlr"
:data="{ customerId: customerId }" :show-file-list="true" :on-success="handleImgSuccess"
:on-remove="handleImgRemove" :before-upload="beforeImgUpload">
<i v-if="source === 'manage'" :class="['el-icon-plus']"></i>
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
:on-remove="handleImgRemove" :before-upload="beforeImgUpload" accept=".jpg,.png,.jpeg">
<el-button type="primary">上传图片<i class="el-icon-upload el-icon--right"></i></el-button>
</el-upload>
</el-form-item>
@ -86,7 +84,7 @@
</el-select>
</el-form-item>
</div>
<div class="item" v-if="formData.irregularity === 0">
<!-- <div class="item" v-if="formData.irregularity === 0">
<el-form-item label-width="118px" label="不合规诉求类型">
<el-select v-model.trim="formData.irregularity" clearable class="item_width_4">
<el-option v-for="item in nonComplianceType" :key="item.value" :label="item.label"
@ -94,7 +92,7 @@
</el-option>
</el-select>
</el-form-item>
</div>
</div> -->
<div class="item">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }">
<el-select v-model.trim="formData.verified" clearable class="item_width_4">
@ -122,8 +120,7 @@ export default {
nonComplianceType,
formData: {
operationType: "10", //[11,10,9]
files: [],
content: '',//
handlingReq: '',//
respondent: '',//
respondentPhone: '',//
contacts: '',//
@ -139,11 +136,13 @@ export default {
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
dataRule: {
content: [
handlingReq: [
{ required: true, message: "办理情况不能为空", trigger: "blur" },
],
},
selectList: [{ label: '属实', value: 1 }, { label: '不属实', value: 0 }],
imgList: [],
audioList: []
};
},
components: {},
@ -173,7 +172,6 @@ export default {
this.agencyId = user.agencyId;
},
methods: {
async getReplayInfo() {
this.okflag = false;
this.$refs["ref_form2"].validate((valid, messageObj) => {
@ -196,25 +194,25 @@ export default {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.formData.internalFile.push({
this.imgList.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
type: file.raw.type,
url: res.data.url,
});
console.log(this.formData.internalFile);
console.log(this.imgList);
} else {
this.$message.error(res.msg);
}
},
handleImgRemove(file) {
let index = this.formData.internalFile.findIndex(
let index = this.imgList.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.internalFile.splice(index, 1);
console.log(this.formData.internalFile);
this.imgList.splice(index, 1);
console.log(this.imgList);
},
beforeAudioUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
@ -227,24 +225,24 @@ export default {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.formData.yinpin.push({
this.audioList.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
type: file.raw.type,
url: res.data.url,
});
console.log(this.formData.files);
console.log(this.audioList);
} else {
this.$message.error(res.msg);
}
},
handleAudioRemove(file) {
let index = this.formData.yinpin.findIndex(
let index = this.audioList.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.files.splice(index, 1);
this.audioList.splice(index, 1);
console.log(this.formData.files);
},
beforeImgUpload(file) {
@ -259,7 +257,7 @@ export default {
console.log("res.data.url", file);
if (res.code === 0 && res.msg === "success") {
console.log("res.data.url", res.data.url);
this.formData.files.push({
this.imgList.push({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,

28
src/views/modules/shequzhili/event/cpts/process-form.vue

@ -4,7 +4,7 @@
<el-form ref="ref_form1" :inline="false" :rules="dataRule" class="form">
<el-form-item label="办理状态" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="operationType" v-if="pageType !== 'assign'">
<el-select v-model="operationType" placeholder="请选择">
<el-select v-model="operationType" placeholder="请选择" :disabled="pageType === 'check'">
<el-option label="联系当事人" value="9"></el-option>
<el-option label="办理中" value="10"></el-option>
<el-option label="已办结" value="11"></el-option>
@ -12,7 +12,7 @@
</el-form-item>
</el-form>
<div v-if="operationType === '9' && pageType !== 'assign'">
<process-form-contact ref="process_form_contact_yes" :source="source" :eventDetailData="eventDetailData"
<process-form-contact ref="process_form_contact" :source="source" :eventDetailData="eventDetailData"
:eventId="eventId"></process-form-contact>
</div>
<div v-if="operationType === '10' && pageType !== 'assign'">
@ -138,7 +138,7 @@ export default {
// }
},
async getOrgTreeList() {
const url = "/gov/org/customeragency/agencygridtree"
const url = "/gov/org/customeragency/agencyGridDepttree"
let params = {
agencyId: this.agencyId,
purpose: "query"
@ -157,22 +157,28 @@ export default {
async getProcessInfo() {
this.okflag = false
if (this.operationType === '9') {
this.$refs.process_form_contact_yes.getReplayInfo()
this.replayInfo = this.$refs.process_form_contact_yes.formData
if (this.$refs.process_form_contact_yes.okflag) {
this.replayInfo = this.$refs.process_form_contact_yes.formData
this.$refs.process_form_contact.getReplayInfo()
this.replayInfo = this.$refs.process_form_contact.formData;
this.replayInfo.files = [...this.$refs.process_form_contact.imgList,...this.$refs.process_form_contact.audioList]
if (this.$refs.process_form_contact.okflag) {
this.replayInfo = this.$refs.process_form_contact.formData
this.okflag = true
}
} else if (this.operationType === '10') {
this.$refs.ref_process_form_process.getReplayInfo()
this.replayInfo = this.$refs.ref_process_form_process.formData
this.replayInfo = this.$refs.ref_process_form_process.formData;
this.replayInfo.files = [...this.$refs.ref_process_form_process.imgList,...this.$refs.ref_process_form_process.audioList]
if (this.$refs.ref_process_form_process.okflag) {
this.replayInfo = this.$refs.ref_process_form_process.formData
this.okflag = true
}
} else if (this.operationType === '11') {
} else if (this.operationType === '11' || this.pageType === 'check') {
this.$refs.ref_process_form_complete.getReplayInfo()
this.replayInfo = this.$refs.ref_process_form_complete.formData
this.replayInfo = this.$refs.ref_process_form_complete.formData;
this.replayInfo.files = [...this.$refs.ref_process_form_complete.imgList,...this.$refs.ref_process_form_complete.audioList]
if(this.pageType === 'check'){
this.replayInfo.operationType = '12'
}
if (this.$refs.ref_process_form_complete.okflag) {
this.replayInfo = this.$refs.ref_process_form_complete.formData
this.okflag = true
@ -184,7 +190,7 @@ export default {
this.replayInfo = this.$refs.ref_process_form_assign.formData
this.okflag = true
}
} else {
}else {
return false
}
},

2
src/views/modules/shequzhili/event/eventList.vue

@ -526,7 +526,7 @@ export default {
//
async handleDispose(row,type) {
this.eventId = row.icEventId;
this.eventId = '1817808353882152962';
const url = "/governance/icEvent/detail";
const { data, code, msg } = await requestPost(url, {
icEventId: this.eventId,

Loading…
Cancel
Save