|
@@ -1,249 +1,649 @@
|
|
|
<template>
|
|
|
- <div style="padding:10px 15px">
|
|
|
- <div class="taskdetail">
|
|
|
- <div class="title">{{taskinfo.taskName}} 工单
|
|
|
- <div class="btngroup">
|
|
|
- <el-button type="primary">派 发</el-button>
|
|
|
- <el-button type="primary">驳 回</el-button>
|
|
|
- <el-button type="primary">处 置</el-button>
|
|
|
- <el-button type="primary">审 核</el-button>
|
|
|
- <el-button type="primary">跟 踪</el-button>
|
|
|
- <el-button type="danger" @click="()=>{router.back()}">返回</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="card">
|
|
|
- <div class="title">工单信息</div>
|
|
|
- <div class="body">
|
|
|
- <el-row>
|
|
|
- <el-col :span="6">事件来源:{{task_type.filter(i=>i.value===taskinfo.taskType)[0]?.label ?? '-'}}</el-col>
|
|
|
- <el-col :span="6">班组区域:{{ taskinfo.taskDeptRange.split(",").map(i=>{ return alldept.find(p=>{return (p.deptId+"")===(i+"")})?.deptName ?? '-' } ).join(",") }}</el-col>
|
|
|
- <el-col :span="6">来件时间:{{taskinfo.taskTime}}</el-col>
|
|
|
- <el-col :span="6">设施编号:{{taskinfo.taskFacilitieCode}}</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="6">事件分类:{{task_event_type.filter(i=>i.value===taskinfo.taskEventType)[0]?.label ?? '-'}}</el-col>
|
|
|
- <el-col :span="6">其他工单号:{{taskinfo.taskOtherId}}</el-col>
|
|
|
- <el-col :span="6">要求完成时间:{{taskinfo.taskReqCompleteTime}}</el-col>
|
|
|
- <el-col :span="6">事件类型:{{task_event_category.filter(i=>i.value===taskinfo.taskEventCategory)[0]?.label ?? '-'}}</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="6">来件备注:{{taskinfo.taskFromRemark}}</el-col>
|
|
|
- <el-col :span="6">投诉人电话:{{taskinfo.taskComplainConnect}}</el-col>
|
|
|
- <el-col :span="6">上报人:{{taskinfo.taskReporter}}</el-col>
|
|
|
-
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">详细地址:{{taskinfo.taskAddr}}</el-col>
|
|
|
- <el-col :span="12">备注信息:{{taskinfo.remark}}</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">现场照片:</el-col>
|
|
|
- <el-col :span="12">任务内容:{{taskinfo.taskContent}}</el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="24">
|
|
|
- <ImagePreview v-model:src="taskinfo.taskPics" :height="'120px'" :width="'120px'"></ImagePreview>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- </el-row>
|
|
|
-
|
|
|
-
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="card">
|
|
|
- <div class="title">派发信息</div>
|
|
|
- <div class="body">
|
|
|
- <el-row>
|
|
|
- <el-col :span="6">负责人:{{task_type.filter(i=>i.value===taskinfo.taskType)[0]?.label ?? '-'}}</el-col>
|
|
|
- <el-col :span="6">联系方式:{{ taskinfo.taskDeptRange.split(",").map(i=>{ return alldept.find(p=>{return (p.deptId+"")===(i+"")})?.deptName ?? '-' } ).join(",") }}</el-col>
|
|
|
- <el-col :span="6">处置班组:{{taskinfo.taskTime}}</el-col>
|
|
|
- <el-col :span="6">派发时间:{{taskinfo.taskFacilitieCode}}</el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="card">
|
|
|
- <div class="title">现场驳回</div>
|
|
|
- <div class="body">
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">原因备注:{{task_type.filter(i=>i.value===taskinfo.taskType)[0]?.label ?? '-'}}</el-col>
|
|
|
-
|
|
|
- <el-col :span="12">驳回时间:{{taskinfo.taskTime}}</el-col>
|
|
|
- <el-col :span="12">照片:</el-col>
|
|
|
- <el-col :span="12">说明报告:<a>sdd</a></el-col>
|
|
|
-
|
|
|
- </el-row>
|
|
|
- <el-row>
|
|
|
- <el-col :span="24">
|
|
|
- <ImagePreview v-model:src="taskinfo.taskPics" :height="'120px'" :width="'120px'"></ImagePreview>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="card">
|
|
|
- <div class="title">跟踪信息</div>
|
|
|
- <div class="body">
|
|
|
- <el-row>
|
|
|
- <el-col :span="6">是否及时完成:{{task_type.filter(i=>i.value===taskinfo.taskType)[0]?.label ?? '-'}}</el-col>
|
|
|
- <el-col :span="6">回访情况:{{ taskinfo.taskDeptRange.split(",").map(i=>{ return alldept.find(p=>{return (p.deptId+"")===(i+"")})?.deptName ?? '-' } ).join(",") }}</el-col>
|
|
|
- <el-col :span="6">处置完成日期:{{taskinfo.taskTime}}</el-col>
|
|
|
- <el-col :span="6">记录人:{{taskinfo.taskFacilitieCode}}</el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div class="card">
|
|
|
- <div class="title">处置信息</div>
|
|
|
- <div class="body">
|
|
|
-
|
|
|
- <div v-for="(item,index1) in processdata">
|
|
|
- <div class="titleheader" :style="`${index1==0?'margin-top:0px':''}`">{{item.title}}</div>
|
|
|
- <div>
|
|
|
- <el-row>
|
|
|
- <el-col :span="6" v-for="p in item.content">{{p}}</el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div>
|
|
|
- <div class="titleheader">现场图片</div>
|
|
|
- <el-row>
|
|
|
- <el-col :span="24" >
|
|
|
- <ImagePreview v-model:src="taskinfo.taskPics" :height="'120px'" :width="'120px'"></ImagePreview>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
-
|
|
|
- </div>
|
|
|
+ <div style="padding: 10px 15px">
|
|
|
+ <div class="taskdetail">
|
|
|
+ <div class="title">
|
|
|
+ {{ taskinfo.taskCode }} 工单
|
|
|
+ <div class="btngroup">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ v-if="taskinfo.status == 1"
|
|
|
+ @click="showpf = true"
|
|
|
+ >派 发</el-button
|
|
|
+ >
|
|
|
+ <el-button type="primary" v-if="taskinfo.status == 2" @click="showbh=true"
|
|
|
+ >驳 回</el-button
|
|
|
+ >
|
|
|
+ <el-button type="primary" v-if="taskinfo.status == 2"
|
|
|
+ >处 置</el-button
|
|
|
+ >
|
|
|
+ <el-button type="primary" v-if="taskinfo.status == 3"
|
|
|
+ >审 核</el-button
|
|
|
+ >
|
|
|
+ <el-button type="primary" v-if="taskinfo.status == 5"
|
|
|
+ >跟 踪</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ type="danger"
|
|
|
+ @click="
|
|
|
+ () => {
|
|
|
+ router.back();
|
|
|
+ }
|
|
|
+ "
|
|
|
+ >返回</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="card">
|
|
|
+ <div class="title">工单信息</div>
|
|
|
+ <div class="body">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6"
|
|
|
+ >事件来源:{{
|
|
|
+ task_type.filter(
|
|
|
+ (i) => i.value.toString() === taskinfo.taskType.toString()
|
|
|
+ )[0]?.label ?? "-"
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6"
|
|
|
+ >班组区域:{{
|
|
|
+ (taskinfo.taskDeptRange ?? "")
|
|
|
+ .split(",")
|
|
|
+ .map((i) => {
|
|
|
+ return (
|
|
|
+ alldept.find((p) => {
|
|
|
+ return p.deptId + "" === i + "";
|
|
|
+ })?.deptName ?? "-"
|
|
|
+ );
|
|
|
+ })
|
|
|
+ .join(",")
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6">来件时间:{{ taskinfo.taskTime }}</el-col>
|
|
|
+ <el-col :span="6"
|
|
|
+ >设施编号:{{ taskinfo.taskFacilitieCode }}</el-col
|
|
|
+ >
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6"
|
|
|
+ >事件分类:{{
|
|
|
+ task_event_type.filter(
|
|
|
+ (i) =>
|
|
|
+ i.value.toString() === taskinfo.taskEventType.toString()
|
|
|
+ )[0]?.label ?? "-"
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6">其他工单号:{{ taskinfo.taskOtherId }}</el-col>
|
|
|
+ <el-col :span="6"
|
|
|
+ >要求完成时间:{{ taskinfo.taskReqCompleteTime }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6"
|
|
|
+ >事件类型:{{
|
|
|
+ task_event_category.filter(
|
|
|
+ (i) =>
|
|
|
+ i.value.toString() === taskinfo.taskEventCategory.toString()
|
|
|
+ )[0]?.label ?? "-"
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6">来件备注:{{ taskinfo.taskFromRemark }}</el-col>
|
|
|
+ <el-col :span="6"
|
|
|
+ >投诉人电话:{{ taskinfo.taskComplainConnect }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6">上报人:{{ taskinfo.taskReporter }}</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">详细地址:{{ taskinfo.taskAddr }}</el-col>
|
|
|
+ <el-col :span="12">备注信息:{{ taskinfo.remark }}</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">现场照片:</el-col>
|
|
|
+ <el-col :span="12">任务内容:{{ taskinfo.taskContent }}</el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <ImagePreview
|
|
|
+ v-model:src="taskinfo.taskPics"
|
|
|
+ :height="'120px'"
|
|
|
+ :width="'120px'"
|
|
|
+ ></ImagePreview>
|
|
|
+ </el-col>
|
|
|
+ <el-col
|
|
|
+ :span="24"
|
|
|
+ v-if="taskinfo.taskPics === null || taskinfo.taskPics === ''"
|
|
|
+ >
|
|
|
+ <div style="margin-left: 20px">暂无图片</div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="card" v-if="taskinfo.status > 1">
|
|
|
+ <div class="title">派发信息</div>
|
|
|
+ <div class="body">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6"
|
|
|
+ >负责人:{{
|
|
|
+ allusers.filter(
|
|
|
+ (i) =>
|
|
|
+ i.userId.toString() ===
|
|
|
+ JSON.parse(
|
|
|
+ taskinfo.tblTaskLogList.filter(
|
|
|
+ (ii) => ii.taskStatus === 2
|
|
|
+ )[0].logDes
|
|
|
+ ).fzr.toString()
|
|
|
+ )[0]?.nickName ?? "-"
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6"
|
|
|
+ >联系方式:{{
|
|
|
+ allusers.filter(
|
|
|
+ (i) =>
|
|
|
+ i.userId.toString() ===
|
|
|
+ JSON.parse(
|
|
|
+ taskinfo.tblTaskLogList.filter(
|
|
|
+ (ii) => ii.taskStatus === 2
|
|
|
+ )[0].logDes
|
|
|
+ ).fzr.toString()
|
|
|
+ )[0]?.phonenumber ?? "-"
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6"
|
|
|
+ >处置班组:{{
|
|
|
+ alldept
|
|
|
+ .filter(
|
|
|
+ (i) =>
|
|
|
+ (
|
|
|
+ JSON.parse(
|
|
|
+ taskinfo.tblTaskLogList.filter(
|
|
|
+ (ii) => ii.taskStatus === 2
|
|
|
+ )[0].logDes
|
|
|
+ ).fzbz ?? []
|
|
|
+ ).indexOf(i.deptId) != -1
|
|
|
+ )
|
|
|
+ .map((i) => i.deptName)
|
|
|
+ .join(",")
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6"
|
|
|
+ >派发时间:{{
|
|
|
+ taskinfo.tblTaskLogList.filter((ii) => ii.taskStatus === 2)[0]
|
|
|
+ .createTime
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="card" v-if="taskinfo.status == 4">
|
|
|
+ <div class="title">现场驳回</div>
|
|
|
+ <div class="body">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12"
|
|
|
+ >原因备注:{{
|
|
|
+ JSON.parse(
|
|
|
+ taskinfo.tblTaskLogList.filter(
|
|
|
+ (ii) => ii.taskStatus === 4
|
|
|
+ )[0].logDes ?? "{}"
|
|
|
+ )
|
|
|
+ .resonRemark
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+
|
|
|
+ <el-col :span="12">驳回时间:{{ taskinfo.tblTaskLogList.filter((ii) => ii.taskStatus === 4)[0]
|
|
|
+ .createTime }}</el-col>
|
|
|
+ <el-col :span="12">照片:</el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <div style="position:relative">
|
|
|
+ 说明报告:
|
|
|
+ <div style="position:absolute;top:0;left:60px;width:100%">
|
|
|
+ <div style="margin-bottom:10px;color:#4f9eee;display:inline-block;margin-left:10px" v-for="i in (JSON.parse(
|
|
|
+ taskinfo.tblTaskLogList.filter(
|
|
|
+ (ii) => ii.taskStatus === 4
|
|
|
+ )[0].logDes ?? '{}'
|
|
|
+ ).files?.split(',') ??[])"><a target="_blank" :href="`${STATICURL+i}`" >
|
|
|
+
|
|
|
+ {{i.split('/')[i.split('/').length-1]}}
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <ImagePreview
|
|
|
+ v-model:src="
|
|
|
+ JSON.parse(
|
|
|
+ taskinfo.tblTaskLogList.filter(
|
|
|
+ (ii) => ii.taskStatus === 4
|
|
|
+ )[0].logDes ?? '{}'
|
|
|
+ ).images"
|
|
|
+ :height="'120px'"
|
|
|
+ :width="'120px'"
|
|
|
+ ></ImagePreview>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="card" v-if="taskinfo.status > 5">
|
|
|
+ <div class="title">跟踪信息</div>
|
|
|
+ <div class="body">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6"
|
|
|
+ >是否及时完成:{{
|
|
|
+ task_type.filter((i) => i.value === taskinfo.taskType)[0]
|
|
|
+ ?.label ?? "-"
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6"
|
|
|
+ >回访情况:{{
|
|
|
+ (taskinfo.taskDeptRange ?? "")
|
|
|
+ .split(",")
|
|
|
+ .map((i) => {
|
|
|
+ return (
|
|
|
+ alldept.find((p) => {
|
|
|
+ return p.deptId + "" === i + "";
|
|
|
+ })?.deptName ?? "-"
|
|
|
+ );
|
|
|
+ })
|
|
|
+ .join(",")
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+ <el-col :span="6">处置完成日期:{{ taskinfo.taskTime }}</el-col>
|
|
|
+ <el-col :span="6">记录人:{{ taskinfo.taskFacilitieCode }}</el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="card" v-if="taskinfo.status > 4">
|
|
|
+ <div class="title">处置信息</div>
|
|
|
+ <div class="body">
|
|
|
+ <div v-for="(item, index1) in processdata">
|
|
|
+ <div
|
|
|
+ class="titleheader"
|
|
|
+ :style="`${index1 == 0 ? 'margin-top:0px' : ''}`"
|
|
|
+ >
|
|
|
+ {{ item.title }}
|
|
|
</div>
|
|
|
-
|
|
|
- <div class="card">
|
|
|
- <div class="title">核查信息</div>
|
|
|
- <div class="body">
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">核查人员:{{task_type.filter(i=>i.value===taskinfo.taskType)[0]?.label ?? '-'}}</el-col>
|
|
|
-
|
|
|
- <el-col :span="12">核查时间:{{taskinfo.taskTime}}</el-col>
|
|
|
- <el-col :span="24">核查备注:{{taskinfo.taskFacilitieCode}}</el-col>
|
|
|
- </el-row>
|
|
|
- </div>
|
|
|
+ <div>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="6" v-for="p in item.content">{{ p }}</el-col>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div>
|
|
|
+ <div class="titleheader">现场图片</div>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <ImagePreview
|
|
|
+ v-model:src="taskinfo.taskPics"
|
|
|
+ :height="'120px'"
|
|
|
+ :width="'120px'"
|
|
|
+ ></ImagePreview>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
-
|
|
|
-
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="card" v-if="taskinfo.status > 5">
|
|
|
+ <div class="title">核查信息</div>
|
|
|
+ <div class="body">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12"
|
|
|
+ >核查人员:{{
|
|
|
+ task_type.filter((i) => i.value === taskinfo.taskType)[0]
|
|
|
+ ?.label ?? "-"
|
|
|
+ }}</el-col
|
|
|
+ >
|
|
|
+
|
|
|
+ <el-col :span="12">核查时间:{{ taskinfo.taskTime }}</el-col>
|
|
|
+ <el-col :span="24"
|
|
|
+ >核查备注:{{ taskinfo.taskFacilitieCode }}</el-col
|
|
|
+ >
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <el-dialog v-model="showpf" title="任务派发" draggable>
|
|
|
+ <div>
|
|
|
+ <el-form :model="pdobj" label-width="120px">
|
|
|
+ <el-form-item label="负责班组"
|
|
|
+ ><el-tree-select
|
|
|
+ style="width: 100%"
|
|
|
+ v-model="pdobj.fzbz"
|
|
|
+ multiple
|
|
|
+ :data="treedept"
|
|
|
+ check-strictly="true"
|
|
|
+ /></el-form-item>
|
|
|
+ <el-form-item label="负责人">
|
|
|
+ <el-select
|
|
|
+ v-model="pdobj.fzr"
|
|
|
+ placeholder="请选择"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in allusers.filter(
|
|
|
+ (i) => (pdobj.fzbz ?? []).indexOf(i.deptId) !== -1
|
|
|
+ )"
|
|
|
+ :label="item.nickName"
|
|
|
+ :value="item.userId"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="showpf = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="Taskdistributed">确定</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <el-dialog v-model="showbh" title="任务驳回" draggable>
|
|
|
+ <div>
|
|
|
+ <el-form :model="bhobj" label-width="120px">
|
|
|
+ <el-form-item label="驳回原因"
|
|
|
+ ><el-input
|
|
|
+ v-model="bhobj.resonRemark"
|
|
|
+ :rows="2"
|
|
|
+ type="textarea"
|
|
|
+ placeholder="请输入驳回原因"
|
|
|
+ /></el-form-item>
|
|
|
+ <el-form-item label="现场照片">
|
|
|
+ <ImageUpload v-model="bhobj.images"></ImageUpload>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="说明报告">
|
|
|
+ <FileUpload v-model="bhobj.files" :fileSize="100"></FileUpload>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <template #footer>
|
|
|
+ <span class="dialog-footer">
|
|
|
+ <el-button @click="showbh = false">取消</el-button>
|
|
|
+ <el-button type="primary" @click="TaskClose">确定</el-button>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
-import { defineComponent, ref } from 'vue'
|
|
|
-import { useDict } from '@/utils/dict';
|
|
|
+import { defineComponent, ref, onMounted, watch } from "vue";
|
|
|
+import { useDict } from "@/utils/dict";
|
|
|
// 图片预览组件
|
|
|
-import ImagePreview from "@/components/ImagePreview"
|
|
|
-import { cloneDeep } from 'lodash';
|
|
|
+import ImagePreview from "@/components/ImagePreview";
|
|
|
+import { cloneDeep } from "lodash";
|
|
|
import { listDept, getDept } from "@/api/system/dept";
|
|
|
-import router from '../../../router';
|
|
|
-const { task_status, task_type, task_event_type, task_event_category } = useDict("task_status", "task_type", "task_event_type", "task_event_category");
|
|
|
-
|
|
|
+import router from "../../../router";
|
|
|
+import { useRoute } from "vue-router";
|
|
|
+import {
|
|
|
+ listTask,
|
|
|
+ getTask,
|
|
|
+ delTask,
|
|
|
+ addTask,
|
|
|
+ updateTask,
|
|
|
+ distributedTask,
|
|
|
+ closeTask
|
|
|
+} from "@/api/system/task";
|
|
|
+import {
|
|
|
+ changeUserStatus,
|
|
|
+ listUser,
|
|
|
+ resetUserPwd,
|
|
|
+ delUser,
|
|
|
+ getUser,
|
|
|
+ updateUser,
|
|
|
+ addUser,
|
|
|
+} from "@/api/system/user";
|
|
|
+import { treeselect as deptTreeselect } from "@/api/system/dept";
|
|
|
+import { ElMessage } from "element-plus";
|
|
|
+import ImageUpload from "@/components/ImageUpload"
|
|
|
+import FileUpload from "@/components/FileUpload"
|
|
|
+
|
|
|
+const STATICURL= import.meta.env.VITE_APP_BASE_API;
|
|
|
+
|
|
|
+const { task_status, task_type, task_event_type, task_event_category } =
|
|
|
+ useDict("task_status", "task_type", "task_event_type", "task_event_category");
|
|
|
+
|
|
|
+const route = useRoute();
|
|
|
+const showpf = ref(false);
|
|
|
+const showbh = ref(false);
|
|
|
+const pdobj = ref({ fzbz: [], fzr: "" });
|
|
|
+const bhobj = ref({ resonRemark: [], files: "" ,images:[]});
|
|
|
+
|
|
|
+if (!route.params.id || route.params.id == "undefined") {
|
|
|
+ router.back();
|
|
|
+}
|
|
|
|
|
|
+const TaskClose = () => {
|
|
|
+ closeTask({
|
|
|
+ taskId: route.params.id,
|
|
|
+ logDes: JSON.stringify(bhobj.value),
|
|
|
+ }).then((res) => {
|
|
|
+ showbh.value = false;
|
|
|
+ ElMessage.success("成功!");
|
|
|
+ getTask(Number(route.params.id)).then((res) => {
|
|
|
+ taskinfo.value = res.data;
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+const Taskdistributed = () => {
|
|
|
+ distributedTask({
|
|
|
+ taskId: route.params.id,
|
|
|
+ logDes: JSON.stringify(pdobj.value),
|
|
|
+ }).then((res) => {
|
|
|
+ showpf.value = false;
|
|
|
+ ElMessage.success("派发成功!");
|
|
|
+ getTask(Number(route.params.id)).then((res) => {
|
|
|
+ taskinfo.value = res.data;
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+// console.error(route.params.id)
|
|
|
|
|
|
const alldept = ref([]);
|
|
|
-listDept().then(response => {
|
|
|
- alldept.value = cloneDeep(response.data);
|
|
|
+listDept().then((response) => {
|
|
|
+ alldept.value = cloneDeep(response.data);
|
|
|
});
|
|
|
|
|
|
-const processdata = ref([{title:'相应信息',content:["响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss"]},{title:'相应信息',content:["响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss"]},{title:'相应信息',content:["响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss"]},{title:'相应信息',content:["响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss"]},{title:'相应信息',content:["响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss"]},{title:'相应信息',content:["响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss","响应时间:sss"]}])
|
|
|
+function setdatakey(dept) {
|
|
|
+ if (dept.children) {
|
|
|
+ dept.children = dept.children.map((i) => {
|
|
|
+ return setdatakey(i);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ dept["value"] = dept.id;
|
|
|
+ return dept;
|
|
|
+}
|
|
|
|
|
|
+const treedept = ref([]);
|
|
|
+const allusers = ref([]);
|
|
|
+listUser({ pageSize: 1000 }).then((res) => {
|
|
|
+ allusers.value = res.rows;
|
|
|
+});
|
|
|
+deptTreeselect().then((res) => {
|
|
|
+ treedept.value = [setdatakey(res.data[0])];
|
|
|
+});
|
|
|
+
|
|
|
+const processdata = ref([
|
|
|
+ {
|
|
|
+ title: "相应信息",
|
|
|
+ content: [
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "相应信息",
|
|
|
+ content: [
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "相应信息",
|
|
|
+ content: [
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "相应信息",
|
|
|
+ content: [
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "相应信息",
|
|
|
+ content: [
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "相应信息",
|
|
|
+ content: [
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ "响应时间:sss",
|
|
|
+ ],
|
|
|
+ },
|
|
|
+]);
|
|
|
|
|
|
const taskinfo = ref({
|
|
|
- taskName: "测试任务",
|
|
|
- taskContent: "测试任务测试任务测试任务测试任务测试任务测试任务测试任务测试任务",
|
|
|
- taskAddr: "-",
|
|
|
- taskLocation: "-",
|
|
|
- taskCode: "-",
|
|
|
- taskType: "1",
|
|
|
- taskEventType: "1",
|
|
|
- taskEventCategory: "1",
|
|
|
- taskFromRemark: "-",
|
|
|
- taskAddrRoad: "-",
|
|
|
- taskOtherId: "-",
|
|
|
- taskTime: "2022-11-11 16:11:11",
|
|
|
- taskReqCompleteTime: "2022-11-11 16:11:11",
|
|
|
- status: 1,
|
|
|
- taskCreater: "-",
|
|
|
- taskReporter: "-",
|
|
|
- taskPics: "/profile/upload/2022/06/01/icon128_20220601100554A011.png,/profile/upload/2022/05/31/icon16_20220531155706A001.png",
|
|
|
- remark: "sss",
|
|
|
- taskVideos: "-",
|
|
|
- taskComplainConnect: "-",
|
|
|
- taskDeptRange: "100,103",
|
|
|
- taskFacilitieCode: "sdsdfdf"
|
|
|
-})
|
|
|
+ taskName: "",
|
|
|
+ taskContent:
|
|
|
+ "",
|
|
|
+ taskAddr: "-",
|
|
|
+ taskLocation: "-",
|
|
|
+ taskCode: "-",
|
|
|
+ taskType: "1",
|
|
|
+ taskEventType: "1",
|
|
|
+ taskEventCategory: "1",
|
|
|
+ taskFromRemark: "-",
|
|
|
+ taskAddrRoad: "-",
|
|
|
+ taskOtherId: "-",
|
|
|
+ taskTime: "2022-11-11 16:11:11",
|
|
|
+ taskReqCompleteTime: "2022-11-11 16:11:11",
|
|
|
+ status: 1,
|
|
|
+ taskCreater: "-",
|
|
|
+ taskReporter: "-",
|
|
|
+ taskPics:
|
|
|
+ "",
|
|
|
+ remark: "sss",
|
|
|
+ taskVideos: "-",
|
|
|
+ taskComplainConnect: "-",
|
|
|
+ taskDeptRange: "",
|
|
|
+ taskFacilitieCode: "",
|
|
|
+ tblTaskLogList: [],
|
|
|
+});
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ getTask(Number(route.params.id)).then((res) => {
|
|
|
+ taskinfo.value = res.data;
|
|
|
+ });
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
|
.taskdetail {
|
|
|
- background: #fff;
|
|
|
- padding: 30px 22px;
|
|
|
+ background: #fff;
|
|
|
+ padding: 30px 22px;
|
|
|
+ border-radius: 8px;
|
|
|
+ overflow-y: auto;
|
|
|
+ padding-top: 20px;
|
|
|
+ position: relative;
|
|
|
+ .el-select {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .title {
|
|
|
+ color: #2b3551;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 400;
|
|
|
+ .btngroup {
|
|
|
+ position: absolute;
|
|
|
+ top: 13px;
|
|
|
+ right: 20px;
|
|
|
+ .el-button {
|
|
|
+ margin-left: 25px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .card {
|
|
|
+ border: 1px solid #e5e9f2;
|
|
|
border-radius: 8px;
|
|
|
- overflow-y: auto;
|
|
|
- padding-top: 20px;
|
|
|
- position: relative;
|
|
|
+ margin-top: 16px;
|
|
|
+ overflow: hidden;
|
|
|
.title {
|
|
|
- color: #2B3551;
|
|
|
- font-size: 16px;
|
|
|
- font-weight: 400;
|
|
|
- .btngroup {
|
|
|
- position: absolute;
|
|
|
- top: 13px;
|
|
|
- right: 20px;
|
|
|
- .el-button {
|
|
|
- margin-left: 25px;
|
|
|
- }
|
|
|
- }
|
|
|
+ background: rgba(192, 204, 218, 0.2);
|
|
|
+ height: 54px;
|
|
|
+ line-height: 54px;
|
|
|
+ color: #324057;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: Bold;
|
|
|
+ padding-left: 22px;
|
|
|
}
|
|
|
- .card {
|
|
|
- border: 1px solid #E5E9F2;
|
|
|
- border-radius: 8px;
|
|
|
- margin-top: 16px;
|
|
|
- overflow: hidden;
|
|
|
- .title {
|
|
|
- background: rgba(192, 204, 218, 0.2);
|
|
|
- height: 54px;
|
|
|
- line-height: 54px;
|
|
|
- color: #324057;
|
|
|
- font-size: 14px;
|
|
|
- font-weight: Bold;
|
|
|
- padding-left: 22px;
|
|
|
- }
|
|
|
- .body {
|
|
|
- padding: 20px;
|
|
|
- color: #475669;
|
|
|
- font-size: 14px;
|
|
|
- // padding-top: 10px;
|
|
|
- .el-col {
|
|
|
- margin-bottom: 20px;
|
|
|
- }
|
|
|
- .titleheader{
|
|
|
- color:#2C7DE3;
|
|
|
- font-weight: Bold;
|
|
|
- margin-bottom: 24px;
|
|
|
- margin-top: 20px;
|
|
|
- }
|
|
|
- }
|
|
|
+ .body {
|
|
|
+ padding: 20px;
|
|
|
+ color: #475669;
|
|
|
+ font-size: 14px;
|
|
|
+ // padding-top: 10px;
|
|
|
+ .el-col {
|
|
|
+ margin-bottom: 20px;
|
|
|
+ }
|
|
|
+ .titleheader {
|
|
|
+ color: #2c7de3;
|
|
|
+ font-weight: Bold;
|
|
|
+ margin-bottom: 24px;
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|