Order-detail.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581
  1. <template>
  2. <div>
  3. <el-dialog v-model="state.dialogVisible" draggable title="工单详情" ref="dialogRef" width="80%" append-to-body destroy-on-close>
  4. <el-tabs v-model="state.activeName" class="demo-tabs" @tab-change="handleClick">
  5. <el-tab-pane :name="item.value" v-for="item in state.tabPaneList" :key="item.value" :label="item.label"></el-tab-pane>
  6. </el-tabs>
  7. <!-- 工单详情 -->
  8. <el-collapse v-model="state.collapseArr" v-if="state.activeName === '0'" class="collapse-box" v-loading="state.loading">
  9. <!-- 来电信息 -->
  10. <el-collapse-item name="1">
  11. <template #title>
  12. <p class="pl20">
  13. <b class="font14">来电信息</b>
  14. </p>
  15. </template>
  16. <div class="collapse-container pb1">
  17. <el-form label-width="100px" ref="ruleFormRef">
  18. <el-row :gutter="35">
  19. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
  20. <el-form-item label="来源渠道"> {{ state.ruleForm.channelText }} </el-form-item>
  21. </el-col>
  22. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
  23. <el-form-item label="转接来源"> {{ state.ruleForm.transferPhone }} </el-form-item>
  24. </el-col>
  25. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.fromPhone">
  26. <el-form-item label="来电号码">
  27. {{ state.ruleForm.fromPhone }}
  28. <!-- <el-popover :width="480" trigger="hover">
  29. <template #reference>
  30. <el-button link type="primary" class="ml5" title="播放录音"><SvgIcon name="ele-Headset" size="16px" /></el-button>
  31. </template>
  32. <AudioPlayer ref="AudioPlayerRef" :url="state.ruleForm.url" />
  33. </el-popover> -->
  34. </el-form-item>
  35. </el-col>
  36. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
  37. <el-form-item label="服务坐席"> {{ state.ruleForm.employeeName }}[{{ state.ruleForm.employeeStaffNo }}] </el-form-item>
  38. </el-col>
  39. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
  40. <el-form-item label="来电/信人">
  41. {{ state.ruleForm.fromName }} <span v-if="state.ruleForm.fromGenderText !== '未知'"> {{ state.ruleForm.fromGenderText }}</span>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
  45. <el-form-item label="来电/信人身份"> {{ state.ruleForm.identityTypeText }} </el-form-item>
  46. </el-col>
  47. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.licenceType">
  48. <el-form-item label="证件类型"> {{ state.ruleForm.licenceType }} </el-form-item>
  49. </el-col>
  50. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.licenceNo">
  51. <el-form-item label="证件号码"> {{ state.ruleForm.licenceNo }} </el-form-item>
  52. </el-col>
  53. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.ageRange">
  54. <el-form-item label="年龄段"> {{ state.ruleForm.ageRange }} </el-form-item>
  55. </el-col>
  56. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.needContact">
  57. <el-form-item label="联系电话"> 无需联系 </el-form-item>
  58. </el-col>
  59. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-else>
  60. <el-form-item label="联系电话"> {{ state.ruleForm.contactMask }} </el-form-item>
  61. </el-col>
  62. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
  63. <el-form-item label="受理短信">
  64. <span style="color: var(--el-color-danger)" v-if="state.ruleForm.acceptSms"
  65. >未发送<el-button link type="primary" class="ml5" title="重新发送"
  66. ><SvgIcon name="iconfont icon-zhongxinfasong" size="16px" /></el-button
  67. ></span>
  68. </el-form-item>
  69. </el-col>
  70. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
  71. <el-form-item label="受理时间"> {{ formatDate(state.ruleForm.startTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
  72. </el-col>
  73. <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" v-if="state.ruleForm.company">
  74. <el-form-item label="工作单位"> {{ state.ruleForm.company }} </el-form-item>
  75. </el-col>
  76. </el-row>
  77. </el-form>
  78. </div>
  79. </el-collapse-item>
  80. <!-- 诉求信息 -->
  81. <el-collapse-item name="2">
  82. <template #title>
  83. <p class="pl20">
  84. <b class="font14">诉求信息</b>
  85. </p>
  86. </template>
  87. <div class="collapse-container pb1">
  88. <el-form label-width="100px" ref="ruleFormRef">
  89. <el-row :gutter="35">
  90. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  91. <el-form-item label="工单标题">
  92. {{ state.ruleForm.title }} <el-tag class="ml10">{{ state.ruleForm.statusText }}</el-tag>
  93. </el-form-item>
  94. </el-col>
  95. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="8">
  96. <el-form-item label="工单编码"> {{ state.ruleForm.no }} </el-form-item>
  97. </el-col>
  98. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="8">
  99. <el-form-item label="紧急程度"> {{ state.ruleForm.emergencyLevelText }} </el-form-item>
  100. </el-col>
  101. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="8">
  102. <el-form-item label="受理类型"> {{ state.ruleForm.acceptTypeText }} </el-form-item>
  103. </el-col>
  104. <el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
  105. <el-form-item label="工单类型">
  106. {{ state.ruleForm.orderTypeText }}
  107. <!-- 投诉或者建议并且是12315工单才有扩展信息 -->
  108. <el-button
  109. link
  110. type="primary"
  111. v-if="state.ruleForm.orderType === 1 && (state.ruleForm.acceptType === 30 || state.ruleForm.acceptType === 35)"
  112. class="ml10"
  113. @click="showExpandInfo"
  114. ><SvgIcon name="ele-Document" class="mr2" /> 拓展信息</el-button
  115. >
  116. </el-form-item>
  117. </el-col>
  118. <el-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16">
  119. <el-form-item label="热点分类"> {{ state.ruleForm.hotspotSpliceName }} </el-form-item>
  120. </el-col>
  121. <el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8" v-if="state.ruleForm.incidentTime">
  122. <el-form-item label="事发时间"> {{ formatDate(state.ruleForm.incidentTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
  123. </el-col>
  124. <el-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16" v-if="state.ruleForm.address">
  125. <el-form-item label="事发地址"> {{ state.ruleForm.address }} </el-form-item>
  126. </el-col>
  127. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  128. <el-form-item label="重复工单" v-if="state.ruleForm.duplicateTitle">
  129. <el-button link type="primary" @click="showDuplicateInfo"> {{ state.ruleForm.duplicateTitle }}</el-button>
  130. </el-form-item>
  131. </el-col>
  132. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.pushType">
  133. <el-form-item label="推送分类"> {{ state.ruleForm.pushType }} </el-form-item>
  134. </el-col>
  135. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  136. <el-form-item label="投诉详情">
  137. {{ state.ruleForm.content }}
  138. </el-form-item>
  139. </el-col>
  140. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="state.ruleForm.additions && state.ruleForm.additions.length">
  141. <el-form-item label="附件"> </el-form-item>
  142. </el-col>
  143. </el-row>
  144. </el-form>
  145. </div>
  146. </el-collapse-item>
  147. <!-- 补充信息 -->
  148. <el-collapse-item name="3" v-if="state.supplements && state.supplements.length">
  149. <template #title>
  150. <p class="pl20">
  151. <b class="font14">补充信息</b>
  152. </p>
  153. </template>
  154. <div class="collapse-container">
  155. <div v-for="(i, index) in state.supplements" :key="i" class="plug-container">
  156. <p class="plug-container-title">第{{ verifyNumberCnUppercase(index + 1) }}次</p>
  157. <el-form label-width="100px" ref="ruleFormRef" class="pt10 pb10">
  158. <el-row :gutter="35">
  159. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  160. <el-form-item label="补充人">
  161. {{ i.creator.name }} <span v-if="i.creator.staffNo">[{{ i.creator.staffNo }} ]</span>
  162. </el-form-item>
  163. </el-col>
  164. <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
  165. <el-form-item label="补充时间"> {{ formatDate(i.creationTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
  166. </el-col>
  167. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  168. <el-form-item label="补充详情">
  169. {{ i.opinion }}
  170. </el-form-item>
  171. </el-col>
  172. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" v-if="i.additions && i.additions.length">
  173. <el-form-item label="附件"> </el-form-item>
  174. </el-col>
  175. </el-row>
  176. </el-form>
  177. </div>
  178. </div>
  179. </el-collapse-item>
  180. <!-- 办件结果 -->
  181. <el-collapse-item name="4" v-if="state.workflow.assignOrgs">
  182. <template #title>
  183. <p class="pl20">
  184. <b class="font14">办件结果</b>
  185. </p>
  186. </template>
  187. <div class="collapse-container pb1">
  188. <el-form label-width="100px" ref="ruleFormRef">
  189. <el-row :gutter="35">
  190. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  191. <el-form-item label="接办部门"> {{ state.workflow.assignOrgs }}</el-form-item>
  192. </el-col>
  193. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6">
  194. <el-form-item label="交办时间"> {{ formatDate(state.workflow.assignTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
  195. </el-col>
  196. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6">
  197. <el-form-item label="办理时限"> {{ state.workflow.timeLimit }} </el-form-item>
  198. </el-col>
  199. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6">
  200. <el-form-item label="办理期限"> {{ formatDate(state.workflow.expiredTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
  201. </el-col>
  202. <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6">
  203. <el-form-item label="办理时间"> {{ formatDate(state.workflow.completeTime, 'YYYY-mm-dd HH:MM:SS') }} </el-form-item>
  204. </el-col>
  205. <!-- <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="6">
  206. <el-form-item label="办理时间">
  207. {{ formatDate(state.ruleForm.workflow.completeTime, 'YYYY-mm-dd HH:MM:SS') }}
  208. <el-popover placement="top-start" popper-class="demo-tabs-form" :width="state.extensionList.length >= 1 ? 400 : 300" trigger="hover">
  209. <template #reference>
  210. <el-tag class="ml10" style="cursor: pointer" type="danger">已延期 </el-tag>
  211. </template>
  212. <p class="title"><b>延期申请记录</b></p>
  213. <template v-if="state.extensionList.length >= 1">
  214. <el-tabs tab-position="left" v-model="state.extensionState">
  215. <el-tab-pane :label="'第' + index + '次'" :name="item.id" v-for="(item, index) in state.extensionList" :key="index">
  216. <template v-if="state.extensionState === index + 1">
  217. <el-form label-width="100px" ref="ruleFormRef">
  218. <el-row :gutter="0">
  219. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  220. <el-form-item label="原办理期限">{{ formatDate(state.ruleForm.startTime, 'YYYY-mm-dd HH:MM:SS') }}</el-form-item>
  221. </el-col>
  222. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  223. <el-form-item label="申请部门">市场监管部门</el-form-item>
  224. </el-col>
  225. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  226. <el-form-item label="申请时间">{{ formatDate(state.ruleForm.startTime, 'YYYY-mm-dd HH:MM:SS') }}</el-form-item>
  227. </el-col>
  228. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  229. <el-form-item label="申请延期">{{ index + 1 }}个工作日</el-form-item>
  230. </el-col>
  231. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  232. <el-form-item label="新办理期限">{{ formatDate(state.ruleForm.startTime, 'YYYY-mm-dd HH:MM:SS') }}</el-form-item>
  233. </el-col>
  234. </el-row>
  235. </el-form>
  236. </template>
  237. </el-tab-pane>
  238. <template> </template>
  239. </el-tabs>
  240. </template>
  241. <template v-else>
  242. <el-form label-width="100px" ref="ruleFormRef">
  243. <el-form-item label="原办理期限">{{ formatDate(state.ruleForm.startTime, 'YYYY-mm-dd HH:MM:SS') }}</el-form-item>
  244. <el-form-item label="申请部门">市场监管部门</el-form-item>
  245. <el-form-item label="申请时间">{{ formatDate(state.ruleForm.startTime, 'YYYY-mm-dd HH:MM:SS') }}</el-form-item>
  246. <el-form-item label="申请延期">3个工作日</el-form-item>
  247. <el-form-item label="新办理期限">{{ formatDate(state.ruleForm.startTime, 'YYYY-mm-dd HH:MM:SS') }}</el-form-item>
  248. </el-form>
  249. </template>
  250. </el-popover>
  251. </el-form-item>
  252. </el-col> -->
  253. <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
  254. <el-form-item label="办理意见"> {{ state.workflow.opinion }} </el-form-item>
  255. </el-col>
  256. </el-row>
  257. </el-form>
  258. </div>
  259. </el-collapse-item>
  260. </el-collapse>
  261. <template #footer>
  262. <span class="dialog-footer">
  263. <el-button type="primary" @click="onRecord" :loading="state.loading" v-auth="'system:workflow:record'">流转记录</el-button>
  264. <!-- 工单未归档和可以办理展示办理按钮 -->
  265. <el-button
  266. type="primary"
  267. @click="onSubmit('提交', 'next')"
  268. :loading="state.loading"
  269. v-if="state.ruleForm.workflow?.status !== 60 && state.workflow.canHandle"
  270. v-auth="'system:workflow:handle'"
  271. >办 理</el-button
  272. >
  273. <el-button type="primary" @click="onDelay" v-auth="'business:order:delay'" :loading="state.loading">延 期</el-button>
  274. <!-- 流程结束之后不展示补充按钮 -->
  275. <el-button type="primary" @click="onSupply" :loading="state.loading" v-if="state.workflow.status === 0" v-auth="'business:order:supply'"
  276. >补 充</el-button
  277. >
  278. <el-button type="primary" @click="onSupervise" :loading="state.loading" v-auth="'business:order:supervise'">督 办</el-button>
  279. <el-button type="primary" @click="onRevoke" :loading="state.loading" v-auth="'business:order:revoke'">撤 销</el-button>
  280. <!-- 工单未归档都可以撤回 -->
  281. <el-button
  282. type="primary"
  283. @click="onSubmit('撤回', 'recall')"
  284. :loading="state.loading"
  285. v-if="state.ruleForm.workflow?.status === 0"
  286. v-auth="'system:workflow:recall'"
  287. >撤 回</el-button
  288. >
  289. <!-- 工单未归档和可以办理展示退回按钮 -->
  290. <el-button
  291. type="primary"
  292. @click="onSubmit('退回', 'return')"
  293. :loading="state.loading"
  294. v-if="state.ruleForm.workflow?.status !== 60 && state.workflow.canHandle"
  295. v-auth="'system:workflow:return'"
  296. >退 回</el-button
  297. >
  298. </span>
  299. </template>
  300. </el-dialog>
  301. <!-- 处理流程 -->
  302. <order-process ref="OrderProcessRef" @orderProcessSuccess="orderProcessSuccess" @orderProcessFailed="orderProcessFailed" />
  303. <!-- 扩展信息 -->
  304. <order-expand-detail ref="orderExpandDetailRef" />
  305. <!-- 流转记录 -->
  306. <!-- <order-circulation-record ref="orderCirculationRecordRef" />-->
  307. <audit-record ref="AuditRecordRef">
  308. <template #header>
  309. <el-form label-width="90px" ref="ruleFormRef">
  310. <el-row :gutter="35">
  311. <el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
  312. <el-form-item label="工单编码"> {{ state.ruleForm.no }} </el-form-item>
  313. </el-col>
  314. <el-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16">
  315. <el-form-item label="工单标题"> {{ state.ruleForm.title }} </el-form-item>
  316. </el-col>
  317. </el-row>
  318. </el-form>
  319. </template>
  320. </audit-record>
  321. <!-- 工单补充 -->
  322. <order-supply ref="orderSupplyRef" @onSupplySuccess="onSupplySuccess" />
  323. <!-- 工单撤销 -->
  324. <order-revoke ref="orderRevokeRef" @onRevokeSuccess="onRevokeSuccess" />
  325. <!-- 工单延期 -->
  326. <order-delay ref="orderDelayRef" @OnDelaySuccess="OnDelaySuccess" />
  327. <!-- 工单督办 -->
  328. <order-super-vise ref="orderSuperviseRef" @onSuperviseSuccess="onSuperviseSuccess" />
  329. </div>
  330. </template>
  331. <script setup lang="ts" name="orderDetail">
  332. import { defineAsyncComponent, reactive, ref } from 'vue';
  333. import { useRouter } from 'vue-router';
  334. import { throttle } from '/@/utils/tools';
  335. import { commonEnum } from '/@/utils/constants';
  336. import { verifyNumberCnUppercase } from '/@/utils/toolsValidate';
  337. import { orderDetail } from '/@/api/business/order';
  338. import { formatDate } from '/@/utils/formatTime';
  339. import {ElMessage} from "element-plus";
  340. // 引入组件
  341. const OrderExpandDetail = defineAsyncComponent(() => import('/@/views/business/order/components/Order-expand-detail.vue')); // 扩展信息
  342. // const OrderCirculationRecord = defineAsyncComponent(() => import('/@/views/business/order/components/Order-circulation-record.vue'));
  343. const OrderProcess = defineAsyncComponent(() => import('/@/views/business/order/components/Order-process.vue')); // 处理流程
  344. const OrderSupply = defineAsyncComponent(() => import('/@/views/business/order/components/Order-supply.vue')); // 工单补充
  345. const OrderRevoke = defineAsyncComponent(() => import('/@/views/business/order/components/Order-revoke.vue')); // 工单撤销
  346. const OrderDelay = defineAsyncComponent(() => import('/@/views/business/delay/components/Order-delay.vue')); // 工单延期
  347. const OrderSuperVise = defineAsyncComponent(() => import('/@/views/business/supervise/components/Order-supervise.vue')); // 工单督办
  348. const AuditRecord = defineAsyncComponent(() => import('/@/components/AuditRecord/index.vue')); // 审核记录
  349. // const AudioPlayer = defineAsyncComponent(() => import('/@/components/AudioPlayer/index.vue'));
  350. // 定义子组件向父组件传值/事件
  351. const emit = defineEmits(['updateList', 'handle']);
  352. // 定义变量内容
  353. const state = reactive<any>({
  354. dialogVisible: false, // 弹窗显示隐藏
  355. ruleForm: {
  356. // 表单数据
  357. url: '',
  358. fromGenderText: '',
  359. channelText: '',
  360. identityTypeText: '',
  361. licenceNo: '',
  362. contactMask: '',
  363. company: '',
  364. emergencyLevelText: '',
  365. incidentTime: '',
  366. } as any,
  367. activeName: '0', // tab切换
  368. tabPaneList: [
  369. // tab列表
  370. {
  371. label: '工单详情',
  372. value: '0',
  373. },
  374. {
  375. label: '延期记录',
  376. value: '1',
  377. },
  378. {
  379. label: '历史工单',
  380. value: '2',
  381. },
  382. {
  383. label: '回访记录',
  384. value: '3',
  385. },
  386. {
  387. label: '甄别记录',
  388. value: '4',
  389. },
  390. {
  391. label: '市民画像',
  392. value: '5',
  393. },
  394. ],
  395. collapseArr: ['1', '2'], //展开列表
  396. extensionState: 1, // 1展开 2收起
  397. extensionList: [{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }],
  398. loading: false,
  399. supplements: [],
  400. workflow: {},
  401. orderId: '',
  402. });
  403. const ruleFormRef = ref<RefType>(); // 表单ref
  404. const router = useRouter(); // 路由
  405. // 打开弹窗
  406. const openDialog = (val: any) => {
  407. if(!val || !val.id){
  408. ElMessage.error('工单id不能为空')
  409. return;
  410. }
  411. state.orderId = val.id;
  412. getDetail(val.id);
  413. };
  414. // 查看详情
  415. const getDetail = async (id: string) => {
  416. state.loading = true;
  417. try {
  418. const res: any = await orderDetail(id);
  419. state.ruleForm = res.result;
  420. state.workflow = state.ruleForm?.workflow ?? {};
  421. state.supplements = res.result?.workflow?.supplements ?? [];
  422. state.loading = false;
  423. state.dialogVisible = true;
  424. } catch (error) {
  425. state.loading = false;
  426. state.dialogVisible = false;
  427. }
  428. };
  429. // 展示扩展表单
  430. const orderExpandDetailRef = ref<RefType>(); // 扩展信息
  431. const showExpandInfo = () => {
  432. let form: any = {};
  433. if (state.ruleForm.acceptType === 30) {
  434. // 举报
  435. form = state.ruleForm.orderReport;
  436. form.orderTypeText = '12315市场监管局受理单';
  437. form.acceptTypeText = '举报';
  438. } else if (state.ruleForm.acceptType === 35) {
  439. //投诉
  440. form = state.ruleForm.orderComplain;
  441. form.orderTypeText = '12315市场监管局受理单';
  442. form.acceptTypeText = '投诉';
  443. }
  444. orderExpandDetailRef.value.openDialog(form);
  445. };
  446. // 展示重复工单详情
  447. const showDuplicateInfo = () => {
  448. state.dialogVisible = false;
  449. router.push({
  450. name: 'repeatOrderDetail',
  451. params: {
  452. id: state.ruleForm.duplicateId,
  453. tagsViewName: '工单详情-' + state.ruleForm.duplicateTitle,
  454. },
  455. });
  456. };
  457. // 关闭弹窗
  458. const closeDialog = () => {
  459. state.dialogVisible = false;
  460. };
  461. // 切换tab 查询列表
  462. const handleClick = (val: string) => {
  463. console.log(val);
  464. };
  465. // 流转记录
  466. const AuditRecordRef = ref<RefType>(); // 流转记录
  467. const onRecord = () => {
  468. const params = {
  469. dialogTitle: '流转记录',
  470. ...state.ruleForm,
  471. };
  472. AuditRecordRef.value.openDialog(params);
  473. };
  474. // 办理 下一步
  475. const OrderProcessRef = ref<RefType>(); // 处理流程
  476. const onSubmit = throttle((val: string, type?: string) => {
  477. OrderProcessRef.value.openDialog({ id: state.ruleForm.workflowId, title: val, processType: type, commonEnum: commonEnum.OrderCirculation });
  478. }, 1000);
  479. // 流程提交成功
  480. const orderProcessSuccess = () => {
  481. closeDialog();
  482. emit('updateList');
  483. };
  484. // 流程提交失败
  485. const orderProcessFailed = () => {
  486. closeDialog();
  487. emit('updateList');
  488. };
  489. // 补充信息
  490. const orderSupplyRef = ref<RefType>(); // 工单补充
  491. const onSupply = () => {
  492. // 穿入当前流程id
  493. orderSupplyRef.value.openDialog(state.ruleForm);
  494. };
  495. // 补充意见提交成功
  496. const onSupplySuccess = () => {
  497. getDetail(state.orderId);
  498. };
  499. // 延期
  500. const orderDelayRef = ref<RefType>(); // 工单延期
  501. const onDelay = () => {
  502. orderDelayRef.value.openDialog(state.ruleForm);
  503. };
  504. // 延期提交成功
  505. const OnDelaySuccess = () => {
  506. getDetail(state.orderId);
  507. };
  508. // 撤销
  509. const orderRevokeRef = ref<RefType>(); // 工单撤销
  510. const onRevoke = () => {
  511. orderRevokeRef.value.openDialog(state.ruleForm);
  512. };
  513. // 撤销提交成功
  514. const onRevokeSuccess = () => {
  515. getDetail(state.orderId);
  516. };
  517. // 督办
  518. const orderSuperviseRef = ref<RefType>(); // 工单督办
  519. const onSupervise = () => {
  520. orderSuperviseRef.value.openDialog(state.ruleForm);
  521. };
  522. // 督办提交成功
  523. const onSuperviseSuccess = () => {
  524. getDetail(state.orderId);
  525. };
  526. // 暴露变量
  527. defineExpose({
  528. openDialog,
  529. closeDialog,
  530. });
  531. </script>
  532. <style lang="scss" scoped>
  533. .collapse-box {
  534. :deep(.el-collapse-item__header) {
  535. background-color: var(--hotline-bg-main-color);
  536. height: 40px;
  537. border-radius: var(--el-border-radius-base);
  538. }
  539. :deep(.el-collapse-item__content) {
  540. padding-bottom: 10px !important;
  541. .el-form-item {
  542. margin-bottom: 5px;
  543. .el-form-item__content {
  544. line-height: 24px;
  545. }
  546. }
  547. }
  548. .collapse-container {
  549. padding: 10px;
  550. .plug-container {
  551. border: var(--el-border);
  552. border-radius: var(--el-border-radius-base);
  553. margin-bottom: 15px;
  554. &:last-child {
  555. margin-bottom: 0;
  556. }
  557. .plug-container-title {
  558. padding: 10px 15px;
  559. font-weight: bold;
  560. border-bottom: var(--el-border);
  561. font-size: var(--el-font-size-medium);
  562. }
  563. }
  564. }
  565. }
  566. </style>
  567. <style lang="scss">
  568. .demo-tabs-form {
  569. .title {
  570. font-size: var(--el-font-size-medium);
  571. padding: 10px 15px 20px 15px;
  572. }
  573. .el-form-item {
  574. margin-bottom: 0 !important;
  575. }
  576. }
  577. </style>