485 lines
13 KiB
Vue
485 lines
13 KiB
Vue
|
|
<template>
|
|||
|
|
<view class="container">
|
|||
|
|
<view class="tips_text">
|
|||
|
|
严禁在本互联网非涉密平台处理、传输国家秘密和工作秘密,请确认扫描、传输的文件资料不涉及国家秘密和工作秘密
|
|||
|
|
</view>
|
|||
|
|
<u--form
|
|||
|
|
ref="formRef"
|
|||
|
|
label-position="left"
|
|||
|
|
:model="form"
|
|||
|
|
:rules="rules"
|
|||
|
|
label-width="auto"
|
|||
|
|
>
|
|||
|
|
|
|||
|
|
<u-form-item
|
|||
|
|
label="隐患图片"
|
|||
|
|
prop="hiddenImgs"
|
|||
|
|
border-bottom
|
|||
|
|
required
|
|||
|
|
label-position="top"
|
|||
|
|
>
|
|||
|
|
<u-upload
|
|||
|
|
style="margin-top: 20upx"
|
|||
|
|
:file-list="form.hiddenImgs"
|
|||
|
|
multiple
|
|||
|
|
:max-count="max_count"
|
|||
|
|
:key = "uploadKey"
|
|||
|
|
@afterRead="fnHiddenImgsAfterRead"
|
|||
|
|
@delete="fnHiddenImgsDelete"
|
|||
|
|
/>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
<view class="ai_btn">
|
|||
|
|
<view class="ai_btn_con" @click="goIdentifyImg">
|
|||
|
|
<image src="../../static/png/ai_img.png" style="width: 16px;height: 16px"/>
|
|||
|
|
<view class="text" style="margin-left: 5px;"> AI隐患识别与处置</view>
|
|||
|
|
</view>
|
|||
|
|
</view>
|
|||
|
|
|
|||
|
|
<block v-if="form.INSPECT_CONTENT">
|
|||
|
|
<u-form-item
|
|||
|
|
label="帮扶内容"
|
|||
|
|
prop="INSPECT_CONTENT"
|
|||
|
|
border-bottom
|
|||
|
|
required
|
|||
|
|
label-position="top"
|
|||
|
|
>
|
|||
|
|
<u--textarea
|
|||
|
|
v-model="form.INSPECT_CONTENT"
|
|||
|
|
disabled
|
|||
|
|
placeholder="请输入帮扶内容"
|
|||
|
|
border="none"
|
|||
|
|
auto-height
|
|||
|
|
maxlength="-1"
|
|||
|
|
/>
|
|||
|
|
</u-form-item>
|
|||
|
|
</block>
|
|||
|
|
<u-form-item
|
|||
|
|
label="隐患描述"
|
|||
|
|
prop="HIDDENDESCR"
|
|||
|
|
border-bottom
|
|||
|
|
required
|
|||
|
|
label-position="top"
|
|||
|
|
>
|
|||
|
|
<u--textarea
|
|||
|
|
v-model="form.HIDDENDESCR"
|
|||
|
|
placeholder="请输入隐患描述"
|
|||
|
|
border="none"
|
|||
|
|
maxlength="200"
|
|||
|
|
auto-height
|
|||
|
|
/>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item v-show="aiFlag"
|
|||
|
|
label="法律依据"
|
|||
|
|
prop="LEGALBASIS"
|
|||
|
|
border-bottom
|
|||
|
|
required
|
|||
|
|
label-position="top"
|
|||
|
|
>
|
|||
|
|
<u--textarea
|
|||
|
|
v-model="form.LEGALBASIS"
|
|||
|
|
placeholder="请输入法律依据"
|
|||
|
|
border="none"
|
|||
|
|
disabled
|
|||
|
|
auto-height
|
|||
|
|
/>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="隐患部位" prop="HIDDENPART" border-bottom required>
|
|||
|
|
<u--input
|
|||
|
|
v-model="form.HIDDENPART"
|
|||
|
|
border="none"
|
|||
|
|
input-align="right"
|
|||
|
|
placeholder="请输入隐患部位"
|
|||
|
|
/>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item
|
|||
|
|
label="隐患级别"
|
|||
|
|
prop="HIDDENLEVEL_NAME"
|
|||
|
|
border-bottom
|
|||
|
|
required
|
|||
|
|
@click="fnHiddenLevelPickerShow"
|
|||
|
|
>
|
|||
|
|
<u--input
|
|||
|
|
:value="form.HIDDENLEVEL_NAME || '请选择'"
|
|||
|
|
readonly
|
|||
|
|
border="none"
|
|||
|
|
input-align="right"
|
|||
|
|
/>
|
|||
|
|
<u-icon name="arrow-right" color="#999999"></u-icon>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item label="整改意见" prop="DISPOSE" border-bottom required label-position="top">
|
|||
|
|
<u--textarea
|
|||
|
|
v-model="form.DISPOSE"
|
|||
|
|
placeholder="请输入整改意见"
|
|||
|
|
border="none"
|
|||
|
|
maxlength="200"
|
|||
|
|
auto-height
|
|||
|
|
/>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item
|
|||
|
|
label="发现时间"
|
|||
|
|
prop="DISCOVER_TIME"
|
|||
|
|
border-bottom
|
|||
|
|
required
|
|||
|
|
@click="fnDiscoverTimeShowChange"
|
|||
|
|
>
|
|||
|
|
<u--input
|
|||
|
|
:value="form.DISCOVER_TIME || '请选择'"
|
|||
|
|
readonly
|
|||
|
|
border="none"
|
|||
|
|
input-align="right"
|
|||
|
|
/>
|
|||
|
|
<u-icon name="arrow-right" color="#999999"></u-icon>
|
|||
|
|
</u-form-item>
|
|||
|
|
<u-form-item
|
|||
|
|
label="整改截止时间"
|
|||
|
|
prop="RECTIFY_DEADLINE"
|
|||
|
|
border-bottom
|
|||
|
|
required
|
|||
|
|
@click="fnRectifyDeadlineShowChange"
|
|||
|
|
>
|
|||
|
|
<u--input
|
|||
|
|
:value="form.RECTIFY_DEADLINE || '请选择'"
|
|||
|
|
readonly
|
|||
|
|
border="none"
|
|||
|
|
input-align="right"
|
|||
|
|
/>
|
|||
|
|
<u-icon name="arrow-right" color="#999999"></u-icon>
|
|||
|
|
</u-form-item>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<u-button type="primary" text="保存" @click="fnSubmit" />
|
|||
|
|
</u--form>
|
|||
|
|
<u-picker
|
|||
|
|
:show="hiddenLevelPickerShow"
|
|||
|
|
:columns="hiddenLevelList"
|
|||
|
|
key-name="NAME"
|
|||
|
|
@cancel="fnHiddenLevelPickerShow"
|
|||
|
|
@confirm="fnHiddenLevelPickerConfirm"
|
|||
|
|
/>
|
|||
|
|
<u-datetime-picker
|
|||
|
|
v-model="discoverTimeCurrent"
|
|||
|
|
:show="discoverTimeShow"
|
|||
|
|
mode="datetime"
|
|||
|
|
@cancel="fnDiscoverTimeShowChange"
|
|||
|
|
@confirm="fnInspectTimeConfirm"
|
|||
|
|
/>
|
|||
|
|
<u-datetime-picker
|
|||
|
|
v-model="rectifyDeadlineCurrent"
|
|||
|
|
:show="rectifyDeadlineShow"
|
|||
|
|
mode="date"
|
|||
|
|
@cancel="fnRectifyDeadlineShowChange"
|
|||
|
|
@confirm="fnRectifyDeadlineConfirm"
|
|||
|
|
/>
|
|||
|
|
</view>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script>
|
|||
|
|
import { getHiddenLevel,setSupervisionInspectionAIImgAdd } from "@/api";
|
|||
|
|
import debounce from "@/utils/debounce";
|
|||
|
|
import store from "../../store/index";
|
|||
|
|
import {decryptAes} from "../../utils/aesUtil";
|
|||
|
|
export default {
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
type: "",
|
|||
|
|
deleteKey: false,
|
|||
|
|
index: 0,
|
|||
|
|
deleteImgsId: [],
|
|||
|
|
aiFlag: false,
|
|||
|
|
IDENTIFY_ID: '',
|
|||
|
|
buttonloading: false,
|
|||
|
|
max_count: 4,
|
|||
|
|
uploadKey: Math.random(),
|
|||
|
|
getUserInfo : store.getters.getUserInfo,
|
|||
|
|
form: {
|
|||
|
|
CONTENT_ID: "",
|
|||
|
|
IDENTIFY_ID: "",
|
|||
|
|
INSPECT_CONTENT: "",
|
|||
|
|
HIDDENDESCR: "",
|
|||
|
|
HIDDENPART: "",
|
|||
|
|
HIDDENLEVEL: "",
|
|||
|
|
LEGALBASIS: "",
|
|||
|
|
HIDDENLEVEL_NAME: "",
|
|||
|
|
DISPOSE: "",
|
|||
|
|
DISCOVER_TIME: "",
|
|||
|
|
RECTIFY_DEADLINE: "",
|
|||
|
|
hiddenImgs: [],
|
|||
|
|
},
|
|||
|
|
rules: {
|
|||
|
|
INSPECT_CONTENT: {
|
|||
|
|
type: "string",
|
|||
|
|
required: true,
|
|||
|
|
message: "请输入帮扶内容",
|
|||
|
|
trigger: ["blur", "change"],
|
|||
|
|
},
|
|||
|
|
HIDDENDESCR: {
|
|||
|
|
type: "string",
|
|||
|
|
required: true,
|
|||
|
|
message: "请输入隐患描述",
|
|||
|
|
trigger: ["blur", "change"],
|
|||
|
|
},
|
|||
|
|
HIDDENPART: {
|
|||
|
|
type: "string",
|
|||
|
|
required: true,
|
|||
|
|
message: "请输入隐患部位",
|
|||
|
|
trigger: ["blur", "change"],
|
|||
|
|
},
|
|||
|
|
HIDDENLEVEL_NAME: {
|
|||
|
|
type: "string",
|
|||
|
|
required: true,
|
|||
|
|
message: "请选择隐患级别",
|
|||
|
|
trigger: ["change"],
|
|||
|
|
},
|
|||
|
|
DISPOSE: {
|
|||
|
|
type: "string",
|
|||
|
|
required: true,
|
|||
|
|
message: "请输入整改意见",
|
|||
|
|
trigger: ["blur", "change"],
|
|||
|
|
},
|
|||
|
|
DISCOVER_TIME: {
|
|||
|
|
type: "string",
|
|||
|
|
required: true,
|
|||
|
|
message: "请选择发现时间",
|
|||
|
|
trigger: ["change"],
|
|||
|
|
},
|
|||
|
|
RECTIFY_DEADLINE: {
|
|||
|
|
type: "string",
|
|||
|
|
required: true,
|
|||
|
|
message: "请选择整改截止时间",
|
|||
|
|
trigger: ["change"],
|
|||
|
|
},
|
|||
|
|
hiddenImgs: {
|
|||
|
|
type: "array",
|
|||
|
|
required: true,
|
|||
|
|
message: "请上传现场照片",
|
|||
|
|
trigger: ["change"],
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
hiddenLevelPickerShow: false,
|
|||
|
|
hiddenLevelList: [],
|
|||
|
|
discoverTimeShow: false,
|
|||
|
|
discoverTimeCurrent: Number(new Date()),
|
|||
|
|
rectifyDeadlineShow: false,
|
|||
|
|
rectifyDeadlineCurrent: Number(new Date()),
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
onLoad(query) {
|
|||
|
|
this.form.SUPERVISE_INSPECT_CONTENT_ID = undefined;
|
|||
|
|
if (
|
|||
|
|
query.SUPERVISE_INSPECT_CONTENT_ID &&
|
|||
|
|
query.SUPERVISE_INSPECT_CONTENT_ID !== "undefined" &&
|
|||
|
|
query.SUPERVISE_INSPECT_CONTENT_ID !== "null"
|
|||
|
|
) {
|
|||
|
|
this.form.SUPERVISE_INSPECT_CONTENT_ID =
|
|||
|
|
query.SUPERVISE_INSPECT_CONTENT_ID;
|
|||
|
|
}
|
|||
|
|
if (
|
|||
|
|
query.HIDDENDESCR &&
|
|||
|
|
query.HIDDENDESCR !== "undefined" &&
|
|||
|
|
query.HIDDENDESCR !== "null"
|
|||
|
|
) {
|
|||
|
|
this.form.HIDDENDESCR = query.HIDDENDESCR;
|
|||
|
|
}
|
|||
|
|
if (
|
|||
|
|
query.DISPOSE &&
|
|||
|
|
query.DISPOSE !== "undefined" &&
|
|||
|
|
query.DISPOSE !== "null"
|
|||
|
|
) {
|
|||
|
|
this.form.DISPOSE = query.DISPOSE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this.type = query.type;
|
|||
|
|
this.index = query.index;
|
|||
|
|
this.form.CONTENT_ID = query.CONTENT_ID;
|
|||
|
|
this.form.INSPECT_CONTENT = query.INSPECT_CONTENT;
|
|||
|
|
this.fnGetHiddenLevel();
|
|||
|
|
this.getOpenerEventChannel().on("hiddenEdit", (event) => {
|
|||
|
|
this.form = event.form;
|
|||
|
|
this.form.AI_FLAG = event.form.AI_FLAG
|
|||
|
|
if (query.type === "edit" && this.form.AI_FLAG === 1){
|
|||
|
|
this.aiFlag = true
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
if (query.type === "edit"){
|
|||
|
|
this.deleteKey = true
|
|||
|
|
uni.setNavigationBarTitle({
|
|||
|
|
title: "修改隐患", // 设置页面标题为"新的标题"
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
async fnGetHiddenLevel() {
|
|||
|
|
const resData = await getHiddenLevel();
|
|||
|
|
this.hiddenLevelList.push(resData.list);
|
|||
|
|
},
|
|||
|
|
fnHiddenLevelPickerShow() {
|
|||
|
|
this.hiddenLevelPickerShow = !this.hiddenLevelPickerShow;
|
|||
|
|
},
|
|||
|
|
fnHiddenLevelPickerConfirm(event) {
|
|||
|
|
this.form.HIDDENLEVEL_NAME = event.value[0].NAME;
|
|||
|
|
this.form.HIDDENLEVEL = event.value[0].BIANMA;
|
|||
|
|
this.fnHiddenLevelPickerShow();
|
|||
|
|
},
|
|||
|
|
fnDiscoverTimeShowChange() {
|
|||
|
|
this.discoverTimeShow = !this.discoverTimeShow;
|
|||
|
|
},
|
|||
|
|
fnInspectTimeConfirm(event) {
|
|||
|
|
this.form.DISCOVER_TIME = uni.$u.timeFormat(
|
|||
|
|
event.value,
|
|||
|
|
"yyyy-mm-dd hh:MM",
|
|||
|
|
);
|
|||
|
|
this.fnDiscoverTimeShowChange();
|
|||
|
|
},
|
|||
|
|
fnRectifyDeadlineShowChange() {
|
|||
|
|
this.rectifyDeadlineShow = !this.rectifyDeadlineShow;
|
|||
|
|
},
|
|||
|
|
fnRectifyDeadlineConfirm(event) {
|
|||
|
|
this.form.RECTIFY_DEADLINE = uni.$u.timeFormat(event.value, "yyyy-mm-dd");
|
|||
|
|
this.fnRectifyDeadlineShowChange();
|
|||
|
|
},
|
|||
|
|
fnHiddenImgsAfterRead(event) {
|
|||
|
|
this.form.hiddenImgs.push(...event.file);
|
|||
|
|
},
|
|||
|
|
fnHiddenImgsDelete(event) {
|
|||
|
|
this.max_count = 4
|
|||
|
|
this.deleteKey = false
|
|||
|
|
this.uploadKey = Math.random()
|
|||
|
|
if (event.file.SUPERVISE_INSPECT_FILES_ID) {
|
|||
|
|
this.deleteImgsId.push(event.file.SUPERVISE_INSPECT_FILES_ID);
|
|||
|
|
}
|
|||
|
|
if (this.aiFlag) {
|
|||
|
|
this.clearIdentifyInfo()
|
|||
|
|
}
|
|||
|
|
this.form.hiddenImgs.splice(event.index, 1);
|
|||
|
|
},
|
|||
|
|
fnSubmit() {
|
|||
|
|
debounce(async () => {
|
|||
|
|
this.$refs.formRef
|
|||
|
|
.validate()
|
|||
|
|
.then(async () => {
|
|||
|
|
this.getOpenerEventChannel().emit("hiddenAdd", {
|
|||
|
|
form: {
|
|||
|
|
...this.form,
|
|||
|
|
id: uni.$u.guid(),
|
|||
|
|
HIDDEN_TYPE: this.form.INSPECT_CONTENT ? "1" : "2",
|
|||
|
|
AI_FLAG: this.aiFlag ? 1 : 0,
|
|||
|
|
},
|
|||
|
|
type: this.type,
|
|||
|
|
index: this.index,
|
|||
|
|
deleteImgsId: this.deleteImgsId,
|
|||
|
|
});
|
|||
|
|
uni.$u.toast("保存成功");
|
|||
|
|
uni.navigateBack();
|
|||
|
|
})
|
|||
|
|
.catch(() => {
|
|||
|
|
uni.$u.toast("请填写完整信息");
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
},
|
|||
|
|
async goIdentifyImg() {
|
|||
|
|
if (this.form.hiddenImgs.length === 0) {
|
|||
|
|
uni.showToast({
|
|||
|
|
icon: 'none',
|
|||
|
|
title: '请先上传图片',
|
|||
|
|
duration: 2000
|
|||
|
|
});
|
|||
|
|
return;
|
|||
|
|
} else if (this.form.hiddenImgs.length > 1) {
|
|||
|
|
uni.showToast({
|
|||
|
|
icon: 'none',
|
|||
|
|
title: '识别暂时只能上传一张图片',
|
|||
|
|
duration: 2000
|
|||
|
|
});
|
|||
|
|
} else {
|
|||
|
|
if(this.deleteKey){
|
|||
|
|
uni.showToast({
|
|||
|
|
icon: 'none',
|
|||
|
|
title: '请删除图片重新上传图片后,再次进行图片识别',
|
|||
|
|
duration: 2000
|
|||
|
|
});
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
var _this = this;
|
|||
|
|
uni.showLoading({
|
|||
|
|
title: '识别中...'
|
|||
|
|
})
|
|||
|
|
const files = [];
|
|||
|
|
files.push({
|
|||
|
|
uri: this.form.hiddenImgs[0].url,
|
|||
|
|
name: "imgsList",
|
|||
|
|
});
|
|||
|
|
let resData = await setSupervisionInspectionAIImgAdd({
|
|||
|
|
loading: false,
|
|||
|
|
files,
|
|||
|
|
formData: {
|
|||
|
|
USER_ID: this.getUserInfo.USER_ID,
|
|||
|
|
DEPARTMENT_ID: this.getUserInfo.DEPARTMENT_ID,
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
_this.aiFlag = true
|
|||
|
|
if ("success" == resData.result) {
|
|||
|
|
const aiHiddens = resData.aiHiddens;
|
|||
|
|
let hiddenDescr = ""
|
|||
|
|
let rectificationSuggestions = ""
|
|||
|
|
let legalBasis = ""
|
|||
|
|
aiHiddens.forEach((item) => {
|
|||
|
|
hiddenDescr += JSON.parse(item).hiddenDescr + ";"
|
|||
|
|
rectificationSuggestions += JSON.parse(item).rectificationSuggestions + ";"
|
|||
|
|
legalBasis += JSON.parse(item).legalBasis + ";"
|
|||
|
|
})
|
|||
|
|
_this.form.HIDDENLEVEL = 'hiddenLevel0001'
|
|||
|
|
_this.form.HIDDENLEVEL_NAME = '一般隐患'
|
|||
|
|
_this.form.IDENTIFY_ID = resData.IDENTIFY_ID
|
|||
|
|
_this.form.HIDDENDESCR = hiddenDescr
|
|||
|
|
_this.form.LEGALBASIS = legalBasis
|
|||
|
|
_this.form.DISPOSE = rectificationSuggestions
|
|||
|
|
_this.max_count = 1
|
|||
|
|
_this.uploadKey = Math.random()
|
|||
|
|
} else {
|
|||
|
|
uni.showModal({
|
|||
|
|
content: resData.exception,
|
|||
|
|
showCancel: false
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
uni.hideLoading();
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
clearIdentifyInfo() {
|
|||
|
|
this.aiFlag = false
|
|||
|
|
this.form.HIDDENLEVEL = ''
|
|||
|
|
this.form.HIDDENLEVEL_NAME = ''
|
|||
|
|
this.form.HIDDENDESCR = ""
|
|||
|
|
this.form.LEGALBASIS = ""
|
|||
|
|
this.form.DISPOSE = ""
|
|||
|
|
this.form.IDENTIFY_ID = ""
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped lang="scss">
|
|||
|
|
.container {
|
|||
|
|
padding: 20upx;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.ai_btn {
|
|||
|
|
width: 100%;
|
|||
|
|
box-sizing: border-box;
|
|||
|
|
background: #FFFFFF;
|
|||
|
|
margin-bottom: 10px;
|
|||
|
|
padding: 10px;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.ai_btn .ai_btn_con {
|
|||
|
|
width: 45%;
|
|||
|
|
background: #dfeaff;
|
|||
|
|
border-radius: 20px;
|
|||
|
|
display: flex;
|
|||
|
|
align-items: center;
|
|||
|
|
height: 40px;
|
|||
|
|
padding: 0 10px;
|
|||
|
|
}
|
|||
|
|
</style>
|