diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue index 95811c77..ae8017d7 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/addAndEditDialog/index.vue @@ -1,5 +1,5 @@ <template> - <Dialog v-model="modelVisible" title="新增预案"> + <Dialog v-model="modelVisible" :title="title"> <div class="EventAddPlanDialog"> <ElForm :model="formData" inline :rules="rules" ref="ruleForm"> <div class="first"> @@ -19,6 +19,7 @@ </el-option> </el-select> </el-form-item> + <el-form-item v-if="(formData.eventCategory == 1 && formData.eventType !== 8) || formData.eventCategory == 2" label="触发类型:" prop="triggerMechanism"> @@ -52,26 +53,27 @@ </el-form-item> </div> + <div class="second"> <el-row> <el-col :span="2"> <div class="text">执行操作:</div> </el-col> <el-col :span="22"> - <FormTable ref="secondFormTable"></FormTable> + <FormTable ref="secondFormTable" :tableData="secondFormData"></FormTable> </el-col> </el-row> </div> - <!-- <div class="third"> + <div class="third"> <el-row> <el-col :span="2"> <div class="text">恢复操作:</div> </el-col> <el-col :span="22"> - <FormTable></FormTable> + <FormTable ref="thirdFormTable" :tableData="thirdFormData"></FormTable> </el-col> </el-row> - </div> --> + </div> </ElForm> </div> @@ -287,18 +289,25 @@ export default { }, data() { return { - activeName: "TrafficAccident", + title: '新增预案', + dialogType: 1, + planId: 0, submitting: false, - formConfig: {}, formData: { eventCategory: 1, eventType: 1, - triggeringCondition: 0 + triggerMechanism: 1 }, - index: 1, - roads: [], - direction: [], - lwss: [], + secondFormData: [{ + deviceType: 1, + searchRule: 1, + qbb: '安全行驶' + }], + thirdFormData: [{ + deviceType: 1, + searchRule: 1, + qbb: '安全行驶' + }], eventOptions: [ { value: 1, @@ -394,68 +403,70 @@ export default { } } }, - created() { - // this.formConfig = tabConfigList[0].formConfig; - this.initData().then(() => { - this.handleChange({ index: 0 }) - }) + mounted() { + }, computed: { modelVisible: { get() { + if (this.visible) { + + if (Object.keys(this.detail).length > 0) { + this.title = '修改预案'; + this.dialogType = 2; + this.initData(this.detail.id); + } else { + this.title = '新增预案'; + this.dialogType = 1; + this.formData = { + eventCategory: 1, + eventType: 1, + triggerMechanism: 0 + } + } + } return this.visible; }, set(val) { this.$emit('close', val) } }, - getFormOptions() { - return { - column: 3, - ...this.formConfig.formOptions - } - } }, methods: { - initData() { - return Promise.all([ - //道路 - request({ - url: `/business/road/query`, - method: "get", - }).then((result) => { - if (result.code != 200) return Message.error(result?.msg); - result.data.forEach(it => { - this.roads.push({ key: it.id, label: it.roadName }) - }) - }).catch((err) => { - Message.error("查询失败4", err); - }), - //方向字典 - request({ - url: `/system/dict/data/type/iot_event_direction`, - method: "get", - }).then((result) => { - if (result.code != 200) return Message.error(result?.msg); - result.data.forEach(it => { - this.direction.push({ key: it.dictValue, label: it.dictLabel }) - }) - }).catch((err) => { - Message.error("查询失败5", err); - }), - //路网设施 1 收费站 2 桥梁 3 互通立交 4 枢纽立交 5 隧道 6 服务区 - request({ - url: `/business/facility/query`, - method: "get" - }).then((result) => { - if (result.code != 200) return Message.error(result?.msg); - result.data.forEach(it => this.lwss.push({ key: it.id, label: it.facilityName, type: it.facilityType })) - }).catch((err) => { - console.log('err', err) - Message.error("查询失败6", err); + initData(id = 1) { + request({ + url: `/business/plans/list/${id}`, + method: "get", + }).then((result) => { + if (result.code != 200) return Message.error(result?.msg); + let data = result.data; + let dcExecuteAction = result.data.dcExecuteAction; + + this.planId = data.id; + this.formData = { + eventCategory: data.eventCategory, + planName: data.planName, + eventType: data.eventType, + triggerMechanism: data.triggerMechanism, + } + this.secondFormData = []; + this.thirdFormData = []; + dcExecuteAction.forEach(it => { + if (it.deviceList) { + it.deviceList = it.deviceList.split(','); + } + if (it.actionType == 1) { + this.secondFormData.push(it); + } else if (it.actionType == 2) { + this.thirdFormData.push(it); + } }) - ]) + }).catch((err) => { + console.log(err) + Message.error("查询事件预案列表失败", err); + }) + }, changeEventType(value = 1) { this.mechanismOptions = optionsMap[this.formData.eventCategory || 1][value]; @@ -537,33 +548,73 @@ export default { handleSubmit() { this.$refs['ruleForm'].validate((valid) => { if (valid) { - this.submitting = true; - console.log('formData', this.formData) - this.modelVisible = false; - this.submitting = false; - // this.$emit('queryData',true) - console.log(this.$refs['secondFormTable'].tableData) - return; - - request({ - url: `/dc/system/event`, - method: "post", - data: { - ...formData, - eventType: Number(this.index) + 1, - eventState: 0, - stakeMark: (stakeMark && stakeMark[0] != null) ? ((stakeMark && stakeMark.length > 0) ? ('K' + stakeMark[0] + '+' + stakeMark[1]) : '') : '', + // this.submitting = false; + let secondFormTable = this.$refs['secondFormTable'].tableData || []; + let thirdFormTable = this.$refs['thirdFormTable'].tableData || []; + let dcArr = []; + secondFormTable.forEach(it => { + if (it.deviceList && typeof it.deviceList !== 'string' && it.deviceList.length > 0) { + it.deviceList = it.deviceList.join(','); + } else { + it.deviceList = '' + } + dcArr.push({ ...it, actionType: 1 }); + }) + thirdFormTable.forEach(it => { + if (it.deviceList && typeof it.deviceList !== 'string' && it.deviceList.length > 0) { + it.deviceList = it.deviceList.join(','); + } else { + it.deviceList = '' } - }).then((result) => { - if (result.code != 200) return Message.error(result?.msg); - Message.success("提交成功"); - this.modelVisible = false; - }).catch(() => { - Message.error("提交失败"); - }).finally(() => { - this.submitting = false; - this.$emit('queryData', true); + dcArr.push({ ...it, actionType: 2 }); + }) + + console.log({ + ...this.formData, + dcExecuteAction: dcArr }) + // return; + if (this.dialogType == 1) {//新增 + request({ + url: `/business/plans`, + method: "post", + data: { + ...this.formData, + dcExecuteAction: dcArr + } + }).then((result) => { + if (result.code != 200) return Message.error(result?.msg); + Message.success("提交成功"); + this.modelVisible = false; + }).catch(() => { + Message.error("提交失败"); + }).finally(() => { + this.submitting = false; + this.$emit('reInitData', true); + }) + } else if (this.dialogType == 2) {//修改 + request({ + url: `/business/plans`, + method: "put", + data: { + ...this.formData, + id: this.planId, + dcExecuteAction: dcArr + } + }).then((result) => { + if (result.code != 200) return Message.error(result?.msg); + Message.success("提交成功"); + this.modelVisible = false; + }).catch(() => { + Message.error("提交失败"); + }).finally(() => { + this.submitting = false; + this.$emit('reInitData', true); + }) + + } + + } }) diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/data.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/data.js index d9eeb945..c1686c21 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/data.js +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/data.js @@ -3,77 +3,54 @@ import { merge, cloneDeep } from "lodash"; export const searchFormList = [ { - label: "事件状态:", - key: "eventState", - type: "RadioGroup", - options: { - options: [ - { - key: "0", - label: "未解决", - }, - { - key: "1", - label: "已解决", - }, - { - key: "2", - label: "已关闭", - }, - ], - }, + label: "预案名称:", + key: "planName", }, - PresetFormItems.eventSources, - PresetFormItems.eventType, { - label: "方向:", - key: "direction", + label: "事件分类:", + key: "eventCategory", type: "RadioGroup", options: { options: [ { - key: "济南方向", - label: "济南方向", - }, - { - key: "菏泽方向", - label: "菏泽方向", + key: "1", + label: "交通事件", }, { - key: "双向", - label: "双向", + key: "2", + label: "感知事件", }, ], }, }, - { - label: "时间范围:", - key: "daterange", - required: false, - type: "datePicker", - options: { - type: "daterange", - format: "yyyy-MM-dd HH:mm:ss", - valueFormat: "yyyy-MM-dd HH:mm:ss", - }, - }, - { - ...PresetFormItems.station, - label: "开始桩号:", - required: false, - }, - merge(cloneDeep(PresetFormItems.station), { - options: { - options: [ - { - key: "endStakeMark[0]", - }, - { - key: "endStakeMark[1]", - }, - ], - }, - label: "结束桩号:", - required: false, - }), + // { + // label: "时间范围:", + // key: "daterange", + // required: false, + // type: "datePicker", + // options: { + // type: "daterange", + // format: "yyyy-MM-dd HH:mm:ss", + // valueFormat: "yyyy-MM-dd HH:mm:ss", + // }, + // }, + // { + // ...PresetFormItems.station, + // label: "开始桩号:", + // required: false, + // }, + // merge(cloneDeep(PresetFormItems.station), { + // options: { + // options: [ + // { + // key: "endStakeMark[0]", + // }, + // { + // key: "endStakeMark[1]", + // }, + // ], + // }, + // label: "结束桩号:", + // required: false, + // }), ]; diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue index 119ccd7f..1d340e97 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/formTable/index.vue @@ -11,26 +11,30 @@ </template> </ElTableColumn> - <ElTableColumn prop="phrases2" width="260"> + <ElTableColumn prop="searchRule" width="260"> <template slot-scope="scope"> - <el-select v-if="scope.row.deviceType == 1" v-model="scope.row.phrases2" placeholder="检索规则条件"> + <el-select v-if="scope.row.deviceType == 1" v-model="scope.row.searchRule" placeholder="检索规则条件"> <el-option v-for="item in zyOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> <div v-if="scope.row.deviceType == 2" class="plhx"> - <el-select v-model="scope.row.phrases1" placeholder=""> - <el-option label="事发上游最近" :value="1"></el-option> + <el-select v-model="scope.row.searchRule" placeholder=""> + <el-option v-for="item in zyOptions" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> </el-select> - <el-input-number v-model="scope.row.phrases2" :min="0" :max="9999" + <el-input-number v-model="scope.row.number" :min="0" :max="9999" style="width: 130px;"></el-input-number>个 </div> <div v-if="scope.row.deviceType == 3 || scope.row.deviceType == 4" class="plhx"> - <el-select v-model="scope.row.phrases1" placeholder=""> - <el-option label="最近公里数" :value="1"></el-option> + <el-select v-model="scope.row.searchRule" placeholder=""> + <el-option v-for="item in zyOptions" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> </el-select> - <el-input-number v-model="scope.row.phrases2" :min="0" :max="9999" + <el-input-number v-model="scope.row.number" :min="0" :max="9999" style="width: 130px;"></el-input-number> <p style="width: 56px;">公里</p> </div> @@ -38,42 +42,42 @@ </template> </ElTableColumn> - <ElTableColumn prop="phrases3" width="370"> + <ElTableColumn prop="deviceList" width="370"> <template slot-scope="scope"> <div v-if="scope.row.deviceType == 1" class="mjs"> - <el-select v-model="scope.row.phrases3" placeholder="" multiple collapse-tags> + <el-select v-model="scope.row.deviceList" placeholder="" multiple collapse-tags> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> - <el-input placeholder="请选择" v-model="scope.row.phrases4" readonly> + <el-input placeholder="请选择" v-model="scope.row.qbb" readonly> <i slot="suffix" class="el-input__icon el-icon-search"></i> </el-input> </div> <div v-if="scope.row.deviceType == 2" class="mjs"> - <el-select v-model="scope.row.phrases4" placeholder=""> + <el-select v-model="scope.row.gzms" placeholder=""> <el-option label="工作模式" :value="1"></el-option> </el-select> - <el-select v-model="scope.row.phrases6" placeholder=""> + <el-select v-model="scope.row.czsc" placeholder=""> <el-option label="操作时长" :value="1"></el-option> </el-select> </div> <div v-if="scope.row.deviceType == 3" class="mjs"> - <el-select v-model="scope.row.phrases4" placeholder=""> + <el-select v-model="scope.row.kzms" placeholder=""> <el-option label="控制模式" :value="1"></el-option> </el-select> - <el-select v-model="scope.row.phrases5" placeholder=""> + <el-select v-model="scope.row.sj" placeholder=""> <el-option label="选择时间" :value="1"></el-option> </el-select> - <el-select v-model="scope.row.phrases6" placeholder=""> + <el-select v-model="scope.row.gzzt" placeholder=""> <el-option label="工作状态" :value="1"></el-option> </el-select> </div> <div v-if="scope.row.deviceType == 4" class="mjs"> - <el-input v-model="scope.row.phrases4" placeholder="请输入发布内容"></el-input> + <el-input v-model="scope.row.fbnr" placeholder="请输入发布内容"></el-input> </div> </template> @@ -112,20 +116,24 @@ export default { props: { visible: Boolean, eventType: Number, - // process: { - // type: Array, - // default: () => [] - // } + tableData: { + type: Array, + default: () => [{ + deviceType: 1, + searchRule: 1, + qbb: '安全行驶' + }] + } }, data() { return { - tableData: [ - { - deviceType: 1, - phrases2: 1, - phrases4: '安全行驶' - } - ], + // tableData: [ + // { + // deviceType: 1, + // searchRule: 1, + // qbb: '安全行驶' + // } + // ], deviceOptions: [ { value: 1, @@ -208,53 +216,14 @@ export default { } }, methods: { - getProcess() { - this.tableData = []; - request({ - url: `/business/dcEventType/${this.eventType}`, - method: "get", - }).then(result => { - if (result.code != 200) return Message.error(result.msg); - //流程列表 - this.process = []; - this.tableData = []; - result.data.processConfigList?.forEach((it, index) => { - let commonPhrasesArr = it.commonPhrases ? it.commonPhrases.split(',') : ['']; - let phrs = []; - commonPhrasesArr?.forEach(phr => { - phrs.push({ id: it.id, phrases: phr }) - }) - this.process.push({ - ...it, - phrs: phrs, - label: it.processNode, - isActive: index == 0 ? true : false, - }) - if (index == 0) { - this.id = it.id; - this.tableData = phrs; - } - }) - - }) - }, changeDeviceType(value) { this.deviceType = value; }, - getTableData() { - let rows = this.process.find(item => item.id == this.id); - return rows?.phrs || []; - }, - updateTableData(id = 1) { - this.id = id; - this.tableData = []; - let pros = this.process.find(item => item.id == id); - this.tableData = pros.phrs; - }, onAdd(id) { this.tableData.push({ - id: id, - phrases: '' + deviceType: 1, + // searchRule: 1, + // qbb: '安全行驶' }) }, onDel(index) { @@ -263,35 +232,6 @@ export default { } this.tableData.splice(index, 1) }, - submitTable() { - let data = [] - this.process.forEach((lc) => { - let commonPhrases = []; - lc.phrs.forEach(phr => { if (phr.phrases) commonPhrases.push(phr.phrases) }) - data.push({ - commonPhrases: commonPhrases.join(','), - id: lc.id, - eventType: lc.eventType, - nodeNode: lc.nodeNode, - processNode: lc.processNode - }) - }) - console.log('data', data) - // return; - request({ - url: `/business/dcEventType/updateDcProcessConfig`, - method: "post", - data: { - eventType: this.eventType, - processConfigList: data - } - }).then(result => { - if (result.code != 200) return Message.error(result.msg); - Message.success(result.msg); - this.modelVisible = false; - this.$emit('reInitData', true) - }) - } } } </script> diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue index 5ec17711..d9153625 100644 --- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue +++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/plan/index.vue @@ -17,8 +17,8 @@ 刷新 </ButtonGradient> </div> - <InputSearch style="width: 402px;" :formList="searchFormList" - :formConfigOptions="{ dFormData: { eventState: 0 } }" @handleSearch="handleSearch" /> + <InputSearch style="width: 402px;" :formList="searchFormList" :formConfigOptions="{}" + @handleSearch="handleSearch" /> </div> <!-- 内容 --> @@ -41,8 +41,7 @@ </div> <!-- 新增修改弹窗 --> - <AddAndEditDialog :visible="isShowDialog" :detail="detail" @close="onCloseAddNew" - @update:phrasesData="onUpdatePhrasesData" @reInitData="initData" /> + <AddAndEditDialog :visible="isShowDialog" :detail="detail" @close="onCloseAddNew" @reInitData="initData" /> <!-- 分页 --> <div class="footer"> @@ -137,23 +136,27 @@ export default { }); }, onSizeChange(pageSize) { - // this.searchData.pageSize = pageSize; - // this.getData(); + this.searchData.pageSize = pageSize; + this.initData(); }, onRefresh() { this.initData(); }, onAdd() { - this.isShowDialog = true + this.detail = {} + this.isShowDialog = true; }, onCloseAddNew() { - this.isShowDialog = false + this.isShowDialog = false; }, - onUpdatePhrasesData() { - + showDisposal(data) { + this.detail = { ...data } + this.isShowDialog = true; }, - handleSearch() { - + handleSearch(data) { + console.log(data); + this.searchData = { ...this.searchData, ...data } + this.initData(); }, async handleDelete(data) { await confirm({ message: "是否要删除该预案?" });