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

Merge remote-tracking branch 'origin/master'

......@@ -51,10 +51,13 @@ export function distributeRectificationJob(id) {
}
//打回初次调查任务(复查任务不需要打回)
export function rollbackJob(id) {
export function rollbackJob(data) {
return request({
url: '/backstage/job/rollbackJob/'+id,
url: '/backstage/job/rollbackJob',
method: 'put',
data: data
})
}
......
import request from '@/utils/request'
// 查询原因库列表
export function getListReason() {
return request({
url: '/backstage/reason/getListReason',
method: 'get',
})
}
// 查询原因库列表
export function listReason(query) {
return request({
......@@ -50,4 +59,4 @@ export function exportReason(query) {
method: 'get',
params: query
})
}
\ No newline at end of file
}
......@@ -11,68 +11,225 @@
<h3 style="font-size: 30px">考核内容</h3>
<div v-for="(item,index) in targetList" 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="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 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">
<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 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 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-else>
<div :style="{'color':image.type ==2?'red':'blue'}">备注:{{image.remark}}</div>
</div>
</div>
<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 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 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>
<el-divider></el-divider>
</div>
<div style="font-size: 20px;margin-top: 50px">
<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 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 style="margin-top: 20px" slot="footer" class="dialog-footer">
<el-button :disabled="!(form.jobType == '1' && form.jobStatus == '2')" type="primary"
@click="handleRollbackJob">打回任务
</el-button>
<div >
<video-player class="video-player vjs-custom-skin"
ref="videoPlayer"
:playsinline="true"
:options="playerOptions"
></video-player>
<div style="margin-top: 20px" v-if="image.type == null">备注:{{image.remark}}</div>
<div style="margin-top: 20px" v-else>
<div v-if="image.type == '1'? imageColor = 'red' : imageColor = 'blue'" :style="{color:imageColor}">备注:{{image.remark}}</div>
</div>
<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-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>
<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></el-divider>
</div>
<el-divider></el-divider>
<el-divider v-if="rectifyList.length > 0"></el-divider>
<H3 v-if="rectifyList.length > 0" style="font-size: 30px">整改内容</H3>
<div style="font-size: 20px;margin-top: 50px">
<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"><span>是否重新调查:</span><span style="margin-left: 20px">{{isCheckFlag ? "是" : "否"}}</span></div>
<div style="margin-top: 20px">选择原因</div>
<div v-if="rectifyList.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 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>
<H3 style="font-size: 30px">调查员重新调查内容</H3>
<H3 style="font-size: 30px">整改内容</H3>
<H3 style="font-size: 30px">调查员复查内容</H3>
</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 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>
</div>
</div>
<el-divider></el-divider>
</div>
......@@ -81,77 +238,166 @@
</template>
<script>
import { getTargetList,distributeRectificationJob, rollbackJob, auditJob, getList,listJob, getJob, delJob, addJob, updateJob, exportJob } from "@/api/backstage/job";
export default {
name: "jobDetail",
data(){
return{
imageColor:'black',
jobId:null,
form:{},
targetList:[],
addScoreCount:0,
reduceScoreCount:0,
isCheckFlag: false,
gps:'',
// 视频播放
playerOptions : {
playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
autoplay: false, //如果true,浏览器准备好时开始回放。
muted: false, // 默认情况下将会消除任何音频。
loop: false, // 导致视频一结束就重新开始。
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
language: 'zh-CN',
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
sources: [{
type: "",
src: 'http://vjs.zencdn.net/v/oceans.mp4'//url地址
// src: "" //url地址
}],
poster: "", //你的封面地址
width: '400px', // 播放器宽度
notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
controlBar: {
timeDivider: true,
durationDisplay: true,
remainingTimeDisplay: false,
fullscreenToggle: true //全屏按钮
}
}
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 {
name: "jobDetail",
data() {
return {
isCheck: '',
isCheckReasonOptions: [],
isCheckOptions: [{
value: '0',
label: '是'
}, {
value: '1',
label: '否'
}],
imageColor: 'black',
jobId: null,
form: {},
targetList: [],//考核内容
resetTargetList:[],//调查员重新调查内容
checkList:[],//复查内容
rectifyList:[],//整改内容
addScoreCount: 0,
reduceScoreCount: 0,
gps: '',
// 视频播放
playerOptions: {
playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
autoplay: false, //如果true,浏览器准备好时开始回放。
muted: false, // 默认情况下将会消除任何音频。
loop: false, // 导致视频一结束就重新开始。
preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)
language: 'zh-CN',
aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。
sources: [{
type: "",
src: 'http://vjs.zencdn.net/v/oceans.mp4'//url地址
// src: "" //url地址
}],
poster: "", //你的封面地址
width: '400px', // 播放器宽度
notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。
controlBar: {
timeDivider: true,
durationDisplay: true,
remainingTimeDisplay: false,
fullscreenToggle: true //全屏按钮
}
}
}
},
created() {
this.jobId = this.$route.params.id;
this.getJob();
//获取相关联指标列表
getTargetList(this.jobId).then(res => {
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.reduceScoreCount = res.data.reduceScoreCount;
this.gps = res.data.gps;
});
//获取原因库
getListReason().then(response => {
this.isCheckReasonOptions = response.data;
});
},
/* 页面初始化执行方法:此方法可写同步方法,有先后加载顺序的逻辑建议用同步方法 */
mounted() {
},
methods: {
back() {
this.$router.go(-1)
// this.$router.push("/job/job")
},
created() {
this.jobId = this.$route.params.id;
getJob(){
getJob(this.jobId).then(response => {
this.form = response.data;
console.log(this.form)
});
},
//打回初次调查任务(复查任务不需要打回)
handleRollbackJob() {
this.$confirm('是否确认打回该调查任务,打回任务调查员将重新调查?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
//获取相关联指标列表
getTargetList(this.jobId).then(res=>{
this.targetList = res.data.tJobTargets;
this.addScoreCount = res.data.addScoreCount;
this.reduceScoreCount = res.data.reduceScoreCount;
this.isCheckFlag = res.data.isCheckFlag;
this.gps = res.data.gps;
});
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("取消操作")
})
},
methods:{
back() {
this.$router.go(-1)
// this.$router.push("/job/job")
},
apply(){
// this.$refs.videoPlayer.play()
// this.playerOptions.width = 600
}
}
}
}
</script>
<style scoped >
<style scoped>
/*.video-js .vjs-icon-placeholder {*/
/* width: 80%;*/
/* height: 80%;*/
......
......@@ -187,23 +187,23 @@
v-hasPermi="['backstage:job:edit']"
>查看详情</el-button>
<el-button
v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'"
size="mini"
type="text"
icon="el-icon-edit"
@click="handleAudit(scope.row)"
v-hasPermi="['backstage:job:edit']"
>审核通过</el-button>
<el-button
v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'"
size="mini"
type="text"
icon="el-icon-edit"
@click="handleRollbackJob(scope.row)"
v-hasPermi="['backstage:job:edit']"
>打回任务</el-button>
<!-- <el-button-->
<!-- v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleAudit(scope.row)"-->
<!-- v-hasPermi="['backstage:job:edit']"-->
<!-- >审核通过</el-button>-->
<!-- <el-button-->
<!-- v-if="scope.row.jobType == '1' && scope.row.jobStatus == '2'"-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-edit"-->
<!-- @click="handleRollbackJob(scope.row)"-->
<!-- v-hasPermi="['backstage:job:edit']"-->
<!-- >打回任务</el-button>-->
<el-button
v-if="scope.row.jobType == '1' && scope.row.jobStatus == '3' && scope.row.isDistribute == '1'"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论