Commit e3ccbb71 authored by 13841799530's avatar 13841799530

Merge branch 'develop' of http://git.censoft.com.cn/BCDH-HSE/bcdh-app into develop

parents 7fb88e49 833cb49a
......@@ -11,7 +11,9 @@
<template>
<div id="app">
<transition :name="transitionName">
<router-view class="router-view" />
<keep-alive :include="cachePage">
<router-view class="router-view" />
</keep-alive>
</transition>
</div>
</template>
......@@ -20,7 +22,8 @@
export default {
data () {
return {
transitionName: 'slide-left'
transitionName: 'slide-left',
cachePage:["add-danger","change-info","affirm-danger","risk-affirm","manager-survey","super-survey","major-survey"]
}
},
watch: {
......
......@@ -386,16 +386,16 @@ const routes = [{
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/danger/superviseDanger'),
},
// 隐患督办批示
{
path: '/super-survey',
name: 'super-survey',
meta: {
title: '隐患督办',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/danger/superviseDanger/superSurvey'),
// 隐患督办批示
{
path: '/super-survey',
name: 'super-survey',
meta: {
title: '隐患督办',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/danger/superviseDanger/superSurvey'),
},
// 重大隐患列表
{
path: '/major-danger',
......@@ -429,17 +429,17 @@ const routes = [{
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/danger/delayApproval'),
},
// 延期审批确定
{
path: '/ratify-info',
name: 'ratify-info',
meta: {
title: '延期审批',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/danger/delayApproval/ratifyInfo'),
// 延期审批确定
{
path: '/ratify-info',
name: 'ratify-info',
meta: {
title: '延期审批',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/danger/delayApproval/ratifyInfo'),
},
// 项目经理督办列表
{
path: '/manager-danger',
......@@ -464,29 +464,31 @@ const routes = [{
// 风险模块
{
path: '/risk',
name: 'risk',
path: '/risk-add',
name: 'risk-add',
meta: {
title: '风险',
title: '风险上报',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/risk'),
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/risk/riskAdd'),
},
{
path: '/risk-add',
name: 'risk-add',
path: '/matrix-grad',
name: 'matrix-grad',
meta: {
title: '风险上报',
title: '矩阵式定级',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/risk/riskAdd'),
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/risk/riskAdd/matrixGrad'),
},
{
path: '/risk-return',
name: 'risk-return',
meta: {
title: '风险上报',
title: '风险上报退回列表',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/risk/riskReturn'),
......@@ -511,15 +513,6 @@ const routes = [{
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/risk/riskConfirme/riskAffirm'),
},
{
path: '/affirm-detail',
name: 'affirm-detail',
meta: {
title: '风险确认详情',
index: 1
},
component: () => import( /* webpackChunkName: "SaveWorkbench" */ '../views/risk/riskConfirme/affirmDetail'),
},
{
path: '/risk-account',
name: 'risk-account',
......
......@@ -193,6 +193,15 @@ export function majorList(url, data) {
})
}
//重大隐患添加
export function majorAdd(url, data) {
return request({
url: url,
method: 'post',
data
})
}
//隐患督办
export function superviseList(url, data) {
return request({
......@@ -203,7 +212,7 @@ export function superviseList(url, data) {
}
//经理督办
export function superviseSABList(url, data) {
export function superviseSABlist(url, data) {
return request({
url: url,
method: 'post',
......@@ -211,6 +220,54 @@ export function superviseSABList(url, data) {
})
}
//经理督办添加
export function superviseAdd(url, data) {
return request({
url: url,
method: 'post',
data
})
}
//延期审批
export function delayList(url, data) {
return request({
url: url,
method: 'post',
data
})
}
//延期审批退回回显
export function delayReturn(url, data) {
return request({
url: url,
method: 'get',
data
})
}
//延期审批添加
export function delayAdd(url, data) {
return request({
url: url,
method: 'post',
data
})
}
//延期审批添加
export function delayEdit(url, data) {
return request({
url: url,
method: 'post',
data
})
}
/*接口对接1 START*/
......
......@@ -26,6 +26,17 @@ export function postHdType(url,data) {
data
})
}
// 各种措施
export function postMeasures(url,data) {
return request({
url: url,
method: 'post',
data
})
}
// 主责人员
export function postHdPeople(url,data) {
return request({
......
......@@ -13,7 +13,7 @@
欢迎登录<span>首开集团安全隐患排查治理体系</span>!
</div>
<div class="login-form">
<van-form @submit="onSubmit">
<van-form @submit="onSubmit" :show-error-message="false" >
<div class="username-wrap">
<div class="username-icon">
<van-image :src="require('@/assets/login/login-username.png')" />
......@@ -23,7 +23,7 @@
name="username"
label=""
placeholder="账号"
:rules="[{ required: true, message: '请填写用户名' }]"
:rules="[{ required: true, message: '请填写账号' }]"
/>
</div>
<div class="passworld-wrap">
......
......@@ -130,6 +130,7 @@
type="datetime"
@confirm="onConFindTime"
@cancel="showFindTime = false"
v-model="findDateTime"
/>
</van-popup>
......@@ -143,6 +144,7 @@
@click="showSource = true"
:rules="[{ required: true, message: '风险源不能为空' }]"
/>
<van-popup v-model="showSource" position="bottom">
<van-picker
show-toolbar
......@@ -153,7 +155,7 @@
/>
</van-popup>
<van-field
<!-- <van-field
readonly
clickable
name="dangerSource"
......@@ -163,9 +165,8 @@
placeholder="请选择"
:rules="[{ required: true, message: '风险源不能为空' }]"
/>
<!-- @click="goSelectTwo" -->
<van-popup v-model="showSource1" position="bottom">
<van-popup v-model="showSource1" position="bottom">
<van-picker
show-toolbar
value-key="riskSource"
......@@ -173,7 +174,20 @@
@confirm="onConSource1"
@cancel="showSource1 = false"
/>
</van-popup>
</van-popup> -->
<van-field
v-model="source1"
readonly
rows="3"
autosize
label=" "
name="dangerSource"
type="textarea"
@click="goSelectTwo"
placeholder="请选择"
:rules="[{ required: true, message: '隐患描述不能为空' }]"
/>
<van-field
v-model="location"
......@@ -193,10 +207,7 @@
:rules="[{ required: true, message: '隐患描述不能为空' }]"
/>
<van-field
name="hdPicture1"
label="隐患照片"
>
<van-field name="hdPicture1" label="隐患照片">
<template #input>
<van-uploader v-model="uploaderImg" />
</template>
......@@ -204,7 +215,7 @@
<van-field name="hdVideo1" label="隐患视频">
<template #input>
<van-uploader v-model="uploaderVideo" />
<van-uploader v-model="uploaderVideo" accept="video/*" />
</template>
</van-field>
<van-field
......@@ -249,7 +260,7 @@
>
</div>
</van-form>
<div style="margin:10px 16px 0px;padding-bottom:16px">
<div style="margin: 10px 16px 0px; padding-bottom: 16px">
<van-button round block type="warning" @click.native="cancel"
>取消</van-button
>
......@@ -271,25 +282,69 @@ import {
dangerReturnEcho,
} from "@/service/danger";
export default {
name: "add-danger",
components: {
LHeader
LHeader,
},
created() {
this.taskId = this.$route.params.taskId
activated() {
this.taskId = this.$route.params.taskId;
if (this.taskId) {
this.isShowreturnCause = true;
this.text = "隐患上报退回";
this.postReturnEcho()
console.log(this.taskId);
console.log(Boolean( this.taskId));
this.postReturnEcho();
}
console.log("taskid"+this.taskId);
this.getList();
this.$bus.$on("sourceAyy", res => {
this.source1 = res.join(",");
});
},
beforeRouteLeave(to, from, next) {
if (to.name != "choose-people") {
// 如果去的路由是
this.projectId = ""; // 所属工程
this.taskId = "";
this.projectName = "";
this.showProjectName = false;
this.columnsProjectName = [];
this.range = ""; //适用范围
this.showRange = false;
this.columnsRange = [];
this.type = ""; //隐患类型
this.showType = false;
this.columnsType = [];
this.dangerName = ""; //隐患项目名称
this.showDangerName = false;
this.columnsDangerName = [];
this.dangerNum = ""; //隐患项目编号
this.dangerLevel = ""; //隐患项目级别
this.findTime = ""; //隐患发现时间
this.showFindTime = false;
this.source = ""; // 风险源
this.showSource = false;
this.columnsSource = [];
this.source1 = ""; // 风险源第二个字段
this.showSource1 = false;
this.columnsSource1 = [];
this.location = ""; // 检查部位
this.describe = ""; // 隐患描述
this.uploaderImg = []; //图像上传
this.uploaderVideo = []; //视频上传
this.expireTime = ""; // 隐患到期时间
this.showExpireTime = false;
this.recPeople = "";
this.showRecPeople = false;
this.columnsRecPeople = [];
this.isShowreturnCause = false;
this.returnCause = ""; // 退回原因
}
next();
},
data() {
return {
text: "新增隐患",
taskId:"",
taskId: "",
projectId: "", // 所属工程
projectName: "",
showProjectName: false,
......@@ -323,50 +378,55 @@ export default {
showRecPeople: false,
columnsRecPeople: [],
isShowreturnCause: false,
returnCause: "" // 退回原因
returnCause: "", // 退回原因
findDateTime : new Date()
};
},
mounted(){
// this.$bus.$on("sourceAyy", res =>{
// console.log(res.join(","));
// })
created() {
},
methods: {
onSubmit(values) {
console.log("submit", values);
let formdata = new FormData()
formdata.append("proId", this.projectId)
formdata.append("hdRange", values.hdRange)
formdata.append("hdType", values.hdType)
formdata.append("hdProjectName", values.hdProjectName)
formdata.append("hdProjectId", values.hdProjectId)
formdata.append("hdLev", values.hdLev)
formdata.append("hdDiscoveryTime", values.hdDiscoveryTime)
formdata.append("dangerId", values.dangerId)
formdata.append("dangerSource", values.dangerSource)
formdata.append("hdPosition", values.hdPosition)
formdata.append("hdDescribe", values.hdDescribe)
formdata.append("hdPicture1[]", values.hdPicture1)
formdata.append("hdVideo1[]", values.hdVideo1)
formdata.append("hdExpirationTime", values.hdExpirationTime)
formdata.append("rectificationUser", values.rectificationUser)
let formdata = new FormData();
formdata.append("proId", this.projectId);
formdata.append("hdRange", values.hdRange);
formdata.append("hdType", values.hdType);
formdata.append("hdProjectName", values.hdProjectName);
formdata.append("hdProjectId", values.hdProjectId);
formdata.append("hdLev", values.hdLev);
formdata.append("hdDiscoveryTime", values.hdDiscoveryTime);
formdata.append("dangerId", values.dangerId);
formdata.append("dangerSource", values.dangerSource);
formdata.append("hdPosition", values.hdPosition);
formdata.append("hdDescribe", values.hdDescribe);
formdata.append("hdExpirationTime", values.hdExpirationTime);
formdata.append("rectificationUser", values.rectificationUser);
// 放图片路径 因为formdat存数组会自动变成字符串所以次用这种追加字段的方式
values.hdPicture1.forEach((item) => {
formdata.append("hdPicture1[]", item.file);
});
values.hdVideo1.forEach((item) => {
formdata.append("hdVideo1[]", item.file);
});
this.$toast.loading({
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
duration: 0,
});
let url = "/hdreport/add"
if(this.taskId){
url = `/hdreport/editSave/${this.taskId}`
let url = "/hdreport/add";
if (this.taskId) {
url = `/hdreport/editSave/${this.taskId}`;
}
postHdReportAdd(url, formdata)
.then(res => {
.then((res) => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000
duration: 2000,
});
history.go(-1);
})
......@@ -381,10 +441,10 @@ export default {
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
duration: 0,
});
getFormList("/hdreport/add")
.then(res => {
.then((res) => {
this.$toast.clear();
this.columnsProjectName = res.data.projectInformations;
this.columnsRange = res.data.hdInventories;
......@@ -397,41 +457,18 @@ export default {
},
// 请求已退回详情数据
postReturnEcho(){
postReturnEcho() {
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
duration: 0,
});
dangerReturnEcho(`/hdreport/edit/${this.taskId}`)
.then(res => {
.then((res) => {
this.$toast.clear();
let msg = res.data.hdReport
// 对数据进行赋值
// 对数据进行赋值
this.returnCause = res.data.reason;
this.projectId = msg.proId;
// 对所属工程数组筛选出 相同id 的工程名
let name = this.columnsProjectName.filter(item =>{
return item.id == msg.proId
})
this.projectName = name[0].projectName
this.range = msg.hdRange
this.type = msg.hdType
this.dangerName = msg.hdProjectName
this.dangerNum = msg.hdProjectId
this.dangerLevel = msg.hdLev
this.findTime = msg.hdDiscoveryTime
this.source = msg.dangerId
this.source1 = msg.dangerSource
this.location = msg.hdPosition
this.describe = msg.hdDescribe
this.hdPicture1 = msg.hdPicture1
this.hdVideo1 = msg.hdVideo1
this.expireTime = msg.hdExpirationTime
this.recPeople = msg.rectificationUser
})
.catch(() => {
this.$toast.clear();
......@@ -441,50 +478,66 @@ export default {
// 所属工程名称
onConProjectName(value) {
if(!value){
this.showProjectName = false;
return
}
this.projectId = value.id;
this.projectName = value.projectName;
this.showProjectName = false;
// 这里请求隐患整改人接口
postHdShowPeople(`/hdreport/showPeople/${this.projectId}`).then(res => {
postHdShowPeople(`/hdreport/showPeople/${this.projectId}`).then((res) => {
this.columnsRecPeople = res.data;
});
},
// 适用范围
onConRange(value) {
if(!value){
this.showRange = false;
return
}
this.range = value.hdRange;
this.showRange = false;
this.type = ""
this.dangerName = ""
this.dangerNum = ""
this.dangerLevel = ""
this.type = "";
this.dangerName = "";
this.dangerNum = "";
this.dangerLevel = "";
// 去请求隐患类型的数据
postHdTyp(`/hdreport/showHdType/${this.range}`).then(res => {
postHdTyp(`/hdreport/showHdType/${this.range}`).then((res) => {
this.columnsType = res.data;
});
},
// 隐患类型
onConType(value) {
if(!value){
this.showType = false;
return
}
this.type = value.hdType;
this.showType = false;
this.dangerName = ""
this.dangerNum = ""
this.dangerLevel = ""
this.dangerName = "";
this.dangerNum = "";
this.dangerLevel = "";
// 请求隐患项目名称的数据
console.log(this.range);
postHdName(`/hdreport/showHdName/${this.range}/${this.type}`).then(
res => {
(res) => {
this.columnsDangerName = res.data;
}
);
},
// 隐患项目名称
onConDangerName(value) {
if(!value){
this.showDangerName = false;
return
}
this.dangerName = value.hdName;
this.showDangerName = false;
// 请求隐患项目编号和隐患级别
postHdInventories(
`/hdreport/showHdInventories/${this.range}/${this.type}/${this.dangerName}`
).then(res => {
).then((res) => {
this.dangerNum = res.data[0].hdId;
this.dangerLevel = res.data[0].hdLev;
});
......@@ -496,12 +549,16 @@ export default {
},
// 风险源
onConSource(value) {
if(!value){
this.showSource = false;
return
}
this.source = value.factor;
this.showSource = false;
// 请求风险源第二个字段
let formdata = new FormData();
formdata.append("factor", this.source);
postHdRiskSource("/riskSource/list", formdata).then(res => {
postHdRiskSource("/riskSource/list", formdata).then((res) => {
this.columnsSource1 = res.data;
});
},
......@@ -510,19 +567,19 @@ export default {
this.source1 = value.riskSource;
this.showSource1 = false;
},
// goSelectTwo(){
// if(this.source){
// // 跳转到多选页面
// this.$router.push({
// name: "choose-people",
// params:{
// source:this.source
// }
// })
// }else{
// this.$toast("请先选择风险源");
// }
// },
goSelectTwo() {
if (this.source) {
// 跳转到多选页面
this.$router.push({
name: "choose-people",
params: {
source: this.source,
},
});
} else {
this.$toast("请先选择风险源");
}
},
// 隐患到期时间
onConExpireTime(date) {
this.expireTime = timestampToTime(date, "DT1", true);
......@@ -530,6 +587,10 @@ export default {
},
// 隐患整改人
onConRecPeople(value) {
if(!value){
this.showRecPeople = false;
return
}
this.recPeople = value.userName;
this.showRecPeople = false;
},
......@@ -537,8 +598,7 @@ export default {
cancel() {
this.$router.go(-1);
},
}
},
};
</script>
<style scoped>
......
......@@ -19,7 +19,7 @@
</van-checkbox-group>
<div class="footer-con">
<div style="color: #1989fa;">已选择: {{result.length}}</div>
<div style="color: #1989fa;">已选择: {{result.length}}</div>
<div>
<van-button type="info" @click="confirm">确定</van-button>
</div>
......
<template>
<div>
<LHeader :text="text"></LHeader>
<van-cell-group
v-for="(item, index) in messageList"
:key="index"
inset
@click="goDetail(item.taskId)"
>
<van-row gutter="">
<van-col span="5">所属项目:</van-col>
<van-col span="19">{{ item.proId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">隐患级别:</van-col>
<van-col span="19">{{ item.hdLev }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">适用范围:</van-col>
<van-col span="19">{{ item.hdRange }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">隐患类型:</van-col>
<van-col span="19">{{ item.hdType }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">发现时间:</van-col>
<van-col span="19">{{ item.hdDiscoveryTime }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">超期标识:</van-col>
<van-col span="19">{{ item.dueDate | formatTime }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">状态:</van-col>
<van-col span="19">{{ item.taskName }}</van-col>
</van-row>
<!-- 详情 -->
<div class="detail">详情</div>
</van-cell-group>
<van-form
@submit="onSubmit"
:show-error="false"
......@@ -27,10 +65,7 @@
:rules="[{ required: true, message: '隐患整改详情描述不能为空' }]"
/>
<van-field
name="uploader"
label="整改照片"
>
<van-field name="uploader" label="整改照片" :rules="[{ required: true, message: '整改照片不能为空' }]">
<template #input>
<van-uploader v-model="uploaderImg" />
</template>
......@@ -38,7 +73,7 @@
<van-field name="uploader2" label="整改视频">
<template #input>
<van-uploader v-model="uploaderVideo" />
<van-uploader v-model="uploaderVideo" accept="video/*" />
</template>
</van-field>
......@@ -60,6 +95,7 @@
import LHeader from "@/components/header.vue";
import { dangerRectReturn, dangerRectAdd } from "@/service/danger";
export default {
name: "change-info",
components: {
LHeader
},
......@@ -68,6 +104,7 @@ export default {
text: "整改确认",
taskId: "",
taskName: "",
messageList: [],
returnCause: "",
isShowreturnCause: false,
value: "",
......@@ -75,15 +112,28 @@ export default {
uploaderVideo: [] //视频上传
};
},
created() {
this.taskId = this.$route.params.taskId;
this.taskName = this.$route.params.taskName;
if (this.taskName == "隐患整改(已退回)") {
this.isShowreturnCause = true;
// 请求退回原因
this.getRectReturn();
}
beforeRouteEnter(to, from, next) {
next(vm => {
if (from.name === "change-danger") {
vm.messageList = []
let paramsData = to.params.data;
vm.taskId = paramsData.taskId;
vm.taskName = paramsData.taskName;
vm.messageList.push(paramsData);
if (vm.taskName == "隐患整改(已退回)") {
vm.isShowreturnCause = true;
// 请求退回原因
vm.getRectReturn();
}
// 清空数据
vm.value="",
vm.uploaderImg=[]; //图像上传
vm.uploaderVideo=[] //视频上传
}
});
},
activated() {},
methods: {
onSubmit(values) {
console.log("submit", values);
......@@ -95,14 +145,19 @@ export default {
});
let formdata = new FormData();
formdata.append("details", this.value);
// formdata.append("rePicture[]", values.uploader);
// formdata.append("reVideo[]", values.uploader2);
// 放图片路径 因为formdat存数组会自动变成字符串所以次用这种追加字段的方式
values.uploader.forEach(item => {
formdata.append("rePicture1[]", item.file);
});
values.uploader2.forEach(item => {
formdata.append("reVideo1[]", item.file);
});
// 判断保存的url
let url = `/rectification/add1/${this.taskId}`;
if (this.taskName == "隐患整改(已退回)") {
url = `/rectification/add2/${this.taskId}`;
}
dangerRectAdd(url,formdata)
dangerRectAdd(url, formdata)
.then(res => {
this.$toast.clear();
this.$toast.success({
......@@ -134,13 +189,64 @@ export default {
this.$toast.fail("加载失败,请稍后再试");
});
},
// 详情
goDetail(taskId) {
this.$router.push({
name: "normal-detail",
params: {
id: taskId
}
});
},
cancel() {
this.$router.go(-1);
}
},
filters: {
formatTime: function(val) {
if (new Date(val).getTime() <= new Date().getTime()) {
return "超期";
} else if (
new Date(val).getTime() >= new Date().getTime() &&
new Date(val).getTime() <= new Date().getTime() + 259200000
) {
return "临期";
} else {
return "正常";
}
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
margin: 0.266667rem 0;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
.detail {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
</style>
......@@ -10,7 +10,7 @@
<van-field
readonly
clickable
name="delayTime"
name="applyDate"
:value="delayTime"
label="延期时间"
placeholder="点击选择日期"
......@@ -28,7 +28,7 @@
<van-field
v-model="delayApply"
label="延期理由"
name="delayApply"
name="applyReason"
rows="3"
type="textarea"
placeholder="请输入"
......@@ -52,6 +52,7 @@
<script>
import LHeader from "@/components/header.vue";
import { timestampToTime } from "@/utils/format";
import { delayAdd } from "@/service/danger";
export default {
components: {
LHeader
......@@ -70,10 +71,32 @@ export default {
this.taskId = this.$route.params.taskId;
},
methods: {
onSubmit(values) {
console.log("submit", values);
},
onSubmit(values) {
console.log("submit", values);
this.$toast.loading({
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
duration: 0,
});
let formdata = new FormData();
formdata.append("applyDate", values.applyDate);
formdata.append("applyReason", values.applyReason);
formdata.append("taskId", this.taskId);
delayAdd(`/delayApply/add`, formdata)
.then((res) => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000,
});
history.go(-1);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("提交失败,请稍后再试");
});
},
// 延期时间
onConDelayTime(date) {
this.delayTime = timestampToTime(date, "DT1", true);
......
......@@ -8,7 +8,6 @@
inset
v-for="(item, index) in messageList"
:key="index"
@click="read(item)"
@touchstart="touchstart(index, item)"
@touchend.prevent="touchend(index)"
>
......@@ -58,6 +57,13 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -72,6 +78,7 @@ export default {
return {
text: "隐患整改",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -94,6 +101,10 @@ export default {
dangerRect("/rectification/list").then(res =>{
this.$toast.clear();
this.messageList = res.rows
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
}).catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
......@@ -132,8 +143,7 @@ export default {
this.$router.push({
name:"change-info",
params:{
"taskId":data.taskId,
"taskName":data.taskName
data: data,
}
});
this.showIndex = null;
......@@ -167,7 +177,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......
<template>
<div>
<LHeader :text="text"></LHeader>
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="goDetail(item.taskId)"
>
<van-row gutter="">
<van-col span="5">所属项目:</van-col>
<van-col span="19">{{ item.proId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">隐患级别:</van-col>
<van-col span="19">{{ item.hdLev }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">适用范围:</van-col>
<van-col span="19">{{ item.hdRange }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">隐患类型:</van-col>
<van-col span="19">{{ item.hdType }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">发现时间:</van-col>
<van-col span="19">{{ item.hdDiscoveryTime }}</van-col>
</van-row>
<!-- 详情 -->
<div class="detail">详情</div>
</van-cell-group>
<van-form
@submit="onSubmit"
:show-error="false"
......@@ -37,6 +67,7 @@
type="datetime"
@confirm="onConfirm"
@cancel="showCalendar = false"
v-model="endDateTime"
/>
</van-popup>
......@@ -80,15 +111,15 @@
/>
</van-popup>
<van-field
v-model="valueIdea"
label="意见"
name="confirmOpinion"
rows="3"
type="textarea"
placeholder="请输入"
:rules="[{ required: true, message: '意见不能为空' }]"
/>
<van-field
v-model="valueIdea"
label="意见"
name="confirmOpinion"
rows="3"
type="textarea"
placeholder="请输入"
:rules="[{ required: true, message: '意见不能为空' }]"
/>
</div>
<!-- 退回是的选项 -->
......@@ -123,12 +154,14 @@ import LHeader from "@/components/header.vue";
import { timestampToTime } from "@/utils/format";
import { getConfirmFormList, dangerConSub } from "@/service/danger";
export default {
name: "affirm-danger",
components: {
LHeader
},
data() {
return {
taskId: "",
messageList: [],
radio: "1",
text: "隐患确认",
value: "",
......@@ -142,13 +175,33 @@ export default {
columnsReview: [],
showPickerReview: false,
valueIdea: "",
returnReason: ""
returnReason: "",
endDateTime: new Date()
};
},
created() {
this.taskId = this.$route.params.taskId;
this.getFormList();
beforeRouteEnter(to, from, next) {
next(vm => {
if (from.name === "confirme-danger") {
vm.messageList = [];
let paramsData = to.params.data;
vm.taskId = paramsData.taskId;
vm.messageList.push(paramsData);
vm.radio= "1",
vm.value = "";
vm.rectId = ""; // 隐患整改人
vm.valueRect = "";
vm.reviewId = ""; // 隐患复查人
vm.valueReview = "";
vm.valueIdea = "";
vm.returnReason = "";
vm.getFormList();
// 清空数据
}
});
},
created() {},
methods: {
getFormList() {
if (!this.taskId) {
......@@ -178,19 +231,19 @@ export default {
if (!this.taskId) {
return;
}
let formdata = new FormData()
formdata.append('confirmResult', this.radio)
formdata.append('endTime', values.endTime)
formdata.append('rectificationUser', this.rectId)
formdata.append('rectificationReview', this.reviewId)
formdata.append('confirmOpinion', values.confirmOpinion)
let formdata = new FormData();
formdata.append("confirmResult", this.radio);
formdata.append("endTime", values.endTime);
formdata.append("rectificationUser", this.rectId);
formdata.append("rectificationReview", this.reviewId);
formdata.append("confirmOpinion", values.confirmOpinion);
this.$toast.loading({
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
});
dangerConSub(`/confirm/add1/${this.taskId}`,formdata)
dangerConSub(`/confirm/add1/${this.taskId}`, formdata)
.then(res => {
this.$toast.clear();
this.$toast.success({
......@@ -216,15 +269,32 @@ export default {
},
onConRect(value) {
if(!value){
this.showPickerRect = false;
return
}
this.valueRect = value.userName;
this.rectId = value.userId;
this.showPickerRect = false;
},
onConReview(value) {
if(!value){
this.showPickerReview = false;
return
}
this.valueReview = value.userName;
this.reviewId = value.userId;
this.showPickerReview = false;
},
// 详情
goDetail(taskId) {
this.$router.push({
name: "normal-detail",
params: {
id: taskId
}
});
},
cancel() {
this.$router.go(-1);
......@@ -234,4 +304,32 @@ export default {
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
margin: 0.266667rem 0;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
.detail {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
</style>
......@@ -2,14 +2,8 @@
<div>
<LHeader :text="text"></LHeader>
<van-search v-model="searchValue" placeholder="搜索" @search="onSearch" />
<van-tabs
v-model="active"
color="#247df7"
title-inactive-colo="#d0d1d1"
title-active-color="#000000"
>
<van-tab title="待确认">
<!-- 内容列表 -->
<!-- 内容列表 -->
<div class="con-list">
<van-cell-group
inset
......@@ -32,7 +26,7 @@
</van-row>
<van-row gutter="">
<van-col span="5">隐患类型:</van-col>
<van-col span="19">{{ item.hdTdueDateype }}</van-col>
<van-col span="19">{{ item.hdType }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">发现时间:</van-col>
......@@ -52,10 +46,13 @@
</van-cell-group>
</div>
</van-tab>
<van-tab title="已确认">已确认</van-tab>
<van-tab title="已退回">已退回</van-tab>
</van-tabs>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -64,12 +61,12 @@ import LHeader from "@/components/header.vue";
import { dangerConfirm } from "@/service/danger";
export default {
components: {
LHeader,
LHeader
},
data() {
return {
text: "隐患确认",
active: "1",
isHaveNews: false,
searchValue: "",
messageList: [],
Loop: "", // 定时器
......@@ -77,23 +74,29 @@ export default {
};
},
created() {
this.postList()
this.postList();
},
methods: {
onSearch(val) {
console.log(val);
},
postList(){
this.$toast.loading({
postList() {
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
});
dangerConfirm("/confirm/list").then(res =>{
this.$toast.clear();
this.messageList = res.rows
}).catch(() => {
dangerConfirm("/confirm/list")
.then(res => {
this.$toast.clear();
this.messageList = res.rows;
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
......@@ -128,9 +131,9 @@ export default {
goConfirm(data) {
console.log(data);
this.$router.push({
name:"affirm-danger",
params:{
"taskId":data.taskId
name: "affirm-danger",
params: {
data: data,
}
});
this.showIndex = null;
......@@ -141,7 +144,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px .533333rem;
padding: 10px 10px 0.533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......@@ -149,9 +152,9 @@ export default {
padding: 10px;
font-size: 13px;
position: relative;
.van-row{
margin-bottom: .133333rem;
line-height: .64rem;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
......
......@@ -9,27 +9,26 @@
inset
v-for="(item, index) in messageList"
:key="index"
@click="read(item)"
@touchstart="touchstart(index, item)"
@touchend.prevent="touchend(index)"
>
<van-row gutter="">
<van-col span="7">所属工程名称:</van-col>
<van-col span="17">{{ item.proId }}</van-col>
<van-col span="7">隐患编号:</van-col>
<van-col span="17">{{ item.businessId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患项目名称:</van-col>
<van-col span="17">{{ item.subject }}</van-col>
<van-col span="17">{{ item.proId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患发现时间:</van-col>
<van-col span="17">{{ item.findTime }}</van-col>
<van-col span="7">隐患级别:</van-col>
<van-col span="17">{{ item.hdLev }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患级别:</van-col>
<van-col span="17">{{ item.level }}</van-col>
<van-col span="7">发现时间:</van-col>
<van-col span="17">{{ item.startDate }}</van-col>
</van-row>
<!-- *接口对接4 END -->
......@@ -46,13 +45,20 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { delayList } from "@/service/danger";
......@@ -64,6 +70,7 @@ export default {
return {
text: "延期审批",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -74,7 +81,29 @@ export default {
},
methods: {
getList() {
/*接口对接3 START*/
// 例子:
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
});
delayList("/delayApply/list")
.then(res => {
this.$toast.clear();
this.messageList = res.rows
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
/*接口对接3 END*/
},
onSearch(val) {
console.log(val);
......@@ -123,7 +152,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......
......@@ -7,26 +7,25 @@
:scroll-to-error="true"
validate-trigger="onSubmit"
>
<van-field
v-model="delayTime"
name="delayTime"
<van-field
v-model="applyDate"
name="applyDate"
label="延期时间"
placeholder="请输入"
:rules="[{ required: true, message: '延期时间不能为空' }]"
/>
<van-field
v-model="delayApply"
v-model="applyReason"
readonly
label="延期理由"
name="delayApply"
name="applyReason"
rows="1"
autosize
type="textarea"
/>
<van-field name="isAgree" label="延期是否通过">
<van-field name="isAgree" label="延期是否通过">
<template #input>
<van-radio-group
v-model="isAgree"
......@@ -42,21 +41,20 @@
<van-field
v-model="opinion"
label="理由或者意见"
name="opinion"
name="examineReason"
rows="3"
type="textarea"
placeholder="请输入"
:rules="[{ required: true, message: '理由或者意见不能为空' }]"
/>
<div style="margin: 16px;">
<div style="margin: 16px">
<van-button round block type="info" native-type="submit"
>保存</van-button
>
</div>
</van-form>
<div style="margin:10px 16px 0px;padding-bottom:16px">
<div style="margin: 10px 16px 0px; padding-bottom: 16px">
<van-button round block type="warning" @click.native="cancel"
>取消</van-button
>
......@@ -66,10 +64,11 @@
<script>
import LHeader from "@/components/header.vue";
import { timestampToTime } from "@/utils/format";
import { delayReturn } from "@/service/danger";
import { delayEdit } from "@/service/danger";
export default {
components: {
LHeader
LHeader,
},
data() {
return {
......@@ -80,27 +79,71 @@ export default {
delayApply: "", // 延迟理由
isAgree: 1, // 延期是否通过
opinion: "", //理由或者意见
applyDate: "", //延期时间
applyReason: "", //延期理由
};
},
created() {
this.taskId = this.$route.params.taskId;
this.getReturnEcho();
},
methods: {
onSubmit(values) {
console.log("submit", values);
},
console.log("submit", values);
this.$toast.loading({
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
duration: 0,
});
let formdata = new FormData();
formdata.append("examineResult", values.examineResult);
formdata.append("examineReason", values.examineReason);
formdata.append("taskId", this.taskId);
delayEdit(`/delayApply/edit`, formdata)
.then((res) => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000,
});
history.go(-1);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("提交失败,请稍后再试");
});
},
// 请求已退回详情数据
getReturnEcho() {
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0,
});
delayReturn(`/delayApply/edit/${this.taskId}`)
.then((res) => {
this.$toast.clear();
// 对数据进行赋值
this.applyDate = res.data.delayApply.applyDate;
this.applyReason = res.data.delayApply.applyReason;
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
},
selectResult(val) {
this.isAgree = val;
},
cancel() {
this.$router.go(-1);
}
}
},
},
};
</script>
<style lang="less" scoped>
......
......@@ -9,7 +9,6 @@
inset
v-for="(item, index) in messageList"
:key="index"
@click="read(item)"
@touchstart="touchstart(index, item)"
@touchend.prevent="touchend(index)"
>
......@@ -47,7 +46,13 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -79,6 +84,7 @@ export default {
return {
text: "重大隐患",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -101,6 +107,10 @@ export default {
.then(res => {
this.$toast.clear();
this.messageList = res.rows
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
......@@ -143,9 +153,9 @@ export default {
goConfirm(data) {
console.log(data);
this.$router.push({
name:"major-survey",
params:{
"taskId":data.taskId
name: "major-survey",
params: {
data: data,
}
});
this.showIndex = null;
......@@ -156,7 +166,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......
<template>
<div>
<LHeader :text="text"></LHeader>
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="goDetail(item.taskId)"
>
<van-row gutter="">
<van-col span="7">隐患编号:</van-col>
<van-col span="17">{{ item.businessId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患项目名称:</van-col>
<van-col span="17">{{ item.proId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患级别:</van-col>
<van-col span="17">{{ item.hdLev }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">发现时间:</van-col>
<van-col span="17">{{ item.startDate }}</van-col>
</van-row>
<!-- 详情 -->
<div class="detail">详情</div>
</van-cell-group>
<van-form
@submit="onSubmit"
:show-error='false'
:scroll-to-error="true"
validate-trigger="onSubmit"
>
<van-field name="radio" label="隐患复查结果">
<van-field name="isResult" label="隐患复查结果">
<template #input>
<van-radio-group
v-model="radio"
......@@ -25,7 +54,7 @@
<van-field
v-model="agreeOpinion"
label="审批意见"
name="reviewDetails"
name="details"
rows="3"
type="textarea"
placeholder="请输入"
......@@ -37,7 +66,7 @@
<van-field
readonly
clickable
name="level"
name="thinkHdLev"
:value="thinkLevel"
label="认为隐患级别"
placeholder="请选择"
......@@ -57,7 +86,7 @@
<van-field
v-model="disagreeOpinion"
label="审批意见"
name="reviewDetails"
name="details"
rows="3"
type="textarea"
placeholder="请输入"
......@@ -81,14 +110,16 @@
<script>
import LHeader from "@/components/header.vue";
import { dangerReviewAdd } from "@/service/danger";
import { majorAdd } from "@/service/danger";
export default {
name:"major-survey",
components: {
LHeader
},
data() {
return {
taskId: "",
messageList: [],
radio: "1",
text: "重大隐患审批",
agreeOpinion: "",
......@@ -99,9 +130,21 @@ export default {
};
},
created() {
this.taskId = this.$route.params.taskId;
beforeRouteEnter(to, from, next) {
next(vm => {
if (from.name === "major-danger") {
vm.messageList = [];
let paramsData = to.params.data;
vm.taskId = paramsData.taskId;
vm.messageList.push(paramsData);
vm.radio = "1";
vm.agreeOpinion = "";
vm.disagreeOpinion = "";
vm.thinkLevel = ""
}
});
},
created() {},
methods: {
selectResult(val) {
this.radio = val;
......@@ -115,22 +158,24 @@ export default {
loadingType: "spinner",
duration: 0
});
// let formdata = new FormData()
// formdata.append('reviewResult', this.radio)
// formdata.append('reviewDetails', values.reviewDetails)
// dangerReviewAdd(`/review/add1/${this.taskId}`,formdata)
// .then(res => {
// this.$toast.clear();
// this.$toast.success({
// message: "提交成功",
// duration: 2000
// });
// history.go(-1);
// })
// .catch(() => {
// this.$toast.clear();
// this.$toast.fail("提交失败,请稍后再试");
// });
let formdata = new FormData()
formdata.append('isResult', values.isResult)
formdata.append('details', values.details)
formdata.append('thinkHdLev', values.thinkHdLev)
formdata.append('taskId', this.taskId)
majorAdd(`/majorapprove/add`,formdata)
.then(res => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000
});
history.go(-1);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("提交失败,请稍后再试");
});
},
// 所属工程名称
......@@ -138,7 +183,15 @@ export default {
this.thinkLevel = value;
this.showProjectName = false;
},
// 详情
goDetail(taskId) {
this.$router.push({
name: "normal-detail",
params: {
id: taskId
}
});
},
cancel() {
......@@ -149,4 +202,32 @@ export default {
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
margin: 0;
margin-bottom: 10px;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
.detail {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
</style>
......@@ -9,7 +9,6 @@
inset
v-for="(item, index) in messageList"
:key="index"
@click="read(item)"
@touchstart="touchstart(index, item)"
@touchend.prevent="touchend(index)"
>
......@@ -45,14 +44,20 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { superviseSABList } from "@/service/danger";
import { superviseList } from "@/service/danger";
/*接口对接2 START*/
// 例子:
......@@ -77,6 +82,7 @@ export default {
return {
text: "项目经理督办",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -95,10 +101,14 @@ export default {
loadingType: "spinner",
duration: 0
});
superviseSABList("/supervise/list")
superviseList("/supervise/list")
.then(res => {
this.$toast.clear();
this.messageList = res.data
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
......@@ -141,9 +151,9 @@ export default {
goConfirm(data) {
console.log(data);
this.$router.push({
name:"manager-survey",
params:{
"taskId":data.taskId
name: "manager-survey",
params: {
data: data,
}
});
this.showIndex = null;
......@@ -154,7 +164,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......
<template>
<div>
<LHeader :text="text"></LHeader>
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="goDetail(item.pid)"
>
<van-row gutter="">
<van-col span="7">隐患编号:</van-col>
<van-col span="17">{{ item.hdProjectId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患项目名称:</van-col>
<van-col span="17">{{ item.projectName }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患级别:</van-col>
<van-col span="17">{{ item.hdLev }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患发现时间:</van-col>
<van-col span="17">{{ item.createTime }}</van-col>
</van-row>
<!-- 详情 -->
<div class="detail">详情</div>
</van-cell-group>
<van-form
@submit="onSubmit"
:show-error='false'
:show-error="false"
:scroll-to-error="true"
validate-trigger="onSubmit"
>
<van-field
v-model="opinion"
label="批示内容"
name="reviewDetails"
rows="3"
type="textarea"
placeholder="请输入"
/>
<van-field
v-model="opinion"
label="批示内容"
name="instructionsContent"
rows="3"
type="textarea"
placeholder="请输入"
/>
<div style="margin: 16px;">
<van-button round block type="info" native-type="submit"
>保存</van-button
......@@ -31,23 +57,32 @@
<script>
import LHeader from "@/components/header.vue";
import { dangerReviewAdd } from "@/service/danger";
import { superviseAdd } from "@/service/danger";
export default {
name: "manager-survey",
components: {
LHeader
},
data() {
return {
taskId: "",
messageList: [],
text: "项目经理督办批示",
opinion: "",
opinion: ""
};
},
created() {
this.taskId = this.$route.params.taskId;
beforeRouteEnter(to, from, next) {
next(vm => {
if (from.name === "manager-danger") {
vm.messageList = [];
let paramsData = to.params.data;
vm.taskId = paramsData.taskId;
vm.messageList.push(paramsData);
vm.opinion = "";
}
});
},
created() {},
methods: {
onSubmit(values) {
console.log("submit", values);
......@@ -57,22 +92,30 @@ export default {
loadingType: "spinner",
duration: 0
});
// let formdata = new FormData()
// formdata.append('reviewResult', this.radio)
// formdata.append('reviewDetails', values.reviewDetails)
// dangerReviewAdd(`/review/add1/${this.taskId}`,formdata)
// .then(res => {
// this.$toast.clear();
// this.$toast.success({
// message: "提交成功",
// duration: 2000
// });
// history.go(-1);
// })
// .catch(() => {
// this.$toast.clear();
// this.$toast.fail("提交失败,请稍后再试");
// });
let formdata = new FormData();
formdata.append("instructionsContent", values.instructionsContent);
superviseAdd(`/instructions/add`, formdata)
.then(res => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000
});
history.go(-1);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("提交失败,请稍后再试");
});
},
// 详情
goDetail(pid) {
this.$router.push({
name: "normal-detail",
params: {
id: pid
}
});
},
cancel() {
......@@ -83,4 +126,32 @@ export default {
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
margin: 0;
margin-bottom: 10px;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
.detail {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
</style>
......@@ -49,6 +49,13 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -63,6 +70,7 @@ export default {
return {
text: "上报退回",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -83,6 +91,10 @@ export default {
.then(res => {
this.$toast.clear();
this.messageList = res.rows;
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
......
......@@ -53,6 +53,13 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -66,6 +73,7 @@ export default {
data() {
return {
text: "隐患复查",
isHaveNews: false,
searchValue: "",
messageList: [],
Loop: "", // 定时器
......@@ -91,6 +99,10 @@ export default {
.then(res => {
this.$toast.clear();
this.messageList = res.rows;
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
......@@ -130,7 +142,7 @@ export default {
this.$router.push({
name: "review-add",
params: {
taskId: data.taskId
data: data,
}
});
this.showIndex = null;
......
<template>
<div>
<LHeader :text="text"></LHeader>
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="goDetail(item.taskId)"
>
<van-row gutter="">
<van-col span="5">所属项目:</van-col>
<van-col span="19">{{ item.proId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">隐患级别:</van-col>
<van-col span="19">{{ item.hdLev }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">适用范围:</van-col>
<van-col span="19">{{ item.hdRange }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">隐患类型:</van-col>
<van-col span="19">{{ item.hdType }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">发现时间:</van-col>
<van-col span="19">{{ item.hdDiscoveryTime }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">超期标识:</van-col>
<van-col span="19">{{ item | formatTime }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">状态:</van-col>
<van-col span="19">{{ item.taskName }}</van-col>
</van-row>
<!-- 详情 -->
<div class="detail">详情</div>
</van-cell-group>
<van-form
@submit="onSubmit"
:show-error='false'
......@@ -34,6 +74,7 @@
<van-field
name="uploader"
label="隐患复查照片"
:rules="[{ required: true, message: '隐患复查照片不能为空' }]"
>
<template #input>
<van-uploader v-model="uploaderImg" />
......@@ -78,6 +119,7 @@ export default {
data() {
return {
taskId: "",
messageList: [],
radio: "1",
text: "隐患复查",
detail: "",
......@@ -85,9 +127,21 @@ export default {
returnReason: ""
};
},
created() {
this.taskId = this.$route.params.taskId;
beforeRouteEnter(to, from, next) {
next(vm => {
if (from.name === "review-danger") {
vm.messageList = [];
let paramsData = to.params.data;
vm.taskId = paramsData.taskId;
vm.messageList.push(paramsData);
vm.radio= "1";
vm.detail = "";
vm.uploaderImg = []; // 隐患整改人
vm.returnReason = "";
}
});
},
created() {},
methods: {
selectResult(val) {
this.radio = val;
......@@ -103,8 +157,12 @@ export default {
});
let formdata = new FormData()
formdata.append('reviewResult', this.radio)
// formdata.append('reviewPicture[]', values.uploader)
formdata.append('reviewDetails', values.reviewDetails)
// 放图片路径 因为formdat存数组会自动变成字符串所以次用这种追加字段的方式
values.uploader.forEach(item => {
formdata.append("reviewPicture1[]", item.file);
});
dangerReviewAdd(`/review/add1/${this.taskId}`,formdata)
.then(res => {
this.$toast.clear();
......@@ -119,12 +177,64 @@ export default {
this.$toast.fail("提交失败,请稍后再试");
});
},
// 详情
goDetail(taskId) {
this.$router.push({
name: "normal-detail",
params: {
id: taskId
}
});
},
cancel() {
this.$router.go(-1);
}
},
filters: {
formatTime: function(row) {
if (new Date(row.dueDate).getTime() <= row.rectificationTime) {
return "超期";
} else if (
new Date(row.dueDate).getTime() >= row.rectificationTime &&
new Date(row.dueDate).getTime() - 259200000 <= row.rectificationTime
) {
//三天
return "临期";
} else {
return "正常";
}
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
margin: 0;
margin-bottom: 10px;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
.detail {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
</style>
......@@ -51,6 +51,13 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -65,6 +72,7 @@ export default {
return {
text: "隐患历史台账",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -89,6 +97,10 @@ export default {
.then(res => {
this.$toast.clear();
this.messageList = res.rows;
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
......
......@@ -79,13 +79,29 @@
<van-col span="7"
><span class="field-title">隐患照片:</span></van-col
>
<van-col span="17">{{ hdReport.hdPicture }}</van-col>
<van-col span="17">
<div
class="detail_pic"
v-for="(item, index) in hdReport.hdPictureList"
:key="index"
>
<van-image width="100" height="100" :src="item.filePath" />
</div>
</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">隐患视频:</span></van-col
>
<van-col span="17">{{ hdReport.hdVideo }}</van-col>
<van-col span="17">
<div
class="detail_video"
v-for="(item, index) in hdReport.hdVideoList"
:key="index"
>
<video :src="item.filePath"></video>
</div>
</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
......@@ -109,7 +125,7 @@
<div class="confirm-wrap" v-if="hdConfirm">
<p>隐患认定</p>
<van-cell-group inset >
<van-cell-group inset>
<van-row gutter="">
<van-col span="7"
><span class="field-title">隐患整改人:</span></van-col
......@@ -129,13 +145,11 @@
<van-col span="17">{{ hdConfirm.endTime }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">意见:</span></van-col
>
<van-col span="7"><span class="field-title">意见:</span></van-col>
<van-col span="17">{{ hdConfirm.confirmOpinion }}</van-col>
</van-row>
<!-- <div v-show="confirmOpen">
<!-- <div v-show="confirmOpen">hdMajorApproveList
<van-row gutter="">
<van-col span="7"
><span class="field-title">隐患确认信息:</span></van-col
......@@ -149,9 +163,75 @@
</div> -->
</div>
<div class="change-wrap" v-if="hdRectificationList.length>0">
<div class="journal-wrap" v-if="hdMajorApproveList.length > 0">
<p>审批信息</p>
<van-cell-group inset>
<van-steps
direction="vertical"
:active="99999"
>
<van-step v-for="(item, index) in hdMajorApproveList" :key="index">
<div class="step-wrap">
<van-row>
<van-col span="24"
><div class="info-title">审批信息</div></van-col
>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">审批人:</span></van-col
>
<van-col span="19">{{ item.userName }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">结果:</span></van-col
>
<van-col span="19">{{ item.isResult }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">部门:</span></van-col
>
<van-col span="19">{{ item.deptName }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">时间:</span></van-col
>
<van-col span="19">{{ item.createTime }}</van-col>
</van-row>
<van-row>
<van-col span="9"
><span class="field-title">认为隐患级别:</span></van-col
>
<van-col span="10
">{{ item.thinkHdLev }}</van-col>
</van-row>
<van-row v-if="item.details">
<van-col span="8"
><span class="field-title">审批意见:</span></van-col
>
<van-col span="16
">{{ item.details }}</van-col>
</van-row>
</div>
</van-step>
</van-steps>
</van-cell-group>
<!-- 展开 -->
<div class="more" @click="majorReverse" v-show="hdMajorApproveList.length > 0">
{{ majorOpenText }}
</div>
</div>
<div class="change-wrap" v-if="hdRectificationList.length > 0">
<p>隐患整改</p>
<van-cell-group inset v-for="(item, index) in hdRectificationList" :key="index">
<van-cell-group
inset
v-for="(item, index) in hdRectificationList"
:key="index"
>
<van-row gutter="">
<van-col span="7"
><span class="field-title">整改详情描述:</span></van-col
......@@ -162,13 +242,29 @@
<van-col span="7"
><span class="field-title">隐患照片:</span></van-col
>
<van-col span="17">{{ item.rePicture }}</van-col>
<van-col span="17">
<div
class="detail_pic"
v-for="(itemTwo, index) in item.hdPictureList"
:key="index"
>
<van-image width="100" height="100" :src="itemTwo.filePath" />
</div>
</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">隐患视频:</span></van-col
>
<van-col span="17">{{ item.reVideo }}</van-col>
<van-col span="17">
<div
class="detail_video"
v-for="(itemTwo, index) in item.hdVideoList"
:key="index"
>
<video :src="itemTwo.filePath"></video>
</div>
</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
......@@ -179,14 +275,26 @@
</van-cell-group>
</div>
<div class="review-wrap" v-if="hdReviewList.length>0">
<div class="review-wrap" v-if="hdReviewList.length > 0">
<p>整改复查</p>
<van-cell-group inset v-for="(item, index) in hdReviewList" :key="index">
<van-cell-group
inset
v-for="(item, index) in hdReviewList"
:key="index"
>
<van-row gutter="">
<van-col span="7"
><span class="field-title">隐患照片:</span></van-col
>
<van-col span="17">{{ item.reviewPicture }}</van-col>
<van-col span="17">
<div
class="detail_pic"
v-for="(itemTwo, index) in item.hdPictureList"
:key="index"
>
<van-image width="100" height="100" :src="itemTwo.filePath" />
</div>
</van-col>
</van-row>
<van-row gutter="">
......@@ -200,15 +308,21 @@
<van-col span="7"
><span class="field-title">复查结果:</span></van-col
>
<van-col span="17">{{ item.reviewResult == 1? "合格":"不合格"}}</van-col>
<van-col span="17">{{
item.reviewResult == 1 ? "合格" : "不合格"
}}</van-col>
</van-row>
</van-cell-group>
</div>
<div class="journal-wrap">
<p>日志信息</p>
<van-cell-group inset >
<van-steps direction="vertical" :active="99999" v-if="hdLogList.length>0">
<van-cell-group inset>
<van-steps
direction="vertical"
:active="99999"
v-if="hdLogList.length > 0"
>
<van-step v-for="(item, index) in hdLogList" :key="index">
<div class="step-wrap">
<van-row>
......@@ -220,47 +334,53 @@
<van-col span="5"
><span class="field-title">审批人:</span></van-col
>
<van-col span="19">{{item.userName}}</van-col>
<van-col span="19">{{ item.userName }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">节点:</span></van-col
>
<van-col span="19">{{item.logNode}}</van-col>
<van-col span="19">{{ item.logNode }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">结果:</span></van-col
>
<van-col span="19">{{item.logResult}}</van-col>
<van-col span="19">{{ item.logResult }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">部门:</span></van-col
>
<van-col span="19">{{item.deptName}}</van-col>
<van-col span="19">{{ item.deptName }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">时间:</span></van-col
>
<van-col span="19">{{item.createTime}}</van-col>
<van-col span="19">{{ item.createTime }}</van-col>
</van-row>
</div>
</van-step>
</van-steps>
<div style="text-align: center;" v-if="hdLogList.length == 0">暂无数据</div>
<div style="text-align: center;" v-if="hdLogList.length == 0">
暂无数据
</div>
</van-cell-group>
<!-- 展开 -->
<div class="more" @click="journalReverse" v-show="hdLogList.length>0">
<div class="more" @click="journalReverse" v-show="hdLogList.length > 0">
{{ journalOpenText }}
</div>
</div>
<div class="supervise-wrap">
<p>督办信息</p>
<van-cell-group inset >
<van-steps direction="vertical" :active="99999" v-if="instructionsList.length>0">
<van-cell-group inset>
<van-steps
direction="vertical"
:active="99999"
v-if="instructionsList.length > 0"
>
<van-step v-for="(item, index) in instructionsList" :key="index">
<div class="step-wrap">
<van-row>
......@@ -272,34 +392,40 @@
<van-col span="5"
><span class="field-title">审批人:</span></van-col
>
<van-col span="19">{{item.userName}}</van-col>
<van-col span="19">{{ item.userName }}</van-col>
</van-row>
<van-row>
<van-row>
<van-col span="5"
><span class="field-title">时间:</span></van-col
>
<van-col span="19">{{item.createTime}}</van-col>
<van-col span="19">{{ item.createTime }}</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">部门:</span></van-col
>
<van-col span="19">{{item.deptName}}</van-col>
<van-col span="19">{{ item.deptName }}</van-col>
</van-row>
<van-row>
<van-row>
<van-col span="5"
><span class="field-title">结果:</span></van-col
>
<van-col span="19">{{item.instructionsContent}}</van-col>
<van-col span="19">{{ item.instructionsContent }}</van-col>
</van-row>
</div>
</van-step>
</van-steps>
<div style="text-align: center;" v-if="instructionsList.length == 0">暂无数据</div>
<div style="text-align: center;" v-if="instructionsList.length == 0">
暂无数据
</div>
</van-cell-group>
<!-- 展开 -->
<div class="more" @click="superviseReverse" v-show="instructionsList.length>0">
<div
class="more"
@click="superviseReverse"
v-show="instructionsList.length > 0"
>
{{ superviseOpenText }}
</div>
</div>
......@@ -326,16 +452,19 @@ export default {
superviseOpenText: "展开 ▼",
confirmOpen: false,
confirmOpenText: "展开 ▼",
majorOpen: false,
majorOpenText: "展开 ▼",
hdReport:"",
hdConfirm:"",
hdMajorApproveList:[], // 重大隐患审批 先不做
hdRectificationList:[],
hdReviewList:[],
hdLogList:[],
beifenhdLogList:[],
instructionsList:[],
beifeninstructionsList:[]
hdReport: "",
hdConfirm: "",
hdMajorApproveList: [], // 重大隐患审批
beifenhdMajorList: [],
hdRectificationList: [],
hdReviewList: [],
hdLogList: [],
beifenhdLogList: [],
instructionsList: [],
beifeninstructionsList: []
};
},
created() {
......@@ -356,14 +485,16 @@ export default {
standBookDetail(`/hdreport/hdDetailsApp/${this.id}`)
.then(res => {
this.$toast.clear();
this.hdReport = res.data.hdReport
this.hdConfirm = res.data.hdConfirm
this.hdRectificationList = res.data.hdRectificationList
this.hdReviewList = res.data.hdReviewList
this.beifenhdLogList = res.data.hdLogList
this.hdLogList = this.beifenhdLogList.slice(0,1)
this.beifeninstructionsList = res.data.instructionsList
this.instructionsList = this.beifeninstructionsList.slice(0,1)
this.hdReport = res.data.hdReport;
this.hdConfirm = res.data.hdConfirm;
this.hdRectificationList = res.data.hdRectificationList;
this.hdReviewList = res.data.hdReviewList;
this.beifenhdMajorList = res.data.hdMajorApproveList;
this.hdMajorApproveList = this.beifenhdMajorList.slice(-1);
this.beifenhdLogList = res.data.hdLogList;
this.hdLogList = this.beifenhdLogList.slice(-1);
this.beifeninstructionsList = res.data.instructionsList;
this.instructionsList = this.beifeninstructionsList.slice(-1);
})
.catch(() => {
this.$toast.clear();
......@@ -390,19 +521,33 @@ export default {
}
},
// 重大隐患信息显示或隐藏
majorReverse() {
this. majorOpen = !this. majorOpen;
if (this. majorOpen) {
// 显示所有数据
this. majorOpenText = "收起 ▲";
// 显示所有数据
this.hdMajorApproveList = this.beifenhdMajorList;
} else {
this. majorOpenText = "展开 ▼";
// 只显示第一个数据
this.hdMajorApproveList = this.beifenhdMajorList.slice(-1);
}
},
// 日志信息显示或隐藏
journalReverse() {
this.journalOpen = !this.journalOpen;
if (this.journalOpen) {
// 显示所有数据
this.journalOpenText = "收起 ▲";
// 显示所有数据
this.hdLogList = this.beifenhdLogList
// 显示所有数据
this.hdLogList = this.beifenhdLogList;
} else {
this.journalOpenText = "展开 ▼";
// 只显示第一个数据
this.hdLogList = this.beifenhdLogList.slice(0,1)
// 只显示第一个数据
this.hdLogList = this.beifenhdLogList.slice(-1);
}
},
// 督办信息显示或隐藏
......@@ -411,11 +556,11 @@ export default {
if (this.superviseOpen) {
// 显示所有数据
this.superviseOpenText = "收起 ▲";
this.instructionsList = this.beifeninstructionsList
this.instructionsList = this.beifeninstructionsList;
} else {
// 只渲染一条数据
this.superviseOpenText = "展开 ▼";
this.instructionsList = this.beifeninstructionsList.slice(0,1)
this.instructionsList = this.beifeninstructionsList.slice(-1);
}
}
}
......@@ -472,5 +617,19 @@ export default {
font-weight: bolder;
z-index: 99;
}
.detail_pic {
margin-right: 0.266667rem;
float: left;
}
.detail_video {
width: 2.666667rem;
height: 2.666667rem;
margin-right: 0.266667rem;
float: left;
video {
width: 2.666667rem;
height: 2.666667rem;
}
}
}
</style>
......@@ -2,8 +2,8 @@
<div>
<LHeader :text="text"></LHeader>
<van-search v-model="searchValue" placeholder="搜索" @search="onSearch" />
<!-- 内容列表 -->
<!-- 接口对接4 START -->
<!-- 内容列表 -->
<!-- 接口对接4 START -->
<div class="con-list">
<van-cell-group
inset
......@@ -12,7 +12,6 @@
@touchstart="touchstart(index, item)"
@touchend.prevent="touchend(index)"
>
<van-row gutter="">
<van-col span="7">隐患编号:</van-col>
<van-col span="17">{{ item.processInstanceId }}</van-col>
......@@ -29,7 +28,7 @@
<van-col span="7">隐患发现时间:</van-col>
<van-col span="17">{{ item.createTime }}</van-col>
</van-row>
<!-- *接口对接4 END -->
<!-- *接口对接4 END -->
<!-- 长按显示遮罩层 -->
<van-overlay :show="showIndex == index">
......@@ -37,21 +36,26 @@
<van-button round type="primary" @touchstart="goDetail(item)"
>详情</van-button
>
<van-button round type="info" @touchstart="goConfirm(item)"
<van-button round type="info" @touchstart="goConfirm(item)"
>批示</van-button
>
</div>
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { superviseList } from "@/service/danger";
import { superviseSABlist } from "@/service/danger";
/*接口对接2 START*/
// 例子:
......@@ -70,26 +74,45 @@ import { superviseList } from "@/service/danger";
export default {
components: {
LHeader,
LHeader
},
data() {
return {
text: "隐患督办",
searchValue: "",
messageList: [],
messageList: [],
isHaveNews: false,
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
};
},
created() {
created() {
this.getList();
},
methods: {
getList() {
/*接口对接3 START*/
/*接口对接3 END*/
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
});
superviseSABlist("/supervise/SABlist")
.then(res => {
this.$toast.clear();
this.messageList = res.data
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
},
onSearch(val) {
console.log(val);
},
......@@ -112,21 +135,21 @@ export default {
// 详情
goDetail(data) {
console.log(data);
this.$router.push({
name: "normal-detail",
params:{
id: data.pid
}
this.$router.push({
name: "normal-detail",
params: {
id: data.pid
}
});
this.showIndex = null;
},
// 确认
goConfirm(data) {
console.log(data);
this.$router.push({
name:"super-survey",
params:{
"taskId":data.taskId
this.$router.push({
name: "super-survey",
params: {
data: data,
}
});
this.showIndex = null;
......@@ -137,7 +160,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......@@ -145,9 +168,9 @@ export default {
padding: 10px;
font-size: 13px;
position: relative;
.van-row{
margin-bottom: .133333rem;
line-height: .64rem;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
......
<template>
<div>
<LHeader :text="text"></LHeader>
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="goDetail(item.pid)"
>
<van-row gutter="">
<van-col span="7">隐患编号:</van-col>
<van-col span="17">{{ item.processInstanceId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患项目名称:</van-col>
<van-col span="17">{{ item.projectName }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患级别:</van-col>
<van-col span="17">{{ item.hdLev }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">隐患发现时间:</van-col>
<van-col span="17">{{ item.createTime }}</van-col>
</van-row>
<!-- *接口对接4 END -->
<!-- 详情 -->
<div class="detail">详情</div>
</van-cell-group>
<van-form
@submit="onSubmit"
:show-error='false'
:scroll-to-error="true"
validate-trigger="onSubmit"
>
<div class="agree" v-if="radio == 1">
<van-field
v-model="opinion"
label="批示内容"
name="reviewDetails"
name="superviseAdd"
rows="3"
type="textarea"
placeholder="请输入"
/>
</div>
<div style="margin: 16px;">
<van-button round block type="info" native-type="submit"
>保存</van-button
......@@ -33,8 +58,9 @@
<script>
import LHeader from "@/components/header.vue";
import { dangerReviewAdd } from "@/service/danger";
import { superviseAdd } from "@/service/danger";
export default {
name:"super-survey",
components: {
LHeader
},
......@@ -42,14 +68,24 @@ export default {
return {
taskId: "",
text: "隐患督办批示",
messageList: [],
opinion: "",
};
},
created() {
this.taskId = this.$route.params.taskId;
beforeRouteEnter(to, from, next) {
next(vm => {
if (from.name === "supervise-danger") {
vm.messageList = [];
let paramsData = to.params.data;
vm.taskId = paramsData.taskId;
vm.messageList.push(paramsData);
vm.opinion = "";
}
});
},
created() {},
methods: {
onSubmit(values) {
console.log("submit", values);
......@@ -59,22 +95,30 @@ export default {
loadingType: "spinner",
duration: 0
});
// let formdata = new FormData()
// formdata.append('reviewResult', this.radio)
// formdata.append('reviewDetails', values.reviewDetails)
// dangerReviewAdd(`/review/add1/${this.taskId}`,formdata)
// .then(res => {
// this.$toast.clear();
// this.$toast.success({
// message: "提交成功",
// duration: 2000
// });
// history.go(-1);
// })
// .catch(() => {
// this.$toast.clear();
// this.$toast.fail("提交失败,请稍后再试");
// });
let formdata = new FormData()
formdata.append('instructionsContent', values.instructionsContent)
superviseAdd(`/instructions/add`,formdata)
.then(res => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000
});
history.go(-1);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("提交失败,请稍后再试");
});
},
// 详情
goDetail(pid) {
this.$router.push({
name: "normal-detail",
params: {
id: pid
}
});
},
cancel() {
......@@ -85,4 +129,32 @@ export default {
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
margin: 0;
margin-bottom: 10px;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
.detail {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
</style>
......@@ -158,8 +158,6 @@ export default {
margin-bottom: 10px;
padding: 10px;
font-size: 13px;
.messgae-title {
}
.message-content {
margin-top: 10px;
}
......
......@@ -9,7 +9,6 @@
inset
v-for="(item, index) in messageList"
:key="index"
@click="read(item)"
@touchstart="touchstart(index, item)"
@touchend.prevent="touchend(index)"
>
......@@ -46,7 +45,13 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -79,6 +84,7 @@ export default {
text: "风险历史台账",
searchValue: "",
messageList: [],
isHaveNews: false,
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
};
......@@ -100,6 +106,10 @@ export default {
.then(res => {
this.$toast.clear();
this.messageList = res.rows
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
......@@ -144,7 +154,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......
......@@ -67,6 +67,16 @@
>
<van-col span="17">{{ riskMain.gradingMethod }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">定级方式(附件):</span></van-col
>
<van-col span="17">
<div class="enclosure" v-for="(item, index) in riskMain.riskFileList1" :key="index">
<a :href="item.filePath" target="_blank">{{item.fileName}}</a>
</div>
</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">技术措施:</span></van-col
......@@ -77,7 +87,11 @@
<van-col span="7"
><span class="field-title">技术措施(附件):</span></van-col
>
<van-col span="17">{{ riskMain.technicalMeasures }}</van-col>
<van-col span="17">
<div class="enclosure" v-for="(item, index) in riskMain.riskFileList2" :key="index">
<a :href="item.filePath" target="_blank">{{item.fileName}}</a>
</div>
</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
......@@ -89,7 +103,11 @@
<van-col span="7"
><span class="field-title">管理措施(附件):</span></van-col
>
<van-col span="17">{{ riskMain.managementMeasures }}</van-col>
<van-col span="17">
<div class="enclosure" v-for="(item, index) in riskMain.riskFileList3" :key="index">
<a :href="item.filePath" target="_blank">{{item.fileName}}</a>
</div>
</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
......@@ -101,7 +119,11 @@
<van-col span="7"
><span class="field-title">应急措施(附件):</span></van-col
>
<van-col span="17">{{ riskMain.emergencyMeasure }}</van-col>
<van-col span="17">
<div class="enclosure" v-for="(item, index) in riskMain.riskFileList4" :key="index">
<a :href="item.filePath" target="_blank">{{item.fileName}}</a>
</div>
</van-col>
</van-row>
</div>
</van-cell-group>
......@@ -242,7 +264,7 @@ export default {
loadingType: "spinner",
duration: 0
});
postriskDetail(`/riskMain/postriskDetailsApp/${this.id}`)
postriskDetail(`/riskMain/riskDetailsApp/${this.id}`)
.then(res => {
this.$toast.clear();
this.riskMain = res.data.riskMain
......
......@@ -7,16 +7,16 @@
:show-error="false"
validate-trigger="onSubmit"
>
<van-field
v-if="isShowreturnCause"
v-model="returnCause"
readonly
rows="1"
autosize=""
label="退回原因"
name="returnCause"
type="textarea"
/>
<van-field
v-if="isShowreturnCause"
v-model="returnCause"
readonly
rows="1"
autosize=""
label="退回原因"
name="returnCause"
type="textarea"
/>
<van-field
v-if="!isShowreturnCause"
readonly
......@@ -118,13 +118,32 @@
</van-popup>
<van-field
readonly
clickable
name="setRank"
:value="riskRank"
label="风险等级"
placeholder="请选择"
@click="myRiskRank"
:rules="[{ required: true, message: '风险等级不能为空' }]"
/>
<van-popup v-model="showRiskRank" position="bottom">
<van-picker
show-toolbar
:columns="columnsRiskRank"
@confirm="onConRiskRank"
@cancel="showRiskRank = false"
/>
</van-popup>
<!-- <van-field
v-model="riskRank"
readonly
name="riskRank"
label="风险等级"
placeholder="请选择"
:rules="[{ required: true, message: '风险等级不能为空' }]"
/>
/> -->
<van-field
v-model="setRankMode"
......@@ -135,12 +154,9 @@
autosize
placeholder="请输入"
/>
<van-field
name="定级方式"
label=" "
>
<van-field name="setRankModeFile" label=" ">
<template #input>
<van-uploader v-model="setRankModeImg" />
<van-uploader v-model="setRankModeImg" accept="file" />
</template>
</van-field>
......@@ -221,12 +237,9 @@
autosize
placeholder="请输入"
/>
<van-field
name="技术措施"
label=" "
>
<van-field name="technologyFile" label=" ">
<template #input>
<van-uploader v-model="technologyImg" />
<van-uploader v-model="technologyImg" accept="file" />
</template>
</van-field>
......@@ -239,12 +252,9 @@
autosize
placeholder="请输入"
/>
<van-field
name="管理措施"
label=" "
>
<van-field name="administrationFile" label=" ">
<template #input>
<van-uploader v-model="administrationImg" />
<van-uploader v-model="administrationImg" accept="file" />
</template>
</van-field>
......@@ -257,12 +267,9 @@
autosize
placeholder="请输入"
/>
<van-field
name="应急措施"
label=" "
>
<van-field name="urgentFile" label=" ">
<template #input>
<van-uploader v-model="urgentImg" />
<van-uploader v-model="urgentImg" accept="file" />
</template>
</van-field>
......@@ -282,15 +289,24 @@
<script>
import LHeader from "@/components/header.vue";
import { getFormList, postHdSource, postHdType, postHdPeople, postReAdd, postriskConiCause,postRiskShowMeasures } from "@/service/risk";
import {
getFormList,
postHdSource,
postHdType,
postHdPeople,
postReAdd,
postriskConiCause,
postRiskShowMeasures
} from "@/service/risk";
export default {
components: {
LHeader
},
data() {
return {
taskId:"",
taskId: "",
text: "新增风险",
id: "",
projectId: "", // 所属工程
projectName: "", // 所属工程
showProjectName: false,
......@@ -306,8 +322,10 @@ export default {
columnsTrouble: [],
setRank: "", //风险定级
showSetRank: false,
columnsSetRank: ["一般风险", "较小风险", "较大风险", "重大风险"],
columnsSetRank: ["矩阵式定级", "其他定级方式"],
riskRank: "", // 风险等级
showRiskRank: false,
columnsRiskRank: ["一般风险", "较小风险", "较大风险", "重大风险"],
setRankMode: "", // 定级方式文字
setRankModeImg: [], // 定级方式图片
location: "", //风险部位
......@@ -319,15 +337,15 @@ export default {
showMainDutyDept: false,
columnsMainDutyDept: [],
mainDutyPeopLe: "", // 主责人员
mainDutyPeopLeId :"",
mainDutyPeopLeId: "",
showMainDutyPeopLe: false,
columnsMainDutyPeopLe: [],
technology:"", //技术措施文字
technologyImg:[],//技术措施图片
administration:"", //管理措施文字
administrationImg:[],//管理措施图片
urgent:"", //应急措施文字
urgentImg:[],//应急措施图片
technology: "", //技术措施文字
technologyImg: [], //技术措施图片
administration: "", //管理措施文字
administrationImg: [], //管理措施图片
urgent: "", //应急措施文字
urgentImg: [], //应急措施图片
returnCause: "", // 退回原因
isShowreturnCause: false
};
......@@ -335,37 +353,62 @@ export default {
created() {
if (this.$route.params.status) {
this.isShowreturnCause = true;
this.text = "风险上报退回"
this.taskId = this.$route.params.taskId
this.postReturnEcho()
this.text = "风险上报退回";
this.taskId = this.$route.params.taskId;
this.postReturnEcho();
}
this.getList();
},
methods: {
onSubmit(values) {
console.log("submit", values);
let formdata = new FormData()
formdata.append("pId", this.projectId)
formdata.append("riskFactor", this.factor)
formdata.append("riskSource", this.source)
formdata.append("accidentType", this.trouble)
formdata.append("level", this.setRank)
formdata.append("riskLevel", this.riskRank)
formdata.append("gradingMethod", this.setRankMode)
formdata.append("riskPosition", this.location)
formdata.append("controlLevel", this.control)
formdata.append("responsibilityDept", this.mainDutyDeptId)
formdata.append("responsibilityMember", this.mainDutyPeopLeId)
formdata.append("technicalMeasures", this.technology)
formdata.append("managementMeasures", this.administration)
formdata.append("emergencyMeasure", this.urgent)
let formdata = new FormData();
formdata.append("pId", this.projectId);
formdata.append("riskFactor", this.factor);
formdata.append("riskSource", this.source);
formdata.append("accidentType", this.trouble);
formdata.append("level", this.setRank);
formdata.append("riskLevel", this.riskRank);
formdata.append("gradingMethod", this.setRankMode);
formdata.append("riskPosition", this.location);
formdata.append("controlLevel", this.control);
formdata.append("responsibilityDept", this.mainDutyDeptId);
formdata.append("responsibilityMember", this.mainDutyPeopLeId);
formdata.append("technicalMeasures", this.technology);
formdata.append("managementMeasures", this.administration);
formdata.append("emergencyMeasure", this.urgent);
// 放图片路径 因为formdat存数组会自动变成字符串所以次用这种追加字段的方式
values.setRankModeFile.forEach(item => {
// 定级方式
formdata.append("risk1[]", item.file);
});
values.technologyFile.forEach(item => {
// 技术措施
formdata.append("risk2[]", item.file);
});
values.administrationFile.forEach(item => {
// 管理措施
formdata.append("risk3[]", item.file);
});
values.urgentFile.forEach(item => {
// 应急措施
formdata.append("risk4[]", item.file);
});
this.$toast.loading({
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
});
postReAdd("/riskMain/add", formdata)
let url = "/riskMain/add";
if (this.taskId) {
formdata.append("id", this.id);
url = `/riskMain/editSave/${this.taskId}`;
}
postReAdd(url, formdata)
.then(res => {
this.$toast.clear();
this.$toast.success({
......@@ -378,7 +421,6 @@ export default {
this.$toast.clear();
this.$toast.fail("提交失败,请稍后再试");
});
},
// 请求表单数据
......@@ -391,12 +433,10 @@ export default {
});
getFormList("/riskMain/add")
.then(res => {
this.$toast.clear();
this.columnsProjectName = res.data.projectInformations;
this.columnsFactor = res.data.riskInventories;
this.columnsMainDutyDept = res.data.organizationList
this.columnsMainDutyDept = res.data.organizationList;
})
.catch(() => {
this.$toast.clear();
......@@ -405,7 +445,7 @@ export default {
},
// 请求已退回详情数据
postReturnEcho(){
postReturnEcho() {
this.$toast.loading({
message: "加载中...",
forbidClick: true,
......@@ -415,95 +455,97 @@ export default {
postriskConiCause(`/riskMain/edit/${this.taskId}`)
.then(res => {
this.$toast.clear();
// let msg = res.data.hdReport
// // 对数据进行赋值
this.returnCause = res.data.reason;
// this.projectId = msg.proId;
// // 对所属工程数组筛选出 相同id 的工程名
// let name = this.columnsProjectName.filter(item =>{
// return item.id == msg.proId
// })
// this.projectName = name[0].projectName
// this.range = msg.hdRange
// this.type = msg.hdType
// this.dangerName = msg.hdProjectName
// this.dangerNum = msg.hdProjectId
// this.dangerLevel = msg.hdLev
// this.findTime = msg.hdDiscoveryTime
// this.source = msg.dangerId
// this.source1 = msg.dangerSource
// this.location = msg.hdPosition
// this.describe = msg.hdDescribe
// this.hdPicture1 = msg.hdPicture1
// this.hdVideo1 = msg.hdVideo1
// this.expireTime = msg.hdExpirationTime
// this.recPeople = msg.rectificationUser
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
},
// 所属工程名称
onConProjectName(value) {
if (!value) {
this.showProjectName = false;
return;
}
this.projectId = value.id;
this.projectName = value.projectName;
this.showProjectName = false;
},
// 风险因素
onConFactor(value) {
if (!value) {
this.showFactor = false;
return;
}
this.factor = value.factorType;
this.showFactor = false;
this.source = "";
this.trouble = "";
// 请求风险源
postHdSource(`/riskMain/showSourceName/${this.factor}`).then(res =>{
this.columnsSource = res.data
})
postHdSource(`/riskMain/showSourceName/${this.factor}`).then(res => {
this.columnsSource = res.data;
});
},
// 风险源
onConSource(value) {
if (!value) {
this.showSource = false;
return;
}
this.source = value.sourceName;
this.showSource = false;
this.trouble = "";
// 请求事故类型
postHdType(`/riskMain/showaccidentType/${this.factor}/${this.source}`).then(res =>{
this.columnsTrouble = res.data
})
postHdType(
`/riskMain/showaccidentType/${this.factor}/${this.source}`
).then(res => {
this.columnsTrouble = res.data;
});
},
// 事故类型
onConTrouble(value) {
if (!value) {
this.showTrouble = false;
return;
}
this.trouble = value.accidentType;
this.showTrouble = false;
// 请求三个措施
postRiskShowMeasures(`/riskMain/showmeasures/${this.factor}/${this.source}/${this.trouble}`).then(res =>{
console.log(res.data)
this.technology = res.data[0].measuresProject
this.administration = res.data[0].measuresAdministration
this.urgent = res.data[0].measuresEmergency
})
postRiskShowMeasures(
`/riskMain/showmeasures/${this.factor}/${this.source}/${this.trouble}`
).then(res => {
console.log(res.data);
this.technology = res.data[0].measuresProject;
this.administration = res.data[0].measuresAdministration;
this.urgent = res.data[0].measuresEmergency;
});
},
// 风险定级
onConSetRank(value) {
this.setRank = value;
this.riskRank = value;
if(value == "重大风险" || value == "较大风险"){
this.control = "企业级"
}else{
this.control = "项目级"
}
this.riskRank = "";
this.showSetRank = false;
if (this.setRank == "矩阵式定级") {
this.$router.push({
name: "matrix-grad"
});
}
},
// 自己定义风险等级点击方法
myRiskRank() {
if (this.setRank == "") {
this.$toast("请先选择风险定级");
} else if (this.setRank == "其他定级方式") {
this.showRiskRank = true;
}
},
// 风险等级
onConRiskRank(value) {
this.riskRank = value;
this.showRiskRank = false;
},
// 管控层级
onConControl(value) {
this.control = value;
......@@ -511,23 +553,20 @@ export default {
},
// 主责部门
onConMainDutyDept(value) {
this.mainDutyDeptId = value.deptId
this.mainDutyDeptId = value.deptId;
this.mainDutyDept = value.deptName;
this.showMainDutyDept = false;
this.mainDutyPeopLe = ""
this.mainDutyPeopLe = "";
// 请求主责人员
// 请求事故类型
let formdata = new FormData()
formdata.append("organizationId",this.mainDutyDeptId)
postHdPeople(`/riskMain/getUserList`,formdata).then(res =>{
this.columnsMainDutyPeopLe = res.data
})
let formdata = new FormData();
formdata.append("organizationId", this.mainDutyDeptId);
postHdPeople(`/riskMain/getUserList`, formdata).then(res => {
this.columnsMainDutyPeopLe = res.data;
});
},
// 主责人员
onConMainDutyPeopLe(value) {
this.mainDutyPeopLeId = value.userId
this.mainDutyPeopLeId = value.userId;
this.mainDutyPeopLe = value.userName;
this.showMainDutyPeopLe = false;
},
......
<template>
<div>
<!-- 发生可能性 -->
<div class="content-wrap">
<van-checkbox-group v-model="happenSelect">
<van-cell-group>
<van-cell title="发生可能性" is-link arrow-direction="down" />
<van-cell
v-for="(item, index) in happenList"
clickable
:key="item"
:title="item"
@click="happenToggle(index)"
>
<template #right-icon>
<van-checkbox :name="item" ref="happen" />
</template>
</van-cell>
</van-cell-group>
</van-checkbox-group>
</div>
<!-- 后果严重性 -->
<div class="content-wrap">
<van-checkbox-group v-model="resultSelect">
<van-cell-group>
<van-cell title="发生可能性" is-link arrow-direction="down" />
<van-cell
v-for="(item, index) in resultList"
clickable
:key="item"
:title="item"
@click="resultToggle(index)"
>
<template #right-icon>
<van-checkbox :name="item" ref="result" />
</template>
</van-cell>
</van-cell-group>
</van-checkbox-group>
</div>
</div>
</template>
<script>
export default {
data() {
return {
happenList: [
"企业半年内发生2起一般安全生产事故的",
"企业1年内发生3起一般安全生产事故的",
"企业1年内发生1起较大及其以上生产安全事故的",
"超限高层建筑",
"采用新技术、新工艺、新设备、新材料、尚无国家、行业及地方技术标准",
"工程项目施工工期压缩超过30%或者工期压缩未采用技术措施的",
],
happenSelect: [],
resultList: [
"企业半年内发生2起一般安全生产事故的",
"企业1年内发生3起一般安全生产事故的",
"企业1年内发生1起较大及其以上生产安全事故的",
"超限高层建筑",
"采用新技术、新工艺、新设备、新材料、尚无国家、行业及地方技术标准",
"工程项目施工工期压缩超过30%或者工期压缩未采用技术措施的",
],
resultSelect: [],
};
},
mounted() {},
methods: {
happenToggle(index, val) {
this.$refs.happen[index].toggle();
console.log(this.$refs.happen[index].name);
},
resultToggle(index, val) {
this.$refs.result[index].toggle();
console.log(this.$refs.result[index].name);
},
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.content-wrap{
margin-bottom: .266667rem;
}
</style>
<template>
<div>
<LHeader :text="text"></LHeader>
<van-tabs v-model="active" @click="onClick" title-inactive-colo="#d0d1d1" color="#247df7"
title-active-color="#000000">
<van-tab title="指标评估">
<target></target>
</van-tab>
<van-tab title="条件评估">
<condition></condition>
</van-tab>
</van-tabs>
<!-- <div style="margin:10px 16px 0px;padding-bottom:16px">
<van-button round block type="info" @click.native="onDefine"
>确认</van-button
>
<br>
<van-button round block type="warning" @click.native="cancel"
>取消</van-button
>
</div> -->
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import Target from './target.vue';
import Condition from './condition.vue';
export default {
name: "matrix-grad",
components: {
LHeader,
Target,
Condition
},
data() {
return {
text: "矩阵式定级",
active: "0"
};
},
mounted() {},
methods: {
onClick(val) {
console.log(val);
},
onDefine(){
},
cancel() {
this.$router.go(-1);
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
</style>
<template>
<div>
<!-- 发生可能性 -->
<div class="content-wrap">
<van-cell-group>
<van-cell title="发生可能性" is-link arrow-direction="down" />
<van-row>
<van-col span="10">指标</van-col>
<van-col span="8">分级</van-col>
<van-col span="4">可能性</van-col>
<van-col span="2">等级</van-col>
</van-row>
<van-row v-for="(item, index) in happenList" :key="index">
<van-col span="10">{{ item.target }}</van-col>
<van-col span="8">{{ item.grade }}</van-col>
<van-col span="4">{{ item.possibility }}</van-col>
<van-col span="2">{{ item.level }}</van-col>
</van-row>
<van-row>
<van-col span="10">项目部管理能力和水平</van-col>
<van-col span="8" class="border" @click="onClickTarget"
>请选择</van-col
>
<van-col span="4"></van-col>
<van-col span="2"></van-col>
</van-row>
</van-cell-group>
</div>
<!-- 后果严重性 -->
<div class="content-wrap">
<van-cell-group>
<van-cell title="后果严重性" is-link arrow-direction="down" />
<van-row>
<van-col span="10"></van-col>
<van-col span="8">潜在后果</van-col>
<van-col span="4">描述</van-col>
<van-col span="2">等级</van-col>
</van-row>
<van-row>
<van-col span="10">人员伤亡严重性</van-col>
<van-col span="8" class="border" @click="onClickTarget"
>请选择</van-col>
<van-col span="4"></van-col>
<van-col span="2"></van-col>
</van-row>
<van-row v-for="(item, index) in resultList" :key="index">
<van-col span="10">{{ item.target }}</van-col>
<van-col span="8" class="border" @click="onClickTarget"
>请选择</van-col>
<van-col span="4">{{ item.possibility }}</van-col>
<van-col span="2">{{ item.level }}</van-col>
</van-row>
</van-cell-group>
</div>
</div>
</template>
<script>
export default {
data() {
return {
happenList: [
{
target: "全国行业历史发生概率",
grade: "过去2年发生一次以上",
possibility: "很可能",
level: "2"
},
{
target: "本市行业历史发生概率",
grade: "过去5年发生一次以上",
possibility: "很可能",
level: "2"
},
{
target: "本企业历史发生概率",
grade: "过去从未发生",
possibility: "基本很可能",
level: "2"
},
{
target: "企业安全生产管理水平",
grade: "企业安全生产标准化",
possibility: "很可能",
level: "2"
},
{
target: "项目经理管理能力和水平",
grade: "项目经理信用评分比",
possibility: "可能",
level: "2"
}
],
resultList: [
{
target: "经济损失严重性",
grade: "",
possibility: "",
level: ""
},
{
target: "周边敏感目标影响严重性",
grade: "",
possibility: "",
level: ""
},
{
target: "社会关注度",
grade: "",
possibility: "",
level: ""
},
{
target: "基础设施影响",
grade: "",
possibility: "",
level: ""
},
],
value: "",
columns: ["杭州", "宁波", "温州", "嘉兴", "湖州"],
showPicker: false
};
},
mounted() {},
methods: {
onConfirm(value) {
this.value = value;
this.showPicker = false;
},
onClickTarget() {}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell::after {
right: 0;
left: 0;
}
.content-wrap {
margin-bottom: 0.266667rem;
.van-row {
display: flex;
align-items: center;
.van-col {
height: 0.693333rem;
font-size: 0.3334rem;
padding: 0.106667rem 0;
margin: 0.106667rem 0;
text-align: center;
}
.border {
border: 1px solid #e5e6e7;
}
}
}
</style>
<template>
<div>
<LHeader :text="text"></LHeader>
<!-- 内容列表 -->
<div class="con-list">
<div class="cell-wrap">
<p>风险上报</p>
<van-cell-group inset v-for="(item, index) in reportList" :key="index">
<van-row gutter="">
<van-col span="7"
><span class="field-title">所属工程名称:</span></van-col
>
<van-col span="17">{{ item.project }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">风险因素:</span></van-col
>
<van-col span="17">{{ item.subject }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"><span class="field-title">风险源:</span></van-col>
<van-col span="17">{{ item.findTime }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">事故类型:</span></van-col
>
<van-col span="17">{{ item.level }}</van-col>
</van-row>
<!-- 隐藏的字段 -->
<div v-show="reportOpen">
<van-row gutter="">
<van-col span="7"
><span class="field-title">风险等级:</span></van-col
>
<van-col span="17">{{ item.range }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">风险部位:</span></van-col
>
<van-col span="17">{{ item.type }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">管控层级:</span></van-col
>
<van-col span="17">{{ item.dangerNum }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">主责部门:</span></van-col
>
<van-col span="17">{{ item.source }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">主责人员:</span></van-col
>
<van-col span="17">{{ item.source1 }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">定级方式:</span></van-col
>
<van-col span="17">{{ item.location }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">技术措施:</span></van-col
>
<van-col span="17">{{ item.dangerNum }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">技术措施(附件):</span></van-col
>
<van-col span="17">{{ item.describe }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">管理措施:</span></van-col
>
<van-col span="17">{{ item.uploaderImg }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">管理措施(附件):</span></van-col
>
<van-col span="17">{{ item.uploaderVideo }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">应急措施:</span></van-col
>
<van-col span="17">{{ item.expireTime }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7"
><span class="field-title">应急措施(附件):</span></van-col
>
<van-col span="17">{{ item.recPeople }}</van-col>
</van-row>
</div>
</van-cell-group>
<!-- 展开 -->
<div class="more" @click="reportReverse">
{{ reportOpenText }}
</div>
</div>
<div class="journal-wrap">
<p>日志信息</p>
<van-cell-group inset v-for="(item, index) in reportList" :key="index">
<van-steps direction="vertical" :active="999">
<van-step>
<div class="step-wrap">
<van-row>
<van-col span="24"
><div class="info-title">日志信息</div></van-col
>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">审批人:</span></van-col
>
<van-col span="19">首华建设项目</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">节点</span></van-col
>
<van-col span="19">隐患上报</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">结果:</span></van-col
>
<van-col span="19">通过</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">部门:</span></van-col
>
<van-col span="19">首华建设项目部</van-col>
</van-row>
<van-row>
<van-col span="5"
><span class="field-title">时间:</span></van-col
>
<van-col span="19">2021-10-26 16:30:00</van-col>
</van-row>
</div>
</van-step>
</van-steps>
</van-cell-group>
<!-- 展开 -->
<div class="more" @click="journalReverse">
{{ journalOpenText }}
</div>
</div>
<div class="supervise-wrap">
<p>督办信息</p>
<van-cell-group inset v-for="(item, index) in reportList" :key="index">
<div style="text-align: center;">暂无数据</div>
</van-cell-group>
<!-- 展开 -->
<div class="more" @click="superviseReverse" v-show="false">
{{ superviseOpenText }}
</div>
</div>
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
export default {
components: {
LHeader
},
data() {
return {
text: "风险确认详情",
reportOpen: false,
reportOpenText: "展开 ▼",
journalOpen: false,
journalOpenText: "展开 ▼",
superviseOpen: false,
superviseOpenText: "展开 ▼",
reportList: [
{
project: "朝阳区和平街14区简易住宅楼改造项目",
subject: "临时用电施工组织设计未对盾构施工用电进行专项说明。",
findTime: "2021-10-26 16:30:00",
level: "一般隐患A",
range: "城市轨道交通工程",
type: "临时用电",
dangerNum: "0-03-06-0003",
source: "违规活动",
source1: "人的因素",
location: "临时用电",
describe: "没按规定放置插排",
uploaderImg: [],
uploaderVideo: [],
expireTime: "2021-10-26 16:30:00",
recPeople: "张三"
}
],
journalList: []
};
},
mounted() {},
methods: {
// 上报信息显示或隐藏
reportReverse() {
this.reportOpen = !this.reportOpen;
if (this.reportOpen) {
this.reportOpenText = "收起 ▲";
} else {
this.reportOpenText = "展开 ▼";
}
},
// 日志信息显示或隐藏
journalReverse() {
this.journalOpen = !this.journalOpen;
if (this.journalOpen) {
// 显示所有数据
this.journalOpenText = "收起 ▲";
} else {
// 只渲染一条数据
this.journalOpenText = "展开 ▼";
}
},
// 督办信息显示或隐藏
superviseReverse() {
this.superviseOpen = !this.superviseOpen;
if (this.superviseOpen) {
// 显示所有数据
this.superviseOpenText = "收起 ▲";
} else {
// 只渲染一条数据
this.superviseOpenText = "展开 ▼";
}
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0.533333rem;
background-color: #f0f1f5;
.cell-wrap {
position: relative;
}
p {
font-size: 0.4rem;
font-weight: 600;
padding-left: 0.16rem;
margin: 0.186667rem 0;
color: #7f7f7f;
}
.van-cell-group--inset {
margin: 0;
margin-bottom: 10px;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
}
.journal-wrap {
position: relative;
}
.supervise-wrap {
position: relative;
}
.info-title {
color: #2980f7;
font-weight: bolder;
}
.field-title {
color: black;
font-weight: bolder;
}
.more {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
}
</style>
......@@ -57,6 +57,13 @@
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -72,6 +79,7 @@ export default {
text: "风险确认",
active: "1",
searchValue: "",
isHaveNews: false,
messageList:[],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -92,6 +100,10 @@ export default {
.then(res => {
this.$toast.clear();
this.messageList = res.rows
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
......@@ -134,9 +146,9 @@ export default {
goConfirm(data) {
console.log(data);
this.$router.push({
name:"risk-affirm",
params:{
"taskId":data.taskId
name: "risk-affirm",
params: {
data: data,
}
});
this.showIndex = null;
......@@ -147,7 +159,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......
<template>
<div>
<LHeader :text="text"></LHeader>
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="goDetail(item.taskId)"
>
<van-row gutter="">
<van-col span="5">所属项目:</van-col>
<van-col span="19">{{ item.proId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">风险等级:</van-col>
<van-col span="19">{{ item.riskLevel }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">风险源:</van-col>
<van-col span="19">{{ item.riskSource }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">事故类型:</van-col>
<van-col span="19">{{ item.accidentType }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">管控层级:</van-col>
<van-col span="19">{{ item.controllevel }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">主责部门:</van-col>
<van-col span="19">{{ item.responsibilityDept }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">主责人员:</van-col>
<van-col span="19">{{ item.responsibilityMember }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="5">工单状态:</van-col>
<van-col span="19">{{ item.taskName }}</van-col>
</van-row>
<!-- 详情 -->
<div class="detail">详情</div>
</van-cell-group>
<van-form
@submit="onSubmit"
:show-error='false'
:show-error="false"
:scroll-to-error="true"
validate-trigger="onSubmit"
>
......@@ -22,14 +65,14 @@
<!-- 同意时的选项 -->
<div class="agree" v-if="radio == 1">
<van-field
v-model="agreeIdea"
label="意见"
name ="confirmOpinion"
rows="3"
type="textarea"
placeholder="请输入"
:rules="[{ required: true, message: '意见不能为空' }]"
<van-field
v-model="agreeIdea"
label="意见"
name="confirmOpinion"
rows="3"
type="textarea"
placeholder="请输入"
:rules="[{ required: true, message: '意见不能为空' }]"
/>
</div>
......@@ -38,7 +81,7 @@
<van-field
v-model="disagreeIdea"
label="退回原因"
name ="confirmOpinion"
name="confirmOpinion"
rows="3"
type="textarea"
placeholder="请输入"
......@@ -64,22 +107,34 @@
import LHeader from "@/components/header.vue";
import { postriskConAdd } from "@/service/risk";
export default {
name: "risk-affirm",
components: {
LHeader
},
data() {
return {
taskId: "",
messageList: [],
radio: "1",
text: "风险确认",
agreeIdea:"", // 同意意见
disagreeIdea: "", //退回意见
agreeIdea: "", // 同意意见
disagreeIdea: "" //退回意见
};
},
created() {
this.taskId = this.$route.params.taskId;
beforeRouteEnter(to, from, next) {
next(vm => {
if (from.name === "risk-confirme") {
vm.messageList = [];
let paramsData = to.params.data;
vm.taskId = paramsData.taskId;
vm.messageList.push(paramsData);
vm.agreeIdea = "";
vm.disagreeIdea = []; // 隐患整改人
}
});
},
created() {},
methods: {
selectResult(val) {
this.radio = val;
......@@ -90,16 +145,16 @@ export default {
if (!this.taskId) {
return;
}
let formdata = new FormData()
formdata.append("confirmResult", values.radio)
formdata.append("confirmOpinion", values.confirmOpinion)
let formdata = new FormData();
formdata.append("confirmResult", values.radio);
formdata.append("confirmOpinion", values.confirmOpinion);
this.$toast.loading({
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
});
postriskConAdd(`/riskConfirm/add/${this.taskId}`,formdata)
postriskConAdd(`/riskConfirm/add/${this.taskId}`, formdata)
.then(res => {
this.$toast.clear();
this.$toast.success({
......@@ -113,12 +168,49 @@ export default {
this.$toast.fail("提交失败,请稍后再试");
});
},
// 详情
goDetail(taskId) {
this.$router.push({
name: "risk-big-detail",
params: {
id: taskId
}
});
},
cancel() {
this.$router.go(-1);
},
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
margin: 0;
margin-bottom: 10px;
padding: 10px;
font-size: 13px;
position: relative;
.van-row {
margin-bottom: 0.133333rem;
line-height: 0.64rem;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
.detail {
position: absolute;
bottom: 0.32rem;
right: 15px;
color: #2a80f7;
font-weight: bolder;
z-index: 99;
}
</style>
......@@ -59,6 +59,14 @@
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="isHaveNews"
>
暂无数据
</div>
</div>
</template>
......@@ -73,6 +81,7 @@ export default {
return {
text: "上报退回",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null // 是否显示遮罩层
......@@ -93,6 +102,10 @@ export default {
.then(res => {
this.$toast.clear();
this.messageList = res.rows;
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
......@@ -160,7 +173,7 @@ export default {
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 10px 10px 0;
padding: 10px 10px .533333rem;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment