动火延迟监火功能

八项作业
liujun 2024-09-02 17:08:47 +08:00
parent 9abb7e5452
commit ab79c71ec7
7 changed files with 383 additions and 37 deletions

View File

@ -45,6 +45,9 @@ export const getHotWorkGasAll = (params) => post("/app/elSpe/getAll", params) //
export const getHotWorkGasInfo = (params) => post("/app/elSpe/getInfo", params) //获取动火作业的受限空间气体检测详情
export const getHotWorkGasInfoSave = (params) => post("/app/elSpe/init", params) //获取动火作业的受限空间气体检测详情保存
export const getHotWorkGasDelete = (params) => post("/app/elSpe/delete", params) // 动火作业的受限空间气体检测删除
export const setHotWorkRecord = (params) => post("/app/deHw/initRecord", params) // 动火作业延迟监火保存记录
export const deleteHotWorkRecord = (params) => post("/app/deHw/deleteRecord", params) //获取动火作业的受限空间气体检测详情
export const getHotWorkRecord = (params) => post("/app/deHw/getRecords", params) //获取动火作业的受限空间气体检测详情保存
export const getOtherAssignmentsSelectList = (params) => post("/app/Task/getAllUnEndList", params) //关联的其他特殊作业及安全作业票编号选择列表
export const getRiskIdentificationResultsSelectList = (params) => post("/app/eightWork/getInfo", params) //风险辨识结果选择列表
export const getHotWorkMethodSelectList = (params) => post("/app/util/getDicList", params) // 动火方法选择列表

View File

