jszjdy-prevention-app/pages/application/hidden-trouble-investigation/hidden-trouble-app/exclude-form.vue

1205 lines
36 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view :class="isUps == true ? 'prevent' : ''">
<view class="tips_text">
严禁在本互联网非涉密平台处理传输国家秘密和工作秘密请确认扫描传输的文件资料不涉及国家秘密和工作秘密
</view>
<cu-custom bgColor="bg-gradual-blueness" :isBack="true">
<block slot="backText">返回</block>
<block slot="content">隐患登记</block>
</cu-custom>
<scroll-view scroll-y="false" >
<view class="form" style="padding-bottom: 50upx">
<view class="cu-form-textarea">
<view class="cu-form-title">检查内容</view>
<view class="cu-form-p" style="padding: 0;">
{{pd.CHECK_CONTENT}}
</view>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action" style="font-size: 28upx; font-weight: bold; color: #000;">
隐患照片
</view>
<view class="action">
{{imgList.length}}/4
</view>
</view>
<view class="cu-form-group">
<view class="grid col-4 grid-square flex-sub">
<view class="bg-img" v-for="(item,index) in imgList" :key="index" @tap="ViewImage" data-type="0"
:data-url="imgList[index].filePath">
<image :src="imgList[index].filePath" mode="aspectFill"></image>
<view class="cu-tag bg-red" @tap.stop="DelImg" data-type="0" :data-index="index">
<text class='cuIcon-close'></text>
</view>
</view>
<view class="solids" @tap="ChooseImage(0)" v-if="imgList.length<4">
<text class='cuIcon-cameraadd'></text>
</view>
</view>
</view>
<view class="ai_btn ">
<view class="ai_btn_con" @click="$noMultipleClicks(goIdentifyImg)">
<image src="../../../../static/ai_img.png" style="width: 16px;height: 16px"/>
<view class="text" style="margin-left: 5px;"> AI隐患识别与处置</view>
</view>
</view>
<view class="cu-bar bg-white">
<view class="action">
隐患视频
</view>
<view class="action">
{{videoList.length}}/1
</view>
</view>
<view class="cu-form-group">
<view class="grid col-4 grid-square flex-sub">
<view class="bg-img" v-for="(item,vindex) in videoList" :key="vindex" style="background-color: #000">
<image src="/static/icon-apps/video.png" mode="aspectFill" @click="playVideo"
:data-src="videoList[vindex].filePath"></image>
<view class="cu-tag bg-red" @tap.stop="DelVideo" data-type="0" :data-index="vindex">
<text class='cuIcon-close'></text>
</view>
</view>
<view class="solids" @tap="chooseVideo(0)" v-if="videoList.length == 0">
<text class='cuIcon-cameraadd'></text>
</view>
</view>
</view>
<view class="cu-form-textarea margin-top">
<view class="cu-form-title">隐患描述</view>
<textarea maxlength="-1" :disabled="modalName!=null" v-model="pd.HIDDENDESCR"
placeholder="请对隐患进行详细描述(必填项)"></textarea>
</view>
<view class="cu-form-textarea margin-top" v-if="aiFlag">
<view class="cu-form-title">法律依据</view>
<textarea maxlength="-1" :disabled="true" v-model="pd.LEGALBASIS"
placeholder=""></textarea>
</view>
<view class="cu-form-textarea margin-top">
<view class="cu-form-title">隐患部位</view>
<textarea maxlength="-1" :disabled="modalName!=null" v-model="pd.HIDDENPART"
placeholder="请对隐患部位进行详细描述(必填项)"></textarea>
</view>
<view class="cu-form-group margin-top">
<view class="title">隐患级别</view>
<picker @change="levelPickerChange" :value="lindex" :range="levelList" range-key="NAME">
<view class="picker">
{{pd.HIDDENLEVELNAME?pd.HIDDENLEVELNAME:'请选择'}}
</view>
</picker>
</view>
<view class="cu-form-group margin-top">
<view class="title">隐患类型</view>
<view class="picker-tree-box">
<view class="picker-tree" @tap="showZgTree1">{{pd.HIDDENTYPENAME?pd.HIDDENTYPENAME:'请选择'}}</view>
</view>
<tki-tree ref="tkiTree1"
:selectParent="true"
:range="hiddenTypeList"
rangeKey="name"
@confirm="zgtreeConfirm1"
@cancel="zgtreeCancel1"></tki-tree>
<!-- <picker @change="typePickerChange" :value="tindex" :range="hiddenTypeList" range-key="NAME">-->
<!-- <view class="picker">-->
<!-- {{pd.HIDDENTYPENAME?pd.HIDDENTYPENAME:'请选择'}}-->
<!-- </view>-->
<!-- </picker>-->
</view>
<!-- <view class="cu-form-group margin-top">-->
<!-- <view class="title">验收部门</view>-->
<!-- <view class="picker" @tap="showYsTree">{{pd.CHECKDEPTNAME?pd.CHECKDEPTNAME:'请选择'}}</view>-->
<!-- <tki-tree ref="tkiTree1"-->
<!-- :selectParent=true-->
<!-- :range="treeNode"-->
<!-- rangeKey="name"-->
<!-- @confirm="ystreeConfirm"></tki-tree>-->
<!-- </view>-->
<view class="cu-form-group margin-top">
<view class="title">是否立即整改</view>
<radio-group class="selected" >
<view class="group mr20" v-if="disabledvalue==false">
<radio class='radio' value="1" :checked="RECTIFICATIONTYPE==1" @click="radioType(1)"></radio>
<text>是</text>
</view>
<view class="group mr20" v-if="disabledvalue==true">
<radio class='radio' disabled="true" value="1" :checked="RECTIFICATIONTYPE==1" ></radio>
<text>是</text>
</view>
<view class="group">
<radio class='radio' value="2" :checked="RECTIFICATIONTYPE==2" @click="radioType(2)"></radio>
<text>否</text>
</view>
</radio-group>
</view>
<view class="cu-form-group margin-top" v-if="RECTIFICATIONTYPE==2">
<view class="title">整改责任部门</view>
<view class="picker-tree-box">
<view class="picker-tree" @tap="showZgTree">
{{pd.RECTIFICATIONDEPTNAME?pd.RECTIFICATIONDEPTNAME:'请选择'}}
</view>
</view>
<tki-tree ref="tkiTree"
:selectParent=true
:range="treeNode"
rangeKey="name"
@confirm="zgtreeConfirm"
@cancel="zgtreeCancel"></tki-tree>
</view>
<view class="cu-form-group margin-top" v-if="RECTIFICATIONTYPE==2 && rectificationUserList.length>0">
<view class="title">整改责任人</view>
<picker @change="PickerZgr" :value="uindex" :range="rectificationUserList" range-key="NAME">
<view class="picker">
{{pd.RECTIFICATIONORNAME?pd.RECTIFICATIONORNAME:'请选择'}}
</view>
</picker>
</view>
<view class="cu-form-group margin-top" v-if="RECTIFICATIONTYPE==2">
<view class="title">整改期限</view>
<picker mode="date" :value="pd.RECTIFICATIONDEADLINE" :start="rectifyPlanCompletionStartTime" @change="changeDate">
<view class="picker">
{{pd.RECTIFICATIONDEADLINE?pd.RECTIFICATIONDEADLINE:'请选择'}}
</view>
</picker>
</view>
<view class="cu-form-textarea margin-top" v-if="RECTIFICATIONTYPE==1">
<view class="cu-form-title">整改描述</view>
<textarea maxlength="-1" :disabled="modalName!=null" v-model="pd.RECTIFYDESCR" placeholder="请对隐患进行整改描述(必填项)"></textarea>
</view>
<view class="cu-bar bg-white margin-top" v-if="RECTIFICATIONTYPE==1">
<view class="action">
整改后图片
</view>
<view class="action">
{{imgList1.length}}/4
</view>
</view>
<view class="cu-form-group" v-if="RECTIFICATIONTYPE==1">
<view class="grid col-4 grid-square flex-sub">
<view class="bg-img" v-for="(item,index) in imgList1" :key="index" @tap="ViewImage" data-type="1" :data-url="imgList1[index].filePath">
<image :src="imgList1[index].filePath" mode="aspectFill"></image>
<view class="cu-tag bg-red" @tap.stop="DelImg" data-type="1" :data-index="index">
<text class='cuIcon-close'></text>
</view>
</view>
<view class="solids" @tap="ChooseImage(1)" v-if="imgList1.length<4">
<text class='cuIcon-cameraadd'></text>
</view>
</view>
</view>
</view>
<view class="padding flex flex-direction" style="margin-bottom: 100upx">
<button :loading="buttonloading" class="cu-btn bg-blue margin-tb-sm lg" @click="$noMultipleClicks(goSubmit)">提交</button>
</view>
</scroll-view>
<view :class="['cu-modal',{'show':modalShow}]" v-if="modalShow">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<view class="content">播放视频</view>
<view class="action" @tap="modalShow = false">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<video :src="videoSrc" :autoplay="true"></video>
<view class="cu-bar bg-white justify-end">
<view class="action">
<button class="cu-btn line-green text-green" @click="modalShow = false">关闭</button>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import { decryptAes } from "@/common/aesUtil";
import {
basePath,corpinfoId,deptId,loginUser,formatDate,loginSession,baseImgPath
} from '@/common/tool.js';
import tkiTree from "@/components/select-tree/select-tree.vue"
import gcoord from '@/common/gcoord.js'
import {isImage} from "../../../../common/tool";
export default {
components: {
tkiTree
},
data() {
return {
isUps:false,
buttonloading: false,
aiFlag: false,
msg:'add',
riskId:'',
itemId:'',
LISTMANAGER_ID:'',
index:'',
noClick:true,
pd:[{"RECTIFICATIONTYPE":2}],
imgList: [],
imgList1: [],
HIDDENDESCR:'',//隐患描述
HIDDENPART:'',//隐患部位
modalName: null,
id:'',
CHECK_CONTENT:'',
checkId:'',
RECTIFYDESCR:'',//整改描述
RECTIFICATIONTYPE:2,//是否立即
treeNode:[],//部门下拉数据
RECTIFICATIONDEPT:'',//整改部门
RECTIFICATIONDEPTNAME:'请选择',//整改部门
CHECKDEPT:'',//验收部门
CHECKDEPTNAME:'请选择',//验收部门
rectificationUserList:[],
RECTIFICATIONOR:'',//整改人
uindex: -1,
lindex: -1,
levelList:[],
tindex: -1,
hiddenTypeList:[],
HIDDENLEVEL:'',//隐患级别
RECTIFICATIONDEADLINE:'',//整改期限
rectifyPlanCompletionStartTime:'',
disabledvalue:false,
videoSrc:'',
modalShow:false,
videoList:[]
}
},
onLoad(event){
let now = new Date();
var tomorrow=now.setDate(now.getDate()+1);
tomorrow=new Date(tomorrow);
this.rectifyPlanCompletionStartTime = formatDate(tomorrow, 'yyyy-MM-dd');
this.pd.HIDDEN_ID = event.HIDDEN_ID;
if(this.pd.HIDDEN_ID){
this.msg="edit";
this.getData();
}else {
this.pd.CHECK_CONTENT = JSON.parse(decodeURIComponent(event.checkContent));
this.riskId = JSON.parse(decodeURIComponent(event.riskId));
this.itemId = JSON.parse(decodeURIComponent(event.itemId));
this.LISTMANAGER_ID = JSON.parse(decodeURIComponent(event.LISTMANAGER_ID));
this.index = event.index;
}
this.getDept();
this.getLevel();
this.getHiddenType();
loginSession();
},
methods: {
getData() {
var _this = this;
uni.showLoading({
title: '请稍候'
})
uni.request({
url: basePath + '/app/hidden/goEdit',
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
data: {
HIDDEN_ID: _this.pd.HIDDEN_ID,
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
res.data = decryptAes(res.data);
if ("success" == res.data.result) {
uni.hideLoading();
_this.aiFlag = res.data.pd.AI_FLAG == 1 ? true : false
_this.pd = res.data.pd; //参数map
_this.pd.HIDDENTYPENAME = res.data.pd.HIDDENTYPE_NAME;
_this.RECTIFICATIONTYPE=_this.pd.RECTIFICATIONTYPE;
let files=res.data.hImgs;
for(var i=0;i<files.length;i++){
let img={};
img.filePath=baseImgPath+files[i].FILEPATH;
if (isImage(files[i].FILEPATH)) {
img.id=files[i].IMGFILES_ID;
_this.imgList.push(img);
} else {
img.id=files[i].IMGFILES_ID;
_this.videoList.push(img);
}
}
let files1=res.data.rImgs;
for(var i=0;i<files1.length;i++){
let img={};
img.filePath=baseImgPath+files1[i].FILEPATH;
img.id=files1[i].IMGFILES_ID;
_this.imgList1.push(img);
}
_this.getUserList();
} else if ("exception" == data.result) {
uni.showToast({
title: '',
duration: 2000
});
}
}
});
},
getDept() {
var _this = this;
uni.request({
url: basePath + '/app/sys/listTree',//
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
data: {
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
res.data = decryptAes(res.data);
if("success" == res.data.result){
_this.treeNode=eval(res.data.zTreeNodes);
} else {
uni.showToast({
title: res.data.message,
duration: 2000
});
}
}
});
},
// 确定回调事件
zgtreeConfirm(e) {
this.isUps=false;
this.pd.RECTIFICATIONDEPT=e[0].id;
this.pd.RECTIFICATIONDEPTNAME=e[0].name;
this.uindex=-1;
this.pd.RECTIFICATIONOR='';
this.pd.RECTIFICATIONORNAME='';
this.$forceUpdate();//强制刷新
this.getUserList();
},
// 取消回调事件
zgtreeCancel(e) {
this.isUps=false;
},
// 显示树形选择器
showZgTree() {
this.isUps=true
this.$refs.tkiTree._show();
},
// 确定回调事件
ystreeConfirm(e) {
this.pd.CHECKDEPT=e[0].id;
this.pd.CHECKDEPTNAME=e[0].name;
this.$forceUpdate();//强制刷新
},
// 显示树形选择器
showYsTree() {
this.$refs.tkiTree1._show();
},
//获取人员列表
getUserList(){
//发送 post 请求
var _this = this;
uni.request({
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
url: basePath+'/app/sys/listUser',
data: {
DEPARTMENT_ID:_this.pd.RECTIFICATIONDEPT,
tm:new Date().getTime(),
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
ALTER:'1',
},
success: function(res){
res.data = decryptAes(res.data);
if("success" == res.data.result){
_this.rectificationUserList=res.data.userList;
}else{
uni.showToast({
title: res.data.message,
duration: 2000
});
}
}
})
},
PickerZgr(e) {
this.uindex = e.detail.value;
this.pd.RECTIFICATIONOR=this.rectificationUserList[this.uindex].USER_ID;
this.pd.RECTIFICATIONORNAME=this.rectificationUserList[this.uindex].NAME;
this.$forceUpdate();//强制刷新
},
//获取数据字典数据
getLevel: function () {
var _this = this;
uni.request({
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
url: basePath + '/dictionaries/getLevels?tm=' + new Date().getTime(),
data: {
DICTIONARIES_ID: '5e7cf8620ba54ad89719d0be62133c7a',
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: function (res) {
res.data = decryptAes(res.data);
_this.levelList = res.data.list;
}
});
},
levelPickerChange(e) {
if(e.detail.value==1){
this.disabledvalue=true;
this.RECTIFICATIONTYPE = 2;
}else{
this.disabledvalue=false;
}
this.lindex = e.detail.value;
this.pd.HIDDENLEVEL=this.levelList[this.lindex].BIANMA;
this.pd.HIDDENLEVELNAME=this.levelList[this.lindex].NAME;
this.$forceUpdate();//强制刷新
},
getHiddenType: function () {
var _this = this;
uni.request({
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
url: basePath + '/dictionaries/getLevels',
data: {
DICTIONARIES_ID: '3babc15144444bdc8d763d0af2bdfff8',
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: function (res) {
res.data = decryptAes(res.data);
for (let i = 0; i < res.data.list.length; i++) {
if (res.data.list[i].BIANMA.indexOf(loginUser.PROVINCE) > -1) {
_this.getTrainDicList(res.data.list[i].DICTIONARIES_ID)
break
}
}
}
});
},
getTrainDicList(parentId) { // trainDicList
var _this = this;
uni.request({
method: 'POST',
dataType: 'json',
header: {
'Content-type': 'application/x-www-form-urlencoded'
},
url: basePath + '/dictionaries/listAllDictToParId',
data: {
parentId,
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: function (res) {
res.data = decryptAes(res.data);
let zTreeNodes = res.data.zTreeNodes
zTreeNodes = zTreeNodes.replace(/"nodes":\[/g, '"children":[')
_this.hiddenTypeList = JSON.parse(zTreeNodes)
}
});
},
showZgTree1(){
this.isUps=true
this.$refs.tkiTree1._show();
},
zgtreeCancel1(e){
this.isUps=false;
},
zgtreeConfirm1(e){
this.isUps=false;
if(e[0]?.parents.length === 1){
this.pd.HIDDENTYPE = [e[0]?.parents[0]?.id || '', e[0]?.id || ''];
this.pd.HIDDENTYPENAME = [e[0]?.parents[0]?.name || '', e[0]?.name || ''].join('/')
}else if(e[0]?.parents.length === 2) {
this.pd.HIDDENTYPE = [e[0]?.parents[0]?.id || '', e[0]?.parents[1]?.id || '', e[0]?.id || ''];
this.pd.HIDDENTYPENAME = [e[0]?.parents[0]?.name || '', e[0]?.parents[1]?.name || '', e[0]?.name || ''].join('/')
}else{
this.pd.HIDDENTYPE = [e[0]?.id || ''];
this.pd.HIDDENTYPENAME = [e[0]?.name || ''].join('/');
}
},
typePickerChange(e) {
this.tindex = e.detail.value;
this.pd.HIDDENTYPE=this.hiddenTypeList[this.tindex].BIANMA;
this.pd.HIDDENTYPENAME=this.hiddenTypeList[this.tindex].NAME;
this.$forceUpdate();//强制刷新
},
changeDate(e) {
this.pd.RECTIFICATIONDEADLINE = e.detail.value
this.$forceUpdate();//强制刷新
},
//图片上传
ChooseImage(e) {
if (this.aiFlag && e == 0 && this.imgList.length > 0) {
uni.showToast({
icon: 'none',
title: '识别隐患信息暂时只支持一张图片',
duration: 2000
})
return
}
var _this = this;
if(e==0) {
var ss=4-this.imgList.length;
}else {
var ss=4-this.imgList1.length;
}
uni.chooseImage({
count: ss, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera','album'], //从相册选择
success: (res) => {
if(e==0) {
for (let i = 0; i < res.tempFilePaths.length; i++) {
let img={};
img.id='';
img.filePath=res.tempFilePaths[i];
this.imgList.push(img)
}
}else{
for (let i = 0; i < res.tempFilePaths.length; i++) {
let img={};
img.id='';
img.filePath=res.tempFilePaths[i];
this.imgList1.push(img)
}
}
}
});
},
ViewImage(e) {
console.info(e.currentTarget.dataset.type)
if(e.currentTarget.dataset.type==0) {
let files =[];
for(var i=0;i<this.imgList.length;i++){
files.push(this.imgList[i].filePath)
}
uni.previewImage({
urls: files,
current: e.currentTarget.dataset.url
});
}else{
let files =[];
for(var i=0;i<this.imgList1.length;i++){
files.push(this.imgList1[i].filePath)
}
uni.previewImage({
urls: files,
current: e.currentTarget.dataset.url
});
}
},
DelImg(e) {
var _this = this;
let i=e.currentTarget.dataset.index
uni.showModal({
title: '',
content: '',
cancelColor:"#000000",
cancelText: '',
confirmText: '',
success: res => {
if (res.confirm) {
if(e.currentTarget.dataset.type==0) {
if(_this.imgList[i].id) {
uni.showLoading({
title: '处理中'
})
uni.request({
url: basePath+'/app/imgfiles/delete',
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
data: {
IMGFILES_ID: _this.imgList[i].id,
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
res.data = decryptAes(res.data);
uni.hideLoading();
uni.showToast({
icon: 'none',
title: '删除成功',
duration: 1500
});
_this.imgList.splice(i, 1)
if (_this.aiFlag) {
this.clearIdentifyInfo()
}
},
fail: (err) => {
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
}else {
this.imgList.splice(e.currentTarget.dataset.index, 1)
if (_this.aiFlag) {
this.clearIdentifyInfo()
}
}
}else{
if(_this.imgList1[i].id) {
uni.showLoading({
title: '处理中'
})
uni.request({
url: basePath+'/app/imgfiles/delete',
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
data: {
IMGFILES_ID: _this.imgList1[i].id,
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
res.data = decryptAes(res.data);
uni.hideLoading();
uni.showToast({
icon: 'none',
title: '删除成功',
duration: 1500
});
_this.imgList1.splice(i, 1)
},
fail: (err) => {
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
}else {
this.imgList1.splice(e.currentTarget.dataset.index, 1)
}
}
}
}
})
},
textareaAInput(e){
this.pd.HIDDENDESCR= e.detail.value
},
textareaBInput(e){
this.pd.HIDDENPART= e.detail.value
},
textareaCInput(e){
this.pd.RECTIFYDESCR= e.detail.value
},
async goSubmit() {
var _this = this;
// if (!_this.pd.CHECKDEPT) {
// uni.showToast({
// icon: 'none',
// title: '请选择验收部门',
// duration: 1500
// });
// return;
// }
if (_this.imgList.length <= 0) {
uni.showToast({
icon: 'none',
title: '请上传隐患图片',
duration: 1500
});
return;
}
if (!_this.pd.HIDDENDESCR) {
uni.showToast({
icon: 'none',
title: '请填隐患描述',
duration: 1500
});
return;
}
if (!_this.pd.HIDDENPART) {
uni.showToast({
icon: 'none',
title: '请填隐患部位',
duration: 1500
});
return;
}
if (!_this.pd.HIDDENLEVEL) {
uni.showToast({
icon: 'none',
title: '请选择隐患级别',
duration: 1500
});
return;
}
if (!_this.pd.HIDDENTYPE) {
uni.showToast({
icon: 'none',
title: '请选择隐患类型',
duration: 1500
});
return;
}
if (_this.RECTIFICATIONTYPE == 1 && !_this.pd.RECTIFYDESCR) {
uni.showToast({
icon: 'none',
title: '请填整改描述',
duration: 1500
});
return;
}
if (_this.RECTIFICATIONTYPE == 1 && _this.imgList1.length <= 0) {
uni.showToast({
icon: 'none',
title: '请上传整改后图片',
duration: 1500
});
return;
}
if (_this.RECTIFICATIONTYPE == 2 && !_this.pd.RECTIFICATIONDEPT) {
uni.showToast({
icon: 'none',
title: '请选择整改部门',
duration: 1500
});
return;
}
if (_this.RECTIFICATIONTYPE == 2 && !_this.pd.RECTIFICATIONOR) {
uni.showToast({
icon: 'none',
title: '请选择整改人',
duration: 1500
});
return;
}
if (_this.RECTIFICATIONTYPE == 2 && !_this.pd.RECTIFICATIONDEADLINE) {
uni.showToast({
icon: 'none',
title: '请选择整改期限',
duration: 1500
});
return;
}
var fileList = [];
for (var i = 0; i < _this.imgList.length; i++) {
if(!_this.imgList[i].id){
var file = {};
file.type = 3;
file.filePath = _this.imgList[i].filePath;
fileList.push(file);
}
}
for (var i = 0; i < _this.videoList.length; i++) {
if(!_this.videoList[i].id){
var file = {};
file.type = 3;
file.filePath = _this.videoList[i].filePath;
fileList.push(file);
}
}
if (_this.RECTIFICATIONTYPE == 1){
for (var i = 0; i < _this.imgList1.length; i++) {
if(!_this.imgList1[i].id) {
var file = {};
file.type = 4;
file.filePath = _this.imgList1[i].filePath;
fileList.push(file);
}
}
}
await _this.submit()
var i=0;
await _this.uploadPromise(fileList)
var pages = getCurrentPages(); // 获取当前页面栈
var prePage = pages[pages.length - 2]; // 上一个页面
// var task = prePage.$vm.list[_this.index];
if(_this.index) {
prePage.$vm.initflag = true; // A 页面 init方法 为true
prePage.$vm.list[_this.index].ISNORMAL = 1;
prePage.$vm.list[_this.index].HIDDEN_ID = _this.pd.HIDDEN_ID;
}
uni.navigateBack({});
uni.hideLoading();
},
async uploadPromise(tempFilePaths){
if (tempFilePaths.length == 0) {
return
}
uni.showLoading({
title: '上传中'
})
for (let i = 0; i < tempFilePaths.length; i++) {
await this.uploadImg(tempFilePaths[i])
}
},
uploadImg(file){
return new Promise((resolve, reject) => {
var _this = this;
uni.uploadFile({
url: basePath+'/app/imgfiles/add',
filePath: file.filePath,
name: 'FFILE',
formData: {
'TYPE': file.type,
'FOREIGN_KEY': _this.pd.HIDDEN_ID,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
res.data = decryptAes(res.data);
resolve();
},
fail: (err) => {
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
})
},
submit(){
return new Promise((resolve, reject) => {
var _this = this;
// var pages = getCurrentPages(); // 获取当前页面栈
// var prePage = pages[pages.length - 2]; // 上一个页面
// var task = prePage.$vm.list[_this.index];
let longitude;
let latitude;
this.buttonloading = true
uni.getLocation({
type: 'GCJ02',
success: function (res1) {
longitude = res1.longitude;
latitude = res1.latitude;
var result = gcoord.transform(
[longitude, latitude], // 经纬度坐标
gcoord.GCJ02, // 当前坐标系
gcoord.BD09 // 目标坐标系
);
longitude = result[0];
latitude = result[1];
//发送 post 请求提交保存
this.buttonloading = true
uni.request({
url: basePath+'/app/hidden/'+_this.msg,
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
data: {
HIDDEN_ID:_this.pd.HIDDEN_ID,
SOURCE:'2',
STATE:'0',
AI_FLAG: _this.aiFlag ? 1 : 0,
HIDDENDESCR:_this.pd.HIDDENDESCR,
LEGALBASIS: _this.pd.LEGALBASIS ? _this.pd.LEGALBASIS : '',
HIDDENPART:_this.pd.HIDDENPART,
LATITUDE:latitude,
LONGITUDE:longitude,
RECTIFYDESCR: _this.RECTIFICATIONTYPE == 1 ? _this.pd.RECTIFYDESCR : '',
RECTIFICATIONDEADLINE:_this.pd.RECTIFICATIONDEADLINE?_this.pd.RECTIFICATIONDEADLINE:'',
RECTIFICATIONTYPE:_this.RECTIFICATIONTYPE,
RECTIFICATIONOR:_this.pd.RECTIFICATIONOR,
HIDDENLEVEL:_this.pd.HIDDENLEVEL,
HIDDENTYPE:_this.pd.HIDDENTYPE,
RECTIFICATIONDEPT:_this.pd.RECTIFICATIONDEPT,
// CHECKDEPT:_this.pd.CHECKDEPT?_this.pd.CHECKDEPT:'',
CHECK_CONTENT:_this.pd.CHECK_CONTENT,
HIDDENFINDDEPT:deptId,
CREATOR:loginUser.USER_ID,
RECORDITEM_ID:_this.itemId,
LISTMANAGER_ID:_this.LISTMANAGER_ID,
RISKITEM_ID:_this.riskId,
CLEARIMG:'1',
HIDDENTYPE_NAME:_this.pd.HIDDENTYPENAME,
HIDDENTYPE1:_this.pd.HIDDENTYPE[0] || '',
HIDDENTYPE2:_this.pd.HIDDENTYPE[1] || '',
HIDDENTYPE3:_this.pd.HIDDENTYPE[2] || '',
CORPINFO_ID:loginUser.CORPINFO_ID,
USER_ID:loginUser.USER_ID,
},
success: (res) => {
res.data = decryptAes(res.data);
this.buttonloading = false
if ("success" == res.data.result) {
_this.pd.HIDDEN_ID= res.data.pd.HIDDEN_ID;
resolve();
// prePage.$vm.initflag = true; // A 页面 init方法 为true
// prePage.$vm.list[_this.index].ISNORMAL = 1;
// prePage.$vm.list[_this.index].HIDDEN_ID = _this.HIDDEN_ID;
// uni.navigateBack({});
// uni.hideLoading();
} else {
uni.showToast({
title: res.data.msaesge,
duration: 2000
});
}
}
});
},
fail: function(res){
uni.hideLoading();
uni.showToast({
title: "获取位置失败",
duration: 2000
});
}
});
});
},
radioType(e){
if(!this.disabledvalue){
this.RECTIFICATIONTYPE = e
}else{
this.RECTIFICATIONTYPE=2
}
},
chooseVideo(e){
var _this = this;
uni.chooseVideo({
maxDuration:60,
count: 1, //默认9
// sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['camera','album'], //从相册选择
success: (res) => {
if(res.tempFilePath.substring(res.tempFilePath.lastIndexOf(".") + 1, res.tempFilePath.length) === 'mp4'){
let img={};
img.id='';
img.filePath=res.tempFilePath;
this.videoList.push(img)
}else {
uni.showToast({
title: "只能上传MP4格式",
duration: 2000
});
}
}
});
},
DelVideo(e){
uni.showModal({
title: '',
content: '确定要删除这个视频吗?',
cancelColor: "#000000",
cancelText: '取消',
confirmText: '确定',
success: res => {
if (res.confirm) {
this.videoList = []
}
}
})
},
playVideo(e) {
this.videoSrc = e.currentTarget.dataset.src
this.modalShow = true
},
goIdentifyImg() {
if (this.imgList.length === 0) {
uni.showToast({
icon: 'none',
title: '请先上传图片',
duration: 2000
});
return;
} else if (this.imgList.length > 1) {
uni.showToast({
icon: 'none',
title: '识别暂时只能上传一张图片',
duration: 2000
});
} else {
var _this = this;
if(this.imgList[0].id != ""){
uni.showToast({
icon: 'none',
title: '请删除图片重新上传图片后,再次进行图片识别',
duration: 2000
});
return;
}
_this.buttonloading = true
uni.showLoading({
title: '识别中...'
})
uni.uploadFile({
url: basePath + '/app/hidden/identifyImg',
filePath: _this.imgList[0].filePath,
name: 'FFILE',
formData: {
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
_this.buttonloading = false
_this.aiFlag = true
res.data = decryptAes(JSON.parse(res.data));
if("success" == res.data.result){
const aiHiddens = res.data.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.pd.HIDDENLEVEL = 'hiddenLevel0001'
_this.pd.HIDDENLEVELNAME = '一般隐患'
_this.pd.RECTIFICATIONTYPE = 1
_this.pd.HIDDENDESCR = hiddenDescr
_this.pd.LEGALBASIS = legalBasis
_this.pd.RECTIFYDESCR = rectificationSuggestions
_this.radioType(1)
} else {
uni.showToast({
icon: 'none',
title: "未识别图片中的隐患",
duration: 2000
});
}
uni.hideLoading();
},
fail: (err) => {
_this.buttonloading = false
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
}
},
clearIdentifyInfo() {
this.aiFlag = false
this.pd.HIDDENLEVEL = ''
this.pd.HIDDENLEVELNAME = ''
this.pd.RECTIFICATIONTYPE = 2
this.RECTIFICATIONTYPE = 2
this.pd.HIDDENDESCR = ""
this.pd.LEGALBASIS = ""
this.pd.RECTIFYDESCR = ""
}
}
}
</script>
<style>
.prevent {
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
overflow: hidden;
}
.cu-form-title{
padding: 20upx 0;
}
.cu-form-textarea{
background-color: #ffffff;
padding: 1upx 30upx 20upx;
min-height: 100upx;
}
.cu-form-textarea textarea {
height: 4.6em;
width: 100%;
line-height: 1.2em;
flex: 1;
font-size: 28upx;
padding: 0;
}
.selected{
display: flex;
align-items: center;
height: 100upx;
}
.selected .radio{
transform:scale(0.8);
margin-right: 10upx;
}
.group{
display: flex;
align-items: center;
}
.cu-form-group .title{
font-size: 28upx;
font-weight: bold;
color: #000;
}
.cu-bar .action:first-child {
font-size: 28upx;
}
.cu-form-group .picker{
color: #808080;
}
.picker-tree{
color: #808080;
}
.uni-scroll-view, .uni-scroll-view-content{
padding-bottom: 30upx !important;
}
.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>