提交 e51b0bf8 authored 作者: 谢廷雅's avatar 谢廷雅

Merge remote-tracking branch 'origin/master'

...@@ -51,10 +51,13 @@ export function distributeRectificationJob(id) { ...@@ -51,10 +51,13 @@ export function distributeRectificationJob(id) {
} }
//打回初次调查任务(复查任务不需要打回) //打回初次调查任务(复查任务不需要打回)
export function rollbackJob(id) { export function rollbackJob(data) {
return request({ return request({
url: '/backstage/job/rollbackJob/'+id, url: '/backstage/job/rollbackJob',
method: 'put', method: 'put',
data: data
}) })
} }
......
import request from '@/utils/request' import request from '@/utils/request'
// 查询原因库列表
export function getListReason() {
return request({
url: '/backstage/reason/getListReason',
method: 'get',
})
}
// 查询原因库列表 // 查询原因库列表
export function listReason(query) { export function listReason(query) {
return request({ return request({
......
...@@ -11,20 +11,53 @@ ...@@ -11,20 +11,53 @@
<h3 style="font-size: 30px">考核内容</h3> <h3 style="font-size: 30px">考核内容</h3>
<div v-for="(item,index) in targetList" style="font-size: 20px"> <div v-for="(item,index) in targetList" style="font-size: 20px">
<div style="color: #00afff">{{"考核指标" + index+1}}</div> <div style="color: #00afff">{{"考核指标" + (index+1)}}</div>
<div style="margin-top: 20px"><span>考核标题:</span><span style="margin-left: 20px">{{item.ttarget.targetName}}</span></div> <div style="margin-top: 20px"><span>考核标题:</span><span
<div style="margin-top: 20px"><span>考核标准:</span><span style="margin-left: 20px">{{item.ttarget.checkCriteria}}</span></div> style="margin-left: 20px">{{item.ttarget.targetName}}</span></div>
<div style="margin-top: 20px"><span>评分标准:</span><span style="margin-left: 20px">{{item.ttarget.scoreCriteria}}</span></div> <div style="margin-top: 20px"><span>考核标准:</span><span
<div style="margin-top: 20px"><span>所属层级:</span><span style="margin-left: 20px">{{item.ttarget.allTargetLevelName}}</span></div> style="margin-left: 20px">{{item.ttarget.checkCriteria}}</span></div>
<div style="margin-top: 20px" v-if="item.ttarget.type=='1'"><span>加分项:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItem}}</span></div> <div style="margin-top: 20px"><span>评分标准:</span><span
<div style="margin-top: 20px" v-if="item.ttarget.type=='2'"><span>减分项:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItem}}</span></div> style="margin-left: 20px">{{item.ttarget.scoreCriteria}}</span></div>
<div style="margin-top: 20px"><span>每项分值:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItemEvery}}</span></div> <div style="margin-top: 20px"><span>所属层级:</span><span style="margin-left: 20px">{{item.ttarget.allTargetLevelName}}</span>
</div>
<div style="margin-top: 20px" v-if="item.ttarget.type=='1'"><span>加分项:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItem}}</span>
</div>
<div style="margin-top: 20px" v-if="item.ttarget.type=='2'"><span>减分项:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItem}}</span>
</div>
<div style="margin-top: 20px"><span>每项分值:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItemEvery}}</span>
</div>
<div style="margin-top: 20px"><span>得分:</span><span style="margin-left: 20px"></span>{{item.score}}</div>
<div style="margin-top: 20px"><span>是否重新调查:</span>
<span style="margin-left: 20px">
<el-select v-model="item.isTrim" placeholder="请选择">
<el-option
v-for="item in isCheckOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</span>
</div>
<div style="margin-top: 20px"> <div style="margin-top: 20px">
<span style="color: red">注:备注黑色为普通;有问题的为红色;有亮点的为蓝色</span> <span>选择原因:</span>
<span style="margin-left: 20px">
<el-select :disabled="!(item.isTrim == 0)" v-model="item.reasonId" placeholder="请选择">
<el-option
v-for="item in isCheckReasonOptions"
:key="item.id"
:label="item.reasonContent"
:value="item.id">
</el-option>
</el-select>
</span>
</div> </div>
<div style="margin-top: 20px;margin-left: 60px" >
<div v-if="item.tjobPicVedios.length > 0" style="margin-top: 20px">
<span style="color: red">注:备注黑色为普通;有问题的为红色;有亮点的为蓝色</span>
</div>
<div style="margin-top: 20px;margin-left: 60px">
<div v-viewer v-for="image in item.tjobPicVedios" v-if="image.mediaType == '1'" <div v-viewer v-for="image in item.tjobPicVedios" v-if="image.mediaType == '1'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;"> style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<img <img
...@@ -32,48 +65,172 @@ ...@@ -32,48 +65,172 @@
style="width: 100px;height: 100px; cursor:pointer"/> style="width: 100px;height: 100px; cursor:pointer"/>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div> <div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else> <div style="margin-top: 20px" v-else>
<div v-if="image.type == '1'? imageColor = 'red' : imageColor = 'blue'" :style="{color:imageColor}">备注:{{image.remark}}</div> <div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div> </div>
</div> </div>
<div v-for="image in item.tjobPicVedios" v-if="image.mediaType == '2'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<div>
<video style="width: 100%; height: 200px;" autoplay controls :src="image.url"></video>
<!-- <video-player class="video-player vjs-custom-skin"-->
<!-- ref="videoPlayer"-->
<!-- :playsinline="true"-->
<!-- :options="playerOptions"-->
<!-- @play="apply(image.url)"-->
<!-- ></video-player>-->
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else>
<div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div>
</div>
<div v-for="image in item.tjobPicVedios" v-if="image.mediaType == '2'" style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;"> </div>
<div > </div>
<video-player class="video-player vjs-custom-skin" <el-divider></el-divider>
ref="videoPlayer" </div>
:playsinline="true"
:options="playerOptions" <div style="font-size: 20px;margin-top: 50px">
></video-player> <div style="margin-top: 20px"><span>加分项数量:</span><span style="margin-left: 20px">{{addScoreCount}}</span></div>
<div style="margin-top: 20px"><span>减分项数量:</span><span style="margin-left: 20px">{{reduceScoreCount}}</span>
</div>
<div style="margin-top: 20px"><span>GPS坐标:</span><span style="margin-left: 20px">{{gps}}</span></div>
<div style="margin-top: 20px" slot="footer" class="dialog-footer">
<el-button :disabled="!(form.jobType == '1' && form.jobStatus == '2')" type="primary"
@click="handleRollbackJob">打回任务
</el-button>
<el-button :disabled="!(form.jobType == '1' && form.jobStatus == '2')" type="primary"
@click="handleAudit">设为完结
</el-button>
</div>
</div>
<el-divider v-if="resetTargetList.length > 0"></el-divider>
<H3 v-if="resetTargetList.length > 0" style="font-size: 30px">调查员重新调查内容</H3>
<div v-for="(item,index) in resetTargetList" style="font-size: 20px">
<div style="color: #00afff">{{"考核指标" + (index+1)}}</div>
<!-- <div style="margin-top: 20px"><span>考核标题:</span><span-->
<!-- style="margin-left: 20px">{{item.ttarget.targetName}}</span></div>-->
<!-- <div style="margin-top: 20px"><span>考核标准:</span><span-->
<!-- style="margin-left: 20px">{{item.ttarget.checkCriteria}}</span></div>-->
<!-- <div style="margin-top: 20px"><span>评分标准:</span><span-->
<!-- style="margin-left: 20px">{{item.ttarget.scoreCriteria}}</span></div>-->
<!-- <div style="margin-top: 20px"><span>所属层级:</span><span style="margin-left: 20px">{{item.ttarget.allTargetLevelName}}</span>-->
<!-- </div>-->
<!-- <div style="margin-top: 20px" v-if="item.ttarget.type=='1'"><span>加分项:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItem}}</span>-->
<!-- </div>-->
<!-- <div style="margin-top: 20px" v-if="item.ttarget.type=='2'"><span>减分项:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItem}}</span>-->
<!-- </div>-->
<!-- <div style="margin-top: 20px"><span>每项分值:</span><span style="margin-left: 20px">{{item.ttarget.plusReduceItemEvery}}</span>-->
<!-- </div>-->
<div style="margin-top: 20px"><span>得分:</span><span style="margin-left: 20px"></span>{{item.score}}</div>
<div v-if="item.tjobPicVedios.length > 0" style="margin-top: 20px">
<span style="color: red">注:备注黑色为普通;有问题的为红色;有亮点的为蓝色</span>
</div>
<div style="margin-top: 20px;margin-left: 60px">
<div v-viewer v-for="image in item.tjobPicVedios" v-if="image.mediaType == '1'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<img
:src="image.url"
style="width: 100px;height: 100px; cursor:pointer"/>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div> <div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else> <div style="margin-top: 20px" v-else>
<div v-if="image.type == '1'? imageColor = 'red' : imageColor = 'blue'" :style="{color:imageColor}">备注:{{image.remark}}</div> <div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div> </div>
</div> </div>
<div v-for="image in item.tjobPicVedios" v-if="image.mediaType == '2'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<div>
<video style="width: 100%; height: 200px;" autoplay controls :src="image.url"></video>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else>
<div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div>
</div> </div>
</div> </div>
</div>
<el-divider></el-divider> <el-divider></el-divider>
</div>
<div style="font-size: 20px;margin-top: 50px"> <el-divider v-if="rectifyList.length > 0"></el-divider>
<div style="margin-top: 20px"><span>加分项数量:</span><span style="margin-left: 20px">{{addScoreCount}}</span></div> <H3 v-if="rectifyList.length > 0" style="font-size: 30px">整改内容</H3>
<div style="margin-top: 20px"><span>减分项数量:</span><span style="margin-left: 20px">{{reduceScoreCount}}</span></div>
<div style="margin-top: 20px"><span>GPS坐标:</span><span style="margin-left: 20px">{{gps}}</span></div> <div v-if="rectifyList.length > 0" style="margin-top: 20px">
<div style="margin-top: 20px"><span>是否重新调查:</span><span style="margin-left: 20px">{{isCheckFlag ? "是" : "否"}}</span></div> <span style="color: red">注:备注黑色为普通;有问题的为红色;有亮点的为蓝色</span>
<div style="margin-top: 20px">选择原因</div> </div>
<div style="margin-top: 20px;margin-left: 60px">
<div v-viewer v-for="image in rectifyList" v-if="image.mediaType == '1'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<img
:src="image.url"
style="width: 100px;height: 100px; cursor:pointer"/>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else>
<div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div>
</div>
<div v-for="image in rectifyList" v-if="image.mediaType == '2'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<div>
<video style="width: 100%; height: 200px;" autoplay controls :src="image.url"></video>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else>
<div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div>
</div>
</div>
</div>
<el-divider v-if="checkList.length > 0"></el-divider>
<H3 v-if="checkList.length > 0" style="font-size: 30px">调查员复查内容</H3>
<div v-if="checkList.length > 0" style="margin-top: 20px">
<span style="color: red">注:备注黑色为普通;有问题的为红色;有亮点的为蓝色</span>
</div>
<div style="margin-top: 20px;margin-left: 60px">
<div v-viewer v-for="image in checkList" v-if="image.mediaType == '1'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<img
:src="image.url"
style="width: 100px;height: 100px; cursor:pointer"/>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else>
<div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div>
</div> </div>
<div v-for="image in checkList" v-if="image.mediaType == '2'"
style="display: inline-block; width: 20%; margin-left: 10px;vertical-align: middle;text-align: center;">
<div>
<video style="width: 100%; height: 200px;" autoplay controls :src="image.url"></video>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else>
<div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div>
</div>
<H3 style="font-size: 30px">调查员重新调查内容</H3> </div>
<H3 style="font-size: 30px">整改内容</H3>
<H3 style="font-size: 30px">调查员复查内容</H3>
</div> </div>
<el-divider></el-divider>
</div> </div>
...@@ -81,22 +238,55 @@ ...@@ -81,22 +238,55 @@
</template> </template>
<script> <script>
import { getTargetList,distributeRectificationJob, rollbackJob, auditJob, getList,listJob, getJob, delJob, addJob, updateJob, exportJob } from "@/api/backstage/job"; import {
getTargetList,
distributeRectificationJob,
rollbackJob,
auditJob,
getList,
listJob,
getJob,
delJob,
addJob,
updateJob,
exportJob
} from "@/api/backstage/job";
import {
getListReason,
listReason,
getReason,
delReason,
addReason,
updateReason,
exportReason
} from "@/api/backstage/reason";
export default { export default {
name: "jobDetail", name: "jobDetail",
data(){ data() {
return{ return {
imageColor:'black', isCheck: '',
jobId:null, isCheckReasonOptions: [],
form:{}, isCheckOptions: [{
targetList:[], value: '0',
addScoreCount:0, label: '是'
reduceScoreCount:0, }, {
isCheckFlag: false, value: '1',
gps:'', label: '否'
}],
imageColor: 'black',
jobId: null,
form: {},
targetList: [],//考核内容
resetTargetList:[],//调查员重新调查内容
checkList:[],//复查内容
rectifyList:[],//整改内容
addScoreCount: 0,
reduceScoreCount: 0,
gps: '',
// 视频播放 // 视频播放
playerOptions : { playerOptions: {
playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度 playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
autoplay: false, //如果true,浏览器准备好时开始回放。 autoplay: false, //如果true,浏览器准备好时开始回放。
muted: false, // 默认情况下将会消除任何音频。 muted: false, // 默认情况下将会消除任何音频。
...@@ -124,34 +314,90 @@ ...@@ -124,34 +314,90 @@
}, },
created() { created() {
this.jobId = this.$route.params.id; this.jobId = this.$route.params.id;
getJob(this.jobId).then(response => { this.getJob();
this.form = response.data;
console.log(this.form)
});
//获取相关联指标列表 //获取相关联指标列表
getTargetList(this.jobId).then(res=>{ getTargetList(this.jobId).then(res => {
this.targetList = res.data.tJobTargets; res.data.firstTJobTargets.map(item => {
item.isTrim = item.isTrim == 0 ? '是' : '否'
})
this.targetList = res.data.firstTJobTargets;
this.resetTargetList = res.data.resetTJobTargets;
this.rectifyList = res.data.rectifyList;
this.checkList = res.data.checkList;
this.addScoreCount = res.data.addScoreCount; this.addScoreCount = res.data.addScoreCount;
this.reduceScoreCount = res.data.reduceScoreCount; this.reduceScoreCount = res.data.reduceScoreCount;
this.isCheckFlag = res.data.isCheckFlag;
this.gps = res.data.gps; this.gps = res.data.gps;
}); });
//获取原因库
getListReason().then(response => {
this.isCheckReasonOptions = response.data;
});
},
/* 页面初始化执行方法:此方法可写同步方法,有先后加载顺序的逻辑建议用同步方法 */
mounted() {
}, },
methods:{ methods: {
back() { back() {
this.$router.go(-1) this.$router.go(-1)
// this.$router.push("/job/job") // this.$router.push("/job/job")
}, },
apply(){ getJob(){
// this.$refs.videoPlayer.play() getJob(this.jobId).then(response => {
// this.playerOptions.width = 600 this.form = response.data;
});
},
//打回初次调查任务(复查任务不需要打回)
handleRollbackJob() {
this.$confirm('是否确认打回该调查任务,打回任务调查员将重新调查?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
this.targetList.map(item => {
if(item.isTrim == '是'){
item.isTrim = 0;
}else if(item.isTrim == '否'){
item.isTrim = 1;
} }
})
rollbackJob(this.targetList).then(res => {
this.$message.success("打回成功")
this.getJob();
this.targetList.map(item => {
item.isTrim = item.isTrim == 0 ? '是' : '否'
})
})
}).catch(() => {
this.$message.warning("取消操作")
})
},
//审核初次调查任务(复查任务不需要审核)
handleAudit() {
this.$confirm('是否确认完结该调查任务?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
auditJob(this.jobId).then(res => {
this.$message.success("完结成功")
this.getJob();
})
}).catch(() => {
this.$message.warning("取消操作")
})
},
} }
} }
</script> </script>
<style scoped > <style scoped>
/*.video-js .vjs-icon-placeholder {*/ /*.video-js .vjs-icon-placeholder {*/
/* width: 80%;*/ /* width: 80%;*/
/* height: 80%;*/ /* height: 80%;*/
......
...@@ -187,23 +187,23 @@ ...@@ -187,23 +187,23 @@
v-hasPermi="['backstage:job:edit']" v-hasPermi="['backstage:job:edit']"
>查看详情</el-button> >查看详情</el-button>
<el-button <!-- <el-button-->
v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'" <!-- v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'"-->
size="mini" <!-- size="mini"-->
type="text" <!-- type="text"-->
icon="el-icon-edit" <!-- icon="el-icon-edit"-->
@click="handleAudit(scope.row)" <!-- @click="handleAudit(scope.row)"-->
v-hasPermi="['backstage:job:edit']" <!-- v-hasPermi="['backstage:job:edit']"-->
>审核通过</el-button> <!-- >审核通过</el-button>-->
<el-button <!-- <el-button-->
v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'" <!-- v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'"-->
size="mini" <!-- size="mini"-->
type="text" <!-- type="text"-->
icon="el-icon-edit" <!-- icon="el-icon-edit"-->
@click="handleRollbackJob(scope.row)" <!-- @click="handleRollbackJob(scope.row)"-->
v-hasPermi="['backstage:job:edit']" <!-- v-hasPermi="['backstage:job:edit']"-->
>打回任务</el-button> <!-- >打回任务</el-button>-->
<el-button <el-button
v-if="scope.row.jobType == '1' && scope.row.jobStatus == '3' && scope.row.isDistribute == '1'" v-if="scope.row.jobType == '1' && scope.row.jobStatus == '3' && scope.row.isDistribute == '1'"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论