@ -3,8 +3,8 @@
<view class="content">
<view class="card">
<u-form labelPosition="left" :model="form" :rules="rules" ref="formRef" labelWidth="140px">
<u-form-item label="监火人" prop="PYROMANCER" borderBottom required>
<u-input v-model="form.PYROMANCER" border="none" readonly />
<u-form-item label="监火人" prop="USER_NAME" borderBottom required>
<u-input v-model="form.USER_NAME" border="none" readonly />
</u-form-item>
<u-form-item label="时间" prop="TIME" borderBottom required
@click="fnDateTimePickerClick('TIME')">
@ -29,20 +29,33 @@
<script>
import { formatDate } from '@/utils/tools';
import {setHotWorkRecord, setTaskFile} from "../../../../api";
export default {
onLoad(event) {
this.EW_RU_TASK_ID = event.taskId
this.EW_RU_JOB_ID = event.EW_RU_JOB_ID
this.TYPE = event.TYPE
},
data() {
return {
EW_RU_JOB_ID: '',
EW_RU_TASK_ID: '',
form:{
EW_SP_DHW_MONITOR_ID: '',
EW_RU_JOB_ID: '',
EW_RU_TASK_ID: '',
/** 监火人 */
PYROMANCER: this.$store.getters.getUserInfo.NAME,
USER_NAME: this.$store.getters.getUserInfo.NAME,
USER_ID: this.$store.getters.getUserInfo.USER_ID,
/** 时间 */
TIME: formatDate(new Date(), 'yyyy-MM-dd hh:mm'),
/** 照片 */
imgList: []
imgList: [],
FILE_PATH: ''
},
rules: {
PYROMANCER: [{ type: 'string', required: true, message: '请输入监火人', trigger: ['blur', 'change'] }],
USER_NAME: [{ type: 'string', required: true, message: '请输入监火人', trigger: ['blur', 'change'] }],
TIME: [{ type: 'string', required: true, message: '请选择时间', trigger: ['blur', 'change'] }],
imgList: [{ type: 'array', required: true, message: '请上传照片', trigger: ['blur', 'change'] }],
},
@ -60,15 +73,19 @@ export default {
try {
await this.$refs.formRef.validate()
try {
const {CODE} = await setTaskFile({formData: {type: 0}, name: 'files', filePath: this.form.imgList[0].url})
this.form.FILE_PATH = CODE
console.log('this.form :>> ', this.form);
// TODO:
// await setSubmitForm({
// form: this.form,
// formItems: this.formItems,
// TYPE: this.type,
// CORP_ID: this.form.CORP_ID
// })
// uni.navigateBack(); //
await setHotWorkRecord({
EW_SP_DHW_MONITOR_ID: this.form.EW_SP_DHW_MONITOR_ID,
EW_RU_JOB_ID: this.EW_RU_JOB_ID,
EW_RU_TASK_ID: this.EW_RU_TASK_ID,
USER_NAME: this.form.USER_NAME,
USER_ID: this.form.USER_ID,
TIME: this.form.TIME,
FILE_PATH: this.form.FILE_PATH
})
uni.navigateBack(); //
} catch {
}
} catch {
@ -103,4 +120,4 @@ export default {
},
}
}
</script>
</script>

View File

@ -9,7 +9,7 @@
<view class="wui-form-list" v-for="(item, index) in list" :key="index">
<view class="cu-form-group">
<view class="title">监火人</view>
{{ item.userName }}
{{ item.USER_NAME }}
</view>
<view class="cu-form-group">
<view class="title">时间</view>
@ -17,7 +17,7 @@
</view>
<view class="cu-form-group">
<view class="title">照片</view>
<view><u-button size="mini" type="primary" text="查看图片" @click="ViewImage1(item.FILEPATH)" /></view>
<view><u-button size="mini" type="primary" text="查看图片" @click="ViewImage1(item.FILE_PATH)" /></view>
</view>
</view>
<view style="margin-top: 30upx;" v-show="list.length !== 0">
@ -31,6 +31,8 @@
</template>
<script>
import {getHotWorkGasAll, getHotWorkRecord} from "../../../../api";
export default {
data() {
return {
@ -59,26 +61,47 @@ export default {
}
],
STATE: '',
EW_RU_TASK_ID: '',
EW_RU_JOB_ID: '',
TYPE: ''
}
},
onLoad(event) {
this.STATE = event.state;
this.EW_RU_TASK_ID = event.taskId
this.EW_RU_JOB_ID = event.EW_RU_JOB_ID
this.TYPE = event.TYPE
},
onShow() {
this.resetList()
},
methods: {
/**
async getData() {
let resData = await getHotWorkRecord({
EW_RU_TASK_ID: this.EW_RU_TASK_ID
});
this.list = [...this.list, ...resData.list];
},
resetList() {
this.list = []
this.getData()
},
/**
* 跳转到延时监火的添加页面
*/
goToAdd() {
uni.$u.route({
url: '/pages/eight_assignments/hot_work/delay_fire_monitoring/add'
url: '/pages/eight_assignments/hot_work/delay_fire_monitoring/add',
params: {taskId: this.EW_RU_TASK_ID, EW_RU_JOB_ID:this.EW_RU_JOB_ID,TYPE:this.TYPE}
});
},
/**
* 跳转到延时监火的任务转发页面
/**
* 跳转到延时监火的任务转发页面
*/
goToTaskForword() {
uni.$u.route({
url: '/pages/eight_assignments/hot_work/delay_fire_monitoring/task_forward'
url: '/pages/eight_assignments/hot_work/delay_fire_monitoring/task_forward',
params: {taskId: this.EW_RU_TASK_ID, EW_RU_JOB_ID:this.EW_RU_JOB_ID,TYPE:this.TYPE}
});
},
/**
@ -89,7 +112,7 @@ export default {
urls: [this.$filePath + urls]
});
},
/**
/**
* 完成延时监火的确认按钮事件
*/
goSubmit() {
@ -138,4 +161,4 @@ export default {
border-radius: 16upx;
}
}
</style>
</style>

View File

@ -46,12 +46,18 @@ export default {
pageSize: 10,
currentPage: 1,
totalPage: 0,
list: []
list: [],
EW_RU_TASK_ID: '',
EW_RU_JOB_ID: '',
TYPE: ''
}
},
onLoad(query) {
this.type = query.type
this.title = query.title
this.EW_RU_TASK_ID = query.taskId
this.EW_RU_JOB_ID = query.EW_RU_JOB_ID
this.TYPE = query.TYPE
},
onShow() {
this.resetList()
@ -116,4 +122,4 @@ export default {
font-weight: bold;
}
}
</style>
</style>

View File

@ -3,32 +3,87 @@
<view class="content">
<view class="card">
<u-form labelPosition="left" :model="form" :rules="rules" ref="formRef" labelWidth="140px">
<u-form-item label="接班监火人部门" prop="PYROMANCER" borderBottom required @click="fnSelect">
<u-input v-model="form.PYROMANCER" border="none" readonly />
<u-form-item label="接班监火人部门:" prop="PYROMANCER" borderBottom required @click="fnSelect">
<u-input v-model="form.DEPARTMENT_NAME" border="none" readonly />
<u-icon name="arrow-right"></u-icon>
</u-form-item>
</u-form>
</view>
<view style="margin-top: 30upx;">
<u-button class="bg-green" style="max-width: 50%;"
@click="$u.debounce(goSubmit, 1000, true)">确认</u-button>
</view>
</view>
</template>
<script>
import {setTaskSign} from "../../../../api";
export default {
data() {
return {
form: {},
rules: {},
modelShow: true,
type: '',
CORP_ID: '',
treeData: [],
treeSelectData: []
form: {
DEPARTMENT_NAME: '',
DEPARTMENT_ID: ''
},
rules: {
DEPARTMENT_NAME: [{ type: 'string', required: true, message: '请输入监火人', trigger: ['blur', 'change'] }]
},
EW_RU_TASK_ID: '',
EW_RU_JOB_ID: '',
TYPE: ''
}
},
onLoad(event) {
this.STATE = event.state;
this.EW_RU_TASK_ID = event.taskId
this.EW_RU_JOB_ID = event.EW_RU_JOB_ID
this.TYPE = event.TYPE
},
methods: {
fnSelect() {
console.log("接班监火人部门选择器能力待开发...");
uni.navigateTo({
url: `/pages/eight_assignments/select_department?CORP_ID=${this.CORP_ID}`,
events: {
confirm: (event) => {
console.log(event)
this.form.DEPARTMENT_NAME = event.DEPARTMENT_NAME
this.form.DEPARTMENT_ID = event.DEPARTMENT_ID
}
},
})
},
async goSubmit(){
const JOB_DTO = {
DEPARTMENT_ID: this.form.DEPARTMENT_ID,
DEPARTMENT_NAME: this.form.DEPARTMENT_NAME,
CORP_ID: this.$store.getters.getUserInfo.CORPINFO_ID,
CORP_NAME: this.$store.getters.getUserInfo.CORP_NAME
}
try {
await this.$refs.formRef.validate()
try {
await setTaskSign({
EW_RU_JOB_ID: this.EW_RU_JOB_ID,
EW_RU_TASK_ID: this.EW_RU_TASK_ID,
SIGN_FLAG: 1,
JOB_DTO: JSON.stringify(JOB_DTO)
})
} catch {
}
} catch {
uni.$u.toast('请补全必填项')
}
}
}
}
</script>
</script>
<style scoped lang="scss">
.bg-green {
background-color: #39b54a;
color: #fff;
border-radius: 16upx;
}
</style>

View File

@ -0,0 +1,241 @@
<template>
<view>
<view class="content">
<view class="card">
<u-form labelPosition="left" :model="form" :rules="rules" ref="formRef" labelWidth="140px">
<view v-for="(item, index) in list" :key="index">
<view v-if="item.multiple === '1'" class="mt-10 multiple_btn">
<u-button type="primary" size="mini" :customStyle="{width:'auto',margin:0}"
:text="'添加' + item.list[1].name" @click="fnAdd(index)"/>
</view>
<view v-for="(item1, index1) in item.list"
:key="index.toString() + index1.toString()"
:class="{'mt-10': item.multiple === '1' && index1 % 2 === 0,'multiple_form_item': item.multiple === '1'}">
<u-form-item
:label="item1.name"
:prop="item1.key_name"
borderBottom
:required="item1.isRequired === '1'"
@click="fnSelect(item,item1)">
<u-input v-model="form[item1.key_name]" border="none" readonly/>
<u-icon name="arrow-right"/>
</u-form-item>
<u-icon name="close-circle-fill" color="#ff2929" size="20"
v-if="item.multiple === '1' && index1 !== 0 && index1 % 2 === 0"
:customStyle="{position: 'absolute',top:'-15rpx',right:'0'}"
@click="fnDelete(index,index1)"/>
</view>
</view>
</u-form>
<view class="mt-10">
<u-button type="primary" text="下一步" @click="$u.debounce(fnSubmit, 1000,true)"/>
</view>
</view>
</view>
<u-picker :show="picker.show" :columns="picker.columns" keyName="NAME"
:key="picker.currentColumnKey" @confirm="fnPickerConfirm" @cancel="fnPickerCancel"/>
</view>
</template>
<script>
import {getUserList} from "@/api";
import {setPersonnelForm} from "@/utils/submitHomeworkProcess";
export default {
data() {
return {
taskId: '',
CORP_ID: '',
TYPE: '',
list: [],
form: {},
rules: {},
picker: {
show: false,
columnsAll: {},
columns: [],
currentColumnKey: '',
currentName: '',
currentId: '',
}
}
},
onLoad() {
const eventChannel = this.getOpenerEventChannel();
eventChannel.on('nextNodes', (data) => {
for (let i = 0; i < data.nextNodes.length; i++) {
if (data.nextNodes[i].multiple === '1') {
const guid = uni.$u.guid()
for (let j = 0; j < data.nextNodes[i].list.length; j++) {
//
data.nextNodes[i].list[j].key_name = data.nextNodes[i].list[j].key_name + `&&${guid}`
data.nextNodes[i].list[j].key_id = data.nextNodes[i].list[j].key_id + `&&${guid}`
}
}
}
this.list = data.nextNodes
this.taskId = data.taskId
this.CORP_ID = data.CORP_ID
this.TYPE = data.TYPE
this.fnInitFormAndRules()
})
},
methods: {
fnInitFormAndRules() {
this.list.forEach((item) => {
item.list.forEach((item1) => {
// key_namekey_idformkey
// key_nameruleskey
this.$set(this.form, item1.key_name, '')
this.$set(this.form, item1.key_id, '')
this.$set(this.rules, item1.key_name, [{
required: item1.isRequired === '1',
message: item1.name + '不能为空',
trigger: ['blur', 'change'],
}])
})
})
},
fnAdd(index) {
const currentItem = this.list[index]
//
const currentItemDepartment = uni.$u.deepClone(currentItem.list[0])
const currentItemUser = uni.$u.deepClone(currentItem.list[1])
// key_idkey_name
const guid = uni.$u.guid()
currentItemDepartment.key_id = this.fnReSplicing(currentItemDepartment.key_id, guid)
currentItemDepartment.key_name = this.fnReSplicing(currentItemDepartment.key_name, guid)
currentItemUser.key_id = this.fnReSplicing(currentItemUser.key_id, guid)
currentItemUser.key_name = this.fnReSplicing(currentItemUser.key_name, guid)
//
currentItem.list.push(currentItemDepartment)
currentItem.list.push(currentItemUser)
// key_idkey_nameformrules
this.$set(this.form, currentItemDepartment.key_id, '')
this.$set(this.form, currentItemDepartment.key_name, '')
this.$set(this.form, currentItemUser.key_id, '')
this.$set(this.form, currentItemUser.key_name, '')
this.$set(this.rules, currentItemDepartment.key_name, [{
required: currentItemDepartment.isRequired === '1',
message: currentItemDepartment.name + '不能为空',
trigger: ['blur', 'change'],
}])
this.$set(this.rules, currentItemUser.key_name, [{
required: currentItemUser.isRequired === '1',
message: currentItemUser.name + '不能为空',
trigger: ['blur', 'change'],
}])
},
fnReSplicing(value, guid) {
return value.substring(0, value.indexOf('&&')) + `&&${guid}`
},
fnDelete(index, index1) {
uni.showModal({
title: '提示',
content: '是否删除该条数据?',
success: (res) => {
if (res.confirm) {
const departmentKeyId = this.list[index].list[index1].key_id
const departmentKeyName = this.list[index].list[index1].key_name
const userKeyId = this.list[index].list[index1 + 1].key_id
const userKeyName = this.list[index].list[index1 + 1].key_name
//
this.list[index].list.splice(index1, 1)
this.list[index].list.splice(index1, 1)
// formrules
delete this.form[departmentKeyId]
delete this.form[departmentKeyName]
delete this.form[userKeyId]
delete this.form[userKeyName]
delete this.rules[departmentKeyName]
delete this.rules[userKeyName]
}
}
})
},
fnSelect({multiple}, {key_name, key_id, type, value}) {
const key_value = multiple === '1' ? key_id.substring(key_id.indexOf('&&') + 2) : value
if (type === '1') {
this.fnSelectDepartment(key_name, key_id, key_value)
return
}
if (type === '0') {
this.fnSelectUser(key_name, key_id, key_value)
}
},
fnSelectDepartment(key_name, key_id, value) {
const guid = key_name.substring(key_name.indexOf('&&'))
uni.navigateTo({
url: `/pages/eight_assignments/select_department?CORP_ID=${this.CORP_ID}`,
events: {
confirm: (event) => {
this.form[key_name] = event.DEPARTMENT_NAME
this.form[key_id] = event.DEPARTMENT_ID
this.form[value + '_USER_ID' + guid] = ''
this.form[value + '_USER_NAME' + guid] = ''
this.picker.columnsAll[value] = []
this.fnGetUserList(event, value)
}
},
})
},
async fnGetUserList({DEPARTMENT_ID, TYPE}, value) {
let resData = await getUserList({DEPARTMENT_ID, TYPE})
for (let i = 0; i < resData.list.list.length; i++) {
resData.list.list[i].NAME = resData.list.list[i].name || resData.list.list[i].NAME
resData.list.list[i].USER_ID = resData.list.list[i].user_ID || resData.list.list[i].USER_ID
}
this.$set(this.picker.columnsAll, value, [resData.list.list])
},
fnSelectUser(key_name, key_id, value) {
this.picker.currentName = key_name
this.picker.currentId = key_id
this.picker.currentColumnKey = value
this.picker.columns = this.picker.columnsAll[this.picker.currentColumnKey]
if (!this.picker.columnsAll[this.picker.currentColumnKey]) {
uni.$u.toast('没有选择部门或当前部门没有人员')
return
}
this.picker.show = true
},
fnPickerConfirm(event) {
this.form[this.picker.currentId] = event.value[0].USER_ID
this.form[this.picker.currentName] = event.value[0].NAME
this.fnPickerCancel()
},
fnPickerCancel() {
this.picker.show = false
},
async fnSubmit() {
try {
await this.$refs.formRef.validate()
try {
await setPersonnelForm({
form: this.form,
list: this.list,
taskId: this.taskId,
CORP_ID: this.CORP_ID,
TYPE: this.TYPE
})
} catch {
}
} catch {
uni.$u.toast('请补全必填项')
}
}
},
}
</script>
<style scoped lang="scss">
.multiple_btn {
display: flex;
justify-content: end;
}
.multiple_form_item {
position: relative;
background-color: #f9f9f9;
padding: 0 20rpx;
}
</style>

View File

@ -45,7 +45,8 @@ export default {
title: this.title
});
// type [],baseList []
if (query.type === "hotWork") {
//
if (false) {
this.baseList.push({
img: require('../../static/icon-apps/i12.png'),
title: '延时监火',