qrcode-app/pages/apply/viewRisk.vue
2025-10-25 09:29:49 +08:00

408 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 隐患查看 -->
<view class="content">
<view class="container">
<view class="form-sub">
<u-form :model="model" ref="uForm" label-width="90px" class="demo-ruleForm" size="mini">
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">隐患信息</view>
<u-form-item label="区域名称" prop="RISK_AREA_NAME" borderBottom ref="item1"
@click="handleShowSheet({title: '区域名称'})">
<u--input disabled v-model="model.RISK_AREA_NAME" border="none" suffixIcon="arrow-right"
customStyle="margin:0px;display:flex;padding:3px 9px"
suffixIconStyle="font-size:12px"></u--input>
</u-form-item>
<u-form-item label="包含下级区域" prop="ISDOWN" borderBottom>
<u-radio-group v-model="model.ISDOWN" style="display: flex;flex-direction: row"
placement="column">
<u-radio :customStyle="{marginBottom: '4px',marginTop: '4px' ,marginLeft:'15px' }"
v-for="(item, index) in radiolist" :key="index" :label="item.name" :name="item.name"
@change="doTrueOrFalse()" />
</u-radio-group>
</u-form-item>
</u-form>
<!-- 动态加载隐患信息 -->
<u-sticky offset-top="20">
<view class="sub-form">
<view class="sub-form-wrap">
<u--form labelPosition="left" labelWidth="auto" labelAlign="center"
errorType="border-bottom" style="margin-bottom: 50px;" ref="sForm">
<uni-collapse :border="false" accordion>
<uni-card style="margin-bottom: 5px;" margin="0" spacing="0" :is-shadow="false"
v-for="(item, index) in model.ListShow">
<uni-collapse-item :title="(index+1) + '. ' + item.HIDDEN_DESCRIPTION" name="1">
<u-form-item label="检查内容" prop="Nav_Contents.CHECKCONTENT" borderBottom>
<u--textarea disabled disabledColor="#fff"
v-model="item.Nav_Contents.CHECKCONTENT" border="none"
inputAlign="right" autoHeight></u--textarea>
</u-form-item>
<u-form-item v-if="model.ISDOWN=='是'" label="区域" prop="Nav_RiskArea.NAME"
borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.Nav_RiskArea.NAME"
border="none" inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="隐患地点" prop="HIDDEN_PLACE" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.HIDDEN_PLACE"
border="none" inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="上报时间" prop="CREATE_TIME" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.CREATE_TIME"
border="none" inputAlign="right"></u--input>
</u-form-item>
<!-- SKHiddenLevel -->
<u-form-item label="隐患等级" prop="HIDDEN_LEVELSHOW" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.HIDDEN_LEVELSHOW"
border="none" inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="整改期限" prop="RECITIFY_TIME" borderBottom>
<u--input disabled disabledColor="#fff" v-model="item.RECITIFY_TIME"
border="none" inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="整改责任人" prop="Nav_RecitifyUser.NAME" borderBottom>
<u--input disabled disabledColor="#fff"
v-model="item.Nav_RecitifyUser.NAME" border="none"
inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="验收人" prop="Nav_AcceptUser.NAME" borderBottom>
<u--input disabled disabledColor="#fff"
v-model="item.Nav_AcceptUser.NAME" border="none"
inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="整改落实人" prop="Nav_ImplementUser.NAME" borderBottom>
<u--input disabled disabledColor="#fff"
v-model="item.Nav_ImplementUser.NAME" border="none"
inputAlign="right"></u--input>
</u-form-item>
<u-form-item label="整改措施" prop="RECTIFICATION_MEASURES" borderBottom>
<u--textarea disabled disabledColor="#fff"
v-model="item.RECTIFICATION_MEASURES" border="none"
inputAlign="right" autoHeight></u--textarea>
</u-form-item>
<u-form-item label="隐患照片" prop="FILE_PATH" borderBottom>
<image style="width: 95%; height: 200px; background-color: #eeeeee;"
:mode="item.FILE_PATH" :src="item.FILE_PATH" @error="imageError"></image>
</u-form-item>
</uni-collapse-item>
</uni-card>
</uni-collapse>
</u--form>
</view>
</view>
</u-sticky>
<query-selector :show="selectorInfo.showPopup" :defaultChecked="selectorInfo.defaultChecked"
:title="selectorInfo.title" :lists="selectorInfo.dataLists" @search="handleSearch"
@select="handleSelected" @close="selectorInfo.showPopup=false" :total="selectorInfo.totalCount" />
</view>
</view>
</view>
</template>
<script>
import {
OrderPagedRiskArea,
PagedRisk
} from '../../services/apply'
import config from '../../config/common'
import {
initFilter,
extendRule
} from '../../utils/common'
export default {
data() {
return {
OrgId: '',
pageIndex: 0,
pageSize: 20,
total: 0,
baseUrl: config.uni_app_web_source_url,
model: {
RISK_AREA_NAME: '请选择区域',
RISK_AREA_ID: '',
ISDOWN: '否',
SchedulingType: '',
COUNT_WORKER: '',
COUNT_LEVEL: '',
START_TIME: '',
END_TIME: '',
SchedulingNEXTTIME: '',
LISTPERSON_SCHEDULING: [{
NAME: ''
}],
LISTUSER_LEAVE: [{
NAME: ''
}],
ListShow: []
},
radiolist: [{
value: false,
name: '否'
}, {
value: true,
name: '是'
}],
selectorInfo: {
showPopup: false,
totalCount: 0,
title: '班组名称',
// itemData: {},
index: 0,
dataLists: [],
defaultText: '',
defaultValue: '',
name: '',
defaultChecked: []
},
}
},
onLoad(option) {
if (option.RISK_AREA_ID)
this.model.RISK_AREA_ID = option.RISK_AREA_ID // 'FA89F8DA-0B46-4665-A8DD-3675829F6D6F'
this.OrgId = option.OrgId // 'B043B28B-BBC3-C452-6052-4FBA1457ABFA'
if (this.model.RISK_AREA_ID != undefined && this.model.RISK_AREA_ID != '') {
this.PagedRisk() //扫二维码 默认赋值
const json = initFilter(this.OrgId, null, "NAME", 0, 1);
json.IgnoreDataRule = true
json.Limit = 2
extendRule(json, "ID", 1, this.model.RISK_AREA_ID)
OrderPagedRiskArea(json).then(res => {
if (res != undefined && res.Data.length > 0) {
this.model.RISK_AREA_NAME = res.Data[0].NAME
}
})
}
},
// onReady() {
// //如果需要兼容微信小程序并且校验规则中含有方法等只能通过setRules方法设置规则。
// this.$refs.uForm.setRules(this.rules)
// },
methods: {
PagedRisk(paginate) {
this.pageIndex++
const json = initFilter(this.OrgId, this.model.RISK_AREA_ID, "CREATE_TIME", 1, this.pageIndex, ((
this.model.ISDOWN == '否' || this.model.ISDOWN == '') ? false : true))
json.IgnoreDataRule = true
json.Limit = 20
json.SelectField = ['Nav_Question.DESCREPTION', 'RECTIFICATION_MEASURES',
'Nav_RectifyPhotoas.Nav_ImgFile.FILE_PATH', 'Nav_Contents.CHECKCONTENT', 'RECITIFY_TIME',
'HIDDEN_LEVEL', 'HIDDEN_PLACE', 'CREATE_TIME', 'Nav_RiskArea.NAME', 'Nav_RecitifyUser.NAME',
'Nav_AcceptUser.NAME', 'Nav_ImplementUser.NAME'
]
PagedRisk(json).then(res => {
if (res.IsSuccessful) {
this.total = res.TotalCount
var FILE_PATH = ''
res.Data.forEach(e => {
if (e.Nav_Question != null && e.Nav_Question.DESCREPTION != null && e.Nav_Question.DESCREPTION != undefined) {
if (e.Nav_Question.DESCREPTION.length > 15) {
e.HIDDEN_DESCRIPTION = e.Nav_Question.DESCREPTION.substring(0, 15) + '...'
} else {
e.HIDDEN_DESCRIPTION = e.Nav_Question.DESCREPTION
}
} else {
e.HIDDEN_DESCRIPTION = ''
}
if (e.HIDDEN_LEVEL == null) {
e.HIDDEN_LEVELSHOW = ""
} else if (e.HIDDEN_LEVEL == 10) {
e.HIDDEN_LEVELSHOW = "重大"
} else {
e.HIDDEN_LEVELSHOW = "一般"
}
FILE_PATH = ''
if (e.Nav_RectifyPhotoas != null && e.Nav_RectifyPhotoas.length > 0) {
FILE_PATH = e.Nav_RectifyPhotoas[0].Nav_ImgFile.FILE_PATH
if (FILE_PATH.length > 0) {
FILE_PATH = config.uni_app_web_source_url + FILE_PATH
}
}
e.FILE_PATH = FILE_PATH
})
if (paginate) {
this.model.ListShow = this.model.ListShow.concat(res.Data)
} else {
this.model.ListShow = res.Data
}
if (res.TotalCount == 0)
uni.$showMsg("未获取到数据", 'none')
} else {
this.model.ListShow = [{
HIDDEN_DESCRIPTION: '',
CHECKCONTENT: '',
ADDRESS: '',
CREATE_TIME: ''
}]
}
})
},
doTrueOrFalse() {
this.pageIndex = 0
if (this.model.RISK_AREA_ID != undefined && this.model.RISK_AREA_ID.length > 0) {
this.pageIndex = 0
this.PagedRisk();
}
},
closePicker() {
this.comPickerInfo = {
showSheet: false,
columns: [],
title: '',
name: '',
formIndex: undefined
}
},
//显示组件
handleChange() {
this.selectorInfo.showPopup = true
this.selectorInfo.title = '班组名称'
this.handleSearch()
},
//数据加载
handleSearch(val, pageIndex) {
var p = {
name: this.selectorInfo.name,
title: this.selectorInfo.title,
val: val,
pageIndex: pageIndex
}
this.handleShowSheet(p)
},
async handleShowSheet(p) {
this.pageIndex = 0
var defaultChecked = []
const json = initFilter(this.OrgId, null, "NAME", 0, (p.pageIndex ?? 1));
json.IgnoreDataRule = true
json.Limit = 20
if (p.val) {
extendRule(json, "NAME", 9, p.val)
}
let dataSelect = await OrderPagedRiskArea(json).then(res => {
this.selectorInfo.totalCount = res.TotalCount
if (res != undefined && res.Data.length > 0) {
for (let i = 0; i < res.Data.length; i++) {
res.Data[i].name = res.Data[i].NAME
res.Data[i].code = res.Data[i].CODE
}
}
return res.Data
})
if (defaultChecked == null)
defaultChecked = []
if (dataSelect.length) {
this.selectorInfo = {
totalCount: this.selectorInfo.totalCount,
showPopup: true,
title: p.title,
name: p.name,
dataLists: dataSelect,
defaultChecked: defaultChecked
}
} else {
// 暂无数据
}
},
handleSelected(e) {
this.selectorInfo.showPopup = false
this.model.RISK_AREA_NAME = e.NAME
this.model.RISK_AREA_ID = e.ID
this.PagedRisk()
// this.WorkerScheduling()
}
},
onReachBottom() {
if (this.total > this.pageSize * this.pageIndex)
this.PagedCheckMain(true)
}
}
</script>
<style>
.content {
background-color: #f4f7ff;
width: 100%;
/* #ifndef APP-PLUS */
height: calc(100vh - 44px - 50px); // 非APP平台下生效
/* #endif */
/* #ifdef APP-PLUS */
height: calc(100vh); // APP平台下生效
/* #endif */
}
.container {
padding: 20px 16px 10px 16px;
}
.form-sub {
/* margin: 20px 16px 10px 16px; */
/* border: 1px solid #EBEEF5; */
padding: 20px 10px 10px 10px;
/* box-shadow: rgba(0, 0, 0, 0.08) 0px 0px 3px 1px; */
background-color: #ffffff;
border-radius: 10px;
}
.demo-ruleForm>>>.u-form-item__body__left__content__label {
font-size: 14px;
color: #8e8b9c;
/* justify-content: flex-start; */
}
.demo-ruleForm>>>.u-form-item__body__left__content__ {
left: -11px;
top: 0px
}
.demo-ruleForm>>>.u-textarea__field {
font-size: 14px;
}
.demo-ruleForm>>>.u-cell__title-text {
font-size: 14px;
}
.demo-ruleForm-thr>>>.u-textarea {
padding: 9px 9px 25px 9px;
}
.demo-ruleForm-thr>>>.u-form-item__body__left__content__label {
font-size: 14px;
color: #8e8b9c;
/* justify-content: flex-start; */
}
.demo-ruleForm-thr>>>.u-form-item__body__left__content__ {
left: -11px;
top: 0px
}
.demo-ruleForm-thr>>>.u-textarea__field {
font-size: 14px;
}
.demo-ruleForm-thr>>>.u-cell__title-text {
font-size: 14px;
}
.bottom-button {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
padding: 10px 16px;
box-sizing: border-box;
background: #f4f7ff;
z-index: 999;
}
</style>