隐患整改
parent
09eab40055
commit
be35580a81
13
api/api.js
13
api/api.js
|
@ -9,4 +9,17 @@ export const setRefreshToken = (params) => post("/sys/refreshToken", params ); /
|
|||
export const setEntryV1 = (params) => post("/app/sys/user/entry", params ); // 入职
|
||||
export const resignV1 = (params) => post("/app/sys/user/resign", params ); // 离职
|
||||
export const getStudentInfoApi = (params) => post("/app/student/getStudentInfo", params ); // 获取学员信息
|
||||
export const getHiddenList = (params) => post("/app/hidden/list", params); // 隐患列表
|
||||
export const getHiddenInfo = (params) => post("/app/hidden/goEdit", params); // 隐患信息
|
||||
export const setFileDelete = (params) => post("/app/imgfiles/delete", params); // 删除图片
|
||||
export const getPersonnelList = (params) => post("/app/sys/listUser", params); // 人员
|
||||
export const setHiddenNuRectificationSubmit = (params) =>
|
||||
post("/app/hiddenexamine/special", params);
|
||||
export const setHiddenRectificationSubmit = (params) =>
|
||||
post("/app/hidden/rectify", params); // 隐患整改提交
|
||||
export const fileUpload = (params) => upload("/app/file/upload", params);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
<template>
|
||||
<next-tree
|
||||
ref="nextTreeRef"
|
||||
check-strictly
|
||||
func-mode="radio"
|
||||
select-parent
|
||||
:if-search="false"
|
||||
:tree-data="treeData"
|
||||
:is-show-clear="isShowClear"
|
||||
theme-color="#3377ff"
|
||||
page-height="92vh"
|
||||
label-key="name"
|
||||
value-key="id"
|
||||
children-key="children"
|
||||
@confirm="fnTreeConfirm"
|
||||
@cancel="visible = false"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getDepartmentTree} from "@/api";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
},
|
||||
value: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
isShowClear: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
treeData: []
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
await this.fnGetData();
|
||||
this.$watch("visible", (newVal) => {
|
||||
if (newVal) {
|
||||
this.$refs.nextTreeRef && this.$refs.nextTreeRef._show();
|
||||
this.$refs.nextTreeRef && this.$refs.nextTreeRef.checkedFunc(this.value);
|
||||
} else this.$refs.nextTreeRef && this.$refs.nextTreeRef._hide();
|
||||
}, {immediate: true})
|
||||
},
|
||||
methods: {
|
||||
fnTreeConfirm(event) {
|
||||
this.$emit("confirm", event);
|
||||
this.$emit("update:visible", false);
|
||||
},
|
||||
async fnGetData() {
|
||||
const resData = await getDepartmentTree({
|
||||
loading: false,
|
||||
postMethod: 'application/json',
|
||||
});
|
||||
this.treeData = JSON.parse(resData.zTreeNodes);
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,105 @@
|
|||
<template>
|
||||
<view>
|
||||
<u-form-item
|
||||
:label="label"
|
||||
:prop="prop"
|
||||
:required="required"
|
||||
@click="()=>{
|
||||
!disabled ? (visible = true) : null
|
||||
}"
|
||||
>
|
||||
<view class="select_content">
|
||||
<u-input
|
||||
:value="name || '请选择'"
|
||||
border="none"
|
||||
input-align="right"
|
||||
readonly
|
||||
/>
|
||||
<u-icon name="arrow-right"></u-icon>
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<department
|
||||
:visible.sync="visible"
|
||||
:value="id"
|
||||
:is-show-clear="isShowClear"
|
||||
@confirm="fnConfirm"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Department from "./department.vue";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
Department,
|
||||
},
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
default: () => ({}),
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: "部门",
|
||||
},
|
||||
prop: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
clearKey: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
isShowClear: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
visible: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
fnConfirm(event) {
|
||||
if (event.length > 0) {
|
||||
this.$emit('update:name', event[0].name)
|
||||
this.$emit('update:id', event[0].id)
|
||||
} else {
|
||||
this.$emit('update:name', '')
|
||||
this.$emit('update:id', '')
|
||||
}
|
||||
if (JSON.stringify(this.form) !== "{}" && this.clearKey) {
|
||||
const clearKey = this.clearKey.split(",");
|
||||
const form = uni.$u.deepClone(this.form)
|
||||
for (let i = 0; i < clearKey.length; i++) {
|
||||
form[clearKey[i]] = "";
|
||||
}
|
||||
this.$emit("update:form", form);
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,329 @@
|
|||
<template>
|
||||
<view>
|
||||
<u-cell-group>
|
||||
<u-cell title="隐患描述" :label="info.HIDDENDESCR"/>
|
||||
<u-cell title="隐患来源" :value="HIDDEN_SOURCE[info.SOURCE]"/>
|
||||
<block v-if="info.SOURCE === '2'">
|
||||
<u-cell title="风险点(单元)" :value="info.RISK_UNIT"/>
|
||||
<u-cell title="辨识部位" :value="info.IDENTIFICATION"/>
|
||||
<u-cell title="存在风险" :value="info.RISK_DESCR"/>
|
||||
<u-cell title="风险分级" :value="info.LEVEL"/>
|
||||
<u-cell title="检查内容" :value="info.CHECK_CONTENT"/>
|
||||
</block>
|
||||
<u-cell title="隐患上报位置(经纬度)">
|
||||
<template #label>
|
||||
<view v-if="info.LONGITUDE && info.LATITUDE">
|
||||
<view>经度:{{ info.LONGITUDE }}</view>
|
||||
<view>纬度:{{ info.LATITUDE }}</view>
|
||||
</view>
|
||||
</template>
|
||||
</u-cell>
|
||||
<u-cell title="隐患部位" :value="info.hregionName || info.HIDDENPART"/>
|
||||
<u-cell title="隐患位置描述" :value="info.POSITIONDESC"/>
|
||||
<u-cell title="隐患类型" :value="info.HIDDENTYPENAME"/>
|
||||
<u-cell title="隐患级别" :value="info.HIDDENLEVELNAME"/>
|
||||
<u-cell title="隐患发现人" :value="hiddenFindPeople.map((item) => item.NAME).join('、')"/>
|
||||
<u-cell title="隐患发现时间" :value="info.DISCOVERYTIME"/>
|
||||
<block v-if="info.RECTIFICATIONTYPE">
|
||||
<u-cell title="整改类型">
|
||||
<template #value>
|
||||
<text v-if="info.RECTIFICATIONTYPE === '1'">立即整改</text>
|
||||
<text v-else-if="info.RECTIFICATIONTYPE === '2'">限期整改</text>
|
||||
</template>
|
||||
</u-cell>
|
||||
<u-cell title="整改负责部门" :value="info.editDeptName"/>
|
||||
<u-cell title="整改负责人" :value="info.editUserName"/>
|
||||
<block v-if="info.RECTIFICATIONTYPE === '2'">
|
||||
<u-cell title="整改期限" :value="info.editRectificationDeadline"/>
|
||||
</block>
|
||||
</block>
|
||||
<u-cell title="是否相关方">
|
||||
<template #value>
|
||||
<text v-if="info.ISRELEVANT === '1'">是</text>
|
||||
<text v-else-if="info.ISRELEVANT === '2'">否</text>
|
||||
</template>
|
||||
</u-cell>
|
||||
<app-preview-image :files="hImgs" label="隐患照片"/>
|
||||
<block v-if="hiddenVideo.length > 0">
|
||||
<u-cell title="隐患视频">
|
||||
<template #value>
|
||||
<u-icon
|
||||
name="play-circle-fill"
|
||||
size="24"
|
||||
@click="fnPreviewVideo(hiddenVideo[0].FILEPATH)"
|
||||
/>
|
||||
</template>
|
||||
</u-cell>
|
||||
</block>
|
||||
<view v-for="(item, index) in hiddenExamineList" :key="index">
|
||||
<block v-if="item.TYPE === 4">
|
||||
<u-divider text-position="left" text="隐患确认"></u-divider>
|
||||
<u-cell title="隐患级别" :value="item.editLevelName"/>
|
||||
<u-cell title="整改负责人部门" :value="item.editDeptName"/>
|
||||
<u-cell title="整改负责人" :value="item.editUserName"/>
|
||||
<u-cell title="整改完成期限" :value="item.spare3"/>
|
||||
<u-cell title="隐患确认人" :value="info.conUserName"/>
|
||||
<u-cell title="隐患确认时间" :value="info.CONFIRM_TIME"/>
|
||||
</block>
|
||||
<block v-if="item.TYPE === 6 && item.spare5 !== '1'">
|
||||
<u-cell title="隐患状态" value="确认打回"/>
|
||||
<u-cell title="打回原因" :label="item.REPULSE_CAUSE"/>
|
||||
<u-cell title="打回时间" :value="item.CREATTIME"/>
|
||||
</block>
|
||||
<block v-if="item.TYPE === 2">
|
||||
<u-divider text-position="left" text="延期信息"></u-divider>
|
||||
<u-cell title="申请延期日期" :value="item.CREATTIME"/>
|
||||
<u-cell title="延期日期" :value="formatDate(item.DELAY_TIME)"/>
|
||||
<u-cell title="审核人" :value="info.conUserName"/>
|
||||
<u-cell title="处置方案" :value="item.DISPOSAL_PLAN"/>
|
||||
<block v-if="item.DISPOSAL_FILE">
|
||||
<u-cell title="处置方案附件">
|
||||
<template #value>
|
||||
<u-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
shape="circle"
|
||||
:custom-style="{ width: 'auto' }"
|
||||
text="下载"
|
||||
@click="fnPreviewFile(item.DISPOSAL_FILE)"
|
||||
/>
|
||||
</template>
|
||||
</u-cell>
|
||||
</block>
|
||||
<u-cell title="延期审核状态">
|
||||
<template #value>
|
||||
<text v-if="item.STATE === -1">待审核</text>
|
||||
<text v-if="item.STATE === 1">通过</text>
|
||||
<text v-if="item.STATE === 2">未通过</text>
|
||||
</template>
|
||||
</u-cell>
|
||||
<block v-if="item.STATE !== -1">
|
||||
<u-cell title="审核时间" :value="item.OPERATTIME"/>
|
||||
</block>
|
||||
</block>
|
||||
<block v-if="item.TYPE === 1">
|
||||
<u-divider text-position="left" text="特殊处理审核信息"></u-divider>
|
||||
<u-cell title="无法整改原因" :label="item.EXAMINE"/>
|
||||
<u-cell title="特殊处置审核状态">
|
||||
<template #value>
|
||||
<!-- 是否通过审核 ,1未通过。2通过 -1(初始)16隐患确认打回 -->
|
||||
<text v-if="item.STATE === -1">待审核</text>
|
||||
<text v-if="item.STATE === 1">不通过</text>
|
||||
<text v-if="item.STATE === 2">通过</text>
|
||||
</template>
|
||||
</u-cell>
|
||||
<block v-if="item.STATE === 1">
|
||||
<u-cell title="处置方案" :value="item.DISPOSAL_PLAN"/>
|
||||
<block v-if="item.DISPOSAL_FILE">
|
||||
<u-cell title="处置方案附件">
|
||||
<template #value>
|
||||
<u-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
shape="circle"
|
||||
:custom-style="{ width: 'auto' }"
|
||||
text="下载"
|
||||
@click="fnPreviewFile(item.DISPOSAL_FILE)"
|
||||
/>
|
||||
</template>
|
||||
</u-cell>
|
||||
</block>
|
||||
</block>
|
||||
<block v-if="item.STATE !== -1">
|
||||
<u-cell title="审核时间" :value="item.OPERATTIME"/>
|
||||
<u-cell title="审核人" :value="info.conUserName"/>
|
||||
</block>
|
||||
<block v-if="item.STATE === 2">
|
||||
<u-cell title="是否更换整改负责人" :value="item.spare1 === '1' ? '是' : '否'"/>
|
||||
<block v-if="item.spare1 === '1'">
|
||||
<u-cell title="整改负责人" :value="item.editUserName"/>
|
||||
</block>
|
||||
</block>
|
||||
</block>
|
||||
<block v-if="item.TYPE === 3">
|
||||
<u-divider text-position="left" text="验收打回信息"></u-divider>
|
||||
<u-cell title="验收打回意见" :label="item.EXAMINE"/>
|
||||
<u-cell title="验收人" :value="item.CREATORNAME"/>
|
||||
<u-cell title="验收时间" :value="item.CREATTIME"/>
|
||||
</block>
|
||||
</view>
|
||||
<block v-if="info.REJECTREASON">
|
||||
<u-divider text-position="left" text="隐患复查"></u-divider>
|
||||
<u-cell title="复查驳回原因" :label="info.REJECTREASON"/>
|
||||
</block>
|
||||
<block v-if="info.STATE === '2' || info.STATE === '4' || (info.STATE === '-2' && info.RECTIFICATIONTYPE === '1') || info.STATE === '10'">
|
||||
<u-divider text-position="left" text="整改信息"></u-divider>
|
||||
<u-cell title="整改描述" :label="info.RECTIFYDESCR"/>
|
||||
<u-cell title="整改部门" :value="info.RECTIFICATIONDEPTNAME"/>
|
||||
<u-cell title="整改人" :value="info.RECTIFICATIONORNAME"/>
|
||||
<u-cell title="整改时间" :value="info.RECTIFICATIONTIME"/>
|
||||
<u-cell title="投入资金" :value="info.INVESTMENT_FUNDS === undefined ? '' : info.INVESTMENT_FUNDS + '元'"/>
|
||||
<app-preview-image :files="rImgs" label="整改后图片"/>
|
||||
<u-cell title="整改方案">
|
||||
<template #value>
|
||||
<text v-if="info.HAVESCHEME === '0'">无</text>
|
||||
<text v-else-if="info.HAVESCHEME === '1'">有</text>
|
||||
</template>
|
||||
</u-cell>
|
||||
<block v-if="info.HAVESCHEME === '1'">
|
||||
<u-cell title="排查日期" :value="rectificationPlanInfo.SCREENINGDATE"/>
|
||||
<block v-if="rectificationPlanInfo.LISTNAME">
|
||||
<u-cell title="隐患清单" :value="rectificationPlanInfo.LISTNAME"/>
|
||||
</block>
|
||||
<u-cell title="治理标准要求" :value="rectificationPlanInfo.GOVERNSTANDARDS"/>
|
||||
<u-cell title="治理方法" :value="rectificationPlanInfo.GOVERNMETHOD"/>
|
||||
<u-cell title="经费和物资的落实" :value="rectificationPlanInfo.EXPENDITURE"/>
|
||||
<u-cell title="负责治理人员" :value="rectificationPlanInfo.PRINCIPAL"/>
|
||||
<u-cell title="工时安排" :value="rectificationPlanInfo.PROGRAMMING"/>
|
||||
<u-cell title="时限要求" :value="rectificationPlanInfo.TIMELIMITFOR"/>
|
||||
<u-cell title="工作要求" :value="rectificationPlanInfo.JOBREQUIREMENT"/>
|
||||
<u-cell title="其他事项" :value="rectificationPlanInfo.OTHERBUSINESS"/>
|
||||
<app-preview-image :files="sImgs" label="方案图片"/>
|
||||
</block>
|
||||
</block>
|
||||
<block v-if="info.STATE === '4'">
|
||||
<u-divider text-position="left" text="验收信息"></u-divider>
|
||||
<block v-if="info.RECTIFICATIONTYPE === '1'">
|
||||
<u-cell title="验收人" :value="info.CHECKORNAME" />
|
||||
</block>
|
||||
<block v-else>
|
||||
<view v-for="(item, index) in checkList" :key="index">
|
||||
<u-cell title="验收描述" :label="item.CHECKDESCR" />
|
||||
<u-cell title="是否合格" :value="item.STATUS === 1 ? '是' : '否'" />
|
||||
<u-cell title="验收部门" :value="item.CHECKDEPTNAME" />
|
||||
<u-cell title="验收人" :value="item.CHECKORNAME" />
|
||||
<u-cell title="验收时间" :value="item.CHECK_TIME" />
|
||||
<app-preview-image :files="item.cImgs" label="验收图片" />
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
</u-cell-group>
|
||||
<u-modal
|
||||
:show="videoDialog.visible"
|
||||
title="视频预览"
|
||||
:show-confirm-button="false"
|
||||
show-cancel-button
|
||||
cancel-text="关闭"
|
||||
@cancel="fnCloseVideoDialog"
|
||||
>
|
||||
<video
|
||||
v-if="videoDialog.src"
|
||||
:src="videoDialog.src"
|
||||
style="width: 100%; height: 200px; margin: 10px"
|
||||
autoplay
|
||||
/>
|
||||
</u-modal>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AppPreviewImage from '@/components/preview_image/index.vue'
|
||||
import dayjs from "dayjs";
|
||||
import {getHiddenInfo} from "@/api/api";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
AppPreviewImage,
|
||||
},
|
||||
props: {
|
||||
hiddenId: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
HIDDEN_SOURCE: {
|
||||
1: "隐患快报",
|
||||
2: "清单排查",
|
||||
3: "清单排查",
|
||||
4: "安全环保检查(监管端)",
|
||||
5: "安全环保检查(企业端)",
|
||||
6: "消防检查",
|
||||
},
|
||||
info: {},
|
||||
hiddenFindPeople: [],
|
||||
hImgs: [],
|
||||
hiddenVideo: [],
|
||||
hiddenExamineList: [],
|
||||
rImgs: [],
|
||||
rectificationPlanInfo: {},
|
||||
sImgs: [],
|
||||
checkList: [],
|
||||
videoDialog: {
|
||||
visible: false,
|
||||
src: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.fnGetData()
|
||||
},
|
||||
methods: {
|
||||
async fnGetData(){
|
||||
if (!this.hiddenId) return;
|
||||
const filePath = this.$filePath
|
||||
const resData = await getHiddenInfo({
|
||||
HIDDEN_ID: this.hiddenId,
|
||||
postMethod: 'application/json',
|
||||
});
|
||||
for (let i = 0; i < resData.hImgs.length; i++) {
|
||||
resData.hImgs[i].FILEPATH = filePath + resData.hImgs[i].FILEPATH;
|
||||
}
|
||||
for (let i = 0; i < resData.rImgs.length; i++) {
|
||||
resData.rImgs[i].FILEPATH = filePath + resData.rImgs[i].FILEPATH;
|
||||
}
|
||||
for (let i = 0; i < resData.sImgs.length; i++) {
|
||||
resData.sImgs[i].FILEPATH = filePath + resData.sImgs[i].FILEPATH;
|
||||
}
|
||||
for (let i = 0; i < resData.hiddenVideo.length; i++) {
|
||||
resData.hiddenVideo[i].FILEPATH =
|
||||
filePath + resData.hiddenVideo[i].FILEPATH;
|
||||
}
|
||||
for (let i = 0; i < resData.checkList.length; i++) {
|
||||
for (let j = 0; j < resData.checkList[i].cImgs.length; j++) {
|
||||
resData.checkList[i].cImgs[j].FILEPATH =
|
||||
filePath + resData.checkList[i].cImgs[j].FILEPATH;
|
||||
}
|
||||
}
|
||||
this.info = resData.pd;
|
||||
this.rectificationPlanInfo = resData.hs;
|
||||
this.hiddenFindPeople = resData.hiddenFindPeople;
|
||||
this.hImgs = resData.hImgs;
|
||||
this.rImgs = resData.rImgs;
|
||||
this.sImgs = resData.sImgs;
|
||||
this.checkList = resData.checkList;
|
||||
this.hiddenVideo = resData.hiddenVideo;
|
||||
this.hiddenExamineList = resData.hiddenExa;
|
||||
this.$emit("throw-basic-info", resData)
|
||||
},
|
||||
formatDate(date) {
|
||||
return dayjs(date).format('YYYY-MM-DD')
|
||||
},
|
||||
fnPreviewVideo(src) {
|
||||
this.videoDialog.visible = true;
|
||||
this.videoDialog.src = src;
|
||||
},
|
||||
fnCloseVideoDialog() {
|
||||
this.videoDialog.visible = false;
|
||||
this.videoDialog.src = '';
|
||||
},
|
||||
fnPreviewFile(src) {
|
||||
uni.downloadFile({
|
||||
url: this.$filePath + src,
|
||||
success: (res) => {
|
||||
uni.openDocument({
|
||||
filePath: res.tempFilePath,
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.ml-10:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,137 @@
|
|||
<template>
|
||||
<view>
|
||||
<u-form-item
|
||||
:label="label"
|
||||
:prop="prop"
|
||||
:required="required"
|
||||
@click="fnShowPicker"
|
||||
>
|
||||
<view class="select_content">
|
||||
<u-input
|
||||
:value="name || '请选择'"
|
||||
border="none"
|
||||
input-align="right"
|
||||
readonly
|
||||
/>
|
||||
<u-icon name="arrow-right"></u-icon>
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-picker
|
||||
:show="visible"
|
||||
:columns="[columns]"
|
||||
key-name="NAME"
|
||||
:default-index="[defaultIndex]"
|
||||
@cancel="visible = false"
|
||||
@confirm="fnConfirm"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getPersonnelList} from "@/api/api";
|
||||
|
||||
|
||||
export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: "人员",
|
||||
},
|
||||
prop: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
departmentId: {
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
corpInfoId: {
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
// 是否允许选择当前登录人
|
||||
isAllowSelectionCurrentPerson: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
columns:[],
|
||||
defaultIndex:0
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async fnGetData() {
|
||||
const resData = await getPersonnelList({
|
||||
DEPARTMENT_ID: this.departmentId,
|
||||
NOMAIN: "1",
|
||||
loading: false,
|
||||
postMethod: 'application/json',
|
||||
});
|
||||
this.columns = resData.userList;
|
||||
},
|
||||
fnShowPicker(){
|
||||
if (this.disabled) return;
|
||||
if (this.columns.length === 0) {
|
||||
uni.showToast({
|
||||
title: "暂无可选人员",
|
||||
icon: "none",
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.visible = true;
|
||||
this.defaultIndex = 0;
|
||||
for (let i = 0; i < this.columns.length; i++) {
|
||||
if (this.columns[i].USER_ID === this.id) {
|
||||
this.defaultIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
fnConfirm(event){
|
||||
if (!this.isAllowSelectionCurrentPerson) {
|
||||
if (event.value[0].USER_ID === this.$store.getters.getUserInfo.USER_ID) {
|
||||
uni.showToast({
|
||||
title: "不能选择当前登录人",
|
||||
icon: "none",
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.$emit("update:id", event.value[0].USER_ID);
|
||||
this.$emit("update:name", event.value[0].NAME);
|
||||
this.$emit("confirm", event.value[0]);
|
||||
this.visible = false;
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
departmentId(val) {
|
||||
if (val) this.fnGetData();
|
||||
else this.columns = [];
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,43 @@
|
|||
<template>
|
||||
<u-cell :title="label">
|
||||
<template #label>
|
||||
<view class="mt-10 flex-start">
|
||||
<view v-for="(item, index) in files" :key="index" class="ml-10">
|
||||
<u-image
|
||||
show-loading
|
||||
width="100rpx"
|
||||
height="100rpx"
|
||||
:src="item.FILEPATH"
|
||||
@click="fnPreviewImage(item.FILEPATH, files)"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</u-cell>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
files: {
|
||||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: "图片",
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
fnPreviewImage(src, srcArr) {
|
||||
const urls = srcArr.map((item) => item.FILEPATH);
|
||||
uni.previewImage({
|
||||
urls,
|
||||
current: src,
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,95 @@
|
|||
<template>
|
||||
<view>
|
||||
<u-form-item
|
||||
:label="label"
|
||||
:prop="prop"
|
||||
:required="required"
|
||||
:label-position="labelPosition"
|
||||
@click="fnShowPicker"
|
||||
>
|
||||
<view class="select_content">
|
||||
<u-input
|
||||
:value="value || '请选择'"
|
||||
border="none"
|
||||
input-align="right"
|
||||
readonly
|
||||
/>
|
||||
<u-icon name="arrow-right"></u-icon>
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-datetime-picker
|
||||
v-model="currentValue"
|
||||
:show="visible"
|
||||
:max-date="maxDate"
|
||||
:min-date="minDate"
|
||||
:mode="mode"
|
||||
@cancel="visible = false"
|
||||
@confirm="fnConfirm"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import dayjs from "dayjs";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: "时间",
|
||||
},
|
||||
prop: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
mode: {
|
||||
type: String,
|
||||
default: "datetime",
|
||||
},
|
||||
labelPosition: {
|
||||
type: String,
|
||||
default: "left",
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
maxDate: {
|
||||
type: Number,
|
||||
default: dayjs().add(10, "year").valueOf(),
|
||||
},
|
||||
minDate: {
|
||||
type: Number,
|
||||
default: dayjs().subtract(10, "year").valueOf(),
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
currentValue: this.value ? dayjs(this.value).valueOf() : new Date().getTime(),
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
fnShowPicker() {
|
||||
this.visible = true
|
||||
},
|
||||
fnConfirm({mode, value}) {
|
||||
if (mode === "datetime")
|
||||
this.$emit('input', dayjs(value).format("YYYY-MM-DD HH:mm"))
|
||||
else if (mode === "date")
|
||||
this.$emit('input', dayjs(value).format("YYYY-MM-DD"))
|
||||
else if (mode === "year-month")
|
||||
this.$emit('input', dayjs(value).format("YYYY-MM"))
|
||||
this.visible = false;
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,128 @@
|
|||
<template>
|
||||
<view>
|
||||
<u-form-item
|
||||
:label="label"
|
||||
:label-position="labelPosition"
|
||||
:prop="prop"
|
||||
:required="required"
|
||||
>
|
||||
<view class="mt-10" style="flex: 1">
|
||||
<u-upload
|
||||
:file-list="value"
|
||||
:multiple="multiple"
|
||||
:max-count="maxCount"
|
||||
width="76"
|
||||
height="76"
|
||||
:accept="accept"
|
||||
:disabled="disabled"
|
||||
:deletable="!deletable"
|
||||
:capture="capture"
|
||||
@afterRead="fnAfterRead"
|
||||
@delete="fnDelete"
|
||||
/>
|
||||
</view>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {setFileDelete} from "@/api/api";
|
||||
|
||||
export default {
|
||||
props: {
|
||||
value: {
|
||||
type: Array,
|
||||
required: true,
|
||||
default: () => [],
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: "图片",
|
||||
},
|
||||
labelPosition: {
|
||||
type: String,
|
||||
default: "top",
|
||||
},
|
||||
prop: {
|
||||
type: String,
|
||||
default: "",
|
||||
},
|
||||
required: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
multiple: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
maxCount: {
|
||||
type: Number,
|
||||
default: 4,
|
||||
},
|
||||
accept: {
|
||||
type: String,
|
||||
default: "image",
|
||||
},
|
||||
defineUpload: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
defineDelete: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
deletable: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
capture: {
|
||||
type: Array,
|
||||
default: () => ["album", "camera"],
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
fnAfterRead(event) {
|
||||
if (this.multiple) {
|
||||
if (this.defineUpload) {
|
||||
this.$emit('input', [...this.value, ...event.file])
|
||||
}
|
||||
} else {
|
||||
if (this.defineUpload) {
|
||||
this.$emit('input', [...this.value, event.file])
|
||||
}
|
||||
}
|
||||
this.$emit('after-read', event.file)
|
||||
},
|
||||
fnDelete(event) {
|
||||
uni.showModal({
|
||||
title: "提示",
|
||||
content: "是否删除该图片",
|
||||
success: async (res) => {
|
||||
if (res.confirm) {
|
||||
if (this.defineDelete) {
|
||||
if (event.file.IMGFILES_ID) {
|
||||
await setFileDelete({
|
||||
IMGFILES_ID: event.file.IMGFILES_ID,
|
||||
postMethod: 'application/json',
|
||||
});
|
||||
}
|
||||
const value = uni.$u.deepClone(this.value)
|
||||
value.splice(event.index, 1)
|
||||
this.$emit('input', value)
|
||||
} else {
|
||||
this.$emit('delete', event)
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
12
pages.json
12
pages.json
|
@ -423,6 +423,18 @@
|
|||
"style": {
|
||||
"navigationBarTitleText": "开始考试"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/hidden_rectification/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "隐患整改"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/hidden_rectification/rectification",
|
||||
"style": {
|
||||
"navigationBarTitleText": "隐患整改"
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<u-list @scrolltolower="scrolltolower" v-if="list.length > 0">
|
||||
<u-list-item v-for="(item, index) in list" :key="index">
|
||||
<view>
|
||||
<view class="flex-between main-title">
|
||||
<view class="u-line-1">{{ item.HIDDENDESCR || "暂无" }}</view>
|
||||
<view :class="HIDDEN_LEVEL_COlOR[item.HIDDENLEVEL]">
|
||||
{{ item.HIDDENLEVELNAME }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex-between mt-10 subtitle">
|
||||
<view>来源:{{ HIDDEN_SOURCE[item.SOURCE] }}</view>
|
||||
</view>
|
||||
<view class="flex-between subtitle mt-5">
|
||||
<view>隐患发现人:{{ item.findUserNames || "暂无" }}</view>
|
||||
<view>
|
||||
隐患发现时间:{{ item.DISCOVERYTIME ? formatDate(item.DISCOVERYTIME) : "暂无" }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex-between subtitle mt-5">
|
||||
<view>隐患确认人:{{ item.confirmUserName || "暂无" }}</view>
|
||||
<view>
|
||||
隐患确认时间:{{ item.CONFIRM_TIME ? formatDate(item.CONFIRM_TIME) : "暂无" }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex-between mt-10 subtitle">
|
||||
<view></view>
|
||||
<view class="flex-between">
|
||||
<u-button type="primary" text="整改" size="mini" @click="fnRectification(item.HIDDEN_ID)"></u-button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-list-item>
|
||||
</u-list>
|
||||
<empty v-else></empty>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getHiddenList} from "../../api/api";
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
totalPage: 0,
|
||||
list: [],
|
||||
HIDDEN_LEVEL_COlOR: {
|
||||
hiddenLevel1001: "yellow-bg",
|
||||
hiddenLevel1002: "yellow-bg",
|
||||
hiddenLevel1004: "yellow-bg",
|
||||
hiddenLevel2001: "red-bg",
|
||||
hiddenLevel2002: "red-bg",
|
||||
},
|
||||
HIDDEN_SOURCE: {
|
||||
1: "隐患快报",
|
||||
2: "清单排查",
|
||||
3: "清单排查",
|
||||
4: "安全环保检查(监管端)",
|
||||
5: "安全环保检查(企业端)",
|
||||
6: "消防检查",
|
||||
}
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.resetList()
|
||||
},
|
||||
methods: {
|
||||
async getData() {
|
||||
let resData = await getHiddenList({
|
||||
DISPOSESTATE: 2,
|
||||
isIndex: 2,
|
||||
USERDEPT: this.$store.getters.getUserInfo.DEPARTMENT_ID,
|
||||
SELFUSERID: this.$store.getters.getUserInfo.USER_ID,
|
||||
currentPage: this.currentPage,
|
||||
showCount: this.pageSize,
|
||||
totalResult: 0,
|
||||
postMethod: 'application/json',
|
||||
CORPINFO_ID:''
|
||||
});
|
||||
this.list = [...this.list, ...resData.varList];
|
||||
this.totalPage = resData.page.totalPage;
|
||||
},
|
||||
resetList() {
|
||||
this.pageSize = 10
|
||||
this.currentPage = 1
|
||||
this.list = []
|
||||
this.getData()
|
||||
},
|
||||
scrolltolower() {
|
||||
this.currentPage++;
|
||||
if (this.totalPage >= this.currentPage) this.getData();
|
||||
},
|
||||
formatDate(date) {
|
||||
return dayjs(date).format("YYYY-MM-DD")
|
||||
},
|
||||
fnRectification(HIDDEN_ID) {
|
||||
uni.$u.route({
|
||||
url: '/pages/hidden_rectification/rectification',
|
||||
params: {HIDDEN_ID,}
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.yellow-bg {
|
||||
color: #fbbd08;
|
||||
background-color: #fef2ce;
|
||||
padding: 10rpx 20rpx;
|
||||
font-size: 24rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.red-bg {
|
||||
color: #e54d42;
|
||||
background-color: #fadbd9;
|
||||
padding: 10rpx 20rpx;
|
||||
font-size: 24rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,507 @@
|
|||
<template>
|
||||
<view class="content">
|
||||
<view class="card">
|
||||
<app-hidden-view
|
||||
:hidden-id="hiddenId"
|
||||
@throw-basic-info="info = $event.pd"
|
||||
/>
|
||||
<view class="card">
|
||||
<u-form
|
||||
ref="formRef"
|
||||
label-position="left"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-width="auto"
|
||||
>
|
||||
<u-form-item label="是否正常整改" prop="IS_NORMAL" required>
|
||||
<u-radio-group v-model="form.IS_NORMAL" direction="horizontal">
|
||||
<u-radio name="1" label="是" value="1"/>
|
||||
<u-radio name="2" label="否" value="2"/>
|
||||
</u-radio-group>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<block v-if="form.IS_NORMAL === '2'">
|
||||
<u-form-item
|
||||
label="无法整改原因"
|
||||
label-position="top"
|
||||
prop="disposalPlan"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.disposalPlan"
|
||||
placeholder="请输入无法整改原因"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
</block>
|
||||
<block v-if="form.IS_NORMAL === '1'">
|
||||
<u-divider text-position="left" text="隐患整改"></u-divider>
|
||||
<u-form-item
|
||||
label="隐患整改详细描述"
|
||||
label-position="top"
|
||||
prop="RECTIFYDESCR"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.RECTIFYDESCR"
|
||||
placeholder="请输入隐患整改详细描述"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<app-time
|
||||
v-model="form.RECTIFICATIONTIME"
|
||||
prop="RECTIFICATIONTIME"
|
||||
mode="date"
|
||||
label="整改日期"
|
||||
/>
|
||||
<u-form-item label="投入资金(元)" prop="INVEST_FUNDS" required>
|
||||
<u-input
|
||||
v-model="form.INVEST_FUNDS"
|
||||
placeholder="请输入投入资金"
|
||||
border="none"
|
||||
type="number"
|
||||
input-align="right"
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<app-upload
|
||||
v-model="form.afterRectificationFile"
|
||||
label="整改后照片"
|
||||
prop="afterRectificationFile"
|
||||
/>
|
||||
<view>
|
||||
<u-form-item label="验收人员">
|
||||
<u-button
|
||||
custom-style="width: 100rpx;margin-right:0"
|
||||
type="primary"
|
||||
size="mini"
|
||||
text="添加"
|
||||
@click="fnAddAcceptanceList"
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<view
|
||||
v-for="(item, index) in acceptanceList"
|
||||
:key="item.id"
|
||||
style="
|
||||
position: relative;
|
||||
border: 1px dashed #ccc;
|
||||
padding: 20rpx 20rpx 20rpx 40rpx;
|
||||
"
|
||||
class="mt-10"
|
||||
>
|
||||
<app-department
|
||||
:id.sync="item.DEPARTMENT_ID"
|
||||
:name.sync="item.DEPARTMENT_NAME"
|
||||
:form.sync="acceptanceList[index]"
|
||||
clear-key="USER_NAME,USER_ID"
|
||||
label="验收部门"
|
||||
/>
|
||||
<app-personnel
|
||||
:id.sync="item.USER_ID"
|
||||
:name.sync="item.USER_NAME"
|
||||
:department-id="item.DEPARTMENT_ID"
|
||||
:is-allow-selection-current-person="false"
|
||||
label="验收人"
|
||||
/>
|
||||
<u-icon
|
||||
v-if="index !== 0"
|
||||
name="close-circle-fill"
|
||||
color="#ff2929"
|
||||
size="20"
|
||||
custom-style="position: absolute;right: -20rpx;top: -20rpx"
|
||||
@click="acceptanceList.splice(index, 1)"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<u-form-item label="是否有整改方案" prop="HAVESCHEME" required>
|
||||
<u-radio-group v-model="form.HAVESCHEME" direction="horizontal">
|
||||
<u-radio name="1" label="是"/>
|
||||
<u-radio name="0" label="否"/>
|
||||
</u-radio-group>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<block v-if="form.HAVESCHEME === '1'">
|
||||
<u-cell-group :border="false">
|
||||
<u-cell title="排查日期" :value="info.CREATTIME"/>
|
||||
<u-cell title="隐患清单" :value="info.LIST_NAME"/>
|
||||
</u-cell-group>
|
||||
<u-form-item
|
||||
label="治理标准"
|
||||
label-position="top"
|
||||
prop="GOVERNSTANDARDS"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.GOVERNSTANDARDS"
|
||||
placeholder="请输入治理标准"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-form-item
|
||||
label="治理方法"
|
||||
label-position="top"
|
||||
prop="GOVERNMETHOD"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.GOVERNMETHOD"
|
||||
placeholder="请输入治理方法"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-form-item
|
||||
label="经费落实"
|
||||
label-position="top"
|
||||
prop="EXPENDITURE"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.EXPENDITURE"
|
||||
placeholder="请输入经费落实"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-form-item
|
||||
label="负责人员"
|
||||
label-position="top"
|
||||
prop="PRINCIPAL"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.PRINCIPAL"
|
||||
placeholder="请输入负责人员"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-form-item
|
||||
label="工时安排"
|
||||
label-position="top"
|
||||
prop="PROGRAMMING"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.PROGRAMMING"
|
||||
placeholder="请输入工时安排"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-form-item
|
||||
label="时限要求"
|
||||
label-position="top"
|
||||
prop="TIMELIMITFOR"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.TIMELIMITFOR"
|
||||
placeholder="请输入时限要求"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-form-item
|
||||
label="工作要求"
|
||||
label-position="top"
|
||||
prop="JOBREQUIREMENT"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.JOBREQUIREMENT"
|
||||
placeholder="请输入工作要求"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<u-form-item
|
||||
label="其它事项"
|
||||
label-position="top"
|
||||
prop="OTHERBUSINESS"
|
||||
required
|
||||
>
|
||||
<u-textarea
|
||||
v-model="form.OTHERBUSINESS"
|
||||
placeholder="请输入其它事项"
|
||||
border="none"
|
||||
auto-height
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-line/>
|
||||
<app-upload
|
||||
v-model="form.programmeFile"
|
||||
label="方案照片"
|
||||
prop="programmeFile"
|
||||
/>
|
||||
</block>
|
||||
</block>
|
||||
<view class="mt-10">
|
||||
<u-button
|
||||
type="primary"
|
||||
shape="circle"
|
||||
text="提交"
|
||||
:throttle-time="1000"
|
||||
@click="fnSubmit"
|
||||
/>
|
||||
</view>
|
||||
</u-form>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AppHiddenView from '@/components/hidden_view/index.vue'
|
||||
import AppTime from "@/components/time/index.vue";
|
||||
import AppUpload from "@/components/upload/index.vue";
|
||||
import AppDepartment from "@/components/department/index.vue";
|
||||
import AppPersonnel from "@/components/personnel/index.vue";
|
||||
import {fileUpload, setHiddenNuRectificationSubmit, setHiddenRectificationSubmit} from "@/api/api";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
AppHiddenView,
|
||||
AppTime,
|
||||
AppUpload,
|
||||
AppDepartment,
|
||||
AppPersonnel,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
hiddenId: '',
|
||||
info: {},
|
||||
form: {
|
||||
IS_NORMAL: "1",
|
||||
disposalPlan: "",
|
||||
RECTIFYDESCR: "",
|
||||
RECTIFICATIONTIME: "",
|
||||
INVEST_FUNDS: "",
|
||||
afterRectificationFile: [],
|
||||
HAVESCHEME: "0",
|
||||
GOVERNSTANDARDS: "",
|
||||
GOVERNMETHOD: "",
|
||||
EXPENDITURE: "",
|
||||
PRINCIPAL: "",
|
||||
PROGRAMMING: "",
|
||||
TIMELIMITFOR: "",
|
||||
JOBREQUIREMENT: "",
|
||||
OTHERBUSINESS: "",
|
||||
programmeFile: [],
|
||||
},
|
||||
rules: {
|
||||
IS_NORMAL: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请选择是否正常整改",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
disposalPlan: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入无法整改原因",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
RECTIFYDESCR: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入隐患整改详细描述",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
RECTIFICATIONTIME: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请选择整改日期",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
INVEST_FUNDS: {
|
||||
type: "number",
|
||||
required: true,
|
||||
message: "请输入投入资金",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
afterRectificationFile: {
|
||||
type: "array",
|
||||
required: true,
|
||||
message: "请上传整改后照片",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
HAVESCHEME: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请选择是否有整改方案",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
GOVERNSTANDARDS: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入治理标准",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
GOVERNMETHOD: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入治理方法",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
EXPENDITURE: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入经费落实",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
PRINCIPAL: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入负责人员",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
PROGRAMMING: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入工时安排",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
TIMELIMITFOR: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入时限要求",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
JOBREQUIREMENT: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入工作要求",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
OTHERBUSINESS: {
|
||||
type: "string",
|
||||
required: true,
|
||||
message: "请输入其它事项",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
programmeFile: {
|
||||
type: "array",
|
||||
required: true,
|
||||
message: "请上传方案照片",
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
},
|
||||
acceptanceList: []
|
||||
}
|
||||
},
|
||||
onLoad(query) {
|
||||
this.hiddenId = query.HIDDEN_ID
|
||||
this.fnAddAcceptanceList()
|
||||
},
|
||||
methods: {
|
||||
fnAddAcceptanceList() {
|
||||
this.acceptanceList.push({
|
||||
DEPARTMENT_NAME: "",
|
||||
DEPARTMENT_ID: "",
|
||||
USER_NAME: "",
|
||||
USER_ID: "",
|
||||
id: uni.$u.guid(),
|
||||
});
|
||||
},
|
||||
async fnSubmit() {
|
||||
const isValidate = await this.$refs.formRef.validate()
|
||||
if (!isValidate) return;
|
||||
if (this.form.IS_NORMAL === 1 || this.form.IS_NORMAL === "1") {
|
||||
for (let i = 0; i < this.acceptanceList.length; i++) {
|
||||
if (
|
||||
!this.acceptanceList[i].DEPARTMENT_NAME ||
|
||||
!this.acceptanceList[i].USER_NAME
|
||||
) {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "请选择部门人员",
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
await setHiddenRectificationSubmit({
|
||||
HIDDEN_ID: this.hiddenId,
|
||||
...this.form,
|
||||
SCREENINGDATE: this.info.CREATTIME,
|
||||
LISTNAME: this.info.LIST_NAME,
|
||||
OTHER: JSON.stringify(this.acceptanceList),
|
||||
});
|
||||
for (let i = 0; i < this.form.afterRectificationFile.length; i++) {
|
||||
await this.fnUploadFile(
|
||||
this.form.afterRectificationFile[i].url,
|
||||
this.hiddenId,
|
||||
4
|
||||
);
|
||||
}
|
||||
for (let i = 0; i < this.form.programmeFile.length; i++) {
|
||||
await this.fnUploadFile(this.form.programmeFile[i].url, this.hiddenId, 8);
|
||||
}
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "提交成功",
|
||||
});
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1000);
|
||||
} else {
|
||||
if (!this.form.disposalPlan) {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "请输入无法整改原因",
|
||||
});
|
||||
}
|
||||
const data = await setHiddenNuRectificationSubmit({
|
||||
disposalPlan: this.form.disposalPlan,
|
||||
HIDDEN_ID: this.hiddenId,
|
||||
USER_ID: this.$store.getters.getUserInfo.USER_ID,
|
||||
USERNAME: this.$store.getters.getUserInfo.USERNAME,
|
||||
postMethod: 'application/json',
|
||||
});
|
||||
if (data.result === "success") {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: data.msg,
|
||||
});
|
||||
setTimeout(() => {
|
||||
uni.navigateBack();
|
||||
}, 1000);
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: "系统异常:" + data.msg,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
async fnUploadFile(filePath, FOREIGN_KEY, TYPE) {
|
||||
await fileUpload({
|
||||
filePath,
|
||||
name: "file",
|
||||
formData: {
|
||||
foreignKey: FOREIGN_KEY,
|
||||
corpInfoId: this.$store.getters.getUserInfo.CORPINFO_ID,
|
||||
type: TYPE,
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
|
@ -89,6 +89,11 @@
|
|||
img: require('../../static/icon-apps/app_icons8.png'),
|
||||
title: '培训管理',
|
||||
url: '/pages/train_management/index'
|
||||
},
|
||||
{
|
||||
img: require('../../static/icon-apps/app_icons9.png'),
|
||||
title: '隐患整改',
|
||||
url: '/pages/hidden_rectification/index'
|
||||
}
|
||||
],
|
||||
classInfo: null,
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 5.6 KiB |
|
@ -96,6 +96,12 @@
|
|||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.flex-start {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.flex-warp {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
@ -128,3 +134,28 @@
|
|||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.u-form-item__body__right__content__slot {
|
||||
position: relative;
|
||||
|
||||
.u-radio-group--row {
|
||||
justify-content: flex-end;
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.flex-start {
|
||||
.u-radio-group--row {
|
||||
justify-content: flex-start;
|
||||
}
|
||||
}
|
||||
|
||||
.select_content {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.u-form-item__body__right__message {
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue