Browse Source

辖段管理

wangqin
Joe 1 year ago
parent
commit
c4772ec986
  1. 266
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/AddDialog.vue
  2. 39
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/EditEventInformationDialog/data.js
  3. 72
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/EditEventInformationDialog/index.vue
  4. 22
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue

266
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/AddDialog.vue

@ -0,0 +1,266 @@
<template>
<Dialog v-model="modelVisible" :title="data ? '编辑' : '新增'">
<div class='DeviceControlDialog'>
<Form v-model="formData" class="form" ref="FormConfigRef" :formList="formList" column="1" labelWidth="90px" />
</div>
<template #footer>
<Button style="background-color: rgba(0, 179, 204, .3);" @click.native="modelVisible = false, submitting = false">
取消
</Button>
<Button @click.native="handleSubmit" :loading="submitting">
确定
</Button>
</template>
</Dialog>
</template>
<script>
import Dialog from "@screen/components/Dialog/index.vue";
import Button from "@screen/components/Buttons/Button.vue"
import Form from '@screen/components/FormConfig';
import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
import request from "@/utils/request";
import { CameraDirectionEnumList } from "@screen/utils/enum.js"
import { Message } from "element-ui";
import { cloneDeep, merge } from 'lodash';
export default {
name: 'DeviceControlDialog',
components: {
Dialog,
Button,
Form
},
model: {
prop: 'visible',
event: "update:value"
},
props: {
visible: Boolean,
data: Object
},
inject: ['setCurrentPage'],
data() {
return {
submitting: false,
formData: {},
formList: [
{
label: "父级:",
key: "parentId",
type: 'select',
options: {
clearable: true,
options: []
}
},
{
label: "机构类型:",
key: "organizationType",
required: true,
type: 'select',
ons: {
change: (value, { data }) => {
if (value == 1) {
data.parentId = null;
}
this.formList[0].options.options.forEach((item, index) => {
item.disabled = value == 1
})
}
},
options: {
options: [
{
key: 1,
label: "路管中心"
},
{
key: 2,
label: "驻点"
},
]
}
},
{
label: "机构名称:",
key: "organizationName",
required: true
},
{
label: "方向:",
key: "direction",
required: true,
type: 'select',
options: {
options: CameraDirectionEnumList,
}
},
{
label: "地址:",
key: "organizationAddress",
},
merge(cloneDeep(PresetFormItems.station), {
required: false,
options: {
options: [
{
rules: [
{
message: "请补全桩号",
callback(value, data) {
if (!value?.trim() && data.stakeMark[1]?.trim()) return false
else return true
}
}
]
},
{
rules: [
{
message: "请补全桩号",
callback(value, data) {
if (!value?.trim() && data.stakeMark[0]?.trim()) return false
else return true
}
}
]
},
]
}
}),
{
label: "救援单位:",
key: "rescueUnit"
},
{
label: "描述:",
key: "description",
isAlone: true,
options: {
type: "textarea",
autosize: true,
maxlength: 150,
autosize: { minRows: 6, maxRows: 6 },
showWordLimit: true,
},
}
]
}
},
computed: {
modelVisible: {
get() {
return this.visible
},
set(val) {
this.$emit('update:value', val)
}
}
},
watch: {
modelVisible: {
immediate: true,
handler(bool) {
if (!bool) return;
if (this.data) {
this.formData =
{
"parentId": this.data.dcOrganizations.parentId,
"organizationType": this.data.dcOrganizations.organizationType,
"organizationName": this.data.dcOrganizations.organizationName,
"direction": this.data.dcOrganizations.direction,
"organizationAddress": this.data.dcOrganizations.organizationAddress,
"stakeMark": [...(this.data.dcOrganizations.stakeMark || "").match(/[0-9]+/g)],
"rescueUnit": this.data.dcOrganizations.rescueUnit,
"description": this.data.dcOrganizations.description
}
}
this.getOptions();
}
}
},
methods: {
getOptions() {
//
request({
url: `/business/employees/organization`,
method: "post",
data: {}
})
.then((result) => {
if (result.code != 200) return;
const data = [];
result.data.forEach(item => {
if (item.organizationType == 1) {
data.push({
key: item.id,
label: item.organizationName,
disabled: false
})
}
})
this.formList[0].options.options = data;
})
.catch((err) => {
});
},
handleSubmit() {
this.$refs.FormConfigRef.validate()
.then((data) => {
this.submitting = true;
if (this.data) data.id = this.data.dcOrganizations.id;
if (typeof data.parentId != 'number') data.parentId = 0;
if (data.stakeMark[0]) data.stakeMark = `K${data.stakeMark[0]}+${data.stakeMark[1]}`;
request({
url: `/business/organization`,
method: this.data ? 'PUT' : 'POST',
data
})
.then(result => {
if (result.code != 200) return Message.error(`提交失败!`);
Message.success(`提交成功!`);
this.modelVisible = false;
this.setCurrentPage(1)
})
.catch((err) => {
console.log("%c [ err ]-110-「DeviceControlDialog.vue」", "font-size:15px; background:#547bf2; color:#98bfff;", err);
Message.error(`提交失败!`);
})
.finally(() => {
this.submitting = false;
})
})
}
},
}
</script>
<style lang='scss' scoped>
.DeviceControlDialog {
width: 450px;
display: flex;
flex-direction: column;
gap: 15px;
.tips {
font-size: 12px;
}
}
</style>

39
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/EditEventInformationDialog/data.js

@ -1,39 +0,0 @@
import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
export const formConfigList = [
{
label: "事故类型:",
key: "key13",
type: "select",
},
PresetFormItems.trafficAccidentType,
PresetFormItems.callPolicePersonName,
PresetFormItems.callPolicePersonPhone,
PresetFormItems.route,
PresetFormItems.direction,
PresetFormItems.eventLevel,
PresetFormItems.station,
PresetFormItems.locationMode,
PresetFormItems.pressure,
PresetFormItems.eventHappenTime,
PresetFormItems.aEstimatedReleaseTime,
PresetFormItems.weatherConditions,
PresetFormItems.effect,
PresetFormItems.isMaintenanceAccident,
PresetFormItems.isCongestionAhead,
PresetFormItems.isCurveRoad,
PresetFormItems.isInTunnel,
PresetFormItems.isArrives,
PresetFormItems.isForkRoad,
PresetFormItems.emptyLine,
PresetFormItems.trafficPolicePhone,
{
...PresetFormItems.emptyLine,
key: "096993",
},
PresetFormItems.wreckerCalls,
PresetFormItems.spillName,
PresetFormItems.ownerPhone,
PresetFormItems.laneOccupancy,
PresetFormItems.vehicleCondition,
];

72
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/components/EditEventInformationDialog/index.vue

@ -1,72 +0,0 @@
<template>
<Dialog v-model="modelVisible" title="修改事件信息">
<div class="EditEventInformationDialog">
<Form class="form" :formList="formConfigList" column="2" labelWidth="120px" />
<div class="footer">
<Button>保存</Button>
<Button style="background: #C9C9C9;">关闭</Button>
</div>
</div>
</Dialog>
</template>
<script>
import Dialog from "@screen/components/Dialog/index";
import Form from '@screen/components/FormConfig';
import Button from '@screen/components/Buttons/Button.vue';
import { formConfigList } from "./data.js"
export default {
name: 'EditEventInformationDialog',
components: {
Dialog,
Form,
Button
},
model: {
prop: 'visible',
event: 'close'
},
props: {
visible: Boolean
},
data() {
return {
formConfigList
}
},
computed: {
modelVisible: {
get() {
return this.visible;
},
set(val) {
this.$emit('close', val)
}
},
}
}
</script>
<style lang='scss' scoped>
.EditEventInformationDialog {
gap: 9px;
width: 810px;
height: 771px;
display: flex;
flex-direction: column;
.form {
flex: 1;
overflow-y: auto;
}
.footer {
display: flex;
justify-content: end;
gap: 15px;
}
}
</style>

22
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue

@ -47,13 +47,13 @@
</Card> </Card>
</template> </template>
</div> </div>
<EditEventInformationDialog v-model="editEventInformationDialogVisible" /> <AddDialog v-model="editEventInformationDialogVisible" />
</div> </div>
</template> </template>
<script> <script>
import Card from "@screen/components/Card1/index.vue" import Card from "@screen/components/Card1/index.vue"
import EditEventInformationDialog from "./components/EditEventInformationDialog/index" import AddDialog from "./components/AddDialog.vue"
import InputSearch from '@screen/components/InputSearch/index.vue'; import InputSearch from '@screen/components/InputSearch/index.vue';
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue'; import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
@ -67,13 +67,13 @@ export default {
name: 'JurisdictionalManagement', name: 'JurisdictionalManagement',
components: { components: {
Card, Card,
EditEventInformationDialog,
ButtonGradient, ButtonGradient,
InputSearch InputSearch
}, },
inject: ['getPagination', 'setTotal'], inject: ['getPagination', 'setTotal'],
data() { data() {
return { return {
searchFormList,
keyMap: [ keyMap: [
{ {
key: "sectionName", key: "sectionName",
@ -114,14 +114,14 @@ export default {
}, },
methods: { methods: {
handleExport() { handleExport() {
// exportFile({ exportFile({
// url: "/business/employees/export", url: "/business/roadSection/export",
// filename: "", filename: "管辖路段",
// data: { data: {
// ...this.searchData, ...this.searchData,
// ...this.getPagination() ...this.getPagination()
// } }
// }); });
}, },
handleSearch(data) { handleSearch(data) {
this.searchData = data; this.searchData = data;

Loading…
Cancel
Save