企业库
This commit is contained in:
parent
0287723d66
commit
61893ff470
49
pages.json
49
pages.json
@ -1584,6 +1584,55 @@
|
|||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "检查内容维护"
|
"navigationBarTitleText": "检查内容维护"
|
||||||
}
|
}
|
||||||
|
}, {
|
||||||
|
"path": "SK003List",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "企业库"
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"path": "SK003Show",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "企业库"
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"root": "pages/apply/subPages/SK/enterprise",
|
||||||
|
"pages": [{
|
||||||
|
"path": "checkDetail",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "检查明细"
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"path": "riskInspec",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "隐患查看"
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"path": "jobList",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "岗位风险清单"
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"path": "jobRiskShow",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "岗位风险清单"
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"path": "checkList",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "检查清单"
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"path": "checkShow",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "检查清单"
|
||||||
|
}
|
||||||
|
},{
|
||||||
|
"path": "summary",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "汇总"
|
||||||
|
}
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
357
pages/apply/subPages/SK/SK003List.vue
Normal file
357
pages/apply/subPages/SK/SK003List.vue
Normal file
@ -0,0 +1,357 @@
|
|||||||
|
<template>
|
||||||
|
<!-- 查询框 检查记录 列表 -->
|
||||||
|
<view class="risk-record-page">
|
||||||
|
|
||||||
|
<u-sticky>
|
||||||
|
<view class="filter-bar" style="display: flex;flex-direction: column;">
|
||||||
|
<!-- <view class="filter filter-date-range" @click="handleShowPicker({title: '时间区间', name: 'dateRange'})">
|
||||||
|
<text>{{dateFilterTxt}}</text>
|
||||||
|
<u-icon size="14" style="margin-left: 4px;" name="arrow-down"></u-icon>
|
||||||
|
</view> -->
|
||||||
|
<uni-search-bar class="search-bar" radius="100" v-model="keyword" @confirm="handleSearch" @cancel="handleCancelSearch" @clear="handleCancelSearch" placeholder="搜索风险描述" cancel-button="none">
|
||||||
|
<uni-icons slot="searchIcon" color="#999999" size="16" type="search" class="search-slot" />
|
||||||
|
</uni-search-bar>
|
||||||
|
<!-- <view class="filter filter-status" @click="handleShowPicker({title: '状态', name: 'status'})">
|
||||||
|
<text>{{statusFilterTxt}}</text>
|
||||||
|
<u-icon size="14" style="margin-left: 4px;" name="arrow-down"></u-icon>
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
|
</u-sticky>
|
||||||
|
<view class="main">
|
||||||
|
<view class="content-list">
|
||||||
|
<common-card :dataSource="item" v-for="item in lists" @click="showDetail(item.ID,item.TaskID)">
|
||||||
|
<view class="content">
|
||||||
|
<!-- <view class="field">
|
||||||
|
<text class="label">检查任务:</text>
|
||||||
|
<text class="value">{{item.NAME}}</text>
|
||||||
|
</view> -->
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">生产单元:</text>
|
||||||
|
<text class="value">{{item.MineType}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">风险名称:</text>
|
||||||
|
<text class="value">{{item.RISK_NAME}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">风险描述:</text>
|
||||||
|
<text class="value">{{item.RISK_DESCRIPTION}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">风险类别:</text>
|
||||||
|
<text class="value">{{item.Nav_Type?item.Nav_Type.NAME:''}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">风险等级:</text>
|
||||||
|
<text class="value">{{item.EVALUATE_LEVEL}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">入库时间:</text>
|
||||||
|
<text class="value">{{item.CREATE_TIME}}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</common-card>
|
||||||
|
</view>
|
||||||
|
<view style="padding: 10px 16px;display: flex;flex-direction: row;" class="bottom-button">
|
||||||
|
<u-button type="primary" @click="goCheckList" color="#3d4b70" :plain="true" style="margin-right: 5px;">检查清单</u-button>
|
||||||
|
<u-button type="primary" @click="goRiskList" color="#3d4b70">岗位风险清单</u-button>
|
||||||
|
<u-button type="primary" @click="goSummary" color="#3d4b70" :plain="true" style="margin-left: 5px;">汇总</u-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<u-picker :show="comPickerInfo.showPicker" :columns="comPickerInfo.columns" @confirm="onConfirmPicker" @cancel="closePicker"></u-picker>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
initFilter,
|
||||||
|
extendRule,
|
||||||
|
extendInclude,
|
||||||
|
extendOrder
|
||||||
|
} from '../../../../utils/common'
|
||||||
|
import {
|
||||||
|
MineTypeIndex,
|
||||||
|
MineTypeName
|
||||||
|
} from '../../../../utils/enums.js'
|
||||||
|
import {
|
||||||
|
GetSKEnterpriseLibrary
|
||||||
|
} from '../../../../services/apply/subPages/SK/SKServices.js'
|
||||||
|
import {
|
||||||
|
getEnum
|
||||||
|
} from '../../../../services/common';
|
||||||
|
import UniSearchBar from '../../../../uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue'
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
UniSearchBar
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageIndex: 0,
|
||||||
|
total: 0,
|
||||||
|
lists: [],
|
||||||
|
params: {},
|
||||||
|
|
||||||
|
keyword: '',
|
||||||
|
searchStartTime: '',
|
||||||
|
filterStatus: null,
|
||||||
|
dateFilterTxt: '时间区间',
|
||||||
|
statusFilterTxt: '状态筛选',
|
||||||
|
comPickerInfo: {
|
||||||
|
showPicker: false,
|
||||||
|
columns: [],
|
||||||
|
title: '',
|
||||||
|
name: ''
|
||||||
|
},
|
||||||
|
enumsData: {}, // 存储所有枚举数据(键:枚举名称,值:处理后的枚举列表)
|
||||||
|
enumsText: {} // 存储枚举文本列表(用于下拉选择等场景)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.fetchEnums(['SKProductionUnit', 'SKEvaluateLevelEnum']);
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async fetchEnums(enumNames) {
|
||||||
|
try {
|
||||||
|
// 存储所有枚举请求的Promise
|
||||||
|
const enumPromises = enumNames.map(name => {
|
||||||
|
return getEnum({
|
||||||
|
name
|
||||||
|
}).then(res => {
|
||||||
|
// 统一处理枚举格式:添加name/code字段,便于后续映射
|
||||||
|
return {
|
||||||
|
enumName: name,
|
||||||
|
data: res.map(item => ({
|
||||||
|
...item,
|
||||||
|
name: item.NAME, // 统一显示名称字段
|
||||||
|
code: item.ID // 统一值字段
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 等待所有枚举请求完成
|
||||||
|
const results = await Promise.all(enumPromises);
|
||||||
|
// 存储枚举结果到data中(键为枚举名称,值为处理后的数据)
|
||||||
|
results.forEach(({
|
||||||
|
enumName,
|
||||||
|
data
|
||||||
|
}) => {
|
||||||
|
this.enumsData[enumName] = data;
|
||||||
|
// 生成文本列表(如需要)
|
||||||
|
this.enumsText[enumName] = data.map(item => item.name);
|
||||||
|
});
|
||||||
|
// 所有枚举获取完成后,执行loadData
|
||||||
|
this.loadData();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('枚举请求失败:', error);
|
||||||
|
uni.showToast({
|
||||||
|
title: '枚举数据加载失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleSearch() {
|
||||||
|
this.pageIndex = 0
|
||||||
|
this.loadData(false)
|
||||||
|
},
|
||||||
|
loadData(paginate) {
|
||||||
|
this.pageIndex++
|
||||||
|
const orgId = uni.getStorageSync('orgId')
|
||||||
|
let json = initFilter(orgId, "", "CREATE_TIME", 1, this.pageIndex);
|
||||||
|
|
||||||
|
// extendRule(json, 'STATECHECK', 2, 0);
|
||||||
|
|
||||||
|
extendInclude(json, 'Nav_Area')
|
||||||
|
extendInclude(json, 'Nav_Type')
|
||||||
|
extendInclude(json, 'Nav_SCOREL')
|
||||||
|
extendInclude(json, 'Nav_SCOREE')
|
||||||
|
extendInclude(json, 'Nav_SCOREC')
|
||||||
|
json.SelectField = [
|
||||||
|
"MineType",
|
||||||
|
"Nav_Area.NAME",
|
||||||
|
"RISK_NAME",
|
||||||
|
"RISK_DESCRIPTION",
|
||||||
|
"Nav_Type.NAME",
|
||||||
|
"Nav_SCOREL.NAME",
|
||||||
|
"Nav_SCOREE.NAME",
|
||||||
|
"Nav_SCOREC.NAME",
|
||||||
|
"EVALUATE_SCORE",
|
||||||
|
"EVALUATE_LEVEL",
|
||||||
|
"CREATE_TIME",
|
||||||
|
"ID",
|
||||||
|
"ORG_ID"
|
||||||
|
]
|
||||||
|
extendOrder(json, 'MineType', '0')
|
||||||
|
extendOrder(json, 'AREA_ID', '0')
|
||||||
|
json.Sort = 'MineType'
|
||||||
|
// extendInclude(json, 'Nav_User')
|
||||||
|
if (this.keyword) {
|
||||||
|
extendRule(json, 'RISK_DESCRIPTION', 9, this.keyword)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.searchStartTime && this.searchStartTime.length > 0) {
|
||||||
|
extendRule(json, 'CHECKTIME', 6, this.searchStartTime)
|
||||||
|
}
|
||||||
|
if (this.filterStatus !== null) {
|
||||||
|
extendRule(json, 'STATUS', 1, this.filterStatus)
|
||||||
|
}
|
||||||
|
|
||||||
|
// json.Orders.push({
|
||||||
|
// Field: "CREATE_TIME",
|
||||||
|
// Order: "1"
|
||||||
|
// })
|
||||||
|
// json.IgnoreDataRule = true
|
||||||
|
GetSKEnterpriseLibrary(json).then(res => {
|
||||||
|
this.total = res.TotalCount
|
||||||
|
|
||||||
|
// for (let i = 0; i < res.length; i++) {
|
||||||
|
// res[i].STATUS = this.enumsData['PFStandardStatus'].find(item => item.code === res[i].STATUS ).name;
|
||||||
|
// }
|
||||||
|
const newRes = (res.Data || []).map(i => {
|
||||||
|
return {
|
||||||
|
...i,
|
||||||
|
title: i.Nav_Area ? i.Nav_Area.NAME : '',
|
||||||
|
EVALUATE_LEVEL: i.EVALUATE_LEVEL !== undefined ? this.enumsData['SKEvaluateLevelEnum'].find(item => item.code === i.EVALUATE_LEVEL).name : '',
|
||||||
|
MineType: i.MineType !== undefined ? this.enumsData['SKProductionUnit'].find(item => item.code === i.MineType).name : ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (paginate) {
|
||||||
|
this.lists = this.lists.concat(newRes)
|
||||||
|
} else {
|
||||||
|
this.lists = newRes
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goRiskList() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'enterprise/jobList'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goCheckList() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'enterprise/checkList'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
goSummary() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'enterprise/summary'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
showDetail(id, taskID) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'SK003Show?ID=' + id + '&taskID=' + taskID
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
handleShowPicker(p) {
|
||||||
|
let column = []
|
||||||
|
if (p.name === 'dateRange') {
|
||||||
|
column = ['全部', '当天', '最近三天', '最近一周', '最近一月']
|
||||||
|
}
|
||||||
|
if (p.name === 'status') {
|
||||||
|
column = this.enumsText['PFStandardStatus']
|
||||||
|
}
|
||||||
|
|
||||||
|
this.comPickerInfo = {
|
||||||
|
showPicker: true,
|
||||||
|
title: p.title,
|
||||||
|
name: p.name,
|
||||||
|
columns: [column]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onConfirmPicker(e) {
|
||||||
|
if (this.comPickerInfo.name === 'dateRange') {
|
||||||
|
let currentDate = new Date();
|
||||||
|
if (e.indexs[0] === 2) {
|
||||||
|
currentDate.setDate(currentDate.getDate() - 3);
|
||||||
|
} else if (e.indexs[0] === 3) {
|
||||||
|
currentDate.setDate(currentDate.getDate() - 7);
|
||||||
|
} else if (e.indexs[0] === 4) {
|
||||||
|
currentDate.setMonth(currentDate.getMonth() - 1);
|
||||||
|
}
|
||||||
|
if (e.indexs[0] === 0) {
|
||||||
|
this.searchStartTime = ''
|
||||||
|
this.dateFilterTxt = '时间区间'
|
||||||
|
} else {
|
||||||
|
this.dateFilterTxt = e.value[0]
|
||||||
|
this.searchStartTime = uni.$u.timeFormat(currentDate, 'yyyy-mm-dd 00:00:00');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.comPickerInfo.name === 'status') {
|
||||||
|
this.filterStatus = this.enumsData['PFStandardStatus'][e.indexs[0]].code
|
||||||
|
this.statusFilterTxt = e.value[0]
|
||||||
|
// if (e.indexs[0] === 0) {
|
||||||
|
// // 全部
|
||||||
|
// this.filterStatus = null
|
||||||
|
// this.statusFilterTxt = '状态筛选'
|
||||||
|
// } else {
|
||||||
|
// this.statusFilterTxt = e.value[0]
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
this.closePicker()
|
||||||
|
},
|
||||||
|
closePicker() {
|
||||||
|
this.comPickerInfo = {
|
||||||
|
showPicker: false,
|
||||||
|
columns: [],
|
||||||
|
title: '',
|
||||||
|
name: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
onReachBottom() {
|
||||||
|
if (this.total > 10 * this.pageIndex)
|
||||||
|
this.loadData(true)
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
keyword(n, o) {
|
||||||
|
this.pageIndex = 0
|
||||||
|
this.keyword = n
|
||||||
|
this.loadData()
|
||||||
|
},
|
||||||
|
searchStartTime(n, o) {
|
||||||
|
this.pageIndex = 0
|
||||||
|
this.searchStartTime = n
|
||||||
|
this.loadData()
|
||||||
|
},
|
||||||
|
filterStatus(n, o) {
|
||||||
|
this.pageIndex = 0
|
||||||
|
this.filterStatus = n
|
||||||
|
this.loadData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url("../../../../style/css/listTemplate.css");
|
||||||
|
/* @import url("../../../../style/css/newTemplate.css"); */
|
||||||
|
|
||||||
|
.status {
|
||||||
|
background-color: rgba(5, 109, 232, 0.1);
|
||||||
|
color: #056DE8;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom-button {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px 16px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background: #fff;
|
||||||
|
z-index: 999;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
410
pages/apply/subPages/SK/SK003Show.vue
Normal file
410
pages/apply/subPages/SK/SK003Show.vue
Normal file
@ -0,0 +1,410 @@
|
|||||||
|
<template>
|
||||||
|
<view class="todo-page">
|
||||||
|
<view class="background"></view>
|
||||||
|
<!-- <step-title :stepPage="stepsPage" :stepText="stepsText"></step-title> -->
|
||||||
|
<view class="allview">
|
||||||
|
<view class="card">
|
||||||
|
<u--form labelWidth="auto" :model="model" ref="wForm" class="demo-ruleForm">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">基本信息填写</view>
|
||||||
|
<u-form-item label="生产单元:" border-bottom>
|
||||||
|
<u--input v-model="model.Product_Unit" disabled disabledColor="#ffffff" border="none" inputAlign="right" fontSize="14px">
|
||||||
|
</u--input>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="辨识区域" prop="CHECKSTANDARD" border-bottom>
|
||||||
|
<u--input v-model="(model.Nav_Area||{}).NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险名称" prop="CHECKSTANDARD" border-bottom>
|
||||||
|
<u--input v-model="model.RISK_NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险描述" prop="HIDDEN_DESCRIPTION">
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="model.RISK_DESCRIPTION" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="风险类别" prop="HIDDEN_LEVEL" border-bottom>
|
||||||
|
<u--input v-model="(model.Nav_Type||{}).NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险评价L" border-bottom>
|
||||||
|
<u--input v-model="(model.Nav_SCOREL||{}).SCORE" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险评价E" border-bottom>
|
||||||
|
<u--input v-model="(model.Nav_SCOREE||{}).SCORE" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险评价C" border-bottom>
|
||||||
|
<u--input v-model="(model.Nav_SCOREC||{}).SCORE" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="分值D" border-bottom>
|
||||||
|
<u--input v-model="model.EVALUATE_SCORE" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险等级" prop="HIDDEN_PLACE" border-bottom>
|
||||||
|
<u--input v-model="model.EVALUATE_LEVELName" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="应急处置" prop="EMERGENCY">
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="model.EMERGENCY" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="是否有效" prop="HIDDEN_PLACE" border-bottom>
|
||||||
|
<u--input v-model="model.ENABLE_STATUSName" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<uni-collapse class="collapse" ref="collapse">
|
||||||
|
|
||||||
|
<uni-collapse-item title="管控层级" name="Variety components">
|
||||||
|
<view v-if="model.Nav_Departs&&model.Nav_Departs.length!==0">
|
||||||
|
<view v-for="(item1,index1) in model.Nav_Departs" :key="index1" style="margin: 5px 5px;padding: 0px 10px;">
|
||||||
|
<u-form-item borderBottom>
|
||||||
|
<view style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;flex: 1;">
|
||||||
|
<view style="flex: 1;display: flex;flex-direction: row;align-items: center;">
|
||||||
|
<view style="flex: 1;">
|
||||||
|
{{index1+1+'.管控部门 : ' +item1.Nav_Department.NAME}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item borderBottom label="管控层级:" prop="Check_Level">
|
||||||
|
<u--input v-model="item1.DEPARTMENT_TYPEName" disabled disabledColor="#ffffff" border="none" inputAlign="right" fontSize="14px">
|
||||||
|
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item borderBottom label="管控责任人" prop="HIDDEN_PLACE" border-bottom>
|
||||||
|
<u--input v-model="(item1.Nav_User||{}).NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-collapse-item>
|
||||||
|
<uni-collapse-item title="管控措施" name="Docs guide">
|
||||||
|
<view v-if="model.Nav_Details&&model.Nav_Details.length!==0">
|
||||||
|
<view v-for="(item1,index1) in model.Nav_Details" :key="index1" style="margin: 5px 5px;padding: 0px 10px;">
|
||||||
|
<u-form-item :label="index1+1+'.管控措施'" prop="MEASURES_NAME">
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item1.MEASURES_NAME" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label=" + 检查明细" prop="MEASURES_NAME" borderBottom @click="gotoCheck(item1)">
|
||||||
|
<u-icon name="eye" size="22" slot="right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-collapse-item>
|
||||||
|
<uni-collapse-item title="辨识岗位" name="Numerous tools">
|
||||||
|
<view v-if="model.Nav_Posts&&model.Nav_Posts.length!==0">
|
||||||
|
<view v-for="(item1,index1) in model.Nav_Posts" :key="index1" style="margin: 5px 5px;padding: 0px 10px;">
|
||||||
|
<u-form-item>
|
||||||
|
<view style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;flex: 1;">
|
||||||
|
<view style="flex: 1;display: flex;flex-direction: row;align-items: center;">
|
||||||
|
<view style="flex: 1;">
|
||||||
|
{{index1+1+'.辨识部门 : ' +item1.Nav_Department.NAME}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item borderBottom label="辨识岗位" prop="HIDDEN_PLACE" border-bottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item1.Nav_PostDetailsName" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</uni-collapse-item>
|
||||||
|
</uni-collapse>
|
||||||
|
</u--form>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
extendFilterGroup,
|
||||||
|
extendGroupRule,
|
||||||
|
extendInclude,
|
||||||
|
extendOrder,
|
||||||
|
extendRule,
|
||||||
|
extendIgnoreDataRule,
|
||||||
|
guid,
|
||||||
|
initFilter,
|
||||||
|
initFilterGroup
|
||||||
|
} from '../../../../utils/common'
|
||||||
|
import {
|
||||||
|
FMProductionUnit,
|
||||||
|
CheckPeriods,
|
||||||
|
CheckLevels
|
||||||
|
} from '../../../../utils/enums.js'
|
||||||
|
import {
|
||||||
|
GetSKEnterpriseLibraryRecord,
|
||||||
|
} from '../../../../services/apply/subPages/SK/SKServices.js'
|
||||||
|
import {
|
||||||
|
getRequest,
|
||||||
|
} from '../../../../services/apply/FOServices/FOServices';
|
||||||
|
import stepTitle from '@/components/custom/step-title.vue'
|
||||||
|
import {
|
||||||
|
getEnum
|
||||||
|
} from '../../../../services/common';
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
stepTitle,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
showDelModalIndex: undefined,
|
||||||
|
showDelModalIndex1: undefined,
|
||||||
|
subsectionList: ['无隐患', '有隐患', '不涉及'],
|
||||||
|
curNow: 1,
|
||||||
|
isAudit: false,
|
||||||
|
isLoadOK: false,
|
||||||
|
tableKey: 0,
|
||||||
|
RiskLevel: ['一般', '重大'],
|
||||||
|
showPopupUnit: false,
|
||||||
|
UnitDefaultIndex: [0],
|
||||||
|
TypeLists: [],
|
||||||
|
showPopupType: false,
|
||||||
|
TypeDefaultIndex: [0],
|
||||||
|
PeriodLists: [],
|
||||||
|
showPopupPeriod: false,
|
||||||
|
PeriodDefaultIndex: [0],
|
||||||
|
LevelLists: [],
|
||||||
|
showPopupLevel: false,
|
||||||
|
LevelDefaultIndex: [0],
|
||||||
|
showPopupDate: false,
|
||||||
|
listPropUpload: ['NOTIFY_ID'],
|
||||||
|
listPropValUpload: [],
|
||||||
|
ORG_ID: uni.getStorageSync('orgId'),
|
||||||
|
model: {
|
||||||
|
CHECK_TYPE_ID: '',
|
||||||
|
PLANCHECKFREQUENCY: '',
|
||||||
|
DEPARTMENT_TYPE: 0,
|
||||||
|
CHECK_TIME: '',
|
||||||
|
ORG_ID: '',
|
||||||
|
Nav_CheckRecordDetails: [{
|
||||||
|
RISK_AREA_ID: '',
|
||||||
|
CHECK_CONTENTS_ID: '',
|
||||||
|
CHECKPROOF: '',
|
||||||
|
CHECKSTANDARD: '',
|
||||||
|
Nav_CheckNoticeDetailUsers: {
|
||||||
|
USER_ID: ''
|
||||||
|
},
|
||||||
|
Nav_RiskArea: {
|
||||||
|
NAME: ''
|
||||||
|
},
|
||||||
|
Nav_Contents: {
|
||||||
|
CHECKCONTENT: ''
|
||||||
|
},
|
||||||
|
Nav_Question: {
|
||||||
|
DESCREPTION: ''
|
||||||
|
},
|
||||||
|
|
||||||
|
}],
|
||||||
|
|
||||||
|
},
|
||||||
|
peopleSelectOption: {
|
||||||
|
showSelector: false,
|
||||||
|
value: null,
|
||||||
|
index: 0,
|
||||||
|
defaultChecked: []
|
||||||
|
},
|
||||||
|
dateTime: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
|
||||||
|
stepsText: ['发起', '归档', ],
|
||||||
|
stepsPage: 0,
|
||||||
|
Pu: '',
|
||||||
|
Check_Type_ID: '',
|
||||||
|
TypeListres: {},
|
||||||
|
TaskID: '',
|
||||||
|
poparr: '',
|
||||||
|
enumsData: {}, // 存储所有枚举数据(键:枚举名称,值:处理后的枚举列表)
|
||||||
|
enumsText: {} // 存储枚举文本列表(用于下拉选择等场景)
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.TaskID = option.taskID ? option.taskID : '';
|
||||||
|
this.model.ID = option.ID ? option.ID : '';
|
||||||
|
this.tableKey = option.tableKey ? option.tableKey : '0'
|
||||||
|
this.isAudit = option.isAudit
|
||||||
|
this.fetchEnums(['SKProductionUnit', 'SKEvaluateLevelEnum', 'FMEnableStatusEnum',
|
||||||
|
'SKDepartmentTypeEnum', 'SKPLANCHECKFREQUENCYEnum'
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchEnums(enumNames) {
|
||||||
|
try {
|
||||||
|
// 存储所有枚举请求的Promise
|
||||||
|
const enumPromises = enumNames.map(name => {
|
||||||
|
return getEnum({
|
||||||
|
name
|
||||||
|
}).then(res => {
|
||||||
|
// 统一处理枚举格式:添加name/code字段,便于后续映射
|
||||||
|
return {
|
||||||
|
enumName: name,
|
||||||
|
data: res.map(item => ({
|
||||||
|
...item,
|
||||||
|
name: item.NAME, // 统一显示名称字段
|
||||||
|
code: item.ID // 统一值字段
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 等待所有枚举请求完成
|
||||||
|
const results = await Promise.all(enumPromises);
|
||||||
|
// 存储枚举结果到data中(键为枚举名称,值为处理后的数据)
|
||||||
|
results.forEach(({
|
||||||
|
enumName,
|
||||||
|
data
|
||||||
|
}) => {
|
||||||
|
this.enumsData[enumName] = data;
|
||||||
|
// 生成文本列表(如需要)
|
||||||
|
this.enumsText[enumName] = data.map(item => item.name);
|
||||||
|
});
|
||||||
|
// 所有枚举获取完成后,执行loadData
|
||||||
|
this.loadData();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('枚举请求失败:', error);
|
||||||
|
uni.showToast({
|
||||||
|
title: '枚举数据加载失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
loadData() {
|
||||||
|
// const json = {}
|
||||||
|
const orgId = uni.getStorageSync('orgId')
|
||||||
|
const json = initFilter(orgId, "", "")
|
||||||
|
extendRule(json, 'ID', 1, this.model.ID);
|
||||||
|
extendRule(json, 'TASK_ID', 1, this.TaskID);
|
||||||
|
extendIgnoreDataRule(json)
|
||||||
|
GetSKEnterpriseLibraryRecord(json).then(res => {
|
||||||
|
this.stepLoad = false
|
||||||
|
this.model = res;
|
||||||
|
this.model.ID = this.ID
|
||||||
|
this.model.Product_Unit = res.MineType !== undefined ? this.enumsData['SKProductionUnit'].find(item => item.code === res.MineType).name : '';
|
||||||
|
this.model.EVALUATE_LEVELName = res.EVALUATE_LEVEL !== undefined ? this.enumsData['SKEvaluateLevelEnum'].find(item => item.code === res.EVALUATE_LEVEL).name : '';
|
||||||
|
this.model.ENABLE_STATUSName = res.ENABLE_STATUS !== undefined ? this.enumsData['FMEnableStatusEnum'].find(item => item.code === res.ENABLE_STATUS).name : '';
|
||||||
|
if (this.model.Nav_Departs && this.model.Nav_Departs.length > 0) {
|
||||||
|
this.model.Nav_Departs.map(item => {
|
||||||
|
item.DEPARTMENT_TYPEName = item.DEPARTMENT_TYPE !== undefined ? this.enumsData['SKDepartmentTypeEnum'].find(item1 => item1.code === item.DEPARTMENT_TYPE).name : '';
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.model.Nav_Posts && this.model.Nav_Posts.length > 0) {
|
||||||
|
this.model.Nav_Posts.map(item1 => { //辨识岗位
|
||||||
|
if (item1.Nav_PostDetails && item1.Nav_PostDetails.length > 0) {
|
||||||
|
let areaShow = ''
|
||||||
|
item1.Nav_PostDetails.map(o => {
|
||||||
|
areaShow += o.Nav_Post.NAME + ' '
|
||||||
|
})
|
||||||
|
item1['Nav_PostDetailsName'] = areaShow
|
||||||
|
} else {
|
||||||
|
item1['Nav_PostDetailsName'] = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (this.model.Nav_Details && this.model.Nav_Details.length > 0) {
|
||||||
|
this.model.Nav_Details.map(item => {
|
||||||
|
if (item.Nav_DetailContents && item.Nav_DetailContents.length > 0) {
|
||||||
|
item.Nav_DetailContents.map(item1 => {
|
||||||
|
if (item1.Nav_DetailBasics && item1.Nav_DetailBasics.length > 0) {
|
||||||
|
let areaShow = ''
|
||||||
|
item1.Nav_DetailBasics.map(o => {
|
||||||
|
areaShow += o.Nav_Law.NAME + ' '
|
||||||
|
})
|
||||||
|
item1['Nav_DetailBasicsName'] = areaShow
|
||||||
|
} else {
|
||||||
|
item1['Nav_DetailBasicsName'] = ''
|
||||||
|
}
|
||||||
|
if (item1.Nav_DetailHiddens && item1.Nav_DetailHiddens.length > 0) {
|
||||||
|
item1.Nav_DetailHiddens.map(item2 => {
|
||||||
|
item2.HIDDEN_LEVELName = item2.HIDDEN_LEVEL !== undefined ? (item2.HIDDEN_LEVEL == 0 ? '一般' : '重大') : '';
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (item1.Nav_DetailDeparts && item1.Nav_DetailDeparts.length > 0) {
|
||||||
|
item1.Nav_DetailDeparts.map(item2 => {
|
||||||
|
const checkTypeItem = item2.CHECK_TYPE !== undefined ?
|
||||||
|
this.enumsData['SKDepartmentTypeEnum'].find(item => item.code === item2.CHECK_TYPE) :
|
||||||
|
null;
|
||||||
|
item2.CHECK_TYPEName = checkTypeItem ? checkTypeItem.name : '';
|
||||||
|
|
||||||
|
const cycleItem = item2.CHECK_CYCLE !== undefined ?
|
||||||
|
this.enumsData['SKPLANCHECKFREQUENCYEnum'].find(item => item.code === item2.CHECK_CYCLE) :
|
||||||
|
null;
|
||||||
|
item2.CHECK_CYCLEName = cycleItem ? cycleItem.name : '';
|
||||||
|
if (item2.Nav_DetailPosts && item2.Nav_DetailPosts.length > 0) {
|
||||||
|
let areaShow = ''
|
||||||
|
item2.Nav_DetailPosts.map(o => {
|
||||||
|
areaShow += o.Nav_Post.NAME + ' '
|
||||||
|
})
|
||||||
|
item2['Nav_DetailPostsName'] = areaShow
|
||||||
|
} else {
|
||||||
|
item2['Nav_DetailPostsName'] = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
this.stepsPage = res.STATUS == 0 ? 0 : 1
|
||||||
|
|
||||||
|
})
|
||||||
|
this.isLoadOK = true
|
||||||
|
},
|
||||||
|
gotoCheck(detailData) {
|
||||||
|
uni.setStorageSync('detailData', detailData);
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'enterprise/checkDetail'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
formattedCheckUsers() {
|
||||||
|
// 收集所有检查人员并去重
|
||||||
|
const userMap = new Map();
|
||||||
|
|
||||||
|
// 遍历所有检查内容
|
||||||
|
(this.model.Nav_CheckRecordDetails || []).forEach(detail => {
|
||||||
|
// 遍历当前检查内容的检查人员
|
||||||
|
(detail.Nav_CheckRecordDetailUsers || []).forEach(user => {
|
||||||
|
// 过滤已删除的用户
|
||||||
|
if (!user.IS_DELETED && user.Nav_User?.NAME) {
|
||||||
|
// 使用用户名作为去重依据,也可以根据实际情况使用ID
|
||||||
|
if (!userMap.has(user.Nav_User.NAME)) {
|
||||||
|
userMap.set(user.Nav_User.NAME, user.ISCHECK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 生成带颜色样式的HTML
|
||||||
|
let html = '';
|
||||||
|
userMap.forEach((isCheck, userName) => {
|
||||||
|
const color = isCheck === true ? '#000000' : '#ff0000';
|
||||||
|
html += `<span style="color: ${color}; margin-right: 10px;">${userName}</span>`;
|
||||||
|
});
|
||||||
|
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
@import url("../../../../style/css/newTemplate.css");
|
||||||
|
|
||||||
|
.todo-page>>>.u-steps-item__line {
|
||||||
|
width: 187.6px !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
84
pages/apply/subPages/SK/enterprise/checkDetail.vue
Normal file
84
pages/apply/subPages/SK/enterprise/checkDetail.vue
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page-wrap">
|
||||||
|
<view class="background"></view>
|
||||||
|
<view class="card">
|
||||||
|
<!-- <uni-card margin="0" :is-shadow="true"> -->
|
||||||
|
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" ref="wForm" class="demo-ruleForm" errorType="border-bottom">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">基本信息</view>
|
||||||
|
<view v-for="(item,index) in detailData.Nav_DetailContents">
|
||||||
|
<u-form-item :label="index+1+'.检查内容'" prop="MEASURES_NAME">
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="(item.Nav_Contents||{}).CHECKCONTENT" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="检查依据" prop="CHECKSTANDARD" border-bottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.Nav_DetailBasicsName" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="判定标准" prop="CHECKSTANDARD" border-bottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.CHECK_STANDARD" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="+ 隐患查看" prop="MEASURES_NAME" borderBottom @click="gotoCheck(item)">
|
||||||
|
<u-icon name="eye" size="22" slot="right"></u-icon>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</u--form>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
mapState,
|
||||||
|
mapMutations
|
||||||
|
} from 'vuex'
|
||||||
|
import {
|
||||||
|
extendFilterGroup,
|
||||||
|
extendGroupRule,
|
||||||
|
extendInclude,
|
||||||
|
extendOrder,
|
||||||
|
extendRule,
|
||||||
|
guid,
|
||||||
|
initFilter,
|
||||||
|
initFilterGroup
|
||||||
|
} from '../../../../../utils/common'
|
||||||
|
import {
|
||||||
|
getRequest,
|
||||||
|
} from '../../../../../services/apply/FOServices/FOServices';
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
detailData: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.detailData = uni.getStorageSync('detailData');
|
||||||
|
},
|
||||||
|
onUnload() {
|
||||||
|
// 可选:用完删除,避免占用存储
|
||||||
|
uni.removeStorageSync('detailData');
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
gotoCheck(riskData){
|
||||||
|
uni.setStorageSync('riskData', riskData);
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'riskInspec'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
@import url("../../../../../style/css/newTemplate.css");
|
||||||
|
/* @import url("../../../../style/css/editTemplate.css");
|
||||||
|
|
||||||
|
.todo-page {
|
||||||
|
padding: 16px 16px 70px;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
420
pages/apply/subPages/SK/enterprise/checkList.vue
Normal file
420
pages/apply/subPages/SK/enterprise/checkList.vue
Normal file
@ -0,0 +1,420 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page-wrap">
|
||||||
|
<view class="search-bar">
|
||||||
|
<uni-icons type="settings-filled" color="#2979ff" size="28" @click="show = true" />
|
||||||
|
<u-popup :show="show" mode="top" :round="10" @close="close" @open="open">
|
||||||
|
<view class="filter-form">
|
||||||
|
|
||||||
|
|
||||||
|
<view class="filter-row" @click.stop="handleShowPicker({title: '生产单元', name: 'SKProductionUnit'})">
|
||||||
|
<text class="filter-field-title">生产单元</text>
|
||||||
|
<u--input suffixIcon="arrow-down" customStyle="height: 20px" fontSize="13px" v-model="filterModel.MineType" suffixIconStyle="color: #909399"></u--input>
|
||||||
|
</view>
|
||||||
|
<view class="filter-row" @click.stop="handleShowPicker({title: '检查层级', name: 'SKDepartmentTypeEnum'})">
|
||||||
|
<text class="filter-field-title">检查层级</text>
|
||||||
|
<u--input suffixIcon="arrow-down" customStyle="height: 20px" fontSize="13px" v-model="filterModel.CheckLevel" suffixIconStyle="color: #909399"></u--input>
|
||||||
|
</view>
|
||||||
|
<view class="filter-row" @click.stop="handleShowPicker({title: '检查类型', name: 'CheckType'})">
|
||||||
|
<text class="filter-field-title">检查类型</text>
|
||||||
|
<u--input placeholder="选择任务类型" suffixIcon="arrow-down" customStyle="height: 20px" fontSize="13px" v-model="filterModel.CheckType" suffixIconStyle="color: #909399"></u--input>
|
||||||
|
</view>
|
||||||
|
<view class="filter-row" @click.stop="handleShowPicker({title: '检查周期', name: 'SKPLANCHECKFREQUENCYEnum'})">
|
||||||
|
<text class="filter-field-title">检查周期</text>
|
||||||
|
<u--input suffixIcon="arrow-down" customStyle="height: 20px" fontSize="13px" v-model="filterModel.CheckCycle" suffixIconStyle="color: #909399"></u--input>
|
||||||
|
</view>
|
||||||
|
<view class="filter-row">
|
||||||
|
<text class="filter-field-title">检查部门</text>
|
||||||
|
<u--input placeholder="检查部门" customStyle="height: 20px" fontSize="13px" v-model="filterModel.CheckDepart"></u--input>
|
||||||
|
</view>
|
||||||
|
<view class="filter-row">
|
||||||
|
<text class="filter-field-title">检查对象</text>
|
||||||
|
<u--input placeholder="请输入检查对象" v-model="filterModel.CheckPost" customStyle="height: 20px" fontSize="13px"></u--input>
|
||||||
|
</view>
|
||||||
|
<view class="btn-groups">
|
||||||
|
<button @click="handleReset" size='mini' type="default">重置</button>
|
||||||
|
<button @click="handleSearch" size='mini' type="primary">查询</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
<u-picker :show="comPickerInfo.showPicker" :columns="comPickerInfo.columns" @confirm="onConfirmPicker" @close="closePicker" @cancel="closePicker" keyName="NAME"></u-picker>
|
||||||
|
</view>
|
||||||
|
<view class="list-wrap">
|
||||||
|
<common-card v-if="lists.length" :titleIcon="true" :dataSource="item" v-for="item in lists" @click="viewDetail(item)">
|
||||||
|
<view class="content">
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">生产单元:</text>
|
||||||
|
<text class="value">{{item.MineType}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">检查层级:</text>
|
||||||
|
<text class="value">{{item.CheckLevel}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">检查类型:</text>
|
||||||
|
<text class="value">{{item.CheckType}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">检查周期:</text>
|
||||||
|
<text class="value">{{item.CheckCycle}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">检查部门:</text>
|
||||||
|
<text class="value">{{item.CheckDepart}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="field">
|
||||||
|
<text class="left">检查对象:</text>
|
||||||
|
<text class="value">{{item.CheckPost}}</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</common-card>
|
||||||
|
<view v-if="loading" class="loading-tip">加载中...</view>
|
||||||
|
<view v-else class="loading-tip">已加载全部数据</view>
|
||||||
|
|
||||||
|
<u-empty v-else text="暂无数据" icon="/static/empty@2x.png">
|
||||||
|
</u-empty>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
initFilter,
|
||||||
|
extendRule,
|
||||||
|
extendInclude,
|
||||||
|
extendIgnoreDataRule
|
||||||
|
} from '../../../../../utils/common'
|
||||||
|
import {
|
||||||
|
getEnum
|
||||||
|
} from '../../../../../services/common';
|
||||||
|
import {
|
||||||
|
GetSKCheckType,
|
||||||
|
SKEnterpriseLibraryNew
|
||||||
|
} from '../../../../../services/apply/subPages/SK/SKServices.js'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
lists: [],
|
||||||
|
show: false,
|
||||||
|
pageIndex: 20,
|
||||||
|
loading: true,
|
||||||
|
pageSize: 20,
|
||||||
|
total: 0,
|
||||||
|
filterModel: {
|
||||||
|
MineType: '',
|
||||||
|
CheckLevel: '',
|
||||||
|
CheckCycle:'',
|
||||||
|
CheckType: '',
|
||||||
|
CheckDepart: '',
|
||||||
|
CheckPost: '',
|
||||||
|
},
|
||||||
|
comPickerInfo: {
|
||||||
|
showPicker: false,
|
||||||
|
columns: [],
|
||||||
|
title: '',
|
||||||
|
name: ''
|
||||||
|
},
|
||||||
|
totalData: {},
|
||||||
|
allData: {},
|
||||||
|
filterData: {},
|
||||||
|
enumsData: {}, // 存储所有枚举数据(键:枚举名称,值:处理后的枚举列表)
|
||||||
|
enumsText: {} // 存储枚举文本列表(用于下拉选择等场景)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.fetchEnums(['SKProductionUnit', 'SKDepartmentTypeEnum','SKPLANCHECKFREQUENCYEnum']);
|
||||||
|
// this.loadData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchEnums(enumNames) {
|
||||||
|
try {
|
||||||
|
// 存储所有枚举请求的Promise
|
||||||
|
const enumPromises = enumNames.map(name => {
|
||||||
|
return getEnum({
|
||||||
|
name
|
||||||
|
}).then(res => {
|
||||||
|
// 统一处理枚举格式:添加name/code字段,便于后续映射
|
||||||
|
return {
|
||||||
|
enumName: name,
|
||||||
|
data: res.map(item => ({
|
||||||
|
...item,
|
||||||
|
name: item.NAME, // 统一显示名称字段
|
||||||
|
code: item.ID // 统一值字段
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 等待所有枚举请求完成
|
||||||
|
const results = await Promise.all(enumPromises);
|
||||||
|
// 存储枚举结果到data中(键为枚举名称,值为处理后的数据)
|
||||||
|
results.forEach(({
|
||||||
|
enumName,
|
||||||
|
data
|
||||||
|
}) => {
|
||||||
|
this.enumsData[enumName] = data;
|
||||||
|
// 生成文本列表(如需要)
|
||||||
|
this.enumsText[enumName] = data.map(item => item.name);
|
||||||
|
});
|
||||||
|
// 所有枚举获取完成后,执行loadData
|
||||||
|
this.loadData();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('枚举请求失败:', error);
|
||||||
|
uni.showToast({
|
||||||
|
title: '枚举数据加载失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleSearch() {
|
||||||
|
this.initData()
|
||||||
|
this.reserch()
|
||||||
|
this.show = false
|
||||||
|
this.comPickerInfo.showPicker = false
|
||||||
|
},
|
||||||
|
reserch() {
|
||||||
|
let filteredData = this.allData.filter(item => {
|
||||||
|
// 生产单元筛选(非空时才过滤)
|
||||||
|
if (this.filterModel.MineType && item.MineType !== this.filterModel.MineType) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 检查层级筛选
|
||||||
|
if (this.filterModel.CheckLevel && item.CheckLevel !== this.filterModel.CheckLevel) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 检查层级筛选
|
||||||
|
if (this.filterModel.CheckCycle && item.CheckCycle !== this.filterModel.CheckCycle) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 检查类型筛选
|
||||||
|
if (this.filterModel.CheckType && item.CheckType !== this.filterModel.CheckType) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 检查部门筛选(支持模糊匹配)
|
||||||
|
if (this.filterModel.CheckDepart &&
|
||||||
|
!item.CheckDepart.includes(this.filterModel.CheckDepart)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 检查对象筛选(支持模糊匹配)
|
||||||
|
if (this.filterModel.CheckPost &&
|
||||||
|
!item.CheckPost.includes(this.filterModel.CheckPost)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 所有条件都满足
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
// 将筛选后的数据赋值给totalData,用于后续分页加载
|
||||||
|
this.totalData = filteredData;
|
||||||
|
this.filData()
|
||||||
|
// 重新加载数据(会根据分页规则显示第一页)
|
||||||
|
// this.reload();
|
||||||
|
},
|
||||||
|
handleReset() {
|
||||||
|
this.filterModel = {
|
||||||
|
MineType: '',
|
||||||
|
CheckLevel: '',
|
||||||
|
CheckCycle:'',
|
||||||
|
CheckType: '',
|
||||||
|
CheckDepart: '',
|
||||||
|
CheckPost: '',
|
||||||
|
}
|
||||||
|
this.initData()
|
||||||
|
this.filData()
|
||||||
|
this.show = false
|
||||||
|
this.comPickerInfo.showPicker = false
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.show = false
|
||||||
|
},
|
||||||
|
open() {
|
||||||
|
|
||||||
|
},
|
||||||
|
viewDetail(checkShowData) {
|
||||||
|
uni.setStorageSync('checkShowData', checkShowData);
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'checkShow'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onConfirmPicker(e) {
|
||||||
|
if (this.comPickerInfo.name == 'CheckType') {
|
||||||
|
this.filterModel.CheckType = e.value[0].NAME
|
||||||
|
} else if (this.comPickerInfo.name == 'SKDepartmentTypeEnum') {
|
||||||
|
this.filterModel.CheckLevel = e.value[0].NAME
|
||||||
|
} else if (this.comPickerInfo.name == 'SKPLANCHECKFREQUENCYEnum') {
|
||||||
|
this.filterModel.CheckCycle = e.value[0].NAME
|
||||||
|
} else if (this.comPickerInfo.name == 'SKProductionUnit') {
|
||||||
|
this.filterModel.MineType = e.value[0].NAME
|
||||||
|
}
|
||||||
|
|
||||||
|
this.comPickerInfo.showPicker = false
|
||||||
|
},
|
||||||
|
handleShowPicker(val) {
|
||||||
|
if (val.name == 'CheckType') {
|
||||||
|
const orgId = uni.getStorageSync('orgId')
|
||||||
|
const json = initFilter(orgId)
|
||||||
|
GetSKCheckType(json).then(res => {
|
||||||
|
this.comPickerInfo = {
|
||||||
|
showPicker: true,
|
||||||
|
title: val.title,
|
||||||
|
name: val.name,
|
||||||
|
formIndex: val.formIndex,
|
||||||
|
columns: [res.Data]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.comPickerInfo = {
|
||||||
|
showPicker: true,
|
||||||
|
title: val.title,
|
||||||
|
name: val.name,
|
||||||
|
formIndex: val.formIndex,
|
||||||
|
columns: [this.enumsData[val.name]]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
handleTab(t) {
|
||||||
|
this.currentTab = t
|
||||||
|
},
|
||||||
|
initData() {
|
||||||
|
this.lists = []
|
||||||
|
this.totalData = this.allData
|
||||||
|
this.pageIndex = 20
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
async loadData() {
|
||||||
|
const orgId = uni.getStorageSync('orgId')
|
||||||
|
const json = initFilter(orgId);
|
||||||
|
extendIgnoreDataRule(json)
|
||||||
|
SKEnterpriseLibraryNew(json).then(res => {
|
||||||
|
|
||||||
|
this.totalData = (res || []).map(i => {
|
||||||
|
return {
|
||||||
|
...i,
|
||||||
|
title: i.CheckDepart,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.allData = this.totalData
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this.filData()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
filData() {
|
||||||
|
if (this.totalData.length > 20) {
|
||||||
|
this.loading = true
|
||||||
|
this.lists = this.totalData.slice(0, 20);
|
||||||
|
} else {
|
||||||
|
this.lists = this.totalData
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
reload() {
|
||||||
|
if (this.lists.length < this.totalData.length) {
|
||||||
|
this.loading = true
|
||||||
|
const endIndex = this.pageIndex + this.pageSize;
|
||||||
|
this.lists = this.totalData.slice(0, endIndex);
|
||||||
|
this.pageIndex = endIndex;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
closePicker() {
|
||||||
|
this.comPickerInfo = {
|
||||||
|
showSheet: false,
|
||||||
|
columns: [],
|
||||||
|
title: '',
|
||||||
|
name: '',
|
||||||
|
formIndex: undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onReachBottom() {
|
||||||
|
this.reload()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
@import url("../../../../../style/css/editTemplate.css");
|
||||||
|
|
||||||
|
.loading-tip {
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
color: #999;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-form {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-row {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-field-title {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #8f9ca2;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-bar {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-groups {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-groups button {
|
||||||
|
width: 48%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-list {
|
||||||
|
padding: 10px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content .field {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 18px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content .field .label {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content .field .value {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
margin-bottom: 6px;
|
||||||
|
display: flex;
|
||||||
|
font-weight: bold;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title .left {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-title .title-icon {
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
99
pages/apply/subPages/SK/enterprise/checkShow.vue
Normal file
99
pages/apply/subPages/SK/enterprise/checkShow.vue
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page-wrap">
|
||||||
|
<view class="background"></view>
|
||||||
|
<view class="card">
|
||||||
|
<!-- <uni-card margin="0" :is-shadow="true"> -->
|
||||||
|
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" ref="wForm" class="demo-ruleForm" errorType="border-bottom">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">基本信息</view>
|
||||||
|
<uni-collapse :border="false" accordion>
|
||||||
|
<view v-for="(item, index) in checkShowData.details" :key="index">
|
||||||
|
<uni-collapse-item title-border="none" :border="false">
|
||||||
|
<template v-slot:title>
|
||||||
|
<view class="uni-collapse-item__title-box">
|
||||||
|
<view class="uni-collapse-item__title-text">
|
||||||
|
{{item.RISK_NAME?index+1+'.'+item.RISK_NAME:index+1+'.'}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<view class="content" style="padding: 0px 0px 0px 10px;">
|
||||||
|
<u-form-item label="风险名称" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.RISK_NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="检查区域" prop="Nav_Contents.CHECKCONTENT" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.RISK_AREA_NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="检查内容" prop="MEASURES_NAME">
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.CHECK_CONTENTS_NAME" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="检查依据" prop="CHECKSTANDARD" >
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.CHECKPROOF" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="判定标准" prop="CHECKSTANDARD" >
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.CHECKSTANDARD" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</uni-collapse-item>
|
||||||
|
</view>
|
||||||
|
</uni-collapse>
|
||||||
|
|
||||||
|
</u--form>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
mapState,
|
||||||
|
mapMutations
|
||||||
|
} from 'vuex'
|
||||||
|
import {
|
||||||
|
extendFilterGroup,
|
||||||
|
extendGroupRule,
|
||||||
|
extendInclude,
|
||||||
|
extendOrder,
|
||||||
|
extendRule,
|
||||||
|
guid,
|
||||||
|
initFilter,
|
||||||
|
initFilterGroup
|
||||||
|
} from '../../../../../utils/common'
|
||||||
|
import {
|
||||||
|
getRequest,
|
||||||
|
} from '../../../../../services/apply/FOServices/FOServices';
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
checkShowData: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.checkShowData = uni.getStorageSync('checkShowData');
|
||||||
|
},
|
||||||
|
onUnload() {
|
||||||
|
// 可选:用完删除,避免占用存储
|
||||||
|
uni.removeStorageSync('checkShowData');
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
@import url("../../../../../style/css/newTemplate.css");
|
||||||
|
/* @import url("../../../../style/css/editTemplate.css");
|
||||||
|
|
||||||
|
.todo-page {
|
||||||
|
padding: 16px 16px 70px;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
542
pages/apply/subPages/SK/enterprise/jobList.vue
Normal file
542
pages/apply/subPages/SK/enterprise/jobList.vue
Normal file
@ -0,0 +1,542 @@
|
|||||||
|
<template>
|
||||||
|
<view class="todo-page">
|
||||||
|
<view class="background"></view>
|
||||||
|
|
||||||
|
<view class="card">
|
||||||
|
<u--form labelWidth="auto" :model="model" ref="wForm" class="demo-ruleForm">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<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 fontSize="14px" disabled disabledColor="#ffffff" v-model="(model.Nav_Department||{}).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="RISK_AREA_NAME" borderBottom ref="item1" @click="handleShowSheet({title: '辨识岗位'})">
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#ffffff" v-model="(model.Nav_Post||{}).NAME" border="none" suffixIcon="arrow-right" customStyle="margin:0px;display:flex;padding:3px 9px"
|
||||||
|
suffixIconStyle="font-size:12px"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-button type="primary" text="查询" @click="filterData" :disabled="loading"></u-button>
|
||||||
|
|
||||||
|
</u--form>
|
||||||
|
<u--form labelWidth="auto" :model="model" ref="wForm" class="demo-ruleForm" style="margin-top: 20px;" v-if="filterDatas&&filterDatas.Nav_Librarys&&filterDatas.Nav_Librarys.length>0">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">岗位风险清单</view>
|
||||||
|
<uni-collapse :border="false" accordion>
|
||||||
|
<u-checkbox-group :value="checkedItems" placement="column" @change="handleCheckboxChange">
|
||||||
|
<u-checkbox :customStyle="{marginBottom: '8px'}" label="全选" name="all">
|
||||||
|
</u-checkbox>
|
||||||
|
<view v-for="(item, index) in filterDatas.Nav_Librarys" :key="index" style="margin-top: 10px;">
|
||||||
|
|
||||||
|
|
||||||
|
<uni-collapse-item title-border="none" :border="false">
|
||||||
|
<template v-slot:title>
|
||||||
|
<view class="uni-collapse-item__title-box">
|
||||||
|
|
||||||
|
<u-checkbox :key="index" :name="item.ID">
|
||||||
|
</u-checkbox>
|
||||||
|
<view class="uni-collapse-item__title-text">
|
||||||
|
{{item.RISK_NAME?index+1+'.风险名称:'+item.RISK_NAME:index+1+'.风险名称:'}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<view class="content" style="padding: 0px 0px 0px 10px;">
|
||||||
|
<u-form-item label="生产单元" prop="Nav_Contents.CHECKCONTENT" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.MINE_NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="辨识区域" prop="Nav_Contents.CHECKCONTENT" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="(item.Nav_Area||{}).NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<!-- <u-form-item label="风险名称" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.RISK_NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item> -->
|
||||||
|
<u-form-item label="风险描述" prop="HIDDEN_PLACE" >
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="item.RISK_DESCRIPTION" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="风险类别" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="(item.Nav_Type||{}).NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险等级" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.EVALUATE_LEVELName" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</uni-collapse-item>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</u-checkbox-group>
|
||||||
|
</uni-collapse>
|
||||||
|
|
||||||
|
|
||||||
|
</u--form>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
<view style="padding: 10px 16px;" class="bottom-button" v-if="filterDatas&&filterDatas.Nav_Librarys&&filterDatas.Nav_Librarys.length>0">
|
||||||
|
<u-button type="primary" @click="submit" color="#3d4b70">生成岗位告知卡</u-button>
|
||||||
|
</view>
|
||||||
|
<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>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
GetPostRiskList,
|
||||||
|
DepartOrderPaged,
|
||||||
|
GetPostOrderPaged
|
||||||
|
} from '../../../../../services/apply/subPages/SK/SKServices.js'
|
||||||
|
// import {
|
||||||
|
// DepartOrderPaged,
|
||||||
|
// PostOrderPaged,
|
||||||
|
// getEnum
|
||||||
|
// } from '../../services/common.js'
|
||||||
|
import {
|
||||||
|
getEnum
|
||||||
|
} from '../../../../../services/common';
|
||||||
|
import config from '../../../../../config/common'
|
||||||
|
import {
|
||||||
|
initFilter,
|
||||||
|
extendRule,
|
||||||
|
extendFilterGroupGroupRules
|
||||||
|
} from '../../../../../utils/common'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
OrgId: uni.getStorageSync('orgId'),
|
||||||
|
pageIndex: 0,
|
||||||
|
pageSize: 20,
|
||||||
|
total: 0,
|
||||||
|
loading:true,
|
||||||
|
baseUrl: config.uni_app_web_source_url,
|
||||||
|
allData: [],
|
||||||
|
// 新增选中项数组,存储选中item的唯一标识
|
||||||
|
checkedItems: [],
|
||||||
|
// 存储完整的选中对象(可选)
|
||||||
|
selectedItems: [],
|
||||||
|
filterDatas: {
|
||||||
|
Nav_Librarys: []
|
||||||
|
},
|
||||||
|
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: []
|
||||||
|
},
|
||||||
|
enumsData: {}, // 存储所有枚举数据(键:枚举名称,值:处理后的枚举列表)
|
||||||
|
enumsText: {} // 存储枚举文本列表(用于下拉选择等场景)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
|
||||||
|
this.fetchEnums(['SKEvaluateLevelEnum', 'SKProductionUnit']);
|
||||||
|
},
|
||||||
|
// onReady() {
|
||||||
|
// //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
|
||||||
|
// this.$refs.uForm.setRules(this.rules)
|
||||||
|
// },
|
||||||
|
methods: {
|
||||||
|
async fetchEnums(enumNames) {
|
||||||
|
try {
|
||||||
|
// 存储所有枚举请求的Promise
|
||||||
|
const enumPromises = enumNames.map(name => {
|
||||||
|
return getEnum({
|
||||||
|
name
|
||||||
|
}).then(res => {
|
||||||
|
// 统一处理枚举格式:添加name/code字段,便于后续映射
|
||||||
|
return {
|
||||||
|
enumName: name,
|
||||||
|
data: res.map(item => ({
|
||||||
|
...item,
|
||||||
|
name: item.NAME, // 统一显示名称字段
|
||||||
|
code: item.ID // 统一值字段
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 等待所有枚举请求完成
|
||||||
|
const results = await Promise.all(enumPromises);
|
||||||
|
// 存储枚举结果到data中(键为枚举名称,值为处理后的数据)
|
||||||
|
results.forEach(({
|
||||||
|
enumName,
|
||||||
|
data
|
||||||
|
}) => {
|
||||||
|
this.enumsData[enumName] = data;
|
||||||
|
// 生成文本列表(如需要)
|
||||||
|
this.enumsText[enumName] = data.map(item => item.name);
|
||||||
|
});
|
||||||
|
// 所有枚举获取完成后,执行loadData
|
||||||
|
this.loadData();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('枚举请求失败:', error);
|
||||||
|
uni.showToast({
|
||||||
|
title: '枚举数据加载失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
loadData() {
|
||||||
|
const json = initFilter(this.OrgId, "", "")
|
||||||
|
json.IgnoreDataRule = true
|
||||||
|
GetPostRiskList(json).then(res => {
|
||||||
|
this.loading = false
|
||||||
|
this.allData = res.Data
|
||||||
|
this.allData.map(item => {
|
||||||
|
if (item.Nav_Librarys && item.Nav_Librarys.length > 0) {
|
||||||
|
item.Nav_Librarys.map(item1 => {
|
||||||
|
item1.EVALUATE_LEVELName = item1.EVALUATE_LEVEL !== undefined ? this.enumsData['SKEvaluateLevelEnum'].find(item => item.code === item1.EVALUATE_LEVEL).name : '';
|
||||||
|
if (!item1.MINE_NAME) {
|
||||||
|
item1.MINE_NAME = item1.MineType !== undefined ? this.enumsData['SKProductionUnit'].find(item => item.code === item1.MineType).name : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// this.total = res.TotalCount
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCheckboxChange(e) {
|
||||||
|
// 检查当前操作是否包含全选标识
|
||||||
|
const hasAll = e.includes('all');
|
||||||
|
// 获取所有可选项的ID列表
|
||||||
|
const allIds = this.filterDatas.Nav_Librarys.map(item => item.ID);
|
||||||
|
// 判断当前是否处于全选状态
|
||||||
|
const isAllSelected = this.checkedItems.includes('all');
|
||||||
|
|
||||||
|
if (this.checkedItems.length > e.length) {
|
||||||
|
//取消选项
|
||||||
|
if (hasAll) {
|
||||||
|
//当前有全选
|
||||||
|
if (isAllSelected) {
|
||||||
|
//上一次有全选
|
||||||
|
let arr = []
|
||||||
|
const diff = this.checkedItems.filter(item => !e.includes(item));
|
||||||
|
arr.push('all')
|
||||||
|
arr.push(...diff)
|
||||||
|
let arrs = []
|
||||||
|
arrs = this.checkedItems.filter(item => !arr.includes(item));
|
||||||
|
this.checkedItems = arrs
|
||||||
|
} else {
|
||||||
|
//lenth不对
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//当前没有全选
|
||||||
|
if (isAllSelected) {
|
||||||
|
//取消全选
|
||||||
|
// const remainingIds = allIds.filter(id => e.includes(id));
|
||||||
|
this.checkedItems = [];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
const diff = this.checkedItems.filter(item => !e.includes(item));
|
||||||
|
const newArr = this.checkedItems.filter(item => item !== diff[0]);
|
||||||
|
this.checkedItems = newArr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//新增选项
|
||||||
|
if (hasAll) {
|
||||||
|
//当前有全选
|
||||||
|
if (isAllSelected) {
|
||||||
|
//上一次有全选 /选中其他选项 lenth不成立
|
||||||
|
} else {
|
||||||
|
//上一次没有全选
|
||||||
|
// 点击全选:选中所有选项(包含全选自身)
|
||||||
|
this.checkedItems = ['all', ...allIds];
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
//当前没有全选
|
||||||
|
if (isAllSelected) {
|
||||||
|
//上一次有全选 lenth不成立
|
||||||
|
|
||||||
|
} else {
|
||||||
|
const diff = e.filter(item => !this.checkedItems.includes(item));
|
||||||
|
this.checkedItems.unshift(...diff);
|
||||||
|
if (e.length === allIds.length && allIds.length > 0) {
|
||||||
|
this.checkedItems.unshift('all');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
filterData() {
|
||||||
|
if (!this.model.DEPARTMENT_ID || !this.model.POST_ID) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'error',
|
||||||
|
title: '请选择部门和岗位'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.checkedItems = []
|
||||||
|
this.allData.map(item => {
|
||||||
|
if (item.DEPARTMENT_ID == this.model.DEPARTMENT_ID && item.POST_NAME == this.model.Nav_Post.NAME) {
|
||||||
|
this.$set(this, 'filterDatas', item);
|
||||||
|
this.$nextTick(() => { // 等待 DOM 渲染新数据后再全选
|
||||||
|
const allIds = this.filterDatas.Nav_Librarys.map(item1 => item1.ID);
|
||||||
|
this.checkedItems = ['all', ...allIds];
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (!this.filterDatas || !this.filterDatas.Nav_Librarys || this.filterDatas.Nav_Librarys.length == 0) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'error',
|
||||||
|
title: '暂无当前岗位数据',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
submit() {
|
||||||
|
let arr = []
|
||||||
|
this.filterDatas.Nav_Librarys.map(item => {
|
||||||
|
this.checkedItems.map(item1 => {
|
||||||
|
if (item.ID == item1) {
|
||||||
|
arr.push(item)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
//MEASURES_NAME处理
|
||||||
|
const groupedData = arr.reduce((acc, item) => {
|
||||||
|
const riskName = item.RISK_NAME;
|
||||||
|
// 提取当前项的所有措施,并去重(避免同一项内的重复措施)
|
||||||
|
const currentMeasures = [...new Set(
|
||||||
|
item.Nav_Details.map(detail => detail.MEASURES_NAME)
|
||||||
|
)];
|
||||||
|
|
||||||
|
if (!acc[riskName]) {
|
||||||
|
// 若该风险名称首次出现,初始化数组
|
||||||
|
acc[riskName] = currentMeasures;
|
||||||
|
} else {
|
||||||
|
// 若已存在,合并并去重(避免不同项的重复措施)
|
||||||
|
acc[riskName] = [...new Set([...acc[riskName], ...currentMeasures])];
|
||||||
|
}
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
//
|
||||||
|
// 1. 按 RISK_NAME 分组,收集所有对应的 RISK_DESCRIPTION
|
||||||
|
|
||||||
|
const allPhotos = [];
|
||||||
|
const photoNames = new Set(); // 用于记录已添加的图片name,实现去重
|
||||||
|
|
||||||
|
arr.forEach(item => {
|
||||||
|
// 确保当前对象存在 Nav_Photo 且是数组,避免报错
|
||||||
|
if (Array.isArray(item.Nav_Photo)) {
|
||||||
|
item.Nav_Photo.forEach(photo => {
|
||||||
|
// 判断图片name是否已存在,不存在则添加
|
||||||
|
if (!photoNames.has(photo.NAME)) {
|
||||||
|
allPhotos.push(photo);
|
||||||
|
photoNames.add(photo.NAME);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 此时 allPhotos 已包含所有 Nav_Photo 中的图片对象
|
||||||
|
let newarr = {
|
||||||
|
departName: this.filterDatas.Nav_Department ? this.filterDatas.Nav_Department.NAME : '',
|
||||||
|
userName: this.filterDatas.USER_NAME,
|
||||||
|
phone: this.filterDatas.PHONE,
|
||||||
|
postName: this.filterDatas.POST_NAME,
|
||||||
|
RISK_NAME: [...new Set(
|
||||||
|
arr.map(item => item.RISK_NAME.trim())
|
||||||
|
)].join(' ;'),
|
||||||
|
EVALUATE_LEVELName: [...new Set(
|
||||||
|
arr.map(item => item.EVALUATE_LEVELName.trim())
|
||||||
|
)].join(' ;'),
|
||||||
|
RISK_TYPE: [...new Set(
|
||||||
|
arr.map(item => item.Nav_Type.NAME.trim())
|
||||||
|
)].join(' ;'),
|
||||||
|
RISK_DESCRIPTION: [...new Set(
|
||||||
|
arr.map(item => item.RISK_DESCRIPTION.trim())
|
||||||
|
)].join(' ;'),
|
||||||
|
MEASURES_NAME: Object.entries(groupedData)
|
||||||
|
.map(([riskName, measures], index) => {
|
||||||
|
// 生成带序号的措施(1.xxx 2.yyy)
|
||||||
|
const measuresList = measures
|
||||||
|
.map((measure, mIndex) => `${mIndex + 1}.${measure}`)
|
||||||
|
.join('\n ');
|
||||||
|
|
||||||
|
// 不同风险组之间用换行分隔(首组不加前缀换行)
|
||||||
|
return index === 0 ?
|
||||||
|
`${riskName}:\n ${measuresList}` :
|
||||||
|
`\n${riskName}:\n ${measuresList}`;
|
||||||
|
})
|
||||||
|
.join(''),
|
||||||
|
RISK_DESCRIPTION: this.handleData(arr, 'RISK_DESCRIPTION'),
|
||||||
|
EMERGENCY: this.handleData(arr, 'EMERGENCY'),
|
||||||
|
Nav_Photo: allPhotos
|
||||||
|
}
|
||||||
|
uni.setStorageSync('detailData', newarr);
|
||||||
|
uni.navigateTo({
|
||||||
|
url: 'jobRiskShow'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleData(arr, namekey) {
|
||||||
|
const oneData = {};
|
||||||
|
arr.forEach(item => {
|
||||||
|
const name = item.RISK_NAME;
|
||||||
|
const desc = item[namekey];
|
||||||
|
// 若该名称已存在,追加描述;否则新建键值对
|
||||||
|
if (oneData[name]) {
|
||||||
|
oneData[name].add(desc);
|
||||||
|
} else {
|
||||||
|
oneData[name] = new Set([desc]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const resultArr = [];
|
||||||
|
for (const [name, descList] of Object.entries(oneData)) {
|
||||||
|
// Set 转数组,再拼接为 “名称:描述1;描述2” 格式
|
||||||
|
const descStr = Array.from(descList).join(';');
|
||||||
|
resultArr.push(`${name}:${descStr}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 所有名称的拼接结果用 “\n” 连接,得到最终字符串
|
||||||
|
const finalResult = resultArr.join('\n');
|
||||||
|
return finalResult
|
||||||
|
},
|
||||||
|
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) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中...'
|
||||||
|
})
|
||||||
|
this.pageIndex = 0
|
||||||
|
var defaultChecked = []
|
||||||
|
let dataSelect = []
|
||||||
|
const json = initFilter(this.OrgId, null, "NAME", 0, (p.pageIndex ?? 1));
|
||||||
|
json.IgnoreDataRule = true
|
||||||
|
json.Limit = 20
|
||||||
|
if (p.val) {
|
||||||
|
// extendFilterGroupGroupRules(json, 'NAME', 9, p.val)
|
||||||
|
extendRule(json, "NAME", 9, p.val)
|
||||||
|
}
|
||||||
|
if (p.title == '辨识部门') {
|
||||||
|
dataSelect = await DepartOrderPaged(json).then(res => {
|
||||||
|
uni.hideLoading()
|
||||||
|
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
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
if (this.model.DEPARTMENT_ID && this.model.DEPARTMENT_ID !== null) {
|
||||||
|
// extendRule(json, "DEPARTMENT_ID", 1, this.model.DEPARTMENT_ID)
|
||||||
|
json.Keyword = this.model.DEPARTMENT_ID
|
||||||
|
}
|
||||||
|
dataSelect = await GetPostOrderPaged(json).then(res => {
|
||||||
|
uni.hideLoading()
|
||||||
|
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
|
||||||
|
if (this.selectorInfo.title == '辨识部门') {
|
||||||
|
this.model.Nav_Department = e
|
||||||
|
this.model.DEPARTMENT_ID = e.ID
|
||||||
|
} else {
|
||||||
|
this.model.Nav_Post = e
|
||||||
|
this.model.POST_ID = e.ID
|
||||||
|
}
|
||||||
|
// this.WorkerScheduling()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url("../../../../../style/css/newTemplate.css");
|
||||||
|
</style>
|
||||||
155
pages/apply/subPages/SK/enterprise/jobRiskShow.vue
Normal file
155
pages/apply/subPages/SK/enterprise/jobRiskShow.vue
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
<template>
|
||||||
|
<view class="todo-page" style="padding-bottom: 10px;">
|
||||||
|
<view class="background"></view>
|
||||||
|
|
||||||
|
<view class="card">
|
||||||
|
<u--form labelWidth="auto" :model="detailData" ref="wForm" class="demo-ruleForm">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">{{detailData.postName}}岗位安全风险告知卡</view>
|
||||||
|
<u-form-item label="风险名称" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.RISK_NAME" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="风险等级" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.EVALUATE_LEVELName" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="事故后果" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.RISK_TYPE" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="风险描述" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.RISK_DESCRIPTION" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="安全标志" prop="HIDDEN_PLACE" >
|
||||||
|
</u-form-item>
|
||||||
|
<!-- 安全标志图片列表 -->
|
||||||
|
<view class="safety-sign-list">
|
||||||
|
<!-- 循环展示所有图片 -->
|
||||||
|
<view class="safety-sign-item" v-for="(photo, index) in detailData.Nav_Photo" :key="index">
|
||||||
|
<!-- 图片展示 -->
|
||||||
|
<image
|
||||||
|
:src="hosturl +photo.Nav_ImgFile.FILE_PATH"
|
||||||
|
mode="widthFix"
|
||||||
|
class="sign-image"
|
||||||
|
alt="安全标志图片"
|
||||||
|
></image>
|
||||||
|
<!-- 图片对应的名称 -->
|
||||||
|
<view class="sign-name">{{ photo.NAME }}</view>
|
||||||
|
</view>
|
||||||
|
<!-- 没有图片时的提示 -->
|
||||||
|
<view v-if="!detailData.Nav_Photo || detailData.Nav_Photo.length === 0" class="no-data">
|
||||||
|
暂无安全标志图片
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.RISK_DESCRIPTION" border="none" inputAlign="right" autoHeight></u--textarea> -->
|
||||||
|
<u-form-item label="管控措施" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.MEASURES_NAME" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="应急处置" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.EMERGENCY" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="责任单位" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.departName" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="责任人" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.userName" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="联系方式" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="detailData.phone" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
</u--form>
|
||||||
|
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import {
|
||||||
|
// GetPostRiskList,
|
||||||
|
// PagedRisk
|
||||||
|
// } from '../../services/apply'
|
||||||
|
// import {
|
||||||
|
// DepartOrderPaged,
|
||||||
|
// PostOrderPaged,
|
||||||
|
// getEnum
|
||||||
|
// } from '../../services/common.js'
|
||||||
|
import {
|
||||||
|
getEnum
|
||||||
|
} from '../../../../../services/common';
|
||||||
|
import config from '../../../../../config/common'
|
||||||
|
import {
|
||||||
|
initFilter,
|
||||||
|
extendRule
|
||||||
|
} from '../../../../../utils/common'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
detailData: {},
|
||||||
|
model: {},
|
||||||
|
hosturl:config.uni_app_web_source_url
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.detailData = uni.getStorageSync('detailData');
|
||||||
|
},
|
||||||
|
onUnload() {
|
||||||
|
// 可选:用完删除,避免占用存储
|
||||||
|
uni.removeStorageSync('detailData');
|
||||||
|
},
|
||||||
|
// onReady() {
|
||||||
|
// //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
|
||||||
|
// this.$refs.uForm.setRules(this.rules)
|
||||||
|
// },
|
||||||
|
methods: {},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url("../../../../../style/css/newTemplate.css");
|
||||||
|
.safety-sign-list {
|
||||||
|
padding: 0 16px;
|
||||||
|
/* margin-bottom: 5px; */
|
||||||
|
/* 启用 Flex 布局 */
|
||||||
|
display: flex;
|
||||||
|
/* 允许换行 */
|
||||||
|
flex-wrap: wrap;
|
||||||
|
/* 子元素之间的间距(可选,调整水平间距) */
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.safety-sign-item {
|
||||||
|
/* 每个元素占 1/3 宽度(减去间距的容错) */
|
||||||
|
width: calc(33.33% - 10px);
|
||||||
|
margin-bottom: 15px;
|
||||||
|
text-align: center;
|
||||||
|
/* 避免内容溢出时压缩元素宽度 */
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 其他样式保持不变 */
|
||||||
|
.sign-image {
|
||||||
|
width: 100%; /* 图片自适应父元素宽度 */
|
||||||
|
max-width: 300px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sign-name {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.5;
|
||||||
|
/* 文字超长时自动换行 */
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-data {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #999;
|
||||||
|
padding: 10px 0;
|
||||||
|
text-align: center;
|
||||||
|
/* 占满整行 */
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
102
pages/apply/subPages/SK/enterprise/riskInspec.vue
Normal file
102
pages/apply/subPages/SK/enterprise/riskInspec.vue
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page-wrap">
|
||||||
|
<view class="background"></view>
|
||||||
|
<view class="card">
|
||||||
|
<!-- <uni-card margin="0" :is-shadow="true"> -->
|
||||||
|
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" ref="wForm" class="demo-ruleForm" errorType="border-bottom">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">隐患查看</view>
|
||||||
|
<view v-for="(item,index) in riskData.Nav_DetailHiddens">
|
||||||
|
<u-form-item :label="index+1+'.隐患描述'" prop="MEASURES_NAME">
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.HIDDEN_DESCRIPTION" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="隐患等级" prop="CHECKSTANDARD" >
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.HIDDEN_LEVELName" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="整改措施" prop="CHECKSTANDARD" >
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.RECTIFICATION_MEASURES" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</u--form>
|
||||||
|
<u--form labelPosition="left" labelWidth="auto" labelAlign="center" ref="wForm" class="demo-ruleForm" errorType="border-bottom" style="margin-top: 20px;">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">隐患查看</view>
|
||||||
|
<view v-for="(item,index) in riskData.Nav_DetailDeparts">
|
||||||
|
<u-form-item :label="index+1+'.检查层级'" prop="MEASURES_NAME">
|
||||||
|
<u--input v-model="item.CHECK_TYPEName" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="检查部门" prop="CHECKSTANDARD" >
|
||||||
|
<u--input v-model="(item.Nav_Department||{}).NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="检查岗位" prop="CHECKSTANDARD" >
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea v-model="item.Nav_DetailPostsName" disabled autoHeight maxlength="-1"></u--textarea>
|
||||||
|
<u-form-item label="检查类型" prop="HIDDEN_PLACE" >
|
||||||
|
<u--input v-model="(item.Nav_CheckType||{}).NAME" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="检查周期" prop="HIDDEN_PLACE" border-bottom>
|
||||||
|
<u--input v-model="item.CHECK_CYCLEName" disabled disabledColor="#ffffff" inputAlign="right" fontSize="14px" border="none">
|
||||||
|
</u--input>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</u--form>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
mapState,
|
||||||
|
mapMutations
|
||||||
|
} from 'vuex'
|
||||||
|
import {
|
||||||
|
extendFilterGroup,
|
||||||
|
extendGroupRule,
|
||||||
|
extendInclude,
|
||||||
|
extendOrder,
|
||||||
|
extendRule,
|
||||||
|
guid,
|
||||||
|
initFilter,
|
||||||
|
initFilterGroup
|
||||||
|
} from '../../../../../utils/common'
|
||||||
|
import {
|
||||||
|
getRequest,
|
||||||
|
} from '../../../../../services/apply/FOServices/FOServices';
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
riskData: {},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
this.riskData = uni.getStorageSync('riskData');
|
||||||
|
},
|
||||||
|
onUnload() {
|
||||||
|
// 可选:用完删除,避免占用存储
|
||||||
|
uni.removeStorageSync('riskData');
|
||||||
|
},
|
||||||
|
methods: {}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
@import url("../../../../../style/css/newTemplate.css");
|
||||||
|
/* @import url("../../../../style/css/editTemplate.css");
|
||||||
|
|
||||||
|
.todo-page {
|
||||||
|
padding: 16px 16px 70px;
|
||||||
|
} */
|
||||||
|
</style>
|
||||||
212
pages/apply/subPages/SK/enterprise/summary.vue
Normal file
212
pages/apply/subPages/SK/enterprise/summary.vue
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
<template>
|
||||||
|
<view class="todo-page" style="padding-bottom: 10px;">
|
||||||
|
<view class="background"></view>
|
||||||
|
|
||||||
|
<view class="card" style="padding-bottom: 20px;">
|
||||||
|
<u--form labelWidth="auto" :model="model" ref="wForm" class="demo-ruleForm">
|
||||||
|
<view style="position: relative;">
|
||||||
|
<view style="position: absolute;left: -10px;color: #3d4b70;top: -3px;">*</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 15px; font-weight: bold;color: #3d4b70;margin-bottom: 10px;">双重预防机制企业库</view>
|
||||||
|
<uni-collapse :border="false" accordion>
|
||||||
|
<view v-for="(item, index) in showData" :key="index">
|
||||||
|
<uni-collapse-item title-border="none" :border="false">
|
||||||
|
<template v-slot:title>
|
||||||
|
<view class="uni-collapse-item__title-box">
|
||||||
|
<view class="uni-collapse-item__title-text">
|
||||||
|
{{item.Nav_Area?index+1+'.'+item.Nav_Area.NAME:index+1+'.'}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<view class="content" style="padding: 0px 0px 0px 10px;">
|
||||||
|
<u-form-item label="生产单元" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.MINE_NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="辨识区域" prop="Nav_Contents.CHECKCONTENT" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="(item.Nav_Area||{}).NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险名称" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.RISK_NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险描述" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="item.RISK_DESCRIPTION" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="风险类别" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="(item.Nav_Type||{}).NAME" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="风险等级" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.EVALUATE_LEVELName" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
|
||||||
|
<u-form-item label="管控层级" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.CONTROLLEVEL" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="管控部门" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.CONTROLDEPT" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="管控责任人" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.CONTROLUSER" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
<u-form-item label="管控措施" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="item.MEASURE" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="应急处置" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="item.EMERGENCY" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="检查内容" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="item.CHECKCONTENTS" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="隐患描述" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="item.HIDDENSCRIPTION" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="整改措施" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
</u-form-item>
|
||||||
|
<u--textarea fontSize="14px" disabled disabledColor="#fff" v-model="item.RECIFYMEASURE" border="none" inputAlign="right" autoHeight></u--textarea>
|
||||||
|
<u-form-item label="检查层级" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.CHECKLEVEL" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
|
||||||
|
<u-form-item label="检查类型" prop="HIDDEN_PLACE" borderBottom>
|
||||||
|
<u--input fontSize="14px" disabled disabledColor="#fff" v-model="item.CHECKTYPE" border="none" inputAlign="right"></u--input>
|
||||||
|
</u-form-item>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
|
||||||
|
</uni-collapse-item>
|
||||||
|
</view>
|
||||||
|
</uni-collapse>
|
||||||
|
<view v-if="loading" class="loading-tip">加载中...</view>
|
||||||
|
<view v-else class="loading-tip">已加载全部数据</view>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</u--form>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
initFilter,
|
||||||
|
extendRule,
|
||||||
|
extendInclude
|
||||||
|
} from '../../../../../utils/common'
|
||||||
|
import {
|
||||||
|
MineTypeIndex,
|
||||||
|
MineTypeName
|
||||||
|
} from '../../../../../utils/enums.js'
|
||||||
|
import {
|
||||||
|
SKOrderEntities
|
||||||
|
} from '../../../../../services/apply/subPages/SK/SKServices.js'
|
||||||
|
import {
|
||||||
|
getEnum
|
||||||
|
} from '../../../../../services/common';
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageIndex: 0,
|
||||||
|
pageSize: 20,
|
||||||
|
total: 0,
|
||||||
|
loading: true,
|
||||||
|
model: {
|
||||||
|
filterDatas: []
|
||||||
|
},
|
||||||
|
showData: [],
|
||||||
|
enumsData: {}, // 存储所有枚举数据(键:枚举名称,值:处理后的枚举列表)
|
||||||
|
enumsText: {} // 存储枚举文本列表(用于下拉选择等场景)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.fetchEnums(['SKProductionUnit', 'SKEvaluateLevelEnum']);
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async fetchEnums(enumNames) {
|
||||||
|
try {
|
||||||
|
// 存储所有枚举请求的Promise
|
||||||
|
const enumPromises = enumNames.map(name => {
|
||||||
|
return getEnum({
|
||||||
|
name
|
||||||
|
}).then(res => {
|
||||||
|
// 统一处理枚举格式:添加name/code字段,便于后续映射
|
||||||
|
return {
|
||||||
|
enumName: name,
|
||||||
|
data: res.map(item => ({
|
||||||
|
...item,
|
||||||
|
name: item.NAME, // 统一显示名称字段
|
||||||
|
code: item.ID // 统一值字段
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 等待所有枚举请求完成
|
||||||
|
const results = await Promise.all(enumPromises);
|
||||||
|
// 存储枚举结果到data中(键为枚举名称,值为处理后的数据)
|
||||||
|
results.forEach(({
|
||||||
|
enumName,
|
||||||
|
data
|
||||||
|
}) => {
|
||||||
|
this.enumsData[enumName] = data;
|
||||||
|
// 生成文本列表(如需要)
|
||||||
|
this.enumsText[enumName] = data.map(item => item.name);
|
||||||
|
});
|
||||||
|
// 所有枚举获取完成后,执行loadData
|
||||||
|
this.loadData();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('枚举请求失败:', error);
|
||||||
|
uni.showToast({
|
||||||
|
title: '枚举数据加载失败',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
loadData() {
|
||||||
|
const orgId = uni.getStorageSync('orgId')
|
||||||
|
let json = initFilter(orgId);
|
||||||
|
SKOrderEntities(json).then(res => {
|
||||||
|
this.total = res.TotalCount
|
||||||
|
this.model.filterDatas = res.Data
|
||||||
|
this.model.filterDatas.map(item => {
|
||||||
|
item.MINE_NAME = item.MineType !== undefined ? this.enumsData['SKProductionUnit'].find(item1 => item1.code === item.MineType).name : '';
|
||||||
|
item.EVALUATE_LEVELName = item.EVALUATE_LEVEL !== undefined ? this.enumsData['SKEvaluateLevelEnum'].find(item1 => item1.code === item.EVALUATE_LEVEL).name : '';
|
||||||
|
})
|
||||||
|
this.reload()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
reload() {
|
||||||
|
|
||||||
|
if (this.showData.length >= this.model.filterDatas.length) {
|
||||||
|
this.loading = false
|
||||||
|
} else {
|
||||||
|
this.loading = true
|
||||||
|
const endIndex = this.pageIndex + this.pageSize;
|
||||||
|
this.showData = this.model.filterDatas.slice(0, endIndex);
|
||||||
|
this.pageIndex = endIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onReachBottom() {
|
||||||
|
this.reload()
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import url("../../../../../style/css/newTemplate.css");
|
||||||
|
|
||||||
|
.loading-tip {
|
||||||
|
text-align: center;
|
||||||
|
padding: 15px 0;
|
||||||
|
color: #999;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in New Issue
Block a user