安全意识调查、培训需求调查

This commit is contained in:
yunkexin 2026-06-01 10:32:15 +08:00
parent c19d5ecd8f
commit 038f01dcac
2 changed files with 331 additions and 59 deletions

View File

@ -29,7 +29,57 @@
<view class="tag-view" v-if="model.Nav_Points"> <view class="tag-view" v-if="model.Nav_Points">
<uni-tag class="tag" v-for="(i, k) in model.Nav_Points.filter(i => !i.IS_DELETED)" :key="k" :inverted="true" :text="i.Nav_Point.NAME" type="primary" /> <uni-tag class="tag" v-for="(i, k) in model.Nav_Points.filter(i => !i.IS_DELETED)" :key="k" :inverted="true" :text="i.Nav_Point.NAME" type="primary" />
</view> </view>
<u-form-item label="含下级组织成员" v-if="model.STATUS == undefined||model.STATUS == '0'">
<u-switch v-model="model.IS_DOWN" @change="changeDown" slot="right"></u-switch>
</u-form-item>
</u--form>
<u--form labelWidth="auto" :model="model" ref="wForm" class="sub-form">
<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;margin-top: 20px;">组织人员</view>
<uni-collapse :border="false" accordion>
<view v-for="(item, index) in model.Nav_ListUsers.filter(i => !i.IS_DELETED)" :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">
{{index+1+'.'+(item.Nav_Department||{}).NAME+'-'+(item.Nav_User||{}).NAME}}
</view>
<view @click.stop>
<u-icon @click="handleDelRowBefore(item)" name="trash" color="#ff4d4f" size="21" style="margin-right: 10px;"></u-icon>
</view>
</view>
</template>
<view class="content" style="padding: 0px 0px 0px 10px;">
<u-form-item label="组织" prop="Product_Unit" @click="handleShowSheet({title: '组织', name: 'Nav_Department',itemData:item})" borderBottom>
<u--input v-model="(item.Nav_Department||{}).NAME" disabled disabledColor="#ffffff" placeholder="请选择组织" border="none" inputAlign="right" fontSize="14px">
</u--input>
<u-icon style="margin-left: 4px;" name="arrow-down" size="12">
</u-icon>
</u-form-item>
<u-form-item label="人员" prop="Product_Unit" @click="handleShowSheet({title: '人员', name: 'Nav_User',itemData:item})" borderBottom>
<u--input v-model="(item.Nav_User||{}).NAME" disabled disabledColor="#ffffff" placeholder="请选择人员" border="none" inputAlign="right" fontSize="14px">
</u--input>
<u-icon style="margin-left: 4px;" name="arrow-down" size="12">
</u-icon>
</u-form-item>
</view>
</uni-collapse-item>
</view>
</uni-collapse>
<view style="padding: 10px 16px;display: flex;flex-direction: row;">
<u-button type="primary" @click="handleNew" color="#3d4b70" :plain="true" style="margin-right: 5px;">新增</u-button>
<!-- <u-button type="primary" @click="handleNewCheckList" color="#3d4b70" style="margin-left: 5px;">检查清单</u-button> -->
</view>
</u--form> </u--form>
</view> </view>
<view style="padding: 10px 16px;" class="bottom-button"> <view style="padding: 10px 16px;" class="bottom-button">
@ -90,6 +140,7 @@
Nav_Points: [], Nav_Points: [],
NAME: '', NAME: '',
END_TIME: '', END_TIME: '',
Nav_ListUsers: []
}, },
peopleSelectOption: { peopleSelectOption: {
@ -148,7 +199,6 @@
loadData() { loadData() {
if (this.ID == undefined || this.ID == '') { if (this.ID == undefined || this.ID == '') {
this.stepLoad = false this.stepLoad = false
if (this.ID == undefined || this.ID == '')
this.ID = guid() this.ID = guid()
this.model.ID = this.ID this.model.ID = this.ID
} else { } else {
@ -160,6 +210,9 @@
extendInclude(json, 'Nav_Points'); extendInclude(json, 'Nav_Points');
extendInclude(json, 'Nav_Points.Nav_Point'); extendInclude(json, 'Nav_Points.Nav_Point');
extendInclude(json, 'Nav_LaunchUser'); extendInclude(json, 'Nav_LaunchUser');
extendInclude(json, 'Nav_ListUsers');
extendInclude(json, 'Nav_ListUsers.Nav_Department');
extendInclude(json, 'Nav_ListUsers.Nav_User');
extendIgnoreDataRule(json) extendIgnoreDataRule(json)
// extendInclude(json, 'Nav_Details.Nav_DetailContents.Nav_Question'); // extendInclude(json, 'Nav_Details.Nav_DetailContents.Nav_Question');
@ -186,6 +239,20 @@
} }
}, },
changeDown(e) {
this.getOperationList()
},
handleDelRowBefore(item) {
item.IS_DELETED = true
let indexNotDel = 1
this.model.Nav_ListUsers.forEach((e, i) => {
if (!e.IS_DELETED) {
e.ROW_NO = indexNotDel
indexNotDel++
}
})
this.$forceUpdate()
},
async handleShowSheet(p) { async handleShowSheet(p) {
const orgId = uni.getStorageSync('orgId') const orgId = uni.getStorageSync('orgId')
@ -205,18 +272,24 @@
json.Start = (p.pageIndex - 1) * json.Limit; json.Start = (p.pageIndex - 1) * json.Limit;
} }
json.Sort = 'NAME' json.Sort = 'NAME'
if (p.name == 'Nav_JoinDepartment' || p.name == 'Nav_Department') {
if (p.name == 'Nav_JoinDepartment') { if (p.name == 'Nav_JoinDepartment') {
this.selectorInfo.isMultiple = true this.selectorInfo.isMultiple = true
extendRule(json, 'ENABLE_STATUS', 1, '0') extendRule(json, 'ENABLE_STATUS', 1, '0')
json.Sort = 'ID'
json.SelectField = ["ID", "NAME", "NAME"]
}
dataSelect = await getRequestOrderPage(json, "/FM/Department/OrderPaged").then(res => { dataSelect = await getRequestOrderPage(json, "/FM/Department/OrderPaged").then(res => {
this.selectorInfo.totalCount = res.TotalCount this.selectorInfo.totalCount = res.TotalCount
if (res != undefined && res.Data.length > 0) { if (res != undefined && res.Data.length > 0) {
for (let i = 0; i < res.Data.length; i++) { for (let i = 0; i < res.Data.length; i++) {
res.Data[i].NAME = res.Data[i].NAME res.Data[i].NAME = res.Data[i].NAME
res.Data[i].name = res.Data[i].NAME
} }
} else { } else {
uni.showToast({ uni.showToast({
@ -226,6 +299,7 @@
} }
return res.Data return res.Data
}) })
if (p.name == 'Nav_JoinDepartment') {
if (this.model.Nav_JoinDepartment && this.model.Nav_JoinDepartment.length > 0 && this.model.Nav_JoinDepartment[0] if (this.model.Nav_JoinDepartment && this.model.Nav_JoinDepartment.length > 0 && this.model.Nav_JoinDepartment[0]
.Nav_Department != null) { .Nav_Department != null) {
// this.selectorInfo.defaultChecked = [] // this.selectorInfo.defaultChecked = []
@ -235,6 +309,8 @@
} else { } else {
defaultChecked = null defaultChecked = null
} }
}
} else if (p.name == 'Nav_Points') { } else if (p.name == 'Nav_Points') {
this.selectorInfo.isMultiple = true this.selectorInfo.isMultiple = true
@ -264,6 +340,25 @@
} else { } else {
defaultChecked = null defaultChecked = null
} }
} else if (p.name == 'Nav_User') {
if (p.itemData.DEPARTMENT_ID) {
extendRule(json, 'DEPARTMENT_ID', 1, p.itemData.DEPARTMENT_ID)
}
json.OrgRule = []
dataSelect = await getRequestOrderPage(json, "/FM/FMUser/OrderPagedUseful").then(res => {
this.selectorInfo.totalCount = res.TotalCount
if (res != undefined && res.Data.length > 0) {
for (let i = 0; i < res.Data.length; i++) {
res.Data[i].name = res.Data[i].NAME
}
} else {
uni.showToast({
title: '暂无信息',
icon: 'none'
})
}
return res.Data
})
} }
if (defaultChecked == null) if (defaultChecked == null)
defaultChecked = [] defaultChecked = []
@ -314,6 +409,7 @@
}) })
} }
this.model.Nav_JoinDepartment = listArea this.model.Nav_JoinDepartment = listArea
this.getOperationList()
// this.model.RiskAreaNAME = areaShow // this.model.RiskAreaNAME = areaShow
} else if (this.selectorInfo.name == 'Nav_Points') { } else if (this.selectorInfo.name == 'Nav_Points') {
let listArea = [] let listArea = []
@ -331,9 +427,45 @@
}) })
} }
this.model.Nav_Points = listArea this.model.Nav_Points = listArea
} else if (this.selectorInfo.name == 'Nav_Department') {
this.selectorInfo.itemData.Nav_Department = e
this.selectorInfo.itemData.DEPARTMENT_ID = e.ID
} else if (this.selectorInfo.name == 'Nav_User') {
this.selectorInfo.itemData.Nav_User = e
this.selectorInfo.itemData.USER_ID = e.ID
} }
},
handleNew() {
this.model.Nav_ListUsers.push({
Nav_Department: {
NAME: ''
},
Nav_User: {
NAME: ''
},
USER_ID: '',
DEPARTMENT_ID: ''
})
},
getOperationList() {
let keyWord = ''
if (this.model.Nav_JoinDepartment != null && this.model.Nav_JoinDepartment.length > 0) {
this.model.Nav_JoinDepartment.forEach(e => {
if (e.IS_DELETED == null || e.IS_DELETED == false)
keyWord += e.DEPARTMENT_ID + '|'
})
}
if (keyWord.length > 0) {
const orgId = uni.getStorageSync('orgId')
const json = initFilter(orgId, keyWord, null, null, null, (this.model.IS_DOWN == null ? 'false' : this.model.IS_DOWN), this.model.ID)
extendRule(json, 'id', 1, this.model.ID);
getRequestOrderPage(json, "/SE/SESafeSurvey/GetListDemand").then(res => {
this.model.Nav_ListUsers = res.Data
})
}
}, },
showCheckDate(dataIndex, item) { showCheckDate(dataIndex, item) {
this.dateTimePickerInfo = { this.dateTimePickerInfo = {
@ -355,11 +487,12 @@
}, },
submit() { submit() {
this.modelEdit = JSON.parse(JSON.stringify(this.model)) this.modelEdit = JSON.parse(JSON.stringify(this.model))
// if(this.modelEdit.Nav_JoinDepartment&&this.modelEdit.Nav_JoinDepartment.length>0){ if (this.modelEdit.Nav_ListUsers && this.modelEdit.Nav_ListUsers.length > 0) {
// this.modelEdit.Nav_JoinDepartment.map(item=>{ this.modelEdit.Nav_ListUsers.map(item => {
// delete item.Nav_Department delete item.Nav_Department
// }) delete item.Nav_User
// } })
}
// if(this.modelEdit.Nav_Points&&this.modelEdit.Nav_Points.length>0){ // if(this.modelEdit.Nav_Points&&this.modelEdit.Nav_Points.length>0){
// this.modelEdit.Nav_Points.map(item=>{ // this.modelEdit.Nav_Points.map(item=>{
// delete item.Nav_Point // delete item.Nav_Point

View File

@ -29,8 +29,59 @@
<view class="tag-view" v-if="model.Nav_Points"> <view class="tag-view" v-if="model.Nav_Points">
<uni-tag class="tag" v-for="(i, k) in model.Nav_Points.filter(i => !i.IS_DELETED)" :key="k" :inverted="true" :text="i.Nav_Point.NAME" type="primary" /> <uni-tag class="tag" v-for="(i, k) in model.Nav_Points.filter(i => !i.IS_DELETED)" :key="k" :inverted="true" :text="i.Nav_Point.NAME" type="primary" />
</view> </view>
<u-form-item label="含下级组织成员" v-if="model.STATUS == undefined||model.STATUS == '0'">
<u-switch v-model="model.IS_DOWN" @change="changeDown" slot="right"></u-switch>
</u-form-item>
</u--form> </u--form>
<u--form labelWidth="auto" :model="model" ref="wForm" class="sub-form">
<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;margin-top: 20px;">组织人员</view>
<uni-collapse :border="false" accordion>
<view v-for="(item, index) in model.Nav_Demands.filter(i => !i.IS_DELETED)" :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">
{{index+1+'.'+(item.Nav_Department||{}).NAME+'-'+(item.Nav_User||{}).NAME}}
</view>
<view @click.stop>
<u-icon @click="handleDelRowBefore(item)" name="trash" color="#ff4d4f" size="21" style="margin-right: 10px;"></u-icon>
</view>
</view>
</template>
<view class="content" style="padding: 0px 0px 0px 10px;">
<u-form-item label="组织" prop="Product_Unit" @click="handleShowSheet({title: '组织', name: 'Nav_Department',itemData:item})" borderBottom>
<u--input v-model="(item.Nav_Department||{}).NAME" disabled disabledColor="#ffffff" placeholder="请选择组织" border="none" inputAlign="right" fontSize="14px">
</u--input>
<u-icon style="margin-left: 4px;" name="arrow-down" size="12">
</u-icon>
</u-form-item>
<u-form-item label="人员" prop="Product_Unit" @click="handleShowSheet({title: '人员', name: 'Nav_User',itemData:item})" borderBottom>
<u--input v-model="(item.Nav_User||{}).NAME" disabled disabledColor="#ffffff" placeholder="请选择人员" border="none" inputAlign="right" fontSize="14px">
</u--input>
<u-icon style="margin-left: 4px;" name="arrow-down" size="12">
</u-icon>
</u-form-item>
</view>
</uni-collapse-item>
</view>
</uni-collapse>
<view style="padding: 10px 16px;display: flex;flex-direction: row;">
<u-button type="primary" @click="handleNew" color="#3d4b70" :plain="true" style="margin-right: 5px;">新增</u-button>
<!-- <u-button type="primary" @click="handleNewCheckList" color="#3d4b70" style="margin-left: 5px;">检查清单</u-button> -->
</view>
</u--form>
</view> </view>
<view style="padding: 10px 16px;" class="bottom-button"> <view style="padding: 10px 16px;" class="bottom-button">
<u-button type="primary" @click="submit" color="#3d4b70" :loading="stepLoad">提交</u-button> <u-button type="primary" @click="submit" color="#3d4b70" :loading="stepLoad">提交</u-button>
@ -90,6 +141,7 @@
Nav_Points: [], Nav_Points: [],
NAME: '', NAME: '',
END_TIME: '', END_TIME: '',
Nav_Demands: []
}, },
peopleSelectOption: { peopleSelectOption: {
@ -156,10 +208,14 @@
const json = initFilter(orgId, "", "") const json = initFilter(orgId, "", "")
extendRule(json, 'ID', 1, this.ID); extendRule(json, 'ID', 1, this.ID);
extendInclude(json, 'Nav_JoinDepartment.Nav_Department'); extendInclude(json, 'Nav_JoinDepartment.Nav_Department');
extendInclude(json, 'Nav_Points.Nav_Point');
extendInclude(json, 'Nav_LaunchDepartment');
extendInclude(json, 'Nav_LaunchUser');
extendInclude(json, 'Nav_JoinDepartment'); extendInclude(json, 'Nav_JoinDepartment');
extendInclude(json, 'Nav_Points'); extendInclude(json, 'Nav_Points');
extendInclude(json, 'Nav_Points.Nav_Point'); extendInclude(json, 'Nav_Demands');
extendInclude(json, 'Nav_LaunchUser'); extendInclude(json, 'Nav_Demands.Nav_Department');
extendInclude(json, 'Nav_Demands.Nav_User');
extendIgnoreDataRule(json) extendIgnoreDataRule(json)
// extendInclude(json, 'Nav_Details.Nav_DetailContents.Nav_Question'); // extendInclude(json, 'Nav_Details.Nav_DetailContents.Nav_Question');
@ -186,6 +242,20 @@
} }
}, },
changeDown(e) {
this.getOperationList()
},
handleDelRowBefore(item) {
item.IS_DELETED = true
let indexNotDel = 1
this.model.Nav_Demands.forEach((e, i) => {
if (!e.IS_DELETED) {
e.ROW_NO = indexNotDel
indexNotDel++
}
})
this.$forceUpdate()
},
async handleShowSheet(p) { async handleShowSheet(p) {
const orgId = uni.getStorageSync('orgId') const orgId = uni.getStorageSync('orgId')
@ -205,18 +275,22 @@
json.Start = (p.pageIndex - 1) * json.Limit; json.Start = (p.pageIndex - 1) * json.Limit;
} }
json.Sort = 'NAME' json.Sort = 'NAME'
if (p.name == 'Nav_JoinDepartment' || p.name == 'Nav_Department') {
if (p.name == 'Nav_JoinDepartment') { if (p.name == 'Nav_JoinDepartment') {
this.selectorInfo.isMultiple = true this.selectorInfo.isMultiple = true
extendRule(json, 'ENABLE_STATUS', 1, '0') extendRule(json, 'ENABLE_STATUS', 1, '0')
json.Sort = 'ID'
json.SelectField = ["ID", "NAME", "NAME"]
}
dataSelect = await getRequestOrderPage(json, "/FM/Department/OrderPaged").then(res => { dataSelect = await getRequestOrderPage(json, "/FM/Department/OrderPaged").then(res => {
this.selectorInfo.totalCount = res.TotalCount this.selectorInfo.totalCount = res.TotalCount
if (res != undefined && res.Data.length > 0) { if (res != undefined && res.Data.length > 0) {
for (let i = 0; i < res.Data.length; i++) { for (let i = 0; i < res.Data.length; i++) {
res.Data[i].NAME = res.Data[i].NAME res.Data[i].NAME = res.Data[i].NAME
res.Data[i].name = res.Data[i].NAME
} }
} else { } else {
uni.showToast({ uni.showToast({
@ -226,6 +300,7 @@
} }
return res.Data return res.Data
}) })
if (p.name == 'Nav_JoinDepartment') {
if (this.model.Nav_JoinDepartment && this.model.Nav_JoinDepartment.length > 0 && this.model.Nav_JoinDepartment[0] if (this.model.Nav_JoinDepartment && this.model.Nav_JoinDepartment.length > 0 && this.model.Nav_JoinDepartment[0]
.Nav_Department != null) { .Nav_Department != null) {
// this.selectorInfo.defaultChecked = [] // this.selectorInfo.defaultChecked = []
@ -235,6 +310,8 @@
} else { } else {
defaultChecked = null defaultChecked = null
} }
}
} else if (p.name == 'Nav_Points') { } else if (p.name == 'Nav_Points') {
this.selectorInfo.isMultiple = true this.selectorInfo.isMultiple = true
@ -266,6 +343,25 @@
} else { } else {
defaultChecked = null defaultChecked = null
} }
}else if (p.name == 'Nav_User') {
if (p.itemData.DEPARTMENT_ID) {
extendRule(json, 'DEPARTMENT_ID', 1, p.itemData.DEPARTMENT_ID)
}
json.OrgRule = []
dataSelect = await getRequestOrderPage(json, "/FM/FMUser/OrderPagedUseful").then(res => {
this.selectorInfo.totalCount = res.TotalCount
if (res != undefined && res.Data.length > 0) {
for (let i = 0; i < res.Data.length; i++) {
res.Data[i].name = res.Data[i].NAME
}
} else {
uni.showToast({
title: '暂无信息',
icon: 'none'
})
}
return res.Data
})
} }
if (defaultChecked == null) if (defaultChecked == null)
defaultChecked = [] defaultChecked = []
@ -316,6 +412,7 @@
}) })
} }
this.model.Nav_JoinDepartment = listArea this.model.Nav_JoinDepartment = listArea
this.getOperationList()
// this.model.RiskAreaNAME = areaShow // this.model.RiskAreaNAME = areaShow
} else if (this.selectorInfo.name == 'Nav_Points') { } else if (this.selectorInfo.name == 'Nav_Points') {
let listArea = [] let listArea = []
@ -333,6 +430,12 @@
}) })
} }
this.model.Nav_Points = listArea this.model.Nav_Points = listArea
} else if (this.selectorInfo.name == 'Nav_Department') {
this.selectorInfo.itemData.Nav_Department = e
this.selectorInfo.itemData.DEPARTMENT_ID = e.ID
} else if (this.selectorInfo.name == 'Nav_User') {
this.selectorInfo.itemData.Nav_User = e
this.selectorInfo.itemData.USER_ID = e.ID
} }
@ -354,9 +457,45 @@
} }
this.dateTimePickerInfo.showCheckDate = false this.dateTimePickerInfo.showCheckDate = false
},
handleNew() {
this.model.Nav_Demands.push({
Nav_Department: {
NAME: ''
},
Nav_User: {
NAME: ''
},
USER_ID: '',
DEPARTMENT_ID: ''
})
},
getOperationList() {
let keyWord = ''
if (this.model.Nav_JoinDepartment != null && this.model.Nav_JoinDepartment.length > 0) {
this.model.Nav_JoinDepartment.forEach(e => {
if (e.IS_DELETED == null || e.IS_DELETED == false)
keyWord += e.DEPARTMENT_ID + '|'
})
}
if (keyWord.length > 0) {
const orgId = uni.getStorageSync('orgId')
const json = initFilter(orgId, keyWord, null, null, null, (this.model.IS_DOWN == null ? 'false' : this.model.IS_DOWN), this.model.ID)
extendRule(json, 'id', 1, this.model.ID);
getRequestOrderPage(json, "/SE/SETrainSurvey/GetListDemand").then(res => {
this.model.Nav_Demands = res.Data
})
}
}, },
submit() { submit() {
this.modelEdit = JSON.parse(JSON.stringify(this.model)) this.modelEdit = JSON.parse(JSON.stringify(this.model))
if (this.modelEdit.Nav_Demands && this.modelEdit.Nav_Demands.length > 0) {
this.modelEdit.Nav_Demands.map(item => {
delete item.Nav_Department
delete item.Nav_User
})
}
// if(this.modelEdit.Nav_JoinDepartment&&this.modelEdit.Nav_JoinDepartment.length>0){ // if(this.modelEdit.Nav_JoinDepartment&&this.modelEdit.Nav_JoinDepartment.length>0){
// this.modelEdit.Nav_JoinDepartment.map(item=>{ // this.modelEdit.Nav_JoinDepartment.map(item=>{
// delete item.Nav_Department // delete item.Nav_Department