|
@@ -4,17 +4,18 @@
|
|
|
<!-- 左边工单信息 -->
|
|
|
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" class="left-content mb20 h100">
|
|
|
<el-scrollbar class="box pd20">
|
|
|
- <div class="flex-center-between mb20">
|
|
|
+ <!-- <div class="flex-center-between mb20">
|
|
|
<p class="table-title">工单信息</p>
|
|
|
- </div>
|
|
|
- <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="110px" label-position="right" scroll-to-error>
|
|
|
+ </div> -->
|
|
|
+ <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="110px" label-position="right" scroll-to-error v-loading="state.loading">
|
|
|
<p class="border-title mb10">来电信息</p>
|
|
|
<el-row :gutter="0">
|
|
|
+ <!-- 来源渠道 -->
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
<!-- 手动创建 -->
|
|
|
<template v-if="state.createFrom == 'manual'">
|
|
|
- <el-form-item label="来源渠道" prop="transferPhone" :rules="[{ required: true, message: '请选择来源渠道', trigger: 'change' }]">
|
|
|
- <el-select v-model="state.ruleForm.transferPhone" placeholder="请选择来源渠道" class="w100">
|
|
|
+ <el-form-item label="来源渠道" prop="channel" :rules="[{ required: true, message: '请选择来源渠道', trigger: 'change' }]">
|
|
|
+ <el-select v-model="state.ruleForm.channel" placeholder="请选择来源渠道" class="w100">
|
|
|
<el-option v-for="item in state.channelOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
@@ -32,10 +33,11 @@
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-col>
|
|
|
+ <!-- 转接来源 -->
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
<!-- 手动创建 -->
|
|
|
<template v-if="state.createFrom == 'manual'">
|
|
|
- <el-form-item label="转接来源"> 暂无 </el-form-item>
|
|
|
+ <el-form-item label="转接来源" prop="transferPhone"> 暂无 </el-form-item>
|
|
|
</template>
|
|
|
<!-- 来电弹单 -->
|
|
|
<template v-else-if="state.createFrom == 'tel'">
|
|
@@ -50,11 +52,23 @@
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
+ <!-- 来电号码 -->
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="state.ruleForm.channel == 0">
|
|
|
<!-- 手动创建 -->
|
|
|
<template v-if="state.createFrom == 'manual'">
|
|
|
- <el-form-item label="来电号码" prop="fromPhone" :rules="[{ required: true, message: '请填写来电号码', trigger: 'blur' }]">
|
|
|
- <el-input v-model="state.ruleForm.fromPhone" placeholder="请填写来电号码" clearable> </el-input>
|
|
|
+ <el-form-item
|
|
|
+ label="来电号码"
|
|
|
+ prop="fromPhone"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请填写来电号码', trigger: 'blur' },
|
|
|
+ // {
|
|
|
+ // pattern: /^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])d{8}$/,
|
|
|
+ // message: '手机号格式错误',
|
|
|
+ // trigger: 'blur'
|
|
|
+ // },
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <el-input v-model="state.ruleForm.fromPhone" placeholder="请填写来电号码" clearable @blur="searchHistory"> </el-input>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
<!-- 来电弹单 -->
|
|
@@ -66,15 +80,16 @@
|
|
|
<!-- 互联网来信 -->
|
|
|
<template v-else-if="state.createFrom == 'letter'">
|
|
|
<el-form-item label="来电号码">
|
|
|
- <span>[{{ telStatusInfo.telsNo }}]</span>
|
|
|
+ <span>[{{ phoneNumber }}]</span>
|
|
|
</el-form-item>
|
|
|
</template>
|
|
|
</el-col>
|
|
|
+ <!-- 服务坐席 -->
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
<el-form-item label="服务坐席">
|
|
|
<!-- 手动创建 -->
|
|
|
<template v-if="state.createFrom == 'manual'">
|
|
|
- <span>{{ state.ruleForm.seats }}</span>
|
|
|
+ <span>{{ state.ruleForm.employeeName + ' [ ' + state.ruleForm.employeeStaffNo + ' ]' }}</span>
|
|
|
</template>
|
|
|
<!-- 来电弹单 -->
|
|
|
<template v-else-if="state.createFrom == 'tel'">
|
|
@@ -92,7 +107,11 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="" label-width="40px" prop="fromGender" :rules="[{ required: true, message: '请选择来电/信人性别', trigger: 'change' }]">
|
|
|
+ <el-form-item
|
|
|
+ label="来电/信人性别"
|
|
|
+ prop="fromGender"
|
|
|
+ :rules="[{ required: true, message: '请选择来电/信人性别', trigger: 'change' }]"
|
|
|
+ >
|
|
|
<el-radio-group v-model="state.ruleForm.fromGender">
|
|
|
<el-radio :label="item.key" v-for="item in state.genderOptions" :key="item.key">{{ item.value }}</el-radio>
|
|
|
</el-radio-group>
|
|
@@ -102,7 +121,7 @@
|
|
|
<el-form-item
|
|
|
label="来电/信人身份"
|
|
|
prop="identityType"
|
|
|
- :rules="[{ required: true, message: '请选择来电/信人身份', trigger: 'blur' }]"
|
|
|
+ :rules="[{ required: true, message: '请选择来电/信人身份', trigger: 'change' }]"
|
|
|
>
|
|
|
<el-radio-group v-model="state.ruleForm.identityType">
|
|
|
<el-radio :label="item.key" v-for="item in state.identityTypeOptions" :key="item.key">{{ item.value }}</el-radio>
|
|
@@ -110,9 +129,16 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="证件类型" prop="licence" :rules="[{ required: false, message: '请选择证件类型', trigger: 'change' }]">
|
|
|
- <el-select v-model="state.ruleForm.licence" placeholder="请选择证件类型" class="w100">
|
|
|
- <el-option v-for="item in state.licenceTypeOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
+ <el-form-item label="证件类型" prop="licenceTypeObj" :rules="[{ required: false, message: '请选择证件类型', trigger: 'change' }]">
|
|
|
+ <el-select
|
|
|
+ v-model="state.ruleForm.licenceTypeObj"
|
|
|
+ placeholder="请选择证件类型"
|
|
|
+ class="w100"
|
|
|
+ value-key="dicDataValue"
|
|
|
+ @change="(val:any)=>{state.ruleForm.licenceType = val.dicDataName;
|
|
|
+ state.ruleForm.licenceTypeCode = val.dicDataValue}"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in state.licenceTypeOptions" :key="item.dicDataValue" :label="item.dicDataName" :value="item" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -121,27 +147,44 @@
|
|
|
<el-form-item
|
|
|
label="证件号码"
|
|
|
prop="licenceNo"
|
|
|
- :rules="[{ required: state.ruleForm.licence, message: '请填写证件号码', trigger: 'blur' }]"
|
|
|
+ :rules="[{ required: state.ruleForm.licence || state.ruleForm.licence === 0, message: '请填写证件号码', trigger: 'blur' }]"
|
|
|
>
|
|
|
<el-input v-model="state.ruleForm.licenceNo" placeholder="请填写证件号码" clearable> </el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="年龄段" prop="ageRange" :rules="[{ required: false, message: '请选择年龄段', trigger: 'change' }]">
|
|
|
- <el-select v-model="state.ruleForm.ageRange" placeholder="请选择年龄段" class="w100">
|
|
|
- <el-option v-for="item in state.levelList" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
+ <el-form-item label="年龄段" prop="ageRangeObj" :rules="[{ required: false, message: '请选择年龄段', trigger: 'change' }]">
|
|
|
+ <el-select
|
|
|
+ v-model="state.ruleForm.ageRangeObj"
|
|
|
+ placeholder="请选择年龄段"
|
|
|
+ class="w100"
|
|
|
+ value-key="dicDataValue"
|
|
|
+ @change="(val:any)=>{state.ruleForm.ageRange = val.dicDataName;
|
|
|
+ state.ruleForm.ageRangeCode = val.dicDataValue}"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in state.ageRangeOptions" :key="item.dicDataValue" :label="item.dicDataName" :value="item" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="联系电话" prop="contact" :rules="[{ required: true, message: '请填写联系电话', trigger: 'blur' }]">
|
|
|
- <el-input v-model="state.ruleForm.contact" placeholder="请填写联系电话" clearable> </el-input>
|
|
|
+ <el-form-item
|
|
|
+ label="联系电话"
|
|
|
+ prop="contact"
|
|
|
+ :rules="[{ required: !state.ruleForm.needContact, message: '请填写联系电话', trigger: 'blur' }]"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="state.ruleForm.contact"
|
|
|
+ :disabled="state.ruleForm.needContact"
|
|
|
+ :placeholder="state.ruleForm.needContact ? '无需联系' : '请填写联系电话'"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ </el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
<el-form-item label="" prop="acceptSms" :rules="[{ required: false, message: '请选择', trigger: 'blur' }]">
|
|
|
<el-checkbox v-model="state.ruleForm.acceptSms" label="受理短信" />
|
|
|
- <el-checkbox v-model="state.ruleForm.needContact" label="无需联系" />
|
|
|
+ <el-checkbox v-model="state.ruleForm.needContact" label="无需联系" @change="(val:boolean)=> ruleFormRef.resetFields('contact')" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<!-- 当“来电/信人身份”为“企业”时必填 -->
|
|
@@ -158,7 +201,7 @@
|
|
|
<p class="border-title mb10">诉求信息</p>
|
|
|
<el-row>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="工单编码"> </el-form-item>
|
|
|
+ <el-form-item label="工单编码"> {{ state.ruleForm.no }} </el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
<el-form-item label="工单标题" prop="title" :rules="[{ required: true, message: '请填写工单标题', trigger: 'blur' }]">
|
|
@@ -169,13 +212,13 @@
|
|
|
<el-row :gutter="0">
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
<el-form-item label="工单类型" prop="orderType" :rules="[{ required: true, message: '请填写工单类型', trigger: 'blur' }]">
|
|
|
- <el-select v-model="state.ruleForm.orderType" placeholder="请选择工单类型" class="w100">
|
|
|
+ <el-select v-model="state.ruleForm.orderType" placeholder="请选择工单类型" class="w100" @change="selectOrderType">
|
|
|
<el-option v-for="item in state.orderTypeOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<!-- 当“工单类型”为非通用工单时,展示【拓展信息】按钮 -->
|
|
|
- <el-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6" :offset="1">
|
|
|
+ <el-col :xs="6" :sm="6" :md="6" :lg="6" :xl="6" :offset="1" v-if="state.ruleForm.orderType === 1 && state.ruleForm.acceptType">
|
|
|
<el-form-item label="" label-width="0px">
|
|
|
<el-button @click="showExpandForm"><SvgIcon name="ele-CirclePlus" class="mr3" size="16px" /> 拓展信息</el-button>
|
|
|
</el-form-item>
|
|
@@ -185,7 +228,13 @@
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
<el-form-item label="受理类型" prop="acceptType" :rules="[{ required: true, message: '请选择受理类型', trigger: 'change' }]">
|
|
|
<el-select v-model="state.ruleForm.acceptType" placeholder="请选择受理类型" class="w100">
|
|
|
- <el-option v-for="item in state.acceptTypeOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
+ <el-option
|
|
|
+ v-for="item in state.acceptTypeOptions"
|
|
|
+ :key="item.key"
|
|
|
+ :disabled="item.disabled"
|
|
|
+ :label="item.value"
|
|
|
+ :value="item.key"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -203,43 +252,50 @@
|
|
|
v-model="state.ruleForm.hotspotId"
|
|
|
filterable
|
|
|
clearable
|
|
|
- :render-after-expand="false"
|
|
|
placeholder="请选择热点分类"
|
|
|
:props="HotspotProps"
|
|
|
lazy
|
|
|
:load="load"
|
|
|
node-key="id"
|
|
|
- @change="hotsoptChange"
|
|
|
+ check-strictly
|
|
|
+ :render-after-expand="false"
|
|
|
+ @node-click="hotsoptChange"
|
|
|
+ ref="hotspotRef"
|
|
|
+ :default-expanded-keys="state.hotspotExternal"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
<el-form-item label="事发时间" prop="incidentTime" :rules="[{ required: false, message: '请选择事发时间', trigger: 'change' }]">
|
|
|
- <el-date-picker
|
|
|
- v-model="state.ruleForm.incidentTime"
|
|
|
- type="date"
|
|
|
- placeholder="请选择事发时间"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- format="YYYY-MM-DD"
|
|
|
- class="w100"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="state.ruleForm.incidentTime" type="date" placeholder="请选择事发时间" format="YYYY-MM-DD" class="w100" />
|
|
|
+ <!-- value-format="YYYY-MM-DD" -->
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
<el-row :gutter="0">
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="事发地址" prop="phoneNo" :rules="[{ required: true, message: '请选择事发地址', trigger: 'change' }]">
|
|
|
- <el-cascader v-model="state.ruleForm.phoneNo" class="w100" :options="state.orgData" placeholder="请选择事发地址" />
|
|
|
+ <el-form-item label="事发地址" prop="areaCode" :rules="[{ required: true, message: '请选择事发地址', trigger: 'change' }]">
|
|
|
+ <el-cascader
|
|
|
+ :options="state.areaOptions"
|
|
|
+ filterable
|
|
|
+ :props="{ value: 'id', label: 'areaName', emitPath: false }"
|
|
|
+ placeholder="请选择事发地址"
|
|
|
+ clearable
|
|
|
+ class="w100"
|
|
|
+ v-model="state.ruleForm.areaCode"
|
|
|
+ ref="areaRef"
|
|
|
+ @change="changeArea"
|
|
|
+ >
|
|
|
+ <template #default="{ node, data }">
|
|
|
+ <span>{{ data.areaName }}</span>
|
|
|
+ <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
|
+ </template>
|
|
|
+ </el-cascader>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item
|
|
|
- label=""
|
|
|
- prop="phoneNo"
|
|
|
- :rules="[{ required: true, message: '请填写详细地址', trigger: 'blur' }]"
|
|
|
- label-width="10px"
|
|
|
- >
|
|
|
- <el-input v-model="state.ruleForm.phoneNo" placeholder="请填写详细地址" clearable> </el-input>
|
|
|
+ <el-form-item label="" prop="street" :rules="[{ required: true, message: '请填写详细地址', trigger: 'blur' }]" label-width="10px">
|
|
|
+ <el-input v-model="state.ruleForm.street" placeholder="请填写详细地址" clearable> </el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -248,23 +304,23 @@
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
|
<el-row :gutter="0">
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="是否重复" prop="phoneNo" :rules="[{ required: true, message: '请选择是否重复', trigger: 'change' }]">
|
|
|
- <el-select v-model="state.ruleForm.phoneNo" placeholder="请选择是否重复" class="w100">
|
|
|
- <el-option v-for="item in state.levelList" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
+ <el-form-item label="是否重复" prop="isRepeat" :rules="[{ required: true, message: '请选择是否重复', trigger: 'change' }]">
|
|
|
+ <el-select v-model="state.ruleForm.isRepeat" placeholder="请选择是否重复" class="w100">
|
|
|
+ <el-option v-for="item in state.repeatOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<!-- 必填,若“是否重复”为“是”,则展示重复件选择框 -->
|
|
|
- <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
+ <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12" v-if="state.ruleForm.isRepeat === 'true'">
|
|
|
<el-form-item
|
|
|
label=""
|
|
|
- prop="duplicateName"
|
|
|
+ prop="duplicateTitle"
|
|
|
label-width="10px"
|
|
|
:rules="[{ required: true, message: '请选择重复件', trigger: 'change' }]"
|
|
|
>
|
|
|
- <el-input v-model="state.ruleForm.duplicateName" placeholder="请选择重复件" readonly>
|
|
|
+ <el-input v-model="state.ruleForm.duplicateTitle" placeholder="请选择重复件" readonly>
|
|
|
<template #suffix>
|
|
|
- <el-button link type="danger" v-if="state.ruleForm.duplicateName" @click="clearRepeat">
|
|
|
+ <el-button link type="danger" v-if="state.ruleForm.duplicateTitle" @click="clearRepeat">
|
|
|
<SvgIcon name="ele-Delete" size="16px" />
|
|
|
</el-button>
|
|
|
<el-button link type="primary" class="ml1" @click="selectRepat">
|
|
@@ -277,9 +333,17 @@
|
|
|
</el-row>
|
|
|
</el-col>
|
|
|
<el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
|
|
|
- <el-form-item label="推送分类" prop="pushType" :rules="[{ required: false, message: '请选择推送分类', trigger: 'change' }]">
|
|
|
- <el-select v-model="state.ruleForm.pushType" placeholder="请选择推送分类" class="w100">
|
|
|
- <el-option v-for="item in state.orderTypeOptions" :key="item.key" :label="item.value" :value="item.key" />
|
|
|
+ <el-form-item label="推送分类" prop="pushTypeObj" :rules="[{ required: false, message: '请选择推送分类', trigger: 'change' }]">
|
|
|
+ <el-select
|
|
|
+ v-model="state.ruleForm.pushTypeObj"
|
|
|
+ placeholder="请选择推送分类"
|
|
|
+ class="w100"
|
|
|
+ clearable
|
|
|
+ value-key="dicDataValue"
|
|
|
+ @change="(val:any)=>{state.ruleForm.pushType = val.dicDataName;
|
|
|
+ state.ruleForm.pushTypeCode = val.dicDataValue}"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in state.pushTypeOptions" :key="item.dicDataValue" :label="item.dicDataName" :value="item" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -288,7 +352,7 @@
|
|
|
label="诉求详情"
|
|
|
prop="content"
|
|
|
class="textarea"
|
|
|
- :rules="[{ required: false, message: '请填写诉求详情', trigger: 'blur' }]"
|
|
|
+ :rules="[{ required: true, message: '请填写诉求详情', trigger: 'blur' }]"
|
|
|
>
|
|
|
<el-input
|
|
|
v-model="state.ruleForm.content"
|
|
@@ -360,21 +424,25 @@
|
|
|
</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
- <el-table :data="state.tableData" v-loading="state.loading">
|
|
|
- <el-table-column prop="phoneNo" label="重复件" width="70">
|
|
|
+ <el-table :data="state.tableData" v-loading="state.loading" @current-change="handleSelectionChange">
|
|
|
+ <el-table-column prop="phoneNo" label="重复件" width="70" v-if="state.ruleForm.isRepeat === 'true'">
|
|
|
<template #default="scope">
|
|
|
- <el-radio v-model="state.tableRadio" @change="handleSelectionChange(scope.row)"></el-radio>
|
|
|
+ <el-radio v-model="state.tableRadio" :label="scope.row.id" @change="handleRowChange(scope.row)"> </el-radio>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column type="index" width="60" label="序号" />
|
|
|
- <el-table-column prop="phoneNo" label="工单标题" show-overflow-tooltip> </el-table-column>
|
|
|
- <el-table-column prop="phoneNo" label="热点分类" show-overflow-tooltip> </el-table-column>
|
|
|
- <el-table-column prop="phoneNo" label="工单编码" show-overflow-tooltip> </el-table-column>
|
|
|
- <el-table-column prop="phoneNo" label="当前环节" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column prop="phoneNo" label="状态" width="70" fixed="right" align="center">
|
|
|
+ <el-table-column prop="phoneNo" label="工单标题" show-overflow-tooltip>
|
|
|
+ <template #default="scope">
|
|
|
+ <span style="color: var(--el-color-primary)">{{ scope.row.title }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="hotspot" label="热点分类" show-overflow-tooltip> </el-table-column>
|
|
|
+ <el-table-column prop="no" label="工单编码" show-overflow-tooltip> </el-table-column>
|
|
|
+ <el-table-column prop="currentStepName" label="当前环节" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="statusText" label="状态" width="70" fixed="right" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-button text type="primary">
|
|
|
- {{ scope.row.phoneNo }}
|
|
|
+ {{ scope.row.statusText }}
|
|
|
</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -384,7 +452,7 @@
|
|
|
:total="state.total"
|
|
|
v-model:page="state.queryParams.PageIndex"
|
|
|
v-model:limit="state.queryParams.PageSize"
|
|
|
- @pagination="getList"
|
|
|
+ @pagination="searchHistory"
|
|
|
/>
|
|
|
</div>
|
|
|
<div class="right-content-knowledge mt20 box pd20">
|
|
@@ -441,7 +509,7 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<!-- 拓展表单 -->
|
|
|
- <ExpandForm ref="ExpandFormRef" />
|
|
|
+ <ExpandForm ref="ExpandFormRef" @saveExpandForm="saveExpandForm" />
|
|
|
<!-- 常用意见管理 -->
|
|
|
<Comment ref="CommentRef" @chooseComment="chooseComment" modal />
|
|
|
<!-- 历史工单 -->
|
|
@@ -451,35 +519,36 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
-<script setup lang="ts" name="WokOrder">
|
|
|
+<script setup lang="ts" name="orderAcceptAdd">
|
|
|
import { defineAsyncComponent, ref, reactive, computed, onMounted } from 'vue';
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus';
|
|
|
import type { UploadProps, UploadUserFile, FormInstance } from 'element-plus';
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
-import { useRoute } from 'vue-router';
|
|
|
+import { useRoute, useRouter } from 'vue-router';
|
|
|
import { useTelStatus } from '/@/stores/telStatus';
|
|
|
-import { formatDate } from '/@/utils/formatTime';
|
|
|
-import { desensitizationPhone } from '/@/utils/tools';
|
|
|
-import { orderBasedataAdd, orderAdd, hotspottype, historyOrder } from '/@/api/businessManage/workOrderManage';
|
|
|
+import { desensitizationPhone, checkFile, fileType, commonEeum } from '/@/utils/tools';
|
|
|
+import { orderBasedataAdd, orderAdd, hotspottype, historyOrder } from '/@/api/business/order';
|
|
|
import { useUserInfo } from '/@/stores/userInfo';
|
|
|
-import { addCommon } from '/@/api/businessManage/commonP';
|
|
|
+import { addCommon, treeArea } from '/@/api/business/commonP';
|
|
|
+import mittBus from '/@/utils/mitt';
|
|
|
|
|
|
// 引入组件
|
|
|
-const Process = defineAsyncComponent(() => import('/@/views/businessManage/workOrderManage/components/Process.vue'));
|
|
|
-const ExpandForm = defineAsyncComponent(() => import('/@/views/businessManage/workOrderManage/components/ExpandForm.vue'));
|
|
|
-const History = defineAsyncComponent(() => import('/@/views/businessManage/workOrderManage/components/History.vue'));
|
|
|
-const Comment = defineAsyncComponent(() => import('/@/views/businessManage/workOrderManage/components/Comment.vue'));
|
|
|
+const Process = defineAsyncComponent(() => import('/@/views/business/order/components/Process.vue'));
|
|
|
+const ExpandForm = defineAsyncComponent(() => import('/@/views/business/order/components/ExpandForm.vue'));
|
|
|
+const History = defineAsyncComponent(() => import('/@/views/business/order/components/History.vue'));
|
|
|
+const Comment = defineAsyncComponent(() => import('/@/views/business/order/components/Comment.vue'));
|
|
|
// 定义变量内容
|
|
|
const state = reactive<any>({
|
|
|
createFrom: 'manual', // 工单创建方式 默认手动创建 tel:来电弹单 letter:互联网来信 默认表示手动创建
|
|
|
activeName: 'first', // tabs
|
|
|
ruleForm: {
|
|
|
// 表单
|
|
|
- phoneNo: '',
|
|
|
- time: '',
|
|
|
- content: '',
|
|
|
- type: 2,
|
|
|
- repeat: '',
|
|
|
+ street: '',
|
|
|
+ transferPhone: '',
|
|
|
+ employeeName: '',
|
|
|
+ employeeStaffNo: '',
|
|
|
+ duplicateTitle: '',
|
|
|
+ duplicateId: '',
|
|
|
},
|
|
|
acceptTypeOptions: [], // 受理类型
|
|
|
channelOptions: [], // 来源频道
|
|
@@ -487,26 +556,24 @@ const state = reactive<any>({
|
|
|
genderOptions: [], // 性别
|
|
|
identityTypeOptions: [], //来电人身份
|
|
|
licenceTypeOptions: [], // 证件类型
|
|
|
+ ageRangeOptions: [], // 年龄段
|
|
|
orderTypeOptions: [], // 工单类型
|
|
|
pushTypeOptions: [], //推送分类
|
|
|
- levelList: [
|
|
|
+ areaOptions: [], //省市区
|
|
|
+ repeatOptions: [
|
|
|
+ //是否重复
|
|
|
{
|
|
|
- value: '呼入限制',
|
|
|
- key: 0,
|
|
|
+ value: '是',
|
|
|
+ key: 'true',
|
|
|
},
|
|
|
{
|
|
|
- value: '坐席限制',
|
|
|
- key: 1,
|
|
|
- },
|
|
|
- {
|
|
|
- value: '友情提示',
|
|
|
- key: 2,
|
|
|
+ value: '否',
|
|
|
+ key: 'false',
|
|
|
},
|
|
|
],
|
|
|
tableRadio: null as any, // 重复件选择
|
|
|
orgData: [],
|
|
|
- isShowDialog: false,
|
|
|
- tableData: [],
|
|
|
+ tableData: [], // 历史工单
|
|
|
total: 0,
|
|
|
loading: false,
|
|
|
queryParams: {
|
|
@@ -514,8 +581,9 @@ const state = reactive<any>({
|
|
|
PageSize: 10,
|
|
|
Keyword: '',
|
|
|
},
|
|
|
- KnowledgeKeyword: '',
|
|
|
+ KnowledgeKeyword: '', //知识检索内容
|
|
|
items: [
|
|
|
+ // 知识检索热点
|
|
|
{ type: '', label: 'Tag 1' },
|
|
|
{ type: 'success', label: 'Tag 2' },
|
|
|
{ type: 'info', label: 'Tag 3' },
|
|
@@ -543,6 +611,7 @@ const state = reactive<any>({
|
|
|
{ type: 'warning', label: 'Tag 5' },
|
|
|
],
|
|
|
knowledgeList: [
|
|
|
+ //知识检索列表
|
|
|
{
|
|
|
title: '领取失业保险金会影响退休金吗?',
|
|
|
content:
|
|
@@ -554,6 +623,8 @@ const state = reactive<any>({
|
|
|
'不能。退休金的高低跟参保人的平均缴费指数有关,而平均缴费指数是根据每个月的缴费指数累加再除以总缴费月数计算出来的,也就是说最后几年的缴费指数高,如果前面的缴费指数低,也会被平均拉低,当然最后几年交高一点,退休金也会高一点,但不会同比率的提高。',
|
|
|
},
|
|
|
],
|
|
|
+ external: [],
|
|
|
+ hotspotExternal: [], // 热点分类展开
|
|
|
});
|
|
|
const ruleFormRef = ref();
|
|
|
const queryParamsRef = ref();
|
|
@@ -563,20 +634,41 @@ const uploadListRef = ref();
|
|
|
const processRef = ref();
|
|
|
const storesUserInfo = useUserInfo();
|
|
|
const { userInfos } = storeToRefs(storesUserInfo);
|
|
|
+state.ruleForm.employeeName = userInfos.value.name;
|
|
|
+state.ruleForm.employeeStaffNo = userInfos.value.staffNo;
|
|
|
const route = useRoute();
|
|
|
+const router = useRouter();
|
|
|
const HistoryOrderRef = ref();
|
|
|
const CommentRef = ref();
|
|
|
+const hotspotRef = ref();
|
|
|
// 热点分类远程搜索
|
|
|
const HotspotProps = {
|
|
|
- label: 'hotSpotName',
|
|
|
+ label: 'hotSpotFullName',
|
|
|
children: 'children',
|
|
|
isLeaf: 'isLeaf',
|
|
|
};
|
|
|
+// 热点分类懒加载
|
|
|
const load = async (node: any, resolve: any) => {
|
|
|
if (node.isLeaf) return resolve([]);
|
|
|
- let res: any = await hotspottype({ parentId: node.data.id ? node.data.id : '' });
|
|
|
+ const res: any = await hotspottype({ id: node.data.id ? node.data.id : '' });
|
|
|
resolve(res.result);
|
|
|
};
|
|
|
+// 选择热点分类
|
|
|
+const hotsoptChange = (val: any, e: any) => {
|
|
|
+ state.hotspotExternal = [];
|
|
|
+ state.external = [];
|
|
|
+ state.hotspotExternal = getParentId(e, state.external);
|
|
|
+ state.ruleForm.hotspotSpliceName = val.hotSpotFullName;
|
|
|
+ state.ruleForm.hotspot = val.hotSpotName;
|
|
|
+};
|
|
|
+// 递归查找父级Id
|
|
|
+const getParentId = (val: any, arr: string[]) => {
|
|
|
+ if (val.data.parentId) {
|
|
|
+ arr.push(val.data.parentId);
|
|
|
+ getParentId(val.parent, arr);
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
+};
|
|
|
// 手机号码脱敏处理
|
|
|
const phoneNumber = computed(() => {
|
|
|
return desensitizationPhone(telStatusInfo.value.onCallArr[0]?.from);
|
|
@@ -597,44 +689,104 @@ const handleRemove = (file: any) => {
|
|
|
const handleExceed: UploadProps['onExceed'] = (files, uploadFiles) => {
|
|
|
ElMessage.warning(`The limit is 3, you selected ${files.length} files this time, add up to ${files.length + uploadFiles.length} totally`);
|
|
|
};
|
|
|
-
|
|
|
-/** 搜索按钮操作 */
|
|
|
-const handleQuery = () => {
|
|
|
- state.queryParams.PageIndex = 1;
|
|
|
- getList();
|
|
|
-};
|
|
|
-/** 重置按钮操作 */
|
|
|
-const resetQuery = (formEl: FormInstance | undefined) => {
|
|
|
- if (!formEl) return;
|
|
|
- formEl.resetFields();
|
|
|
- handleQuery();
|
|
|
-};
|
|
|
-/** 获取历史工单 */
|
|
|
-const getList = () => {
|
|
|
- state.loading = true;
|
|
|
- historyOrder(state.queryParams)
|
|
|
- .then((response: any) => {
|
|
|
- state.tableData = response?.result.items ?? [];
|
|
|
- state.total = response?.result.total;
|
|
|
- setTimeout(() => {
|
|
|
- state.loading = false;
|
|
|
- }, 300);
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- state.loading = false;
|
|
|
+// 选择工单类型 处理受理类型选择数据
|
|
|
+const selectOrderType = (val: any) => {
|
|
|
+ ruleFormRef.value.resetFields('acceptType');
|
|
|
+ if (val === 1) {
|
|
|
+ // 选择了12315市场监管受理单
|
|
|
+ state.acceptTypeOptions = state.acceptTypeOptions.map((item: any) => {
|
|
|
+ if (item.key === 5 || item.key === 6) {
|
|
|
+ //直接投诉或者建议
|
|
|
+ return {
|
|
|
+ key: item.key,
|
|
|
+ value: item.value,
|
|
|
+ disabled: false,
|
|
|
+ };
|
|
|
+ } else {
|
|
|
+ return {
|
|
|
+ key: item.key,
|
|
|
+ value: item.value,
|
|
|
+ disabled: true,
|
|
|
+ };
|
|
|
+ }
|
|
|
});
|
|
|
+ } else {
|
|
|
+ state.acceptTypeOptions = state.acceptTypeOptions.map((item: any) => {
|
|
|
+ return {
|
|
|
+ key: item.key,
|
|
|
+ value: item.value,
|
|
|
+ disabled: false,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ }
|
|
|
+};
|
|
|
+const areaRef = ref();
|
|
|
+// 选择省市区
|
|
|
+const changeArea = () => {
|
|
|
+ const currentNode = areaRef.value.getCheckedNodes();
|
|
|
+ state.ruleForm.province = currentNode[0].pathLabels[0];
|
|
|
+ state.ruleForm.city = currentNode[0].pathLabels[1];
|
|
|
+ state.ruleForm.county = currentNode[0].pathLabels[2];
|
|
|
};
|
|
|
const ExpandFormRef = ref();
|
|
|
// 打开拓展表单
|
|
|
-const showExpandForm = (id: any) => {
|
|
|
- ExpandFormRef.value.openDialog(id);
|
|
|
+const showExpandForm = () => {
|
|
|
+ ExpandFormRef.value.openDialog(state.ruleForm.acceptType);
|
|
|
+};
|
|
|
+// 拓展表单保存
|
|
|
+const saveExpandForm = (val: any) => {
|
|
|
+ switch (state.ruleForm.acceptType) {
|
|
|
+ case 5: //举报
|
|
|
+ state.ruleForm.orderReport = val;
|
|
|
+ break;
|
|
|
+ case 6: //投诉
|
|
|
+ state.ruleForm.orderComplain = val;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
};
|
|
|
-
|
|
|
// 保存
|
|
|
const save = () => {
|
|
|
ruleFormRef.value.validate((valid: boolean) => {
|
|
|
if (valid) {
|
|
|
- console.log(ruleFormRef.value);
|
|
|
+ state.ruleForm.hotspotExternal = state.hotspotExternal.join(',');
|
|
|
+ let submitObj = JSON.parse(JSON.stringify(state.ruleForm));
|
|
|
+ Reflect.deleteProperty(submitObj, 'ageRangeObj'); // 删除无用的参数 年龄段
|
|
|
+ Reflect.deleteProperty(submitObj, 'pushTypeObj'); // 删除无用的参数 推送分类
|
|
|
+ Reflect.deleteProperty(submitObj, 'licenceTypeObj'); // 删除无用的参数 证件类型
|
|
|
+ if (submitObj.acceptType === 5) Reflect.deleteProperty(submitObj, 'orderComplain'); // 举报 删除投诉表单
|
|
|
+ if (submitObj.acceptType === 6) Reflect.deleteProperty(submitObj, 'orderReport'); // 投诉 删除举报表单
|
|
|
+ if (submitObj.orderType === 1 && submitObj.acceptType) {
|
|
|
+ //拓展表单
|
|
|
+ if (ExpandFormRef.value.state.validated) {
|
|
|
+ //验证通过
|
|
|
+ // 新增
|
|
|
+ orderAdd(submitObj).then(() => {
|
|
|
+ ElMessage.success('操作成功');
|
|
|
+ router.push({
|
|
|
+ path: '/business/order',
|
|
|
+ });
|
|
|
+ // 关闭当前 tagsView
|
|
|
+ mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
|
|
|
+ mittBus.emit('refreshList');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //不通过 展示弹窗
|
|
|
+ ExpandFormRef.value.openDialog(submitObj.acceptType, true); // 立即提交展示验证
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 新增
|
|
|
+ orderAdd(submitObj).then(() => {
|
|
|
+ ElMessage.success('操作成功');
|
|
|
+ router.push({
|
|
|
+ path: '/business/order',
|
|
|
+ });
|
|
|
+ // 关闭当前 tagsView
|
|
|
+ mittBus.emit('onCurrentContextmenuClick', Object.assign({}, { contextMenuClickId: 1, ...route }));
|
|
|
+ mittBus.emit('refreshList');
|
|
|
+ });
|
|
|
+ }
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
@@ -644,73 +796,67 @@ const save = () => {
|
|
|
const submit = () => {
|
|
|
ruleFormRef.value.validate((valid: boolean) => {
|
|
|
if (valid) {
|
|
|
- console.log(ruleFormRef.value);
|
|
|
+ state.ruleForm.hotspotExternal = state.hotspotExternal.join(',');
|
|
|
+ let submitObj = JSON.parse(JSON.stringify(state.ruleForm));
|
|
|
+ Reflect.deleteProperty(submitObj, 'ageRangeObj'); // 删除无用的参数 年龄段
|
|
|
+ Reflect.deleteProperty(submitObj, 'pushTypeObj'); // 删除无用的参数 推送分类
|
|
|
+ Reflect.deleteProperty(submitObj, 'licenceTypeObj'); // 删除无用的参数 证件类型
|
|
|
+ if (submitObj.acceptType === 5) Reflect.deleteProperty(submitObj, 'orderComplain'); // 举报 删除投诉表单
|
|
|
+ if (submitObj.acceptType === 6) Reflect.deleteProperty(submitObj, 'orderReport'); // 投诉 删除举报表单
|
|
|
+ if (submitObj.orderType === 1 && submitObj.acceptType) {
|
|
|
+ //拓展表单
|
|
|
+ if (ExpandFormRef.value.state.validated) {
|
|
|
+ // 新增
|
|
|
+ orderAdd(state.ruleForm).then((res: any) => {
|
|
|
+ ElMessage.success('操作成功');
|
|
|
+ processRef.value.openDialog({ id: res.result, title: '提交', commonEeum: commonEeum.Seat, start: true });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //不通过 展示弹窗
|
|
|
+ ExpandFormRef.value.openDialog(submitObj.acceptType, true); // 立即提交展示验证
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 新增
|
|
|
+ orderAdd(state.ruleForm).then((res: any) => {
|
|
|
+ ElMessage.success('操作成功');
|
|
|
+ processRef.value.openDialog({ id: res.result, title: '提交', commonEeum: commonEeum.Seat, start: true });
|
|
|
+ });
|
|
|
+ }
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
-// 检查文件类型
|
|
|
-const checkFile = (fileValue: string) => {
|
|
|
- let index = fileValue.lastIndexOf('.'); //(考虑严谨用lastIndexOf(".")得到)得到"."在第几位
|
|
|
- let fileValueSuffix = fileValue.substring(index); //截断"."之前的,得到后缀
|
|
|
- if (/(.*)\.(mp4|avi|wmv|MP4|AVI|WMV)$/.test(fileValueSuffix)) {
|
|
|
- //根据后缀,判断是否符合视频格式
|
|
|
- return 'video';
|
|
|
- } else if (/(.*)\.(jpg|JPG|bmp|BMP|mpg|MPG|mpeg|MPEG|tis|TIS|svg)$/.test(fileValueSuffix)) {
|
|
|
- //根据后缀,判断是否符合图片格式
|
|
|
- return 'image';
|
|
|
- } else if (/(.*)\.(xls|XLS|xlsx|XLSX)$/.test(fileValueSuffix)) {
|
|
|
- //根据后缀,判断是否符合OFFICE格式
|
|
|
- return 'xls';
|
|
|
- } else if (/(.*)\.(doc|DOC|docx|DOCX)$/.test(fileValueSuffix)) {
|
|
|
- // 文档类型
|
|
|
- return 'doc';
|
|
|
- } else if (/(.*)\.(pdf|PDF)$/.test(fileValueSuffix)) {
|
|
|
- // PDF
|
|
|
- return 'pdf';
|
|
|
- } else if (/(.*)\.(PPT|PPTX|ppt|pptx)$/.test(fileValueSuffix)) {
|
|
|
- // ppt
|
|
|
- return 'ppt';
|
|
|
- }
|
|
|
- return '';
|
|
|
-};
|
|
|
// 清除重复件
|
|
|
const clearRepeat = () => {
|
|
|
- ruleFormRef.value.resetFields('repeat');
|
|
|
+ state.ruleForm.duplicateTitle = '';
|
|
|
+ state.ruleForm.duplicateId = '';
|
|
|
+ state.tableRadio = '';
|
|
|
};
|
|
|
// 选择重复件
|
|
|
const selectRepat = () => {
|
|
|
- HistoryOrderRef.value.openDialog();
|
|
|
+ HistoryOrderRef.value.openDialog(state.ruleForm.duplicateId);
|
|
|
};
|
|
|
// 弹窗确定选择重复件
|
|
|
const saveSlect = (row: any) => {
|
|
|
- console.log(row);
|
|
|
state.ruleForm.duplicateId = row.id;
|
|
|
- state.ruleForm.duplicateName = row.name;
|
|
|
+ state.ruleForm.duplicateTitle = row.title;
|
|
|
+ state.tableRadio = row.id;
|
|
|
HistoryOrderRef.value.closeDialog();
|
|
|
};
|
|
|
// 右边表格选中重复件
|
|
|
const handleSelectionChange = (row: any) => {
|
|
|
state.ruleForm.duplicateId = row.id;
|
|
|
- state.ruleForm.duplicateName = row.name;
|
|
|
+ state.ruleForm.duplicateTitle = row.title;
|
|
|
};
|
|
|
-const summary = {
|
|
|
- Discriminate: 'Discriminate', // 甄别惯用语
|
|
|
- Return: 'Return', // 退回惯用语
|
|
|
- Archive: 'Archive', // 归档惯用语
|
|
|
- Teti: 'Teti', // 特提惯用语
|
|
|
- Seat: 'Seat', // 坐席惯用语
|
|
|
- Circulation: 'Circulation', // 流转惯用语
|
|
|
- ReturnVisit: 'ReturnVisit', // 回访惯用语
|
|
|
- HandleAgain: 'HandleAgain', // 办理惯用语
|
|
|
- Delay: 'Delay', // 延期惯用语
|
|
|
- Supervise: 'Supervise', // 督办惯用语
|
|
|
- KnowledgeLocution: 'KnowledgeLocution', // 知识诉求惯用语
|
|
|
+// 选择重复件
|
|
|
+const handleRowChange = (row: any) => {
|
|
|
+ state.ruleForm.duplicateId = row.id;
|
|
|
+ state.ruleForm.duplicateName = row.title;
|
|
|
};
|
|
|
// 打开常用意见管理
|
|
|
const showComents = () => {
|
|
|
- CommentRef.value.openDialog(summary.Seat);
|
|
|
+ CommentRef.value.openDialog(commonEeum.Seat);
|
|
|
};
|
|
|
// 添加到常用意见
|
|
|
const onAddComments = async () => {
|
|
@@ -719,7 +865,7 @@ const onAddComments = async () => {
|
|
|
return;
|
|
|
}
|
|
|
await addCommon({
|
|
|
- typeCode: summary.Seat,
|
|
|
+ typeCode: commonEeum.Seat,
|
|
|
content: state.ruleForm.content,
|
|
|
});
|
|
|
ElMessage.success('操作成功');
|
|
@@ -727,47 +873,53 @@ const onAddComments = async () => {
|
|
|
};
|
|
|
// 选中常用意见
|
|
|
const chooseComment = (item: any) => {
|
|
|
- state.ruleForm.content+=item.content;
|
|
|
+ state.ruleForm.content += item.content;
|
|
|
CommentRef.value.closeDialog();
|
|
|
};
|
|
|
-// 返回相对应的字段
|
|
|
-const fileType = (file: string) => {
|
|
|
- switch (file) {
|
|
|
- case 'video':
|
|
|
- return 'ele-VideoCamera';
|
|
|
- case 'image':
|
|
|
- return 'ele-Picture';
|
|
|
- case 'xls':
|
|
|
- return 'iconfont icon-excel';
|
|
|
- case 'doc':
|
|
|
- return 'ele-Document';
|
|
|
- case 'pdf':
|
|
|
- return 'iconfont icon-pdf';
|
|
|
- case 'ppt':
|
|
|
- return 'iconfont icon-ppt';
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
-};
|
|
|
// 历史工单搜索
|
|
|
const searchKnowledge = (value?: string) => {
|
|
|
if (value) state.KnowledgeKeyword = value;
|
|
|
state.loading = true;
|
|
|
- setTimeout(() => {
|
|
|
- state.loading = false;
|
|
|
- }, 300);
|
|
|
+ state.loading = false;
|
|
|
};
|
|
|
// 办理工单
|
|
|
const handleOrder = (val: any) => {
|
|
|
processRef.value.openDialog({ id: val, title: '提交' });
|
|
|
};
|
|
|
-//
|
|
|
-const hotsoptChange = (val)=>{
|
|
|
- console.log(val);
|
|
|
-}
|
|
|
+/** 搜索按钮操作 */
|
|
|
+const handleQuery = () => {
|
|
|
+ state.queryParams.PageIndex = 1;
|
|
|
+ searchHistory();
|
|
|
+};
|
|
|
+/** 重置按钮操作 */
|
|
|
+const resetQuery = (formEl: FormInstance | undefined) => {
|
|
|
+ if (!formEl) return;
|
|
|
+ formEl.resetFields();
|
|
|
+ handleQuery();
|
|
|
+};
|
|
|
+/** 获取历史工单 */
|
|
|
+const searchHistory = () => {
|
|
|
+ state.loading = true;
|
|
|
+ let request = {
|
|
|
+ ...state.queryParams,
|
|
|
+ PhoneNo: state.ruleForm.fromPhone,
|
|
|
+ };
|
|
|
+ historyOrder(request)
|
|
|
+ .then((response: any) => {
|
|
|
+ state.tableData = response?.result.items ?? [];
|
|
|
+ state.total = response?.result.total;
|
|
|
+ setTimeout(() => {
|
|
|
+ state.loading = false;
|
|
|
+ }, 300);
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ state.loading = false;
|
|
|
+ });
|
|
|
+};
|
|
|
onMounted(async () => {
|
|
|
- getList(); //获取历史工单
|
|
|
- let res: any = await orderBasedataAdd(); //基础数据
|
|
|
+ state.loading = true;
|
|
|
+ const area: any = await treeArea();
|
|
|
+ const res: any = await orderBasedataAdd(); //基础数据
|
|
|
state.acceptTypeOptions = res.result?.acceptTypeOptions ?? [];
|
|
|
state.channelOptions = res.result?.channelOptions ?? [];
|
|
|
state.emergencyLevelOptions = res.result?.emergencyLevelOptions ?? [];
|
|
@@ -775,9 +927,13 @@ onMounted(async () => {
|
|
|
state.identityTypeOptions = res.result?.identityTypeOptions ?? [];
|
|
|
state.orderTypeOptions = res.result?.orderTypeOptions ?? [];
|
|
|
state.pushTypeOptions = res.result?.pushTypeOptions ?? [];
|
|
|
+ state.licenceTypeOptions = res.result?.licenceTypeOptions ?? [];
|
|
|
+ state.ageRangeOptions = res.result?.ageRangeOptions ?? [];
|
|
|
state.ruleForm.seats = `${userInfos.value.name} [${userInfos.value.staffNo}]`;
|
|
|
// route.query.createFrom createFrom 代表来源 tel:来电弹单 letter:互联网来信 默认表示手动创建
|
|
|
if (route.query.createFrom) state.createFrom = route.query.createFrom;
|
|
|
+ state.areaOptions = area.result ?? []; //省市区数据
|
|
|
+ state.loading = false;
|
|
|
});
|
|
|
</script>
|
|
|
|
|
@@ -817,15 +973,7 @@ onMounted(async () => {
|
|
|
}
|
|
|
.workorder-container {
|
|
|
color: var(--hotline-color-text-main);
|
|
|
- .left-content {
|
|
|
- &-form {
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
.right-content {
|
|
|
- &-box {
|
|
|
- }
|
|
|
-
|
|
|
&-knowledge {
|
|
|
.knowledge-container {
|
|
|
position: relative;
|