Commit e3ccc85d authored by 胡占生's avatar 胡占生 🇨🇳

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

parents b5bb8cbb 3b9d0486
......@@ -9,15 +9,15 @@
-->
<template>
<div id="app">
<!-- :style="{ height: showTab ?appHeight:'100%' }" 之前是给id为app-content 设置的内联样式 id="app-content" -->
<div>
<transition :name="transitionName">
<keep-alive :include="cachePage">
<router-view class="router-view" />
</keep-alive>
</transition>
</div>
<tab-bar v-if="showTab"></tab-bar>
<!-- :style="{ height: showTab ?appHeight:'100%' }" 之前是给id为app-content 设置的内联样式 id="app-content" -->
<div>
<transition :name="transitionName">
<keep-alive :include="cachePage">
<router-view class="router-view" />
</keep-alive>
</transition>
</div>
<tab-bar v-if="showTab"></tab-bar>
</div>
</template>
......@@ -26,116 +26,149 @@ import tabBar from "@/components/TabBar";
export default {
components: {
tabBar,
tabBar
},
data() {
return {
appHeight: "",
tabH: "",
rempx: 0,
headH: "",
screenH: "",
transitionName: "slide-left",
cachePage: [
'riskAdd'
],
// 不需要展示底部tabbar的页面
noTab:["login", "login2", 'addCurrent','addPresent','addInherent','riskInherent',"choose-people","scan",'success','fail','warn','center','reset-pas-two','riskTaskList','riskBigDetail','riskView','resultPage'],
// cachePage预先定义的缓存页面
otherCache: [],
// 专门处理列表缓存的页面,这些页面缓存逻辑与其他缓存不一样去详情返回列表缓存,但是进入列表必须刷新,如何有需要缓存的列表请放到这里来。
listCache:['insert-danger','confirme-danger','change-danger','review-danger','stand-book','major-danger','delay-approval',
'my-delay','risk-account','risk-confirme','my-delay'],
// 'report-return', 'risk-return', 风险和隐患的上报退回不需要缓存
};
return {
appHeight: "",
tabH: "",
rempx: 0,
headH: "",
screenH: "",
transitionName: "slide-left",
cachePage: ["riskAdd"],
// 不需要展示底部tabbar的页面
noTab: [
"login",
"login2",
"addCurrent",
"addPresent",
"addInherent",
"riskInherent",
"choose-people",
"scan",
"success",
"fail",
"warn",
"center",
"reset-pas-two",
"riskTaskList",
"riskBigDetail",
"riskView",
"resultPage",
"riskAppvoreText"
],
// cachePage预先定义的缓存页面
otherCache: [],
// 专门处理列表缓存的页面,这些页面缓存逻辑与其他缓存不一样去详情返回列表缓存,但是进入列表必须刷新,如何有需要缓存的列表请放到这里来。
listCache: [
"insert-danger",
"confirme-danger",
"change-danger",
"review-danger",
"stand-book",
"major-danger",
"delay-approval",
"my-delay",
"risk-account",
"risk-confirme",
"my-delay"
]
// 'report-return', 'risk-return', 风险和隐患的上报退回不需要缓存
};
},
mounted() {
// 这个配合列表路由使用缓存初始缓存页面
this.otherCache=[...this.cachePage];
let tabH =
document
.getElementsByTagName("html")[0]
.style.fontSize.split("px")[0] * 1.33333;
let sH = document.documentElement.clientHeight;
this.headH =
document
.getElementsByTagName("html")[0]
.style.fontSize.split("px")[0] * 1.5;
+"px";
this.appHeight = sH - tabH + "px";
this.tabH = tabH + "px";
this.screenH = sH + "px";
// 这个配合列表路由使用缓存初始缓存页面
this.otherCache = [...this.cachePage];
let tabH =
document.getElementsByTagName("html")[0].style.fontSize.split("px")[0] *
1.33333;
let sH = document.documentElement.clientHeight;
this.headH =
document.getElementsByTagName("html")[0].style.fontSize.split("px")[0] *
1.5;
+"px";
this.appHeight = sH - tabH + "px";
this.tabH = tabH + "px";
this.screenH = sH + "px";
},
computed: {
showTab() {
return !this.noTab.includes(
this.$route.name
);
},
showTab() {
return !this.noTab.includes(this.$route.name);
}
},
methods:{
// 处理缓存的方法
handleCache(roterFromName, roterToName, markRoterName){
if(roterToName == markRoterName){
// 从定义缓存列表中移除
if(this.cachePage.findIndex(item => item == roterFromName) != -1){
this.cachePage.splice(this.cachePage.findIndex(item => item == roterFromName), 1)
}
}else{
// 判断有无路由 加入缓存
if(this.cachePage.findIndex(item => item == roterFromName) == -1){
this.cachePage.push(roterFromName)
}
}
methods: {
// 处理缓存的方法
handleCache(roterFromName, roterToName, markRoterName) {
if (roterToName == markRoterName) {
// 从定义缓存列表中移除
if (this.cachePage.findIndex(item => item == roterFromName) != -1) {
this.cachePage.splice(
this.cachePage.findIndex(item => item == roterFromName),
1
);
}
} else {
// 判断有无路由 加入缓存
if (this.cachePage.findIndex(item => item == roterFromName) == -1) {
this.cachePage.push(roterFromName);
}
}
}
},
watch: {
$route(to, from) {
// 列表操作去除缓存,刷新列表页
if(from.name == 'confirme-danger' || to.name=='confirme-danger'){ // 隐患整改页面缓存处理
this.handleCache('confirme-danger', to.name, 'affirm-danger')
}else if(from.name == 'change-danger' || to.name=='change-danger'){ // 隐患整改页面缓存处理
this.handleCache('change-danger', to.name, 'change-info')
}else if(from.name == 'review-danger' || to.name=='review-danger'){ // 隐患复查页面缓存处理
this.handleCache('review-danger', to.name, 'review-add')
}else if(from.name == 'major-danger' || to.name=='major-danger'){ // 企业审批页面缓存处理
this.handleCache('major-danger', to.name, 'major-survey')
}else if(from.name == 'risk-confirme' || to.name=='risk-confirme'){ // 风险确认页面缓存处理
this.handleCache('risk-confirme', to.name, 'risk-affirm')
}
$route(to, from) {
// 列表操作去除缓存,刷新列表页
if (from.name == "confirme-danger" || to.name == "confirme-danger") {
// 隐患整改页面缓存处理
this.handleCache("confirme-danger", to.name, "affirm-danger");
} else if (from.name == "change-danger" || to.name == "change-danger") {
// 隐患整改页面缓存处理
this.handleCache("change-danger", to.name, "change-info");
} else if (from.name == "review-danger" || to.name == "review-danger") {
// 隐患复查页面缓存处理
this.handleCache("review-danger", to.name, "review-add");
} else if (from.name == "major-danger" || to.name == "major-danger") {
// 企业审批页面缓存处理
this.handleCache("major-danger", to.name, "major-survey");
} else if (from.name == "risk-confirme" || to.name == "risk-confirme") {
// 风险确认页面缓存处理
this.handleCache("risk-confirme", to.name, "risk-affirm");
}
// 列表页面动态添加缓存
if(from.name=='save-workbench'){
// 如何使从工作台进入列表页面在cachePage里添加页面
if((!this.cachePage.includes(to.name))&&this.listCache.includes(to.name)){
this.cachePage.push(to.name)
}
}
if(to.name=='save-workbench'){
// 如何回到工作台默认恢复预定义缓存页面
this.cachePage=[...this.otherCache];
}
// 列表页面动态添加缓存
if (from.name == "save-workbench") {
// 如何使从工作台进入列表页面在cachePage里添加页面
if (
!this.cachePage.includes(to.name) &&
this.listCache.includes(to.name)
) {
this.cachePage.push(to.name);
}
}
if (to.name == "save-workbench") {
// 如何回到工作台默认恢复预定义缓存页面
this.cachePage = [...this.otherCache];
}
// 有主级到次级
if (to.meta.index > from.meta.index) {
this.transitionName = "slide-left"; // 向左滑动
} else if (to.meta.index < from.meta.index) {
// 由次级到主级
this.transitionName = "slide-right";
} else {
this.transitionName = ""; //同级无过渡效果
}
},
},
// 有主级到次级
if (to.meta.index > from.meta.index) {
this.transitionName = "slide-left"; // 向左滑动
} else if (to.meta.index < from.meta.index) {
// 由次级到主级
this.transitionName = "slide-right";
} else {
this.transitionName = ""; //同级无过渡效果
}
}
}
};
</script>
<style lang="less">
body{
background-color: #f0f1f5;
body {
background-color: #f0f1f5;
}
#app {
font-family: "Avenir", Helvetica, Arial, sans-serif;
......@@ -174,8 +207,6 @@ background-color: #f0f1f5;
// background-color: #f0f1f5;
// overflow: auto;
width: 100%;
height: auto;
-webkit-overflow-scrolling: touch;
......
......@@ -3,199 +3,204 @@ import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [{
path: '/',
redirect: '/login'
},
// 登录页
{
path: '/login',
name: 'login',
component: () => import('../views/login.vue'),
},
// 我的地盘页面
{
path: '/my',
name: 'my',
component: () => import('../views/my'),
},
{
path: '/my-role',
name: 'my-role',
meta: {
title: '我的权限'
},
component: () => import('@/views/my/role')
},
{
path: '/my-reset-pas',
name: 'my-reset-pas',
meta: {
title: '修改密码'
},
component: () => import('@/views/my/resetPas')
},
// 安全工作台页面
{
path: '/save-workbench',
name: 'save-workbench',
component: () => import('../views/saveWorkbench'),
},
// 创建任务页面
{
path: '/create-task',
name: 'create-task',
component: () => import('../views/createTask'),
},
// 选择任务类型
{
path: '/task-type',
name: 'task-type',
component: () => import('../views/createTask/taskSubPage/taskType.vue'),
},
// 选择作业任务
{
path: '/work-task',
name: 'work-task',
component: () => import('../views/createTask/taskSubPage/workTask'),
},
// 选择作业综合班
{
path: '/work-class',
name: 'work-class',
component: () => import('../views/createTask/taskSubPage/workClass'),
},
// 选择作业综合组
{
path: '/work-group',
name: 'work-group',
component: () => import('../views/createTask/taskSubPage/workGroup'),
},
// 选择作业负责人
{
path: '/work-leader',
name: 'work-leader',
component: () => import('../views/createTask/taskSubPage/workLeader'),
},
// 选择作业其他人员
{
path: '/work-other-per',
name: 'work-other-per',
component: () => import('../views/createTask/taskSubPage/workOtherPer'),
},
// 选择微流域
{
path: '/micro-watersh',
name: 'micro-watersh',
component: () => import('../views/createTask/taskSubPage/microWatersh'),
},
// 选择管段
{
path: '/pipe-section',
name: 'pipe-section',
component: () => import('../views/createTask/taskSubPage/pipeSection'),
},
// 选择车牌号
{
path: '/license-plate',
name: 'license-plate',
component: () => import('../views/createTask/taskSubPage/licensePlate'),
},
// 选择手杆爬行器
{
path: '/work-device',
name: 'work-device',
component: () => import('../views/createTask/taskSubPage/workDevice'),
},
path: '/',
redirect: '/login'
},
// 登录页
{
path: '/login',
name: 'login',
component: () => import('../views/login.vue'),
},
// 我的地盘页面
{
path: '/my',
name: 'my',
component: () => import('../views/my'),
},
{
path: '/my-role',
name: 'my-role',
meta: {
title: '我的权限'
},
component: () => import('@/views/my/role')
},
{
path: '/my-reset-pas',
name: 'my-reset-pas',
meta: {
title: '修改密码'
},
component: () => import('@/views/my/resetPas')
},
// 安全工作台页面
{
path: '/save-workbench',
name: 'save-workbench',
component: () => import('../views/saveWorkbench'),
},
// 创建任务页面
{
path: '/create-task',
name: 'create-task',
component: () => import('../views/createTask'),
},
// 选择任务类型
{
path: '/task-type',
name: 'task-type',
component: () => import('../views/createTask/taskSubPage/taskType.vue'),
},
// 选择作业任务
{
path: '/work-task',
name: 'work-task',
component: () => import('../views/createTask/taskSubPage/workTask'),
},
// 选择作业综合班
{
path: '/work-class',
name: 'work-class',
component: () => import('../views/createTask/taskSubPage/workClass'),
},
// 选择作业综合组
{
path: '/work-group',
name: 'work-group',
component: () => import('../views/createTask/taskSubPage/workGroup'),
},
// 选择作业负责人
{
path: '/work-leader',
name: 'work-leader',
component: () => import('../views/createTask/taskSubPage/workLeader'),
},
// 选择作业其他人员
{
path: '/work-other-per',
name: 'work-other-per',
component: () => import('../views/createTask/taskSubPage/workOtherPer'),
},
// 选择微流域
{
path: '/micro-watersh',
name: 'micro-watersh',
component: () => import('../views/createTask/taskSubPage/microWatersh'),
},
// 选择管段
{
path: '/pipe-section',
name: 'pipe-section',
component: () => import('../views/createTask/taskSubPage/pipeSection'),
},
// 选择车牌号
{
path: '/license-plate',
name: 'license-plate',
component: () => import('../views/createTask/taskSubPage/licensePlate'),
},
// 选择手杆爬行器
{
path: '/work-device',
name: 'work-device',
component: () => import('../views/createTask/taskSubPage/workDevice'),
},
//风险项目新增
{
path: '/riskAdd',
name: 'riskAdd',
component: () => import('../views/riskProject/add'),
},
//风险项目管理
{
path: '/riskManage',
name: 'riskManage',
component: () => import('../views/riskProject/manage'),
},
//风险评估
{
path: '/riskAssess',
name: 'riskAssess',
component: () => import('../views/riskProject/assess'),
},
//风险审批
{
path: '/riskApprove',
name: 'riskApprove',
component: () => import('../views/riskProject/approve'),
},
//风险台账
{
path: '/riskLedger',
name: 'riskLedger',
component: () => import('../views/riskProject/ledger'),
},
//任务单
{
path: '/riskTaskList',
name: 'riskTaskList',
component: () => import('../views/riskProject/add/taskList.vue'),
},
//固有风险列表
{
path: '/riskInherent',
name: 'riskInherent',
component: () => import('../views/riskProject/add/inherentRisks.vue'),
},
//新增固有风险
{
path: '/addInherent',
name: 'addInherent',
component: () => import('../views/riskProject/add/addInherent.vue'),
},
{//编辑固有风险
path: '/addCurrent',
name: 'addCurrent',
component: () => import('../views/riskProject/add/addCurrent.vue'),
},
{//新增现状风险
path: '/addPresent ',
name: 'addPresent',
component: () => import('../views/riskProject/add/addPresent.vue'),
},
{//风险评估列表详情页
path: '/riskBigDetail',
name: 'riskBigDetail',
component: () => import('../views/riskProject/assess/riskBigDetail.vue'),
},
{//执行情况管理
path: '/riskExecution',
name: 'riskExecution',
component: () => import('../views/riskProject/execution/index.vue'),
},
{//四色图
path: '/riskView',
name: 'riskView',
component: () => import('../views/drawCanvas/riskView.vue'),
},
{//任务台账
path: '/taskLedger',
name: 'taskLedger',
component: () => import('../views/riskProject/taskLedger/index.vue'),
},
{//任务台账
path: '/taskDetail',
name: 'taskDetail',
component: () => import('../views/riskProject/taskLedger/taskDetail.vue'),
},
{//任务台账
path: '/resultPage',
name: 'resultPage',
component: () => import('../views/riskProject/add/resultPage.vue'),
},
//风险项目新增
{
path: '/riskAdd',
name: 'riskAdd',
component: () => import('../views/riskProject/add'),
},
//风险项目管理
{
path: '/riskManage',
name: 'riskManage',
component: () => import('../views/riskProject/manage'),
},
//风险评估
{
path: '/riskAssess',
name: 'riskAssess',
component: () => import('../views/riskProject/assess'),
},
//风险审批
{
path: '/riskApprove',
name: 'riskApprove',
component: () => import('../views/riskProject/approve'),
},
//风险台账
{
path: '/riskLedger',
name: 'riskLedger',
component: () => import('../views/riskProject/ledger'),
},
//任务单
{
path: '/riskTaskList',
name: 'riskTaskList',
component: () => import('../views/riskProject/add/taskList.vue'),
},
//固有风险列表
{
path: '/riskInherent',
name: 'riskInherent',
component: () => import('../views/riskProject/add/inherentRisks.vue'),
},
//新增固有风险
{
path: '/addInherent',
name: 'addInherent',
component: () => import('../views/riskProject/add/addInherent.vue'),
},
{//编辑固有风险
path: '/addCurrent',
name: 'addCurrent',
component: () => import('../views/riskProject/add/addCurrent.vue'),
},
{//新增现状风险
path: '/addPresent ',
name: 'addPresent',
component: () => import('../views/riskProject/add/addPresent.vue'),
},
{//风险评估列表详情页
path: '/riskBigDetail',
name: 'riskBigDetail',
component: () => import('../views/riskProject/assess/riskBigDetail.vue'),
},
{//执行情况管理
path: '/riskExecution',
name: 'riskExecution',
component: () => import('../views/riskProject/execution/index.vue'),
},
{//四色图
path: '/riskView',
name: 'riskView',
component: () => import('../views/drawCanvas/riskView.vue'),
},
{//任务台账
path: '/taskLedger',
name: 'taskLedger',
component: () => import('../views/riskProject/taskLedger/index.vue'),
},
{//任务台账
path: '/taskDetail',
name: 'taskDetail',
component: () => import('../views/riskProject/taskLedger/taskDetail.vue'),
},
{//任务台账
path: '/resultPage',
name: 'resultPage',
component: () => import('../views/riskProject/add/resultPage.vue'),
},
{//任务台账
path: '/riskAppvoreText',
name: 'riskAppvoreText',
component: () => import('../views/riskProject/add/riskAppvoreText.vue'),
}
]
const router = new VueRouter({
......
......@@ -183,7 +183,7 @@
<van-popover v-model="showPopoveSetRank" trigger="click" :actions="columnsSetRank"
@select="onSelectSetRank">
<template #reference>
<van-field v-model="severityValue" readonly required name="level" label="发生的可能性"
<van-field v-model="severityValue" readonly required name="level" label="后果严重程度"
placeholder="请选择" />
</template>
</van-popover>
......
......@@ -86,7 +86,7 @@
:rules="[{ required: true, message: '准事故类型不能为空' }]"
/>
<van-field
<!-- <van-field
readonly
v-model="form.level"
required
......@@ -95,7 +95,9 @@
placeholder="请选择"
@click="seletGrade('level')"
:rules="[{ required: true, message: '风险等级不能为空' }]"
/>
/> -->
<van-field readonly v-model="form.level" required name="level" label="风险等级" placeholder="请选择"
@click="seletGrade" :rules="[{ required: true, message: '风险等级不能为空' }]" />
<van-field
required
......@@ -295,7 +297,7 @@
</van-uploader>
</template>
</van-field>
<div style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;" >
<div v-if="this.$route.params.isView" style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;" >
<img src="@/assets/accidentIcon/bookmark.svg" alt="" style="position: relative;top: 32%;transform: translateY(-50%);" >
参考依据
</div>
......@@ -330,13 +332,42 @@
/>
</van-popup>
<div style="margin: 16px 16px 0">
<div style="margin: 16px 16px 0" v-if="this.$route.params.isView" >
<van-button round block type="info" native-type="submit"
>上报</van-button
>
</div>
</van-form>
<div style="margin: 10px 16px 0px; padding-bottom: 16px">
<van-dialog v-model="showGradeDialog" title="风险评测配置" :show-cancel-button="false" :show-confirm-button="false" >
<div class="dialogContain">
<van-collapse v-model="activeNames">
<van-collapse-item title="风险模型" name="1">
<van-field readonly required name="level" label="当前风险模型" placeholder="LS风险矩阵评估模型" />
</van-collapse-item>
<van-collapse-item title="风险模型配置" name="2">
<van-popover v-model="showPopover" trigger="click" :actions="columnsRiskRank"
@select="onSelect">
<template #reference>
<van-field v-model="possibleValue" readonly required name="level" label="发生的可能性"
placeholder="请选择" />
</template>
</van-popover>
<van-popover v-model="showPopoveSetRank" trigger="click" :actions="columnsSetRank"
@select="onSelectSetRank">
<template #reference>
<van-field v-model="severityValue" readonly required name="level" label="后果严重程度"
placeholder="请选择" />
</template>
</van-popover>
</van-collapse-item>
</van-collapse>
<van-row type="flex" justify="center" style="margin-top:10px">
<van-col span="6"><van-button size="small" plain type="info" @click="showGradeDialog = false">取消</van-button></van-col>
<van-col span="6"><van-button size="small" type="info" @click="goResultPage">开始测评</van-button></van-col>
</van-row>
</div>
</van-dialog>
<div v-if="this.$route.params.isView" style="margin: 10px 16px 0px; padding-bottom: 16px">
<van-button round block type="warning" @click.native="cancel"
>取消</van-button
>
......@@ -393,6 +424,10 @@ export default {
},
data() {
return {
showPopoveSetRank: false,
activeNames: ["1"],
showPopover: false,
showGradeDialog: false,
taskId: "",
text: "添加现状风险",
id: "",
......@@ -459,6 +494,10 @@ export default {
urgentImg: [], //应急措施图片
returnCause: "", // 退回原因
isShowreturnCause: false,
possibleValue: "",
possibleScore:0,
severityValue: "",
severityScore:0,
};
},
created() {
......@@ -546,22 +585,42 @@ export default {
]
},
seletGrade(name){
this.showTrouble=true
this.riskName=name
this.columnsTrouble=[
{
name:'重大风险',
},
{
name:'较大风险',
},
{
name:'一般风险',
},
{
name:'较小风险',
},
]
this.getGradeList('possibility')
this.getGradeList('severity')
this.showGradeDialog = true
},
//风险模型配置
getGradeList(type) {
// possibility 可能性 severity 严重性
getFun(`/risk/plan/matrix/${type}/list`).then(res => {
let arr = []
res.data.forEach(item => {
arr.push({ text: item.title, type: item.type, sort: item.sort, score: item.score })
})
if (type === 'possibility') {
this.columnsRiskRank = arr
} else {
this.columnsSetRank = arr
}
})
},
onSelect(data) {
this.possibleValue = data.text
this.possibleScore = data.score
},
onSelectSetRank(data) {
this.severityValue = data.text
this.severityScore = data.score
},
//开始测评
goResultPage(){
this.$router.push({
name:'resultPage',
params:{
score:this.severityScore * this.possibleScore
}
})
},
performTasks(){
......
<template>
<div>
<LHeader text="备注"></LHeader>
<van-field
v-model="messageText"
rows="10"
autosize
label="备注信息"
type="textarea"
maxlength="500"
placeholder="请输入备注信息"
show-word-limit
/>
<div
style="display: flex;
justify-content: space-around;
background-color: #fff;
border-top: 1px solid #e3e3e3;
height: 1.5rem;
width: 100%;
text-align: center;
position: fixed;
bottom: 0;"
>
<div
@click="appvore"
style="color: #4bced0;font-size: 14px;font-weight: 600;"
>
<div style="font-size: 22px;"><van-icon name="success" /></div>
<div>保存</div>
</div>
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
export default {
name: "risk-appvore-text",
components: {
LHeader
},
data() {
return {
messageText: null,
result: null,
buildingIds: [],
planId: 0
};
},
created() {
this.result = this.$route.params.result;
this.buildingIds = this.$route.params.buildingIds;
this.planId = this.$route.params.planId;
},
methods: {
//审批
appvore() {
var buildingDtos = [];
for (let i = 0; i < this.buildingIds.length; i++) {
var buildingDto = {
buildingId: this.buildingIds[0],
taskResult: this.result,
taskOpinion: this.messageText
};
buildingDtos[i] = buildingDto;
}
console.log(buildingDtos);
var params = {
id: this.planId,
taskResult: this.result,
taskOpinion: this.messageText,
buildingDtos: buildingDtos
};
postFun("/risk/plan/approve", params)
.then(res => {
console.log(res);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
this.$router.replace({
name: "riskApprove",
params: {}
});
}
},
watch: {}
};
</script>
......@@ -44,12 +44,7 @@
<van-step>评估审核</van-step>
<van-step>项目完成</van-step>
</van-steps>
<van-tabs
v-model="active"
color="#2980f7"
animated
offset-top="2.93rem"
>
<van-tabs v-model="active" color="#2980f7" animated offset-top="2.93rem">
<van-tab title="任务详情">
<van-form
:scroll-to-error="true"
......@@ -359,7 +354,7 @@
bottom: 0;"
>
<div
@click="approveTask"
@click="approveTask(1)"
style="color: #4bced0;font-size: 14px;font-weight: 600;"
>
<div style="font-size: 22px;">
......@@ -375,6 +370,132 @@
<div>审批否决</div>
</div>
</div>
<!-- 否决弹出层 -->
<van-popup
v-model="isShowAppvoreList"
closeable
round
position="right"
:style="{ width: '90%', height: '100%' }"
>
<van-cell-group title="审批否决">
<!-- 内容列表 -->
<div class="con-list">
<van-checkbox-group v-model="checkValue">
<van-cell-group
inset
v-for="(item, index) in buildingList"
:key="index"
>
<van-row gutter="">
<van-col span="2">
<van-checkbox :name="item.buildingId" />
</van-col>
<van-col span="14">{{ item.buildingName }}</van-col>
<van-col
span="8"
:style="{
color:
item.status == 'wait'
? '#F79648'
: item.status == 'finish'
? '#03B615'
: '#FF041D'
}"
>{{
item.status == "wait"
? "待评估"
: item.status == "finish"
? "已完成"
: "已退回"
}}</van-col
>
</van-row>
<van-row>
<van-col span="18">
<van-row gutter="">
<van-col span="8">创 建 人:</van-col>
<van-col span="16">{{ item.createUserName }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="8">处理人员:</van-col>
<van-col span="16">{{ item.workUserNames }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="8">发起时间:</van-col>
<van-col span="16"
>{{ timestampToTimes(item.startTime) }}
</van-col>
</van-row>
</van-col>
<van-col span="6">
<van-row>
<van-button
type="info"
size="mini"
@click="
{
checkValue = [item.buildingId];
approveTask(0);
}
"
>审批否决</van-button
>
</van-row></van-col
>
</van-row>
</van-cell-group>
</van-checkbox-group>
<div
style="display: flex;
justify-content: space-around;
background-color: #fff;
border-top: 1px solid #e3e3e3;
height: 1.5rem;
width: 100%;
text-align: center;
position: fixed;
bottom: 0;"
>
<div
@click="
{
checkValue = [];
isShowAppvoreList = false;
}
"
style="color: #FB6260;font-size: 14px;font-weight: 600;"
>
<div style="font-size: 22px;"><van-icon name="cross" /></div>
<div>返回</div>
</div>
<div
@click="approveTask(0)"
style="color: #4bced0;font-size: 14px;font-weight: 600;"
>
<div style="font-size: 22px;"><van-icon name="success" /></div>
<div>确认</div>
</div>
</div>
<div
style="
width: 100%;
text-align: center;
font-size: 0.48rem;
position: fixed;
top: 30%;
"
v-if="buildingList['length'] == 0"
>
暂无数据
</div>
</div>
</van-cell-group>
</van-popup>
</div>
</template>
......@@ -391,11 +512,17 @@ export default {
return {
text: "任务单",
searchValue: "",
messageText: "",
checkValue: [],
plan: 0,
showIndex: false,
isShowAppvoreList: false,
isShowText: false,
isHaveNews: false,
messageList: [],
riskLogList: [],
buildingList: [],
Loop: "", // 定时器
showIndex: null, // 是否显示遮罩层,
active: 0,
status: 0,
pathAuth: "",
......@@ -420,12 +547,12 @@ export default {
};
},
created() {
var planId = this.$route.params.id || sessionStorage.getItem("planId");
this.planId = this.$route.params.id || sessionStorage.getItem("planId");
var buildingId =
this.$route.params.buildingId || sessionStorage.getItem("buildingId");
this.pathAuth = sessionStorage.getItem("pathAuth");
this.postList(planId, buildingId);
this.getRiskTaskList(planId, buildingId);
this.postList(this.planId, buildingId);
this.getRiskTaskList(this.planId, buildingId);
},
methods: {
timestampToTimes(time) {
......@@ -462,15 +589,43 @@ export default {
console.log("删除任务");
},
//审批通过
approveTask() {
approveTask(result) {
//TODO 审批通过
this.$router.push({
name: "riskAppvoreText",
params: {
planId: this.planId,
buildingIds: this.checkValue,
result: result
}
});
console.log("审批通过");
},
//审批否决
unApproveTask() {
if (this.status == 2) {
this.lookdetail(this.planId);
} else if (this.status == 3) {
this.approveTask(0);
}
//TODO 审批否决
console.log("审批否决");
},
//否决楼栋列表
lookdetail(id) {
this.isShowAppvoreList = true;
getFun("/risk/plan/allocation/building/list/" + id)
.then(res => {
console.log(res);
this.buildingList = res.data;
this.checkValue = this.buildingList.map(item => item.buildingId);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
},
handadd() {
this.$router.push({
name: "riskAdd",
......@@ -504,6 +659,9 @@ export default {
this.messageList = res.data || res.rows;
console.log(this.messageList);
this.form = this.messageList.detailsDto;
this.checkValue = this.messageList.riskBuildingListDtos.map(
item => item.buildingId
);
this.riskLogList = this.messageList.approveListDtos;
console.log(this.messageList.statusKey, 111);
switch (this.messageList.statusKey) {
......
<template>
<div>
<van-form :scroll-to-error="true" :show-error="false" validate-trigger="onSubmit">
<div style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;">
<img src="@/assets/accidentIcon/bookmark.svg" alt=""
style="position: relative;top: 32%;transform: translateY(-50%);">
风险信息
</div>
<van-field readonly required :value="InherentRisk.userName" label="评估人" placeholder="请输入" />
<van-field readonly required :value="InherentRisk.projectName" label="所属项目" placeholder="请输入" />
<van-field readonly required :value="InherentRisk.buildingName" label="所属建筑物" placeholder="请输入" />
<van-field required clickable name="floorId" :value="InherentRisk.floorId" label="所属楼层" placeholder="请选择"
:rules="[{ required: true, message: '所属楼层不能为空' }]" />
<div style="display: flex;">
<van-field readonly required name="roomName" :value="InherentRisk.roomName" label="所属房间" placeholder="请输入"
:rules="[{ required: true, message: '所属房间不能为空' }]" />
<van-button style="color: #cccc;background-color: #f0f1f5;" icon="plus" type="info" />
</div>
<van-field required clickable name="name" v-model="InherentRisk.factor" label="风险源名称" placeholder="请输入"
:rules="[{ required: true, message: '风险源名称不能为空' }]" />
<van-field v-model="InherentRisk.factor" required name="factor" label="风险因素" placeholder="请选择"
:rules="[{ required: true, message: '风险因素不能为空' }]" />
<van-field v-model="InherentRisk.type" required name="type" label="准事故类型" placeholder="请选择" @click="seletType('type')"
:rules="[{ required: true, message: '准事故类型不能为空' }]" />
<van-field readonly v-model="InherentRisk.level" required name="level" label="风险等级" placeholder="请选择"
:rules="[{ required: true, message: '风险等级不能为空' }]" />
<van-field required name="presenceLocation" v-model="InherentRisk.presenceLocation" label="存在部位" placeholder="请输入"
:rules="[{ required: true, message: '存在部位不能为空' }]" />
<div style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;">
<img src="@/assets/accidentIcon/bookmark.svg" alt=""
style="position: relative;top: 32%;transform: translateY(-50%);">
风险源图片
</div>
<van-field name="hdPicture1" label="风险源图片">
<template #input>
<van-uploader multiple :max-count="5"
upload-text="最多上传五个" v-model="uploaderImg">
<template slot="default">
<div style="
width: 2.13333rem;
height: 2.13333rem;
background: #f7f8fa;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
">
<img src="@/assets/upload/pic.png" alt="" style="width: 0.64rem; height: 0.64rem" />
<span class="van-uploader__upload-text">最多上传五个</span>
</div>
</template>
</van-uploader>
</template>
</van-field>
<div style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;">
<img src="@/assets/accidentIcon/bookmark.svg" alt=""
style="position: relative;top: 32%;transform: translateY(-50%);">
技术措施
</div>
<van-field v-model="InherentRisk.measuresProject" name="measuresProject" label="技术措施" type="textarea" rows="1" autosize
placeholder="请输入" />
<van-field name="measuresProjectFile[]" label=" ">
<template #input>
<van-uploader multiple :max-count="5" upload-text="最多上传五个" v-model="measuresProjectFile" accept="file"
result-type="file" @delete="deleteFile(...arguments, 'measuresProjectFile')">
<template slot="default">
<div style="
width: 2.13333rem;
height: 2.13333rem;
background: #f7f8fa;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
">
<img src="@/assets/upload/file.png" alt="" style="width: 0.64rem; height: 0.64rem" />
<span class="van-uploader__upload-text">最多上传五个</span>
</div>
</template>
</van-uploader>
</template>
</van-field>
<div style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;">
<img src="@/assets/accidentIcon/bookmark.svg" alt=""
style="position: relative;top: 32%;transform: translateY(-50%);">
管理措施
</div>
<van-field v-model="InherentRisk.measuresAdministration" name="measuresAdministration" label="管理措施" type="textarea"
rows="1" autosize placeholder="请输入" />
<van-field name="measuresAdministrationFile[]" label=" ">
<template #input>
<van-uploader multiple :max-count="5" upload-text="最多上传五个" v-model="measuresAdministrationFile"
accept="file" result-type="file" @delete="deleteFile(...arguments, 'measuresAdministrationFile')">
<template slot="default">
<div style="
width: 2.13333rem;
height: 2.13333rem;
background: #f7f8fa;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
">
<img src="@/assets/upload/file.png" alt="" style="width: 0.64rem; height: 0.64rem" />
<span class="van-uploader__upload-text">最多上传五个</span>
</div>
</template>
</van-uploader>
</template>
</van-field>
<div style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;">
<img src="@/assets/accidentIcon/bookmark.svg" alt=""
style="position: relative;top: 32%;transform: translateY(-50%);">
应急措施
</div>
<van-field v-model="InherentRisk.measuresEmergency" name="measuresEmergency" label="应急措施" type="textarea" rows="1"
autosize placeholder="请输入" />
<van-field name="measuresEmergencyFile[]" label=" ">
<template #input>
<van-uploader multiple :max-count="5" upload-text="最多上传五个" v-model="measuresEmergencyFile" accept="file"
result-type="file" @delete="deleteFile(...arguments, 'measuresEmergencyFile')">
<template slot="default">
<div style="
width: 2.13333rem;
height: 2.13333rem;
background: #f7f8fa;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
">
<img src="@/assets/upload/file.png" alt="" style="width: 0.64rem; height: 0.64rem" />
<span class="van-uploader__upload-text">最多上传五个</span>
</div>
</template>
</van-uploader>
</template>
</van-field>
<div style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;">
<img src="@/assets/accidentIcon/bookmark.svg" alt=""
style="position: relative;top: 32%;transform: translateY(-50%);">
参考依据
</div>
</van-form>
</div>
</template>
<script>
export default {
props: ["InherentRisk"],
data() {
return {
showPopoveSetRank: false,
activeNames: ["1"],
showPopover: false,
showGradeDialog: false,
taskId: "",
text: "添加固有风险",
id: "",
isTimely: 1,
active: 0,
form: {
},
projectId: "", // 所属工程
projectName: "", // 所属工程
projectDirectorName: "", // 所属工程
projectDirector: "", // 所属工程
showProjectName: false,
show: false,
columnsProjectName: [],
factor: "", //风险因素
showFactor: false,
columnsFactor: [],
messageList: [
{
title: '回显风险源名称',
time: '2022-12-12',
name: 'Mr.周',
state: 1
}
],
source: "", //风险源
userPrefix: "", //风险源
showSource: false,
columnsSource: [],
trouble: "", //事故类型
showTrouble: false,
columnsTrouble: [],
setRank: "", //风险定级
showSetRank: false,
columnsSetRank: ["矩阵式定级", "其他定级方式"],//严重程度
riskRank: "", // 风险等级
showRiskRank: false,
columnsRiskRank: [],//发生可能性
showSetRankMode: false, // 是否显示定级方式
setRankMode: "", // 定级方式文字
setRankModeImg: [], // 定级方式图片
uploaderImg: [], // 定级方式图片
location: "", //风险部位
control: "", //管控层级
riskName: "", //管控层级
showControl: false,
columnsControl: ["项目级", "企业级"],
mainDutyDept: "", // 主责部门
mainDutyDeptId: "",
showMainDutyDept: false,
columnsMainDutyDept: [],
mainDutyPeopLe: "", // 主责人员
mainDutyPeopLeId: "",
showMainDutyPeopLe: false,
columnsMainDutyPeopLe: [],
technology: "", //技术措施文字
technologyImg: [], //技术措施图片
administration: "", //管理措施文字
measuresAdministrationFile: [], //管理措施图片
measuresProjectFile: [], //管理措施图片
measuresEmergencyFile: [], //管理措施图片
urgent: "", //应急措施文字
urgentImg: [], //应急措施图片
returnCause: "", // 退回原因
isShowreturnCause: false,
possibleValue: "",
possibleScore: 0,
severityValue: "",
severityScore: 0,
};
},
created() {
// this.form.buildingIds = this.$route.params.buildingId ||sessionStorage.getItem("buildingId")
// this.form.planId = this.$route.params.planId||sessionStorage.getItem("planId")
// this.form.buildingName = this.$route.params.buildingName||sessionStorage.getItem("buildingName")
// this.form.userId = userInfo.userId
// this.form.userName = userInfo.userName
// this.form.deptName = userInfo.dept.deptName
// this.form.projectId = '测试项目',
// this.form.level = this.$route.params.level ? this.$route.params.level :''
},
methods: {
},
watch: {
},
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 0;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
margin-bottom: 0.26667rem;
padding: 0.25rem;
font-size: 0.4rem;
position: relative;
border-radius: 4%;
box-shadow: 0px 0px 10px 2px #f3f3f3;
width: 90%;
margin: 0.4rem auto;
.van-row {
font-size: 0.4rem;
line-height: 0.8rem;
margin-bottom: 0;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
}
.dialogContain {
width: 100%;
height: 100%;
padding: 10px;
box-sizing: border-box;
}
</style>
......@@ -4,13 +4,13 @@
<LHeader :text="text"></LHeader>
</van-sticky>
<div class="section">
<van-tabs v-model="activeName" color="#2980f7" animated>
<van-tabs v-model="activeName" color="#2980f7" animated @click="onClick">
<van-tab title="固有风险信息" name="a">
<TabDetail :InherentRisk="InherentRisk"/>
</van-tab>
<van-tab title="现状风险" name="b">
<div class="quolist">
<van-cell-group style="padding: 10px;box-sizing: border-box;background-color: #fff;margin: 8px;border-radius: 10px;" v-for="(item, index) in quoRiskList" :key="index">
<van-cell-group style="padding: 10px;box-sizing: border-box;background-color: #fff;margin: 8px;border-radius: 10px;" v-for="(item, index) in quoRiskList" :key="index" @click="goDetail(item)">
<div style="font-size: 0.45rem;padding: 5px 0;">
{{ item.name }}
</div>
......@@ -61,6 +61,7 @@
<script type="text/ecmascript-6">
import LHeader from "@/components/header.vue";
import drawCanvas from '@/views/drawCanvas/riskView.vue'
import TabDetail from "./tabDetail.vue"
import { getFun, postFun } from "@/service/table.js";
import { timestampToTime } from "@/utils/format";
export default {
......@@ -70,13 +71,14 @@ export default {
text: "固有风险列表",
activeName: 'a',
quoRiskList: [],//现状风险列表
InherentRisk: [],//固有风险
InherentRisk: {},//固有风险
inherentId: ''
}
},
components: {
LHeader,
drawCanvas
drawCanvas,
TabDetail
},
created() {
this.inherentId = this.$route.params.id
......@@ -88,7 +90,7 @@ export default {
methods: {
getInherentRiskList(inherentId){
getFun(`/risk/plan/inherent/details/${inherentId}`).then(res=>{
console.log(res.data,'lllll')
this.InherentRisk= res.data
})
},
getQuoRiskList(inherentId) {
......@@ -99,6 +101,28 @@ export default {
timestampToTimes(time) {
return timestampToTime(new Date(time), "DT2", true);
},
goDetail(item){
console.log(item,'???')
this.$router.push({
name:'addPresent',
params:{
isView:false,
// buildingId:,
// planId:,
// floorId:,
// roomId:,
// inherentId:,
// roomName:,
}
})
},
onClick(name){
if(name==='a'){
this.getQuoRiskList(this.$route.params.id)
}else if(name==='b'){
this.getInherentRiskList(this.$route.params.id)
}
}
},
}
</script>
......
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