Commit e7e8d28a authored by p-wanping.song's avatar p-wanping.song

新增签到和固有风险模板

parent 3b09dd00
......@@ -26,7 +26,7 @@ import tabBar from "@/components/TabBar";
export default {
components: {
tabBar
tabBar,
},
data() {
return {
......@@ -64,7 +64,11 @@ export default {
"riskApprove",
"taskList",
"taskDetail",
"modelResult"
"modelResult",
"inherent-template-detail",
"inherent-template",
"my-sign",
"sign-recode",
],
// cachePage预先定义的缓存页面
otherCache: [],
......@@ -80,8 +84,8 @@ export default {
"my-delay",
"risk-account",
"risk-confirme",
"my-delay"
]
"my-delay",
],
// 'report-return', 'risk-return', 风险和隐患的上报退回不需要缓存
};
},
......@@ -104,26 +108,26 @@ export default {
computed: {
showTab() {
return !this.noTab.includes(this.$route.name);
}
},
},
methods: {
// 处理缓存的方法
handleCache(roterFromName, roterToName, markRoterName) {
if (roterToName == markRoterName) {
// 从定义缓存列表中移除
if (this.cachePage.findIndex(item => item == roterFromName) != -1) {
if (this.cachePage.findIndex((item) => item == roterFromName) != -1) {
this.cachePage.splice(
this.cachePage.findIndex(item => item == roterFromName),
this.cachePage.findIndex((item) => item == roterFromName),
1
);
}
} else {
// 判断有无路由 加入缓存
if (this.cachePage.findIndex(item => item == roterFromName) == -1) {
if (this.cachePage.findIndex((item) => item == roterFromName) == -1) {
this.cachePage.push(roterFromName);
}
}
}
},
},
watch: {
$route(to, from) {
......@@ -169,8 +173,8 @@ export default {
} else {
this.transitionName = ""; //同级无过渡效果
}
}
}
},
},
};
</script>
......
......@@ -12,9 +12,12 @@
<div>
<van-sticky>
<header class="header">
<van-icon @click="to" name="arrow-left" class="iconColorLeft"/>
<span>{{text}}</span>
<!-- <van-icon name="bars" class="iconColorRight"/> -->
<van-icon @click="to" name="arrow-left" class="iconColorLeft" />
<span>{{ text }}</span>
<!-- <van-icon name="bars" class="iconColorRight" /> -->
<div class="iconColorRight">
<slot name="right"></slot>
</div>
</header>
</van-sticky>
</div>
......@@ -22,63 +25,59 @@
<script>
export default {
props:{
text:{
default:"未知",
type:String
props: {
text: {
default: "未知",
type: String,
},
customBack:{
type:Function,
}
customBack: {
type: Function,
},
data() {
return {
}
},
mounted() {
data() {
return {};
},
mounted() {},
methods: {
/* 左侧图标跳转方法 */
to(){
if(this.customBack){
this.customBack()
}else{
history.go(-1)
}
}
to() {
if (this.customBack) {
this.customBack();
} else {
history.go(-1);
}
}
},
},
};
</script>
<style lang="less" scoped>
.header{
width:100%;
height:1.5rem;
background:#2980F7;
.header {
width: 100%;
height: 1.5rem;
background: #2980f7;
text-align: center;
line-height: 1.5rem;
}
.iconColorLeft{
}
.iconColorLeft {
color: white;
transform: scale(2);
float: left;
position: relative;
top: 40%;
left: 5%;
}
.header span{
}
.header span {
color: white;
font-size: 16px;
margin: auto;
font-family: 'Microsoft YaHei';
}
.header .iconColorRight{
font-family: "Microsoft YaHei";
}
.header .iconColorRight {
color: white;
float: right;
position: relative;
top: 40%;
right: 5%;
transform: scale(2);
}
font-size: 13px;
vertical-align: middle;
}
</style>
......@@ -35,6 +35,22 @@ const routes = [
},
component: () => import("@/views/my/resetPas"),
},
{
path: "/my-sign",
name: "my-sign",
meta: {
title: "我的签到",
},
component: () => import("@/views/my/sign"),
},
{
path: "/sign-recode",
name: "sign-recode",
meta: {
title: "我的签到",
},
component: () => import("@/views/my/signRecode"),
},
// 安全工作台页面
{
path: "/save-workbench",
......@@ -150,6 +166,18 @@ const routes = [
name: "riskInherent",
component: () => import("../views/riskProject/add/inherentRisks.vue"),
},
//固有风险模板详情
{
path: "/inherent/template/detail",
name: "inherent-template-detail",
component: () => import("../views/riskProject/add/inherentTemplate/detail.vue"),
},
//固有风险模板列表
{
path: "/inherent/template",
name: "inherent-template",
component: () => import("../views/riskProject/add/inherentTemplate/list.vue"),
},
//新增固有风险
{
path: "/addInherent",
......
......@@ -35,4 +35,10 @@ export default {
SET_ASSESS_RESULT(state, data) {
state.assessModel.result = data;
},
// 固有风险模板
SET_INHERENT_TEMPLATE(state, data) {
state.inherentTemplate.id = data;
}
};
......@@ -11,5 +11,9 @@ export default {
level: "",
score: "",
},
// 固有风险模板
inherentTemplate: {
id: ''
}
},
};
......@@ -2,9 +2,7 @@
<div>
<!-- 头部标签 -->
<van-sticky>
<header class="header-wrap">
我的
</header>
<header class="header-wrap">我的</header>
</van-sticky>
<!-- 内容 -->
......@@ -64,8 +62,6 @@
<span>{{ item["title"] }}</span>
</div>
</van-cell-group>
</div>
<!-- 退出系统 -->
<footer class="sign-out">
......@@ -79,11 +75,15 @@
<script>
import tabBar from "@/components/TabBar";
import { removeToken } from '@/utils/auth' // get token from cookie
import { getUserInfo,removeLocalUserInfo,removeUserInfo} from '@/utils/userInfo'
import { removeToken } from "@/utils/auth"; // get token from cookie
import {
getUserInfo,
removeLocalUserInfo,
removeUserInfo,
} from "@/utils/userInfo";
export default {
components: {
tabBar
tabBar,
},
data() {
return {
......@@ -91,7 +91,7 @@ export default {
// 菜单
{
title: "我的权限",
img:require("@/assets/myTerritory/role.png"),
img: require("@/assets/myTerritory/role.png"),
name: "my-role",
},
{
......@@ -99,25 +99,30 @@ export default {
img: require("@/assets/myTerritory/set.png"),
name: "my-reset-pas",
},
{
title: "签到",
img: require("@/assets/myTerritory/set.png"),
name: "my-sign",
},
],
userInfo: {
portrait: require("@/assets/myTerritory/touxiang.png"),
name: getUserInfo()?getUserInfo().userName:"xxx",
position: getUserInfo()?getUserInfo().deptName:"xxx部",
}
name: getUserInfo() ? getUserInfo().userName : "xxx",
position: getUserInfo() ? getUserInfo().deptName : "xxx部",
},
};
},
mounted() {},
methods: {
logout() {
removeToken()
removeToken();
// removeLocalUserInfo()
removeUserInfo()
sessionStorage.clear()
removeUserInfo();
sessionStorage.clear();
this.$router.push("/login");
// location.reload();
}
}
},
},
};
</script>
<style lang="less" scoped>
......@@ -136,7 +141,7 @@ export default {
padding: 10px 0 50px 0;
background-color: #f0f1f5;
position: relative;
.user-box{
.user-box {
display: flex;
align-items: center;
}
......
<template>
<div>
<LHeader :text="$route.meta.title">
<span slot="right" @click="() => this.$router.push('sign-recode')"
>签到记录</span
>
</LHeader>
<van-form
ref="signForm"
label-width="4em"
validate-trigger="onSubmit"
:colon="true"
>
<van-field
readonly
name="projectName"
:value="form.projectName"
label="用户名"
placeholder="请输入"
:rules="[{ required: true, message: '用户名不能为空' }]"
>
</van-field>
<van-field
required
name="remark"
:value="form.remark"
label="备注"
placeholder="请输入"
type="textarea"
:rules="[{ required: true, message: '备注不能为空' }]"
>
</van-field>
<van-field
readonly
required
name="photo"
label="照片"
:rules="[{ required: true, message: '照片不能为空' }]"
>
<template #input>
<van-uploader
v-model="form.photo"
:after-read="afterRead"
:max-count="1"
>
</van-uploader>
</template>
</van-field>
<div class="submit-btns">
<van-button round block type="info" @click="toSign(1)">签到</van-button>
<van-button round block type="info" @click="toSign(0)">签退</van-button>
</div>
</van-form>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
export default {
components: {
LHeader,
},
data() {
return {
form: {
photo: [],
},
};
},
methods: {
afterRead(file) {
this.form.photo = file.file;
},
toSign(type) {
this.$refs.signForm.validate();
},
},
};
</script>
<style lang="less" scoped>
.submit-btns {
display: flex;
padding: 20px 0 20px 20px;
> .van-button {
margin-right: 20px;
}
}
</style>
<template>
<div>
<LHeader text="签到记录"> </LHeader>
<div>
<van-cell title="签到" value="2023/08/30 ">
<template #label>
<div>备注:123</div>
<div>照片:<img src="" alt="" /></div>
</template>
</van-cell>
<van-cell title="签退" value="2023/08/30 " />
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
export default { components: { LHeader } };
</script>
<style lang="scss" scoped></style>
<template>
<div>
<LHeader :text="text"></LHeader>
<LHeader :text="text">
<span slot="right" @click="toImport">导入</span>
</LHeader>
<van-form
@submit="onSubmit"
:scroll-to-error="true"
......@@ -9,12 +11,17 @@
ref="formEle"
>
<div
style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;"
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%);"
style="position: relative; top: 32%; transform: translateY(-50%)"
/>
固有风险信息
</div>
......@@ -43,7 +50,7 @@
placeholder="请输入 "
/>
<div style="display: flex;">
<div style="display: flex">
<van-field
required
clickable
......@@ -55,16 +62,15 @@
:rules="[{ required: true, message: '所属楼层不能为空' }]"
/>
<van-button
style="color: #cccc;background-color: #f0f1f5;"
style="color: #cccc; background-color: #f0f1f5"
icon="plus"
type="info"
native-type="button"
@click="isFloor=true"
@click="isFloor = true"
/>
</div>
<div style="display: flex;">
<div style="display: flex">
<van-field
readonly
required
......@@ -76,7 +82,7 @@
:rules="[{ required: true, message: '所属房间不能为空' }]"
/>
<van-button
style="color: #cccc;background-color: #f0f1f5;"
style="color: #cccc; background-color: #f0f1f5"
icon="plus"
type="info"
native-type="button"
......@@ -111,13 +117,13 @@
v-show="form.pointType == '设备设施类'"
>
<template #input>
<span style="margin-right: 10px;color: red;"></span>
<span style="margin-right: 10px; color: red"></span>
<van-switch
name="specialEquipment"
v-model="form.specialEquipment"
size="20"
/>
<span style="margin-left: 10px;color: green;"></span>
<span style="margin-left: 10px; color: green"></span>
</template>
</van-field>
<!-- 多选 -->
......@@ -176,12 +182,17 @@
/>
<div
style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;"
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%);"
style="position: relative; top: 32%; transform: translateY(-50%)"
/>
风险图片
</div>
......@@ -218,12 +229,17 @@
</template>
</van-field>
<div
style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;"
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%);"
style="position: relative; top: 32%; transform: translateY(-50%)"
/>
应采取的管控措施
</div>
......@@ -237,7 +253,7 @@
rows="3"
autosize
placeholder="请输入"
style="padding-left: 0;padding-top: 0;"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
......@@ -284,7 +300,7 @@
rows="3"
autosize
placeholder="请输入"
style="padding-left: 0;padding-top: 0;"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
......@@ -331,7 +347,7 @@
rows="3"
autosize
placeholder="请输入"
style="padding-left: 0;padding-top: 0;"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
......@@ -416,21 +432,26 @@
maxlength="11"
/>
<div
style="height: 1rem;font-family: '微软雅黑 Bold', '微软雅黑 Regular', '微软雅黑';font-weight: 700;line-height: 1rem;"
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%);"
style="position: relative; top: 32%; transform: translateY(-50%)"
/>
重大危险源管理
</div>
<van-field name="majorHazardSource" label="是否为重大危险源">
<template #input>
<span style="margin-right: 10px;color: red;"></span>
<span style="margin-right: 10px; color: red"></span>
<van-switch v-model="form.majorHazardSource" size="20" />
<span style="margin-left: 10px;color: green;"></span>
<span style="margin-left: 10px; color: green"></span>
</template>
</van-field>
<van-field
......@@ -471,7 +492,7 @@
? [{ required: true, message: '重大危险源描述不能为空' }]
: []
"
style="padding-left: 0;padding-top: 0;"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
......@@ -553,7 +574,7 @@
</van-popover>
</van-collapse-item>
</van-collapse>
<van-row type="flex" justify="center" style="margin-top:10px">
<van-row type="flex" justify="center" style="margin-top: 10px">
<van-col span="6"
><van-button
size="small"
......@@ -615,7 +636,8 @@
<!-- 房间弹出层 -->
<van-popup v-model="showSource" position="bottom">
<van-picker v-if="showSource"
<van-picker
v-if="showSource"
show-toolbar
value-key="name"
:columns="columnsSource"
......@@ -631,7 +653,7 @@
>
<div
class="van-picker__toolbar"
style="position: absolute;width: 100%;top: 0;"
style="position: absolute; width: 100%; top: 0"
>
<button
type="button"
......@@ -648,12 +670,12 @@
确认
</button>
</div>
<div style="display:flex;margin-top: 44px;">
<div style="display: flex; margin-top: 44px">
<selectDept @changeDept="changeDept"></selectDept>
</div>
</van-popup>
<div v-if="isFloor">
<addFloor @close="closeFloor" :buildingId="form.buildingId"/>
<addFloor @close="closeFloor" :buildingId="form.buildingId" />
</div>
<!-- 管控责任人 -->
<van-popup v-model="showTrouble" position="bottom">
......@@ -673,7 +695,7 @@
round
block
type="info"
@click="onSubmit('save',$event)"
@click="onSubmit('save', $event)"
>保存</van-button
>
</div>
......@@ -702,7 +724,7 @@ import LHeader from "@/components/header.vue";
import selectDept from "@/components/selectDept/index.vue";
import SelectList from "@/components/selectList.vue";
import selectFloor from "@/components/selectFloor.vue";
import addFloor from './addFloor'
import addFloor from "./addFloor";
import { getUserInfo, getLocalUserInfo } from "@/utils/userInfo";
import { getFun, postFun } from "@/service/table.js";
......@@ -713,7 +735,7 @@ export default {
selectDept,
SelectList,
selectFloor,
addFloor
addFloor,
},
activated() {
......@@ -726,7 +748,7 @@ export default {
}
this.getList();
this.$bus.$on("riskLevelBus", res => {
this.$bus.$on("riskLevelBus", (res) => {
this.showSetRank = false; // 再次关闭弹出层 以防万一
console.log(Boolean(res));
if (res) {
......@@ -753,7 +775,7 @@ export default {
},
data() {
return {
isFloor:false,
isFloor: false,
loadingStatus: false,
loadingText: "提交...",
measureNameList: [],
......@@ -782,7 +804,7 @@ export default {
isTimely: 1,
active: 0,
form: {
specialEquipment: ""
specialEquipment: "",
},
projectId: "", // 所属工程
projectName: "", // 所属工程
......@@ -839,7 +861,7 @@ export default {
possibleValue: "",
possibleScore: 0,
severityValue: "",
severityScore: 0
severityScore: 0,
};
},
created() {
......@@ -865,32 +887,35 @@ export default {
},
methods: {
/* swp add */
toSave(e){ //保存
toImport() {
this.$router.push({ name: "inherent-template" });
},
toSave(e) {
//保存
e.preventDefault();
var formDataJson = this.jsonToFormData(this.form);
this.uploaderImg.forEach(item => {
this.uploaderImg.forEach((item) => {
if (item.file) {
formDataJson.append("pictureFile[]", item.file);
} else {
formDataJson.append("pictureFile[]", item.fileId);
}
});
this.measuresAdministrationFile.forEach(item => {
this.measuresAdministrationFile.forEach((item) => {
if (item.file) {
formDataJson.append("measuresProjectFile[]", item.file);
} else {
formDataJson.append("measuresProjectFile[]", item.fileId);
}
});
this.measuresEmergencyFile.forEach(item => {
this.measuresEmergencyFile.forEach((item) => {
if (item.file) {
formDataJson.append("measuresEmergencyFile[]", item.file);
} else {
formDataJson.append("measuresEmergencyFile[]", item.fileId);
}
});
this.measuresAdministrationFile.forEach(item => {
this.measuresAdministrationFile.forEach((item) => {
if (item.file) {
formDataJson.append("measuresAdministrationFile[]", item.file);
} else {
......@@ -898,24 +923,26 @@ export default {
}
});
},
closeFloor(data){
if(data){
this.getFloor().then(()=>{
const floors=[].concat(this.floorSource.map(x=>x.children).flat())
const currentFloor = floors.find(x=>x.id===data)
if(currentFloor){
closeFloor(data) {
if (data) {
this.getFloor().then(() => {
const floors = [].concat(
this.floorSource.map((x) => x.children).flat()
);
const currentFloor = floors.find((x) => x.id === data);
if (currentFloor) {
this.saveSlectfloor(currentFloor);
}
})
});
}
this.isFloor = false;
},
measuresUserNameChange(e) {
getFun(
`/risk/plan/inherent/getResponsibilityPersons?personName=${e}&projectId=${this.form.projectId}`
).then(res => {
).then((res) => {
this.measureNameList = res.data;
this.measureNameList.forEach(item => {
this.measureNameList.forEach((item) => {
if (item.measuresUserName == e)
this.form.measuresUserPhone = item.measuresUserPhone;
});
......@@ -925,11 +952,10 @@ export default {
measuresDeptNameChange(e) {
getFun(
`/risk/plan/inherent/getResponsibilityUnits?unitName=${e}&projectId=${this.form.projectId}`
).then(res => {
).then((res) => {
this.measureDeptList = res.data;
});
},
/* swp add end */
// 项目负责人
onConTrouble(value) {
if (!value) {
......@@ -945,7 +971,7 @@ export default {
if (!this.form.measuresDeptId) {
this.$toast({
title: "提示",
message: "请选择管控责任单位!"
message: "请选择管控责任单位!",
});
return false;
}
......@@ -953,9 +979,9 @@ export default {
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
duration: 0,
});
getFun(`/risk/plan/user/list/${this.form.measuresDeptId}`).then(res => {
getFun(`/risk/plan/user/list/${this.form.measuresDeptId}`).then((res) => {
if (res.code == 200) {
this.columnsTrouble = res.data;
// 对数据进行赋值
......@@ -978,7 +1004,7 @@ export default {
getFun(
`/risk/plan/dict/data/list?dictType=risk_plan_${dataName.toLowerCase()}`
)
.then(res => {
.then((res) => {
if (isSinge) {
this.columnsData = res.data;
this.showSelect = true;
......@@ -1001,7 +1027,7 @@ export default {
this.showCheckSelect = false;
},
renameKeyInTree(data, oldKey, newKey) {
let arr = data.map(item => {
let arr = data.map((item) => {
const newItem = { ...item };
if (item.hasOwnProperty(oldKey)) {
......@@ -1023,7 +1049,7 @@ export default {
},
getFloor() {
return getFun(`/risk/plan/floor/list/${this.form.buildingIds}`)
.then(res => {
.then((res) => {
// this.$toast.clear();
// this.showSource = true;
......@@ -1042,7 +1068,7 @@ export default {
if (!this.form.floorId) {
this.$toast({
title: "提示",
message: "请选择所属楼层!"
message: "请选择所属楼层!",
});
return false;
}
......@@ -1050,11 +1076,11 @@ export default {
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
duration: 0,
});
this.userPrefix = name;
getFun(`/risk/plan/room/list/${this.form.floorId}`)
.then(res => {
.then((res) => {
this.$toast.clear();
this.showSource = true;
this.columnsSource = res.data;
......@@ -1073,14 +1099,14 @@ export default {
//风险模型配置
getGradeList(type) {
// possibility 可能性 severity 严重性
getFun(`/risk/plan/matrix/${type}/list`).then(res => {
getFun(`/risk/plan/matrix/${type}/list`).then((res) => {
let arr = [];
res.data.forEach(item => {
res.data.forEach((item) => {
arr.push({
text: item.title,
type: item.type,
sort: item.sort,
score: item.score
score: item.score,
});
});
if (type === "possibility") {
......@@ -1100,8 +1126,8 @@ export default {
this.ShowfloorList = false;
},
saveSlectfloor(data) {
if(this.form.floorId!=data.id){
this.form.roomName = ''
if (this.form.floorId != data.id) {
this.form.roomName = "";
}
this.form.floorId = data.id;
this.form.floorName = data.text;
......@@ -1122,9 +1148,9 @@ export default {
name: "resultPage",
params: {
score: this.severityScore * this.possibleScore,
possibleValue:this.possibleValue,
severityValue:this.severityValue,
}
possibleValue: this.possibleValue,
severityValue: this.severityValue,
},
});
},
performTasks() {
......@@ -1147,48 +1173,48 @@ export default {
formdata.append("key", val["fileId"]);
this.$toast({
title: "提示",
message: "删除成功!"
message: "删除成功!",
});
}
},
jsonToFormData(config) {
const formData = new FormData();
//循环传入的值转换formData
Object.keys(config).forEach(key => {
Object.keys(config).forEach((key) => {
formData.append(key, config[key]);
});
return formData;
},
onSubmit(values,event) {
if(values=='save'){
onSubmit(values, event) {
if (values == "save") {
event.preventDefault();
}
// console.log('%c [ values ]-592', 'font-size:13px; background:pink; color:#bf2c9f;', values)
var formDataJson = this.jsonToFormData(this.form);
let url = "/risk/plan/inherent";
this.loadingStatus = true;
this.uploaderImg.forEach(item => {
this.uploaderImg.forEach((item) => {
if (item.file) {
formDataJson.append("pictureFile[]", item.file);
} else {
formDataJson.append("pictureFile[]", item.fileId);
}
});
this.measuresAdministrationFile.forEach(item => {
this.measuresAdministrationFile.forEach((item) => {
if (item.file) {
formDataJson.append("measuresProjectFile[]", item.file);
} else {
formDataJson.append("measuresProjectFile[]", item.fileId);
}
});
this.measuresEmergencyFile.forEach(item => {
this.measuresEmergencyFile.forEach((item) => {
if (item.file) {
formDataJson.append("measuresEmergencyFile[]", item.file);
} else {
formDataJson.append("measuresEmergencyFile[]", item.fileId);
}
});
this.measuresAdministrationFile.forEach(item => {
this.measuresAdministrationFile.forEach((item) => {
if (item.file) {
formDataJson.append("measuresAdministrationFile[]", item.file);
} else {
......@@ -1225,11 +1251,11 @@ export default {
// });
postFun(url, formDataJson)
.then(res => {
.then((res) => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000
duration: 2000,
});
this.loadingStatus = false;
history.go(-1);
......@@ -1248,10 +1274,10 @@ export default {
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
duration: 0,
});
getFormList("/riskMain/add")
.then(res => {
.then((res) => {
this.$toast.clear();
this.columnsProjectName = res.data.projectInformations;
this.columnsFactor = res.data.riskInventories;
......@@ -1269,10 +1295,10 @@ export default {
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
duration: 0,
});
postriskConiCause(`/riskMain/edit/${this.taskId}`)
.then(res => {
.then((res) => {
console.log(
"%c [ res ]-332",
"font-size:13px; background:pink; color:#bf2c9f;",
......@@ -1306,7 +1332,7 @@ export default {
this.trouble = "";
// 请求风险源
postHdSource(`/riskMain/showSourceName?factorType=${this.factor}`).then(
res => {
(res) => {
this.columnsSource = res.data;
}
);
......@@ -1329,7 +1355,7 @@ export default {
if (this.setRank == "矩阵式定级") {
this.showSetRank = false;
this.$router.push({
name: "matrix-grad"
name: "matrix-grad",
});
}
},
......@@ -1361,7 +1387,7 @@ export default {
// 请求主责人员
let formdata = new FormData();
formdata.append("organizationId", this.mainDutyDeptId);
postHdPeople(`/riskMain/getUserList`, formdata).then(res => {
postHdPeople(`/riskMain/getUserList`, formdata).then((res) => {
this.columnsMainDutyPeopLe = res.data;
});
},
......@@ -1376,7 +1402,7 @@ export default {
if (!this.form.floorId) {
this.$toast({
title: "提示",
message: "请选择所属楼层!"
message: "请选择所属楼层!",
});
return false;
}
......@@ -1384,8 +1410,8 @@ export default {
name: "riskView",
params: {
floorId: this.form.floorId,
isView: false
}
isView: false,
},
});
},
......@@ -1405,7 +1431,7 @@ export default {
this.projectDirector = e[0].loginName;
this.projectDirectorName = e[0].userName;
this.show = false;
}
},
},
watch: {
"form.pointType"(val, old) {
......@@ -1414,8 +1440,8 @@ export default {
} else {
this.form.specialEquipment = "";
}
}
}
},
},
};
</script>
<style lang="less" scoped>
......
<!-- 导入固有风险模板详情 -->
<template>
<div>
<LHeader text="固有风险信息"></LHeader>
<van-form>
<van-field
required
clickable
name="name"
v-model="form.name"
label="危险源名称"
placeholder="请输入"
:rules="[{ required: true, message: '危险源名称不能为空' }]"
/>
<!-- 单选 -->
<van-field
readonly
required
clickable
name="pointType"
v-model="form.pointType"
label="风险点类型"
placeholder="请选择"
:rules="[{ required: true, message: '风险点类型不能为空' }]"
/>
<van-field
required
label="是否为特种设备"
v-show="form.pointType == '设备设施类'"
>
<template #input>
<span style="margin-right: 10px; color: red"></span>
<van-switch
v-model="form.specialEquipment"
size="20"
name="specialEquipment"
/>
<span style="margin-left: 10px; color: green"></span>
</template>
</van-field>
<!-- 多选 -->
<van-field
v-model="form.safetyWarningSigns"
readonly
required
name="safetyWarningSigns"
label="安全警示标志"
placeholder="请选择"
:rules="[{ required: true, message: '安全警示标志不能为空' }]"
/>
<van-field
v-model="form.factor"
readonly
required
name="factor"
label="风险因素"
placeholder="请选择"
:rules="[{ required: true, message: '风险因素不能为空' }]"
/>
<van-field
readonly
v-model="form.type"
required
name="type"
label="准事故类型"
placeholder="请选择"
:rules="[{ required: true, message: '准事故类型不能为空' }]"
/>
<van-field
readonly
v-model="form.level"
required
name="level"
label="风险等级"
placeholder="请选择"
:rules="[{ required: true, message: '风险等级不能为空' }]"
/>
<van-field
required
name="presenceLocation"
v-model="form.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 label="技术措施">
<template #input>
<van-field
v-model="form.measuresProject"
name="measuresProject"
label=""
type="textarea"
rows="3"
autosize
placeholder="请输入"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
<van-field label="管理措施">
<template #input>
<van-field
v-model="form.measuresAdministration"
name="measuresAdministration"
label=""
type="textarea"
rows="3"
autosize
placeholder="请输入"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
<van-field label="应急措施">
<template #input>
<van-field
v-model="form.measuresEmergency"
name="measuresEmergency"
label=""
type="textarea"
rows="3"
autosize
placeholder="请输入"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
<van-field
v-model="form.measuresDeptName"
name="measuresDeptName"
label="管控责任单位 "
type="input"
rows="1"
autosize
placeholder="请输入"
list="measure-deptname"
@input="measuresDeptNameChange"
/>
<van-field
v-model="form.measuresUserName"
name="measuresUserName"
label="管控责任人 "
type="input"
rows="1"
autosize
placeholder="请输入"
list="measure-name"
@input="measuresUserNameChange"
/>
<van-field
v-model="form.measuresUserPhone"
name="measuresUserPhone"
label="管控责任人联系方式"
type="input"
rows="1"
autosize
placeholder="请输入"
maxlength="11"
/>
<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="majorHazardSource" label="是否为重大危险源">
<template #input>
<span style="margin-right: 10px; color: red"></span>
<van-switch v-model="form.majorHazardSource" size="20" />
<span style="margin-left: 10px; color: green"></span>
</template>
</van-field>
<van-field
:disabled="!form.majorHazardSource"
v-model="form.hazardSourceName"
:required="form.majorHazardSource"
name="hazardSourceName"
label="危险源名称 "
type="textarea"
rows="1"
autosize
placeholder="请输入"
:key="form.majorHazardSource + '123'"
:rules="
form.majorHazardSource
? [{ required: true, message: '危险源名称不能为空' }]
: []
"
/>
<van-field
label="重大危险源描述"
:disabled="!form.majorHazardSource"
:required="form.majorHazardSource"
>
<template #input>
<van-field
:disabled="!form.majorHazardSource"
v-model="form.majorHazardSourceDescription"
name="majorHazardSourceDescription"
type="textarea"
rows="3"
autosize
placeholder="请输入"
:key="form.majorHazardSource + '456'"
:rules="
form.majorHazardSource
? [{ required: true, message: '重大危险源描述不能为空' }]
: []
"
style="padding-left: 0; padding-top: 0"
/>
</template>
</van-field>
<van-field
:disabled="!form.majorHazardSource"
:required="form.majorHazardSource"
readonly
clickable
name="referenceBasis"
:value="form.referenceBasis == 'null' ? '' : form.referenceBasis"
label="判断依据"
placeholder="请选择"
:key="form.majorHazardSource + '789'"
:rules="
form.majorHazardSource
? [{ required: true, message: '判断依据不能为空' }]
: []
"
/>
<van-button round block type="info" @click="toImport">导入</van-button>
</van-form>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
export default {
components: { LHeader },
data() {
return {
form: {},
};
},
mounted() {
this.postReturnEcho();
},
methods: {
// 请求详情数据
postReturnEcho() {
getFun(`/risk/plan/inherent/details/135`)
.then((res) => {
this.form = res.data;
})
.catch(() => {
this.$toast.clear();
});
},
toImport() {
this.$router.go(-2);
},
},
};
</script>
<style lang="scss" scoped></style>
<!-- 导入固有风险模板列表 -->
<template>
<div class="inherent-template">
<LHeader text="固有风险模板"></LHeader>
<div class="con-list">
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="touchstart(index, item)"
>
<div style="font-size: 0.45rem; padding: 5px 0">
{{ item.name }}
</div>
<van-row gutter="">
<van-col span="17">
<van-row gutter="">
<van-col span="9">发起时间:</van-col>
<van-col span="15">{{
timestampToTimes(item.createTime)
}}</van-col>
</van-row>
<van-row gutter="">
<van-col span="9">楼层:</van-col>
<van-col span="15">{{ item.floorName }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="9">房间:</van-col>
<van-col span="15">{{ item.roomName }}</van-col>
</van-row>
</van-col>
<!-- <van-col span="7" :style="{ color: item.state == 1 ? '#0069e5' : '#03b615' }">
{{ "●待审批" }}
</van-col> -->
</van-row>
<van-overlay :show="showIndex == index">
<div class="wrapper" @click.stop="showIndex = null">
<van-button round type="info" @click="toImport(item)"
>导入</van-button
>
<van-button round type="primary" @click="toDetail(item)"
>详情</van-button
>
</div>
</van-overlay>
</van-cell-group>
<div
style="
width: 100%;
text-align: center;
font-size: 0.48rem;
position: fixed;
top: 30%;
"
v-if="messageList['length'] == 0"
>
暂无数据
</div>
</div>
</div>
</template>
<script>
import { getFun, postFun } from "@/service/table.js";
import LHeader from "@/components/header.vue";
import { timestampToTime, generateId } from "@/utils/format";
export default {
components: { LHeader },
data() {
return {
messageList: [],
showIndex: null,
item: null,
};
},
mounted() {
this.getList();
},
methods: {
toDetail(item) {
this.$router.push({
path: "/inherent/template/detail",
query: {
id: item.id,
},
});
},
toImport() {
this.$router.go(-1);
},
touchstart(index, item) {
this.showIndex = index;
this.item = item;
},
getList() {
getFun(`/risk/plan/inherent/list/137/1`)
.then((res) => {
this.messageList = res.data;
})
.catch(() => {
this.$toast.fail("加载失败,请稍后再试");
});
},
timestampToTimes(time) {
return timestampToTime(new Date(time), "DT2", true);
},
},
};
</script>
<style lang="less" scoped>
.inherent-template {
.con-list {
padding: 0;
min-height: 10rem;
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%;
}
}
}
}
}
</style>
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