|
|
|
@ -3,7 +3,7 @@ |
|
|
|
<popup |
|
|
|
<popup |
|
|
|
ref="popupRef" |
|
|
|
ref="popupRef" |
|
|
|
:title="popupTitle" |
|
|
|
:title="popupTitle" |
|
|
|
:number="mailNumber" |
|
|
|
:number="formData.id" |
|
|
|
:async="true" |
|
|
|
:async="true" |
|
|
|
width="1800px" |
|
|
|
width="1800px" |
|
|
|
:clickModalClose="true" |
|
|
|
:clickModalClose="true" |
|
|
|
@ -32,51 +32,51 @@ |
|
|
|
<span class="head-lable">受理编号</span> |
|
|
|
<span class="head-lable">受理编号</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="7"> |
|
|
|
<el-col :span="7"> |
|
|
|
<span class="head-value">2114131413423432423</span> |
|
|
|
<span class="head-value">{{formData.id}}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1"> |
|
|
|
<el-col :span="1"> |
|
|
|
<span class="head-lable">信件分类</span> |
|
|
|
<span class="head-lable">信件分类</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="7"> |
|
|
|
<el-col :span="7"> |
|
|
|
<span class="head-value">张三</span> |
|
|
|
<span class="head-value">{{formData.mailFirstCategory}} > {{formData.mailSecondCategory}} > {{formData.mailThreeCategory}} </span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="1"> |
|
|
|
<el-col :span="1"> |
|
|
|
<span class="head-lable">信件等级</span> |
|
|
|
<span class="head-lable">信件等级</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="7"> |
|
|
|
<el-col :span="7"> |
|
|
|
<span class="head-value">一般信件</span> |
|
|
|
<span class="head-value">{{formData.mailLevel}} </span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="info-content "> |
|
|
|
<div class="info-content "> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<div slot="header" class="info-header"> |
|
|
|
<div slot="header" class="info-header"> |
|
|
|
举报人/投诉人基本情况 <span>收起</span> |
|
|
|
举报人/投诉人基本情况 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-row> |
|
|
|
<el-row> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-label">姓名</span> |
|
|
|
<span class="info-label">姓名</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.contactName }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">性别</span> |
|
|
|
<span class="info-label">性别</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.contactSex=='M'?'男':'女' }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">证件号码</span> |
|
|
|
<span class="info-label">证件号码</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.contactIdCard}}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">联系电话</span> |
|
|
|
<span class="info-label">联系电话</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.contactPhone}}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
@ -86,32 +86,32 @@ |
|
|
|
<div slot="header" class="info-header"> |
|
|
|
<div slot="header" class="info-header"> |
|
|
|
举报/投诉对象基本情况 |
|
|
|
举报/投诉对象基本情况 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-row> |
|
|
|
<div v-for="item in formData.verifyPoliceList"> |
|
|
|
|
|
|
|
<el-row > |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-label">被举报对象</span> |
|
|
|
<span class="info-label">被举报对象</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ item.name }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">警号</span> |
|
|
|
<span class="info-label">警号</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ item.emp_no }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">性别</span> |
|
|
|
<span class="info-label">性别</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ item.gender }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">出生年月</span> |
|
|
|
<span class="info-label">出生年月</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ item.birthday }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
<el-row> |
|
|
|
<el-row> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
@ -124,11 +124,12 @@ |
|
|
|
<span class="info-label">工作单位</span> |
|
|
|
<span class="info-label">工作单位</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ item.deptname }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
|
|
|
|
</div> |
|
|
|
<hr > |
|
|
|
<hr > |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
@ -137,7 +138,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<el-row> |
|
|
|
<el-row> |
|
|
|
<el-col :span="24"> |
|
|
|
<el-col :span="24"> |
|
|
|
<div class="info-textarea"> </div> |
|
|
|
<div class="info-textarea">{{ formData.content}} </div> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
@ -166,21 +167,21 @@ |
|
|
|
<span class="info-label">接访形式</span> |
|
|
|
<span class="info-label">接访形式</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.interviewType }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">是否一把手接访</span> |
|
|
|
<span class="info-label">是否一把手接访</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.interviewIsLeader?'是':'否' }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">接访领导</span> |
|
|
|
<span class="info-label">接访领导</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.interviewPoliceName }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
@ -190,7 +191,7 @@ |
|
|
|
<span class="info-label">接访情况</span> |
|
|
|
<span class="info-label">接访情况</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="21"> |
|
|
|
<el-col :span="21"> |
|
|
|
<div class="info-textarea"> </div> |
|
|
|
<div class="info-textarea"> {{ formData.interviewDetails}} </div> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -208,13 +209,13 @@ |
|
|
|
<span class="info-label">是否属实</span> |
|
|
|
<span class="info-label">是否属实</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.verifyIsTrue }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">是否需要问责</span> |
|
|
|
<span class="info-label">是否需要问责</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.verifyNeedAccountability?'需要':'不需要' }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
@ -224,7 +225,9 @@ |
|
|
|
<span class="info-label">查证属实问题</span> |
|
|
|
<span class="info-label">查证属实问题</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="21"> |
|
|
|
<el-col :span="21"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value" v-for="item in formData.verifyProblem"> |
|
|
|
|
|
|
|
{{item}} |
|
|
|
|
|
|
|
</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -235,7 +238,7 @@ |
|
|
|
<span class="info-label">核办结果</span> |
|
|
|
<span class="info-label">核办结果</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="21"> |
|
|
|
<el-col :span="21"> |
|
|
|
<div class="info-textarea"> </div> |
|
|
|
<div class="info-textarea"> {{formData.verifyDetails}} </div> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -251,7 +254,9 @@ |
|
|
|
<span class="info-label">责任追究</span> |
|
|
|
<span class="info-label">责任追究</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="21"> |
|
|
|
<el-col :span="21"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value" v-for="item in formData.verifyPunish"> |
|
|
|
|
|
|
|
{{item}} |
|
|
|
|
|
|
|
</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -267,13 +272,13 @@ |
|
|
|
<span class="info-label">群众反应实现解决情况</span> |
|
|
|
<span class="info-label">群众反应实现解决情况</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.verifyIsResolved?'已解决':'未解决' }}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">办理反馈情况</span> |
|
|
|
<span class="info-label">办理反馈情况</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{ formData.verifyFeedback}}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
@ -282,25 +287,27 @@ |
|
|
|
<span class="info-label">回访人姓名</span> |
|
|
|
<span class="info-label">回访人姓名</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="3"> |
|
|
|
<el-col :span="3"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{formData.followName}}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">回访人电话</span> |
|
|
|
<span class="info-label">回访人电话</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{formData.followMobile}}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-col :span="2"> |
|
|
|
<span class="info-label">回访人警号</span> |
|
|
|
<span class="info-label">回访人警号</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="4"> |
|
|
|
<el-col :span="4"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<span class="info-value">{{formData.followEmpNo}}</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-row> |
|
|
|
<hr > |
|
|
|
<hr > |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div> |
|
|
|
<div> |
|
|
|
|
|
|
|
|
|
|
|
<div slot="header" class="info-header"> |
|
|
|
<div slot="header" class="info-header"> |
|
|
|
办结佐证材料 |
|
|
|
办结佐证材料 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -309,7 +316,7 @@ |
|
|
|
<span class="info-label">材料</span> |
|
|
|
<span class="info-label">材料</span> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
<el-col :span="21"> |
|
|
|
<el-col :span="21"> |
|
|
|
<span class="info-value">张三</span> |
|
|
|
<div class="img-box" v-for="(item, index) in formData.verifyAttachments" :key="index" :style="{ backgroundImage: `url(${VITE_API_URL}/api/file/stream/${item.filepath})`}"></div> |
|
|
|
</el-col> |
|
|
|
</el-col> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -325,16 +332,22 @@ |
|
|
|
<div class="details-right"> |
|
|
|
<div class="details-right"> |
|
|
|
<el-timeline> |
|
|
|
<el-timeline> |
|
|
|
<el-timeline-item |
|
|
|
<el-timeline-item |
|
|
|
v-for="(activity, index) in activities" |
|
|
|
v-for="(activity, index) in formData.mailFlowList" |
|
|
|
:key="index" |
|
|
|
:key="index" |
|
|
|
:icon="activity.icon" |
|
|
|
:icon="activity.icon" |
|
|
|
:type="activity.type" |
|
|
|
:type="activity.type" |
|
|
|
:color="activity.color" |
|
|
|
color="#0bbd87" |
|
|
|
:size="activity.size" |
|
|
|
size="large" |
|
|
|
:hollow="activity.hollow" |
|
|
|
:hollow="activity.hollow" |
|
|
|
:timestamp="activity.timestamp" |
|
|
|
|
|
|
|
> |
|
|
|
> |
|
|
|
{{ activity.content }} |
|
|
|
<div class="timeline-text"> |
|
|
|
|
|
|
|
<span class="timeline-span"> {{ activity.createTime }}</span> <span> {{ activity.handlerDeptName }}</span> <span class="timeline-span"> {{ activity.flowAfterName }}</span> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="timeline-right"> |
|
|
|
|
|
|
|
用时<span>{{convert(activity.consumingTime) }}</span> |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
</el-timeline-item> |
|
|
|
</el-timeline-item> |
|
|
|
</el-timeline> |
|
|
|
</el-timeline> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@ -346,11 +359,10 @@ |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
<script lang="ts" setup> |
|
|
|
<script lang="ts" setup> |
|
|
|
import type { FormInstance, ListItem } from 'element-plus' |
|
|
|
import type { FormInstance, ListItem } from 'element-plus' |
|
|
|
import { dutyEdit, dutyAdd, dutyDetail, dutyLists } from '@/api/duty' |
|
|
|
import {getMailDetail} from '@/api/datascreen' |
|
|
|
import { dictDataDelete, dictDataLists, dictTypeAll } from '@/api/setting/dict' |
|
|
|
|
|
|
|
import Popup from '@/components/popup/details.vue' |
|
|
|
import Popup from '@/components/popup/details.vue' |
|
|
|
import feedback from '@/utils/feedback' |
|
|
|
import feedback from '@/utils/feedback' |
|
|
|
import type { PropType } from 'vue' |
|
|
|
import {PropType, ref} from 'vue' |
|
|
|
import { useDictOptions } from '@/hooks/useDictOptions' |
|
|
|
import { useDictOptions } from '@/hooks/useDictOptions' |
|
|
|
import { roleAll } from '@/api/perms/role' |
|
|
|
import { roleAll } from '@/api/perms/role' |
|
|
|
import { postAll } from '@/api/org/post' |
|
|
|
import { postAll } from '@/api/org/post' |
|
|
|
@ -360,6 +372,10 @@ import { usePaging } from '@/hooks/usePaging' |
|
|
|
import { loginCaptcha } from '@/api/user' |
|
|
|
import { loginCaptcha } from '@/api/user' |
|
|
|
import { isFunction } from 'lodash' |
|
|
|
import { isFunction } from 'lodash' |
|
|
|
import { MoreFilled } from '@element-plus/icons-vue' |
|
|
|
import { MoreFilled } from '@element-plus/icons-vue' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const { |
|
|
|
|
|
|
|
VITE_API_URL |
|
|
|
|
|
|
|
} = process.env |
|
|
|
defineProps({ |
|
|
|
defineProps({ |
|
|
|
dictData: { |
|
|
|
dictData: { |
|
|
|
type: Object as PropType<Record<string, any[]>>, |
|
|
|
type: Object as PropType<Record<string, any[]>>, |
|
|
|
@ -373,7 +389,10 @@ const mode = ref('details') |
|
|
|
const popupTitle = computed(() => { |
|
|
|
const popupTitle = computed(() => { |
|
|
|
return mode.value == 'details' ? '信件详情' : '信件详情' |
|
|
|
return mode.value == 'details' ? '信件详情' : '信件详情' |
|
|
|
}) |
|
|
|
}) |
|
|
|
const mailNumber='11111111111' |
|
|
|
|
|
|
|
|
|
|
|
let mailDetail= reactive([]) as any[]; |
|
|
|
|
|
|
|
let verifyFollowupPolice= { |
|
|
|
|
|
|
|
} |
|
|
|
const flowNode = ref({}); |
|
|
|
const flowNode = ref({}); |
|
|
|
const steps = ref([ |
|
|
|
const steps = ref([ |
|
|
|
"信件签收", |
|
|
|
"信件签收", |
|
|
|
@ -408,184 +427,111 @@ watch(flowNode, (val) => { |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
const formData = reactive({ |
|
|
|
const formData = reactive({ |
|
|
|
startTime: '', |
|
|
|
|
|
|
|
departId: '', |
|
|
|
|
|
|
|
departName: '', |
|
|
|
|
|
|
|
policeName: '', |
|
|
|
|
|
|
|
mobile: '', |
|
|
|
|
|
|
|
typeName: '', |
|
|
|
|
|
|
|
empNo: '', |
|
|
|
|
|
|
|
endTime: '', |
|
|
|
|
|
|
|
deptType: '' |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
const activities = [ |
|
|
|
const activities = [ |
|
|
|
{ |
|
|
|
{ |
|
|
|
content: 'Custom icon', |
|
|
|
content: 'Custom icon', |
|
|
|
timestamp: '2018-04-12 20:46', |
|
|
|
timestamp: '2018-04-12 20:46', |
|
|
|
size: 'large', |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
color: '#0bbd87', |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
content: 'Custom color', |
|
|
|
content: 'Custom color', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
color: '#0bbd87', |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
content: 'Custom size', |
|
|
|
content: 'Custom size', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
size: 'large', |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
content: 'Custom hollow', |
|
|
|
content: 'Custom hollow', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
type: 'primary', |
|
|
|
|
|
|
|
hollow: true, |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
{ |
|
|
|
content: 'Default node', |
|
|
|
content: 'Default node', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
timestamp: '2018-04-03 20:46', |
|
|
|
}, |
|
|
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const { optionsData } = useDictOptions<{ |
|
|
|
|
|
|
|
deptTypes: any[], |
|
|
|
|
|
|
|
policeList: any[], |
|
|
|
|
|
|
|
dept: any[] |
|
|
|
|
|
|
|
}>({ |
|
|
|
|
|
|
|
dept: { |
|
|
|
|
|
|
|
api: deptLists |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
deptTypes: { |
|
|
|
|
|
|
|
api: dictDataLists, |
|
|
|
|
|
|
|
params: { |
|
|
|
|
|
|
|
dictType: 'dept_type' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
}) |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const formRules = { |
|
|
|
const setFormData = async (data: Record<string, any>) => { |
|
|
|
|
|
|
|
for (const key in data) { |
|
|
|
|
|
|
|
if (data[key] != null && data[key] != undefined) { |
|
|
|
|
|
|
|
//@ts-ignore |
|
|
|
|
|
|
|
if(isJsonString(data[key])){ |
|
|
|
|
|
|
|
formData[key] =JSON.parse( data[key]) |
|
|
|
|
|
|
|
}else { |
|
|
|
|
|
|
|
formData[key] = data[key] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
departId: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
message: '请输入', |
|
|
|
|
|
|
|
trigger: ['blur'] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
empNo: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
message: '请输入', |
|
|
|
|
|
|
|
trigger: ['blur'] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
startTime: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
message: '请选择', |
|
|
|
|
|
|
|
trigger: ['blur'] |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
], |
|
|
|
} |
|
|
|
endTime: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
message: '请选择', |
|
|
|
|
|
|
|
trigger: ['blur'] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
deptType: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
required: true, |
|
|
|
|
|
|
|
message: '请选择', |
|
|
|
|
|
|
|
trigger: ['blur'] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleSubmit = async () => { |
|
|
|
|
|
|
|
await formRef.value?.validate() |
|
|
|
|
|
|
|
const data: any = { ...formData } |
|
|
|
|
|
|
|
mode.value == 'edit' ? await dutyEdit(data) : await dutyAdd(data) |
|
|
|
|
|
|
|
popupRef.value?.close() |
|
|
|
|
|
|
|
feedback.msgSuccess('操作成功') |
|
|
|
|
|
|
|
emit('success') |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const open = (type = 'add') => { |
|
|
|
const open = (type = 'details') => { |
|
|
|
mode.value = type |
|
|
|
mode.value = type |
|
|
|
popupRef.value?.open() |
|
|
|
popupRef.value?.open() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function isJsonString(value) { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
JSON.parse(value); // 尝试将字符串解析为JSON对象 |
|
|
|
|
|
|
|
return true; // 若能成功解析,说明是有效的JSON字符串 |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
|
|
return false; // 若无法解析,说明不是有效的JSON字符串 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const setFormData = async (data: Record<string, any>) => { |
|
|
|
const convert = (time: number) => { |
|
|
|
for (const key in formData) { |
|
|
|
let a: number | string = ~~(time / 3600); |
|
|
|
if (data[key] != null && data[key] != undefined) { |
|
|
|
let b: number | string = ~~(time / 60) - a * 60; |
|
|
|
//@ts-ignore |
|
|
|
let c: number | string = time % 60; |
|
|
|
if(key=='departId'){ |
|
|
|
|
|
|
|
formData[key]= parseInt( data[key]) |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
formData[key] = data[key] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a = String(a).padStart(2, "0"); |
|
|
|
|
|
|
|
b = String(b).padStart(2, "0"); |
|
|
|
|
|
|
|
c = String(c).padStart(2, "0"); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
if (a === '00') { |
|
|
|
|
|
|
|
if(b === '00'){ |
|
|
|
|
|
|
|
return `${c}秒`; |
|
|
|
|
|
|
|
}else { |
|
|
|
|
|
|
|
return `${b}分${c}秒`; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} else{ |
|
|
|
|
|
|
|
return `${a}小时${b}分${c}秒`; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const getDetail = async (row: Record<string, any>) => { |
|
|
|
|
|
|
|
//const data = await dutyDetail({ |
|
|
|
const getDetail = async (row: Record<string, any>) => { |
|
|
|
// id: row.id |
|
|
|
try { |
|
|
|
//}) |
|
|
|
|
|
|
|
//setFormData(data) |
|
|
|
mailDetail = await getMailDetail({ |
|
|
|
} |
|
|
|
id: row.id |
|
|
|
const searchPoliceUser = (query: string) => { |
|
|
|
}) |
|
|
|
if (query) { |
|
|
|
console.log(mailDetail) |
|
|
|
setTimeout(() => { |
|
|
|
setFormData(mailDetail) |
|
|
|
console.log(query) |
|
|
|
console.log(verifyFollowupPolice) |
|
|
|
const params= { |
|
|
|
} catch (error) { |
|
|
|
searchName: query |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const policeList = searchPolice(params).then((res: any) => { |
|
|
|
|
|
|
|
optionsData.policeList=res; |
|
|
|
|
|
|
|
return Promise.resolve(res) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
.catch((err: any) => { |
|
|
|
|
|
|
|
return Promise.reject(err) |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}, 200) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
optionsData.policeList = [] |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleSelectChange = (newValue) => { |
|
|
|
|
|
|
|
formData.empNo=newValue |
|
|
|
|
|
|
|
console.log('选中的值:', newValue); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
const handleClose = () => { |
|
|
|
const handleClose = () => { |
|
|
|
emit('close') |
|
|
|
emit('close') |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
defineExpose({ |
|
|
|
defineExpose({ |
|
|
|
open, |
|
|
|
open, |
|
|
|
setFormData, |
|
|
|
|
|
|
|
getDetail |
|
|
|
getDetail |
|
|
|
}) |
|
|
|
}) |
|
|
|
</script> |
|
|
|
</script> |
|
|
|
@ -603,13 +549,33 @@ defineExpose({ |
|
|
|
} |
|
|
|
} |
|
|
|
.details-right{ |
|
|
|
.details-right{ |
|
|
|
width:350px; |
|
|
|
width:350px; |
|
|
|
|
|
|
|
height: 100%; |
|
|
|
|
|
|
|
overflow: auto; |
|
|
|
float: left; |
|
|
|
float: left; |
|
|
|
margin-left: 10px; |
|
|
|
margin-left: 10px; |
|
|
|
padding-left: 10px; |
|
|
|
padding-left: 10px; |
|
|
|
padding-top: 10px; |
|
|
|
padding-top: 10px; |
|
|
|
background:#09256d |
|
|
|
background:#09256d |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.details-right::-webkit-scrollbar { |
|
|
|
|
|
|
|
width: 8px; /* 宽度 */ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.details-right::-webkit-scrollbar-track { |
|
|
|
|
|
|
|
background: #071a4e; /* 滚动条背景色 */ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.details-right::-webkit-scrollbar-thumb { |
|
|
|
|
|
|
|
background: #005dfe; /* 滚动条颜色 */ |
|
|
|
|
|
|
|
border-radius: 6px; /* 圆角 */ |
|
|
|
|
|
|
|
background-clip: padding-box; /* 背景剪裁 */ |
|
|
|
|
|
|
|
border: 8px solid transparent; /* 边框 */ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.details-right::-webkit-scrollbar-thumb:hover { |
|
|
|
|
|
|
|
background: #0060fe; /* 鼠标悬停时的滚动条颜色 */ |
|
|
|
|
|
|
|
} |
|
|
|
.details{ |
|
|
|
.details{ |
|
|
|
width:1400px; |
|
|
|
width:1400px; |
|
|
|
height: 700px; |
|
|
|
height: 700px; |
|
|
|
@ -690,5 +656,31 @@ border-top: 1px solid #4E8FFF; /* 设置上边框为1px实线,颜色为黑色 |
|
|
|
margin-bottom: 5px; |
|
|
|
margin-bottom: 5px; |
|
|
|
margin-left: 5px; |
|
|
|
margin-left: 5px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.timeline-right{ |
|
|
|
|
|
|
|
width: 129px; |
|
|
|
|
|
|
|
height: 28px; |
|
|
|
|
|
|
|
background: #252D7A; |
|
|
|
|
|
|
|
box-shadow: inset 2px 0px 0px 0px #00D050; |
|
|
|
|
|
|
|
border-radius: 0px 100px 100px 0px; |
|
|
|
|
|
|
|
color: #fff; |
|
|
|
|
|
|
|
line-height: 28px; |
|
|
|
|
|
|
|
text-align: center; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.timeline-text{ |
|
|
|
|
|
|
|
color:#fff; |
|
|
|
|
|
|
|
font-size: 12px; |
|
|
|
|
|
|
|
font-family: SourceHanSansCN, SourceHanSansCN; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.timeline-span{ |
|
|
|
|
|
|
|
font-size: 12px; |
|
|
|
|
|
|
|
font-family: SourceHanSansCN, SourceHanSansCN; |
|
|
|
|
|
|
|
font-weight: 500; |
|
|
|
|
|
|
|
color: #4BDBFC; |
|
|
|
|
|
|
|
line-height: 18px; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.img-box{ |
|
|
|
|
|
|
|
width: 50px; |
|
|
|
|
|
|
|
height: 50px; |
|
|
|
|
|
|
|
margin-left: 20px; |
|
|
|
|
|
|
|
} |
|
|
|
</style> |
|
|
|
</style> |
|
|
|
|