Browse Source

时间接口字段核对

7.31
mk 2 years ago
parent
commit
bd36039694
  1. 14
      src/js/columns/constants/index.js
  2. 16
      src/views/modules/shequzhili/event/cpts/event-detail.vue
  3. 10
      src/views/modules/shequzhili/event/cpts/process-form-assign.vue
  4. 230
      src/views/modules/shequzhili/event/cpts/process-form-check.vue
  5. 187
      src/views/modules/shequzhili/event/cpts/process-form-complete.vue
  6. 96
      src/views/modules/shequzhili/event/cpts/process-form-contact.vue
  7. 210
      src/views/modules/shequzhili/event/cpts/process-form-process.vue
  8. 3
      src/views/modules/shequzhili/event/cpts/process-form.vue

14
src/js/columns/constants/index.js

@ -33,6 +33,16 @@ export const binaryOptionList = [
value: 0
}
]
export const binaryOptionListReverse = [
{
label: '是',
value: 0
},
{
label: '否',
value: 1
}
]
export const politicsStatusList = [
{
label: '中国共产党党员',
@ -141,7 +151,7 @@ export const nonComplianceType = [
export const satisfactionType = [
{
label: '满意',
value: 2
value: 0
},
{
label: '基本满意',
@ -149,7 +159,7 @@ export const satisfactionType = [
},
{
label: '不满意',
value: 0
value: 2
}
]
export const noSatisfactionType = [

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

@ -16,7 +16,7 @@
</div>
<div class="item">
<div class="label">工单编号</div>
<div class="value">410622166666666666</div>
<div class="value">{{eventDetailData.workOrderNum}}</div>
<div class="label">紧急程度</div>
<div class="value border-right">一版</div>
</div>
@ -24,7 +24,7 @@
<div class="label">来电类别</div>
<div class="value">诉求</div>
<div class="label">信息来源</div>
<div class="value border-right">青岛来电</div>
<div class="value border-right">{{eventDetailData.sourceTypeName}}</div>
</div>
<div class="item">
<div class="label">是否回复</div>
@ -34,13 +34,13 @@
</div>
<div class="item">
<div class="label">联系人</div>
<div class="value">胡先生</div>
<div class="value">{{eventDetailData.name}}</div>
<div class="label">联系电话</div>
<div class="value border-right">1666666666</div>
<div class="value border-right">{{eventDetailData.mobile || '--'}}</div>
</div>
<div class="item">
<div class="label">联系地址</div>
<div class="value flex-1"></div>
<div class="value flex-1">{{eventDetailData.address}}</div>
</div>
<div class="item">
<div class="label">回复备注</div>
@ -53,7 +53,7 @@
<div class="item">
<div class="label">问题描述</div>
<div class="value flex-1">
测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测测
{{eventDetailData.eventContent}}
</div>
</div>
<div class="item">
@ -70,9 +70,9 @@
</div>
<div class="item">
<div class="label">联系当事人时限</div>
<div class="value "></div>
<div class="value ">{{eventDetailData.contactTime}}</div>
<div class="label">(部门)办结时限</div>
<div class="value border-right"></div>
<div class="value border-right">{{eventDetailData.timeLimit}}</div>
</div>
<div class="item">
<div class="label">办理结果</div>

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

@ -22,10 +22,10 @@
</el-date-picker>
</div>
</el-form-item>
<el-form-item label="联系当事人时限" prop="lianxidangshiren" label-width="150px"
<el-form-item label="联系当事人时限" prop="contactTime" label-width="150px"
:class="{ 'form-item': source === 'visiual' }" style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-date-picker v-model.trim="formData.lianxidangshiren" class="cell-width-1" type="datetime"
<el-date-picker v-model.trim="formData.contactTime" class="cell-width-1" type="datetime"
placeholder="办结时限" value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
</div>
@ -66,13 +66,13 @@ let loading; // 加载动画
export default {
data() {
return {
btnDisable: false,
customerId: localStorage.getItem("customerId"),
formData: {
operationType: "5", //[0: 5 6]
content: "",//
banliyaoqiu: "",//
paijianshijian: new Date(),
lianxidangshiren: "",
contactTime: "",
timeLimit: "",//
deptId: "", //
deptName: "",
@ -112,7 +112,7 @@ export default {
categoryList: [
{ required: true, message: '事件分类不能为空', trigger: 'blur' },
],
lianxidangshiren: [
contactTime: [
{ required: true, message: '联系当事人时限不能为空', trigger: 'blur' },
]
},

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

@ -1,230 +0,0 @@
<template>
<div class="search">
<el-form ref="ref_form1" :inline="false" :model="formData" :rules="dataRule">
<el-form-item label="事件分类" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="categoryList">
<div :class="{ 'visiual-form': source === 'visiual' }">
<my-cascader v-model.trim="formData.categoryList" :casOptions="casOptions" :optionProps="optionProps"
@handleChangeCate="handleChangeCate">
</my-cascader>
</div>
</el-form-item>
<el-form-item label="议题标题" prop="issueTitle" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
style="display: block">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input v-model.trim="formData.issueTitle" class="cell-width-2" clearable placeholder="请输入议题标题">
</el-input>
</div>
</el-form-item>
<el-form-item label="处理意见" prop="suggestion" label-width="118px" :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.suggestion"></el-input>
</div>
</el-form-item>
</el-form>
</div>
</template>
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import formVltHelper from "dai-js/tools/formVltHelper";
import myCascader from "./myCascader.vue";
import { isCard } from "@/utils/validate";
let loading; //
export default {
data() {
return {
btnDisable: false,
formData: {
operationType: '3',//[0: 1: 2: 3:]
suggestion: '',
issueTitle: '',
categoryList: ''
},
okflag: false,
eventDetailCopy: {},
casOptions: [],
iscascaderShow: 0,
selCategoryArray: [],
selCateObj: {},
optionProps: {
multiple: false,
value: 'id',
label: 'name',
children: 'subCategory',
},
};
},
components: { myCascader },
computed: {
dataRule() {
return {
issueTitle: [
{ required: true, message: "议题标题不能为空", trigger: "blur" },
],
suggestion: [
{ required: true, message: "处理建议不能为空", trigger: "blur" },
],
categoryList: [
{ required: true, message: "事件分类不能为空", trigger: "blur" }
]
};
},
},
props: {
eventId: {
type: String,
default: "",
},
eventDetailData: {
type: Object,
default() {
return {}
}
},
source: {//manage visiual
type: String,
default: 'manage'
}
},
watch: {},
created() {
console.log(this.source)
},
async mounted() {
this.getCategoryList()
if (this.eventId) {
this.eventDetailCopy = JSON.parse(JSON.stringify(this.eventDetailData));
if (this.eventDetailCopy.parentCategoryId && this.eventDetailCopy.categoryId) {
this.selCategoryArray = []
this.selCategoryArray.push(this.eventDetailCopy.parentCategoryId)
this.selCategoryArray.push(this.eventDetailCopy.categoryId)
this.selCateObj = {
name: this.eventDetailCopy.categoryName,
id: this.eventDetailCopy.categoryId
}
}
}
},
methods: {
async getCategoryList() {
const url = "/governance/issueprojectcategorydict/list"
let params = {}
const { data, code, msg } = await requestPost(url, params)
if (code === 0) {
let treeDataNew = this.filterTree(data)
//
++this.iscascaderShow
this.casOptions = []
this.casOptions = treeDataNew
} else {
this.$message.error(msg)
}
},
handleChangeCate(obj) {
// console.log(this.$refs["myCascader"].getCheckedNodes()[0].data)
// this.selCateObj = this.$refs["myCascader"].getCheckedNodes()[0].data
this.selCateObj = obj
this.formData.categoryList = [];
let flag = JSON.stringify(obj) == '{}'
if (flag) this.formData.categoryList = []
else this.formData.categoryList.push(this.selCateObj);
},
//
filterTree(arr) {
let childs = arr
for (let i = childs.length; i--; i > 0) {
if (childs[i].subCategory) {
if (childs[i].subCategory.length) {
this.filterTree(childs[i].subCategory)
} else {
delete childs[i].subCategory
}
}
}
return arr
},
async getIssueInfo() {
this.okflag = false
this.$refs["ref_form1"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
} else {
this.formData.icEventId = this.eventId
this.formData.categoryId = this.selCateObj.id
this.formData.categoryList = []
this.formData.categoryList.push(this.selCateObj)
this.okflag = true
}
});
},
resetData() {
},
//
startLoading() {
loading = Loading.service({
lock: true, //
text: "正在加载……", //
background: "rgba(0,0,0,.7)", //
});
},
//
endLoading() {
// clearTimeout(timer);
if (loading) {
loading.close();
}
},
},
};
</script>
<style lang='scss' scoped>
@import "@/assets/scss/modules/visual/a_customize.scss";
@import "@/assets/scss/modules/shequzhili/event-info.scss";
</style>
<style scoped>
.el-dialog__body {
padding: 0 10px 20px !important;
}
</style>

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

@ -1,15 +1,15 @@
<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="publicReply">
<el-form-item label="办理情况" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="content">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入办理情况"
v-model.trim="formData.publicReply">
v-model.trim="formData.content">
</el-input>
</div>
</el-form-item>
<el-form-item label="上传录音" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="luyin">
<el-form-item label="上传录音" label-width="118px" :class="{ 'form-item': source === 'visiual' }" >
<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">
@ -17,7 +17,7 @@
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
</el-upload>
</el-form-item>
<el-form-item label="上传图片" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="internalFile">
<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">
@ -28,48 +28,48 @@
<el-divider></el-divider>
<div class="flex">
<div class="item">
<el-form-item label="答复人" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="">
<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.title">
<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="">
<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.title">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入" v-model.trim="formData.respondentPhone">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="联系人" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="">
<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="请输入联系人" v-model.trim="formData.title">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入" v-model.trim="formData.contacts">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="联系电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="">
<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.title">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入" v-model.trim="formData.contactsPhone">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label-width="118px" label="填报不合规诉求">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<el-option v-for="item in binaryOptionList" :key="item.value" :label="item.label" :value="item.value">
<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>
</el-select>
</el-form-item>
</div>
<div class="item" v-if="formData.localResidenceFlag === 1">
<div class="item" v-if="formData.irregularity === 0">
<el-form-item label-width="118px" label="不合规诉求类型">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<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>
@ -77,8 +77,8 @@
</div>
<div class="item">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="zhenshidu">
<el-select v-model.trim="formData.zhenshidu" clearable class="item_width_4">
prop="verified">
<el-select v-model.trim="formData.verified" clearable class="item_width_4">
<el-option v-for="item in selectList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
@ -89,28 +89,28 @@
<div class="flex">
<div class="item">
<el-form-item label="回访人" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="huifangren">
prop="returnVisitor">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入回访人"
v-model.trim="formData.huifangren">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入"
v-model.trim="formData.returnVisitor">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="回访时间" prop="huifangshijian" label-width="118px"
<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.huifangshijian" 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>
</div>
<div class="item">
<el-form-item label="当事人联系不上" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="danshiren">
<el-select v-model.trim="formData.danshiren" clearable class="item_width_4">
prop="loseContact">
<el-select v-model.trim="formData.loseContact" clearable class="item_width_4">
<el-option v-for="item in contactList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
@ -118,9 +118,9 @@
</div>
<div class="item">
<el-form-item label="未接通电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="weijietong">
prop="putThrough">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-select v-model.trim="formData.weijietong" clearable class="item_width_4">
<el-select v-model.trim="formData.putThrough" clearable class="item_width_4">
<el-option v-for="item in contactFailureList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
@ -128,8 +128,8 @@
</el-form-item>
</div>
<div class="item">
<el-form-item label="是否配合回访" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="peihe">
<el-select v-model.trim="formData.peihe" clearable class="item_width_4">
<el-form-item label="是否配合回访" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="mmm">
<el-select v-model.trim="formData.mmm" clearable class="item_width_4">
<el-option v-for="item in coordinateList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
@ -137,9 +137,9 @@
</div>
<div class="item">
<el-form-item label="服务过程满意度" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="manyidu">
prop="nnn">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-select v-model.trim="formData.manyidu" clearable class="item_width_4">
<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"
@click.native="handelChangeSatisfaction(item.value)">
</el-option>
@ -148,9 +148,9 @@
</el-form-item>
</div>
<div class="item">
<el-form-item label="不满意原因" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="bumanyi">
<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.bumanyi" clearable class="item_width_4">
<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">
</el-option>
</el-select>
@ -160,10 +160,10 @@
<div class="item">
<el-form-item label="回访意见" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="huifangyijian">
prop="visitComments">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入回访意见"
v-model.trim="formData.huifangyijian">
<el-input type="textarea" class="cell-width-area" :rows="2" placeholder="请输入"
v-model.trim="formData.visitComments">
</el-input>
</div>
</el-form-item>
@ -176,16 +176,19 @@
</div>
<div class="flex">
<div class="item">
<el-form-item label="审核结果" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="">
<el-form-item label="审核结果" label-width="118px" :class="{ 'form-item': source === 'visiual' }" prop="examine">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="答复人" v-model.trim="formData.title">
</el-input>
<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="internalFile">
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">
@ -196,10 +199,10 @@
</div>
<div :span="24">
<el-form-item label="审核结果说明" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="internalRemark">
prop="examineContent">
<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.examineContent">
</el-input>
</div>
</el-form-item>
@ -212,25 +215,31 @@
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import { binaryOptionList, nonComplianceType, satisfactionType, noSatisfactionType } from "@/js/columns/constants";
import { binaryOptionList, nonComplianceType, satisfactionType, noSatisfactionType,binaryOptionListReverse } from "@/js/columns/constants";
let loading; //
function iniFmData() {
return {
operationType: "11", //[11,10,9]
gridId: "", //
huifangren: "",
assistanceUnitType: "", // 12
zhenshidu: '', //
internalFile: [],
luyin: [],
title: "",
huifangshijian: "",
eventId: "",
danshiren: '',
huifangyijian: '',
peihe: '',
manyidu: '',
bumanyi: ''
eventId: '',
content:'',//
files: [],//
respondent:'',//
respondentPhone:'',//
contacts:'',//
contactsPhone:'',//
irregularity:'',// 0 1
//
verified: '', // 0 1
returnVisitor: '',//访
returnTime: '',//访
loseContact: '',//0 1
putThrough:'',// 0 1
mmm:'',//访0 1
nnn: '',//0 1 2
dissatisfyReason: '',//
visitComments: '',//访
examine:null,//
examineContent:''//
};
}
export default {
@ -240,42 +249,44 @@ export default {
nonComplianceType,
satisfactionType,
noSatisfactionType,
binaryOptionListReverse,
customerId: localStorage.getItem("customerId"),
assistanceUnitList: [], //
formData: iniFmData(),
okflag: false,
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadqrcodeV2",
eventDetailCopy: {},
selectList: [{ label: '属实', value: 1 }, { label: '不属实', value: 0 }],
contactList: [{ label: '已联系', value: 1 }, { label: '未联系', value: 0 }],
selectList: [{ label: '属实', value: 0 }, { label: '不属实', value: 1 }],
contactList: [{ label: '已联系', value: 0 }, { label: '未联系', value: 1 }],
contactFailureList: [{ label: '已接通', value: 1 }, { label: '未接通', value: 0 }],
coordinateList: [{ label: '配合', value: 1 }, { label: '未配合', value: 0 }],
coordinateList: [{ label: '配合', value: 0 }, { label: '未配合', value: 1 }],
examineList: [{ label: '合格', value: 0 }, { label: '不合格', value: 1 }],
dataRule: {
publicReply: [
content: [
{ required: true, message: "办理情况不能为空", trigger: "blur" },
],
zhenshidu: [
verified: [
{ required: true, message: "办理真实度不能为空", trigger: "blur" },
],
huifangren: [
returnVisitor: [
{ required: true, message: "回访人不能为空", trigger: "blur" },
],
huifangshijian: [
returnTime: [
{ required: true, message: "回访时间不能为空", trigger: "blur" },
],
danshiren: [
loseContact: [
{ required: true, message: "请选择当事人联系不上", trigger: "blur" },
],
weijietong: [
putThrough: [
{ required: true, message: "请选择未接通电话", trigger: "blur" },
],
huifangyijian: [
visitComments: [
{ required: true, message: "回访意见不能为空", trigger: "blur" },
],
peihe: [
mmm: [
{ required: true, message: "请选择是否配合回访", trigger: "blur" },
],
manyidu: [
nnn: [
{ required: true, message: "请选择服务过程满意度", trigger: "blur" },
],
}
@ -316,25 +327,13 @@ export default {
methods: {
handelChangeSatisfaction(val) {
console.log(val);
if (val === 0) {
this.$set(this.dataRule, 'bumanyi', [{ required: true, message: "请选择不满意原因", trigger: "blur" }]);
if (val === 2) {
this.$set(this.dataRule, 'dissatisfyReason', [{ required: true, message: "请选择不满意原因", trigger: "blur" }]);
} else {
this.$delete(this.dataRule, 'bumanyi');
this.$delete(this.dataRule, 'dissatisfyReason');
}
},
handleTagChange(val) {
console.log(val);
},
async getProjectInfo() {
this.okflag = false;
this.$refs["ref_form"].validate((valid, messageObj) => {
if (!valid) {
app.util.validateRule(messageObj);
} else {
this.okflag = true;
}
});
},
beforeAudioUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isLt1M) {
@ -353,7 +352,7 @@ export default {
type: file.raw.type,
url: res.data.url,
});
console.log(this.formData.internalFile);
console.log(this.formData.files);
} else {
this.$message.error(res.msg);
}
@ -363,8 +362,8 @@ export default {
let index = this.formData.yinpin.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.internalFile.splice(index, 1);
console.log(this.formData.internalFile);
this.formData.files.splice(index, 1);
console.log(this.formData.files);
},
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
@ -378,25 +377,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.formData.files.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.formData.files);
} else {
this.$message.error(res.msg);
}
},
handleImgRemove(file) {
let index = this.formData.internalFile.findIndex(
let index = this.formData.files.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.internalFile.splice(index, 1);
console.log(this.formData.internalFile);
this.formData.files.splice(index, 1);
console.log(this.formData.files);
},
async getReplayInfo() {
this.okflag = false;

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

@ -31,56 +31,56 @@
<div class="flex">
<div class="item">
<el-form-item label="答复人" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="">
prop="respondent">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入答复人"
v-model.trim="title">
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="">
prop="respondentPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入答复电话"
v-model.trim="formData.title">
v-model.trim="formData.respondentPhone">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="联系人" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="">
prop="contacts">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入联系人"
v-model.trim="formData.title">
v-model.trim="formData.contacts">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="联系电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="">
prop="contactsPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入联系电话"
v-model.trim="formData.title">
v-model.trim="formData.contactsPhone">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label-width="118px" label="填报不合规诉求">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<el-option v-for="item in binaryOptionList" :key="item.value" :label="item.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>
</el-select>
</el-form-item>
</div>
<div class="item" v-if="formData.localResidenceFlag === 1">
<div class="item" v-if="formData.irregularity === 0">
<el-form-item label-width="118px" label="不合规诉求类型">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<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>
@ -88,9 +88,8 @@
</el-form-item>
</div>
<div class="item">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }">
<el-select v-model.trim="formData.verified" clearable class="item_width_4">
<el-option v-for="item in selectList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
@ -105,41 +104,37 @@
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import { binaryOptionList, nonComplianceType } from "@/js/columns/constants";
import { binaryOptionListReverse, nonComplianceType } from "@/js/columns/constants";
let loading; //
export default {
data() {
return {
btnDisable: false,
customerId: localStorage.getItem("customerId"),
formData: {
operationType: '9', //[11,10,9]
content: '',
status: 'closed_case',
categoryList: [],
files: []
files: [],
content: '',//
respondent: '',//
respondentPhone: '',//
contacts: '',//
contactsPhone: '',//
irregularity: '',// 0 1
//
verified: '', // 0 1
},
status: false,
okflag: false,
eventDetailCopy: {},
fileList: [],
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
optionProps: {
multiple: false,
value: "id",
label: "categoryName",
children: "children",
checkStrictly: true
},
selectList: [{ label: '属实', value: 1 }, { label: '不属实', value: 0 }],
selectList: [{ label: '属实', value: 0 }, { label: '不属实', value: 1 }],
dataRule: {
internalRemark: [
content: [
{ required: true, message: '办理情况不能为空', trigger: 'blur' },
],
},
binaryOptionList,
binaryOptionListReverse,
nonComplianceType
};
},
@ -234,40 +229,7 @@ export default {
console.log(this.formData.internalFile);
},
buildNode(nodes, treeId) {
for (let i = 0; i < nodes.length; i++) {
if (nodes[i].id === treeId) {
if (nodes[i].children) {
return nodes[i].children
} else {
return nodes[i]
}
}
}
},
handleChangeCate() {
if (this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0]) {
this.selCateObj = this.$refs['myCascader'].getCheckedNodes()[0].data
this.formData.categoryList = this.selCateObj
} else {
this.selCateObj = {}
}
},
//
deepTree(arr, children) {
if (Array.isArray(arr) && arr.length > 0) {
return arr.map((item) => {
return {
...item,
[children]:
(item[children] &&
item[children].length > 0 &&
this.deepTree(item[children], children)) ||
null,
};
});
}
},
async getReplayInfo() {
this.okflag = false;
this.$refs['ref_form2'].validate((valid, messageObj) => {

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

@ -34,60 +34,61 @@
<img v-else style="width: 27px; height: 27px" src="@/assets/img/file-add.png" />
</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="">
prop="respondent">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入答复人"
v-model.trim="title">
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="">
prop="respondentPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入答复电话"
v-model.trim="formData.title">
v-model.trim="formData.respondentPhone">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="联系人" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="">
prop="contacts">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入联系人"
v-model.trim="formData.title">
v-model.trim="formData.contacts">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label="联系电话" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="">
prop="contactsPhone">
<div :class="{ 'visiual-form': source === 'visiual' }">
<el-input type="input" class="item_width_4" :rows="2" placeholder="请输入联系电话"
v-model.trim="formData.title">
v-model.trim="formData.contactsPhone">
</el-input>
</div>
</el-form-item>
</div>
<div class="item">
<el-form-item label-width="118px" label="填报不合规诉求">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<el-option v-for="item in binaryOptionList" :key="item.value" :label="item.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>
</el-select>
</el-form-item>
</div>
<div class="item" v-if="formData.localResidenceFlag === 1">
<div class="item" v-if="formData.irregularity === 0">
<el-form-item label-width="118px" label="不合规诉求类型">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<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>
@ -95,9 +96,8 @@
</el-form-item>
</div>
<div class="item">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }"
prop="">
<el-select v-model.trim="formData.localResidenceFlag" clearable class="item_width_4">
<el-form-item label="办理真实度" label-width="118px" :class="{ 'form-item': source === 'visiual' }">
<el-select v-model.trim="formData.verified" clearable class="item_width_4">
<el-option v-for="item in selectList" :key="item.value" :label="item.label"
:value="item.value">
</el-option>
@ -112,36 +112,34 @@
<script>
import { Loading } from "element-ui"; // Loading
import { requestPost } from "@/js/dai/request";
import { binaryOptionListReverse, nonComplianceType } from "@/js/columns/constants";
let loading; //
export default {
data() {
return {
customerId: localStorage.getItem("customerId"),
binaryOptionListReverse,
nonComplianceType,
formData: {
operationType: "10", //[11,10,9]
content: "",//
timeLimit: "",//
categoryId: "",//
deptId: "", //
deptName: "",
categoryList: [],
files: [] //
},
orgOptions: [],
orgOptionProps: {
multiple: false,
value: 'agencyId',
label: 'agencyName',
children: 'subAgencyList',
checkStrictly: true
files: [],
content: '',//
respondent: '',//
respondentPhone: '',//
contacts: '',//
contactsPhone: '',//
irregularity: '',// 0 1
//
verified: '', // 0 1
},
status: false,
okflag: false,
casOptions: [],
fileList: [],
uploadUlr: window.SITE_CONFIG["apiURL"] + "/oss/file/uploadvariedfile",
dataRule: {
internalRemark: [
content: [
{ required: true, message: "办理情况不能为空", trigger: "blur" },
],
},
@ -175,7 +173,7 @@ export default {
this.agencyId = user.agencyId;
},
methods: {
async getReplayInfo() {
this.okflag = false;
this.$refs["ref_form2"].validate((valid, messageObj) => {
@ -186,74 +184,100 @@ export default {
}
});
},
beforeUpload(file) {
const array = file.name.split(".");
const extension = array[array.length - 1];
const formatarray = [
"jpg",
"png",
"jpeg",
"bmp",
"mp4",
"wma",
"m4a",
"mp3",
"doc",
"docx",
"xls",
"xlsx",
"pdf",
];
if (formatarray.indexOf(extension) === -1) {
this.$message.error("只支持图片、word、pdf");
return false;
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
}
return isLt1M;
},
handleFileRemove(file) {
if (file && file.status === "success") {
this.fileList.splice(
this.fileList.findIndex((item) => item.uid === file.uid),
1
);
handleImgSuccess(res, file, fileList) {
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({
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);
}
},
handleFileSuccess(res, file) {
if (res.code === 0 && res.msg === "success") {
const array = file.name.split(".");
const fileType = array[array.length - 1];
const picArray = ["jpg", "png", "jpeg", "bmp"];
const videoarray = ["mp4", "wma", "m4a"];
const docArray = ["doc", "docx", "xls", "xlsx", "pdf"];
const mp3Array = ["mp3"];
if (picArray.indexOf(fileType) > -1) {
file.attachmentFormat = "image";
} else if (videoarray.indexOf(fileType) > -1) {
file.attachmentFormat = "video";
} else if (docArray.indexOf(fileType) > -1) {
file.attachmentFormat = "doc";
} else if (mp3Array.indexOf(fileType) > -1) {
file.attachmentFormat = "voice";
}
file.url = res.data.url;
file.type = fileType;
handleImgRemove(file) {
let index = this.formData.internalFile.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.internalFile.splice(index, 1);
console.log(this.formData.internalFile);
},
beforeAudioUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
}
return isLt1M;
},
handleAudioSuccess(res, file, fileList) {
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({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
type: file.raw.type,
url: res.data.url,
});
console.log(this.formData.files);
} else {
this.$message.error(res.msg);
}
},
file.attachmentName = file.name;
file.attachmentType = file.type;
file.attachmentUrl = file.url;
handleAudioRemove(file) {
let index = this.formData.yinpin.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.files.splice(index, 1);
console.log(this.formData.files);
},
beforeImgUpload(file) {
const isLt1M = file.size / 1024 / 1024 < 10;
this.fileList.push(file);
} else this.$message.error(res.msg);
if (!isLt1M) {
this.$message.error("上传文件大小不能超过 10MB!");
}
return isLt1M;
},
//
handleFileDownload(file) {
var a = document.createElement("a");
var event = new MouseEvent("click");
a.download = file.name;
a.href = file.url;
a.dispatchEvent(event);
handleImgSuccess(res, file, fileList) {
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({
format: file.name.split(".").pop(),
name: file.name,
size: file.size,
type: file.raw.type,
url: res.data.url,
});
console.log(this.formData.files);
} else {
this.$message.error(res.msg);
}
},
handleImgRemove(file) {
let index = this.formData.files.findIndex(
(item) => item.url == file.response.data.url
);
this.formData.files.splice(index, 1);
console.log(this.formData.files);
},
//
startLoading() {

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

@ -36,7 +36,6 @@ import { Loading } from "element-ui"; // 引入Loading服务
import { requestPost } from "@/js/dai/request";
import processFormContact from "./process-form-contact";
import processFormComplete from "./process-form-complete";
import processFormCheck from "./process-form-check";
import processFormProcess from "./process-form-process";
import processFormAssign from "./process-form-assign";
let loading; //
@ -74,7 +73,6 @@ export default {
},
components: {
processFormComplete,
processFormCheck,
processFormProcess,
processFormContact,
processFormAssign
@ -180,7 +178,6 @@ export default {
this.okflag = true
}
} else if (this.pageType === 'assign') {
debugger
this.$refs.ref_process_form_assign.getReplayInfo()
this.replayInfo = this.$refs.ref_process_form_assign.formData
if (this.$refs.ref_process_form_assign.okflag) {

Loading…
Cancel
Save