企业库

This commit is contained in:
yunkexin 2025-11-22 17:32:12 +08:00
parent 0287723d66
commit 61893ff470
10 changed files with 2430 additions and 0 deletions

View File

@ -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": "汇总"
}
}] }]
}, },
{ {

View 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>

View 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>

View 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>

View 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>

View 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>

View 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 12
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>

View 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>

View 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>

View 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>