|
@@ -50,7 +50,7 @@
|
|
|
v-model="item.checked"
|
|
|
:disabled="getShowBtn(item)"
|
|
|
@change="
|
|
|
- val => {
|
|
|
+ (val) => {
|
|
|
itemChecked(val, item.id, item.score);
|
|
|
}
|
|
|
"
|
|
@@ -63,9 +63,7 @@
|
|
|
<p>任务积分:{{ item.score }}</p>
|
|
|
<p>代表姓名:{{ item.taskUserName }}</p>
|
|
|
</div>
|
|
|
- <div class="detail">
|
|
|
- 任务详情
|
|
|
- </div>
|
|
|
+ <div class="detail">任务详情</div>
|
|
|
<el-image v-if="item.taskInfo.shareImgUrl" :src="item.taskInfo.shareImgUrl" :preview-src-list="[item.taskInfo.shareImgUrl]"> </el-image>
|
|
|
<template v-if="['8', '9', '10', '11'].includes(item.taskType)">
|
|
|
<div v-if="item.taskInfo">
|
|
@@ -73,21 +71,17 @@
|
|
|
<div>文章标题:{{ item.title }}</div>
|
|
|
<div>获得积分:+{{ item.score }}</div>
|
|
|
<div>备注:{{ item.remark }}</div>
|
|
|
- <div class="tc" v-if="item.ercodeUrl" :style="{height: '150px'}">
|
|
|
+ <div class="tc" v-if="item.ercodeUrl" :style="{ height: '150px' }">
|
|
|
<img class="ercode-icon" :src="item.ercodeUrl" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
<template v-if="['5', '6', '33'].includes(item.taskType)">
|
|
|
<div v-for="(iten, index) in item.wmUserSignList" :key="index" class="visit-list">
|
|
|
- <div class="visit-title">
|
|
|
- 拜访记录:
|
|
|
- </div>
|
|
|
+ <div class="visit-title">拜访记录:</div>
|
|
|
<div>{{ iten.signEntName }} {{ iten.signDate }} 打卡</div>
|
|
|
<template v-if="iten.userSignDetail">
|
|
|
- <div class="visit-title">
|
|
|
- 拜访明细:
|
|
|
- </div>
|
|
|
+ <div class="visit-title">拜访明细:</div>
|
|
|
<div class="detail-info">
|
|
|
<ul>
|
|
|
<li v-if="iten.userSignDetail.drug.length > 0">
|
|
@@ -99,10 +93,10 @@
|
|
|
<li
|
|
|
v-if="
|
|
|
iten.signEntType == '1' &&
|
|
|
- iten.userSignDetail &&
|
|
|
- iten.userSignDetail.templateType !== 'TEMPLATE2' &&
|
|
|
- iten.userSignDetail.detail &&
|
|
|
- iten.userSignDetail.detail.length > 0
|
|
|
+ iten.userSignDetail &&
|
|
|
+ iten.userSignDetail.templateType !== 'TEMPLATE2' &&
|
|
|
+ iten.userSignDetail.detail &&
|
|
|
+ iten.userSignDetail.detail.length > 0
|
|
|
"
|
|
|
>
|
|
|
<span>拜访科室:</span>
|
|
@@ -184,7 +178,7 @@
|
|
|
</div>
|
|
|
<!-- 地图 -->
|
|
|
<template v-if="getMapShow(iten) && mapShow">
|
|
|
- <div :id="item.id" style="width:100%; height:300px">
|
|
|
+ <div :id="item.id" style="width: 100%; height: 300px">
|
|
|
<!-- {{ iten.id && initMap(iten.id, item)}} -->
|
|
|
</div>
|
|
|
</template>
|
|
@@ -207,7 +201,7 @@
|
|
|
<div v-if="item.taskFiledType == 'sign'" class="divline" />
|
|
|
<template v-if="iten.taskFiledType == 'sign'">
|
|
|
<div class="upload-field">
|
|
|
- <div class="field-text" :class="{required: iten.isMustfill == '1'}">{{ iten.taskFiledValue }}:</div>
|
|
|
+ <div class="field-text" :class="{ required: iten.isMustfill == '1' }">{{ iten.taskFiledValue }}:</div>
|
|
|
<!-- 上传组件 -->
|
|
|
<div class="img-box">
|
|
|
<el-image
|
|
@@ -225,7 +219,7 @@
|
|
|
<div v-if="iten.taskFiledType == 'img'" class="divline"></div>
|
|
|
<template v-if="iten.taskFiledType == 'img'">
|
|
|
<div class="upload-field">
|
|
|
- <div class="field-text" :class="{required: iten.isMustfill == '1'}">
|
|
|
+ <div class="field-text" :class="{ required: iten.isMustfill == '1' }">
|
|
|
{{ iten.taskFiledValue }}:
|
|
|
<!-- {{ getImgList(item.wmTaskContent[iten.taskFiledKey], iten) }} -->
|
|
|
</div>
|
|
@@ -241,7 +235,7 @@
|
|
|
<!-- 文件类型 -->
|
|
|
<template v-if="iten.taskFiledType === 'fileurl'">
|
|
|
<div class="upload-field">
|
|
|
- <div class="field-text" :class="{required: iten.isMustfill == '1'}">
|
|
|
+ <div class="field-text" :class="{ required: iten.isMustfill == '1' }">
|
|
|
{{ iten.taskFiledValue }}:
|
|
|
{{ getFileList(item.wmTaskContent[iten.taskFiledKey], iten) }}
|
|
|
</div>
|
|
@@ -254,7 +248,12 @@
|
|
|
:key="index"
|
|
|
class="img-item"
|
|
|
:src="iItem.url"
|
|
|
- :preview-src-list="getPreviewList(iten.fileList.map(ele => ele.url), index)"
|
|
|
+ :preview-src-list="
|
|
|
+ getPreviewList(
|
|
|
+ iten.fileList.map((ele) => ele.url),
|
|
|
+ index
|
|
|
+ )
|
|
|
+ "
|
|
|
>
|
|
|
</el-image>
|
|
|
</template>
|
|
@@ -288,7 +287,7 @@
|
|
|
<!-- 长文本 -->
|
|
|
<template v-if="iten.taskFiledType == 'longtext'">
|
|
|
<div class="longtext-box">
|
|
|
- <div class="field-text" :class="{required: iten.isMustfill == '1'}">{{ iten.taskFiledValue }}:</div>
|
|
|
+ <div class="field-text" :class="{ required: iten.isMustfill == '1' }">{{ iten.taskFiledValue }}:</div>
|
|
|
<textarea class="textarea-box" :disabled="true" :value="item.wmTaskContent[iten.taskFiledKey] || '--'" :maxlength="iten.taskFiledMaxsize" />
|
|
|
</div>
|
|
|
</template>
|
|
@@ -306,8 +305,8 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import {fetchList, batchApprovalTask, wmreportFetchList, wmreportBatchApprovalTask} from '@/api/quickAudit.js';
|
|
|
-import {getTaskList} from '@/api/assignPoints/currency/taskAudit';
|
|
|
+import { fetchList, batchApprovalTask, wmreportFetchList, wmreportBatchApprovalTask } from '@/api/quickAudit.js';
|
|
|
+import { getTaskList } from '@/api/assignPoints/currency/taskAudit';
|
|
|
import taskApi from '@/api/taskDetail/task';
|
|
|
import provinces from '@/util/lib/province';
|
|
|
import citys from '@/util/lib/city';
|
|
@@ -315,10 +314,10 @@ import areas from '@/util/lib/area';
|
|
|
import QRCode from 'qrcode';
|
|
|
import request from '@/router/axios';
|
|
|
import ElImageViewer from 'element-ui/packages/image/src/image-viewer';
|
|
|
-import {mapGetters} from 'vuex';
|
|
|
+import { mapGetters } from 'vuex';
|
|
|
|
|
|
export default {
|
|
|
- components: {ElImageViewer},
|
|
|
+ components: { ElImageViewer },
|
|
|
data() {
|
|
|
return {
|
|
|
form: {
|
|
@@ -363,9 +362,9 @@ export default {
|
|
|
if (this.mapIds.length) {
|
|
|
clearInterval(timer);
|
|
|
const maps = {};
|
|
|
- this.mapIds.forEach(info => {
|
|
|
- const observer = new IntersectionObserver(entries => {
|
|
|
- entries.forEach(entry => {
|
|
|
+ this.mapIds.forEach((info) => {
|
|
|
+ const observer = new IntersectionObserver((entries) => {
|
|
|
+ entries.forEach((entry) => {
|
|
|
const containerId = entry.target.id;
|
|
|
if (entry.isIntersecting) {
|
|
|
if (!maps[containerId]) {
|
|
@@ -432,7 +431,7 @@ export default {
|
|
|
this.$router.back();
|
|
|
},
|
|
|
calculateItemHeights() {
|
|
|
- this.list.forEach(item => {
|
|
|
+ this.list.forEach((item) => {
|
|
|
if (item.show) {
|
|
|
let className = '.cls' + item.id + ' .el-card__body';
|
|
|
let element = document.querySelector(className);
|
|
@@ -478,7 +477,7 @@ export default {
|
|
|
let points = 0;
|
|
|
if (val) {
|
|
|
this.checkedIds = [];
|
|
|
- this.list.forEach(item => {
|
|
|
+ this.list.forEach((item) => {
|
|
|
let flag = this.getShowBtn(item);
|
|
|
if (!flag) {
|
|
|
item.checked = true;
|
|
@@ -489,7 +488,7 @@ export default {
|
|
|
} else {
|
|
|
this.checkedIds = [];
|
|
|
this.allCheck = false;
|
|
|
- this.list.forEach(item => {
|
|
|
+ this.list.forEach((item) => {
|
|
|
item.checked = false;
|
|
|
});
|
|
|
}
|
|
@@ -500,7 +499,7 @@ export default {
|
|
|
this.checkedIds.push(id);
|
|
|
this.allPoints += score;
|
|
|
} else {
|
|
|
- let index = this.checkedIds.findIndex(item => item === id);
|
|
|
+ let index = this.checkedIds.findIndex((item) => item === id);
|
|
|
this.checkedIds.splice(index, 1);
|
|
|
this.allPoints -= score;
|
|
|
}
|
|
@@ -511,7 +510,7 @@ export default {
|
|
|
return;
|
|
|
}
|
|
|
const taskIdToNodeIdMap = {};
|
|
|
- this.list.forEach(item => {
|
|
|
+ this.list.forEach((item) => {
|
|
|
if (item.checked) {
|
|
|
if (this.$route.query.type == '1') {
|
|
|
taskIdToNodeIdMap[item.id] = item.taskInfo.checkState.curNodeId;
|
|
@@ -555,7 +554,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
getName(taskType) {
|
|
|
- let curr = this.taskList.find(item => item.id == taskType);
|
|
|
+ let curr = this.taskList.find((item) => item.id == taskType);
|
|
|
if (curr) return curr.taskTypeName;
|
|
|
},
|
|
|
async getList() {
|
|
@@ -573,9 +572,9 @@ export default {
|
|
|
};
|
|
|
res = await wmreportFetchList(query);
|
|
|
}
|
|
|
- await res.data.data.forEach(async item => {
|
|
|
+ await res.data.data.forEach(async (item) => {
|
|
|
if (item.config && item.config.length != 0) {
|
|
|
- item.config.forEach(iten => {
|
|
|
+ item.config.forEach((iten) => {
|
|
|
iten.taskFiledType = iten.taskFiledType.trim();
|
|
|
if (iten.taskFiledType == 'img') {
|
|
|
this.getImgList(item.wmTaskContent[iten.taskFiledKey], iten);
|
|
@@ -594,7 +593,7 @@ export default {
|
|
|
QRCode.toDataURL(canvas, shareUrl, {
|
|
|
width: 150, // 二维码宽度
|
|
|
height: 150 // 二维码高度
|
|
|
- }).then(url => {
|
|
|
+ }).then((url) => {
|
|
|
item.ercodeUrl = url;
|
|
|
});
|
|
|
this.$forceUpdate();
|
|
@@ -621,6 +620,9 @@ export default {
|
|
|
const arr = ['51', '52', '53'];
|
|
|
// 拜访类任务
|
|
|
if (arr.includes(item.taskTypeId) && item.taskFiledKey === 'temp24') {
|
|
|
+ if (this.wmTaskContent['temp10']) {
|
|
|
+ return this.wmTaskContent['temp10'];
|
|
|
+ }
|
|
|
return data.wmTaskContent['temp24label'];
|
|
|
}
|
|
|
let value = data.wmTaskContent[item.taskFiledKey];
|
|
@@ -640,16 +642,16 @@ export default {
|
|
|
let dArr = value.split(',');
|
|
|
let descName = '';
|
|
|
let descObj = {};
|
|
|
- dArr.forEach(dItem => {
|
|
|
+ dArr.forEach((dItem) => {
|
|
|
// 查找对应医院
|
|
|
if (data.dict.hospital_service && data.dict.hospital_service.length > 0) {
|
|
|
- descObj = data.dict.hospital_service.find(hItem => {
|
|
|
+ descObj = data.dict.hospital_service.find((hItem) => {
|
|
|
return dItem == hItem.value;
|
|
|
});
|
|
|
}
|
|
|
if (!descObj) {
|
|
|
// 查找对应公司
|
|
|
- descObj = data.dict.distribution_service.find(hItem => {
|
|
|
+ descObj = data.dict.distribution_service.find((hItem) => {
|
|
|
return dItem == hItem.value;
|
|
|
});
|
|
|
}
|
|
@@ -669,8 +671,8 @@ export default {
|
|
|
let resStr = '';
|
|
|
if (!value) return '--';
|
|
|
let vArr = value.split(',');
|
|
|
- vArr.forEach(vItem => {
|
|
|
- resItem = itemList.find(lItem => {
|
|
|
+ vArr.forEach((vItem) => {
|
|
|
+ resItem = itemList.find((lItem) => {
|
|
|
return lItem.value == value;
|
|
|
});
|
|
|
if (resItem) {
|
|
@@ -758,7 +760,7 @@ export default {
|
|
|
if (!uArr) return '';
|
|
|
let imgList = [];
|
|
|
let previewList = [];
|
|
|
- uArr.forEach(uItem => {
|
|
|
+ uArr.forEach((uItem) => {
|
|
|
let type = '无 ';
|
|
|
if (uItem.includes(';1')) {
|
|
|
type = '拍照';
|
|
@@ -787,7 +789,7 @@ export default {
|
|
|
const parseFileList = JSON.parse(jsonStr);
|
|
|
if (!parseFileList) return '';
|
|
|
let fileList = [];
|
|
|
- parseFileList.forEach(fileItem => {
|
|
|
+ parseFileList.forEach((fileItem) => {
|
|
|
fileList.push({
|
|
|
fileName: fileItem.fileName,
|
|
|
url: process.env.VUE_APP_URL + fileItem.url
|
|
@@ -802,7 +804,7 @@ export default {
|
|
|
url: item.url,
|
|
|
method: 'get',
|
|
|
responseType: 'blob'
|
|
|
- }).then(response => {
|
|
|
+ }).then((response) => {
|
|
|
// 处理返回的文件流
|
|
|
const blob = response.data;
|
|
|
const link = document.createElement('a');
|
|
@@ -810,7 +812,7 @@ export default {
|
|
|
link.download = item.fileName;
|
|
|
document.body.appendChild(link);
|
|
|
link.click();
|
|
|
- window.setTimeout(function() {
|
|
|
+ window.setTimeout(function () {
|
|
|
URL.revokeObjectURL(blob);
|
|
|
document.body.removeChild(link);
|
|
|
}, 0);
|
|
@@ -849,7 +851,7 @@ export default {
|
|
|
let address = this.getMapAddress(item);
|
|
|
const convert = () => {
|
|
|
// 将给定的地址转换为坐标位置
|
|
|
- geocoder.getLocation({address}).then(result => {
|
|
|
+ geocoder.getLocation({ address }).then((result) => {
|
|
|
this.removeMarker(markerLayer);
|
|
|
this.$nextTick(() => {
|
|
|
markerLayer.updateGeometries([
|