From a015316b52f84a5b69ab8c3f4400c19fc19c1a82 Mon Sep 17 00:00:00 2001 From: Fuyuu <1805498209@qq.com> Date: Fri, 29 Dec 2023 14:13:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E7=AD=89=E7=BA=A7=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=20=E7=AB=99=E7=82=B9=E6=9B=B4=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E9=99=90=E5=88=B6=E5=9C=BA=E6=99=AF=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alarmLevel/MsWarnLevel.data.ts | 36 ++--- .../alarmLevel/components/MsWarnLevelForm.vue | 125 +++++++++++++++--- 2 files changed, 126 insertions(+), 35 deletions(-) diff --git a/src/views/military/modules/alarmManage/alarmLevel/MsWarnLevel.data.ts b/src/views/military/modules/alarmManage/alarmLevel/MsWarnLevel.data.ts index c0fd5da..f447e12 100644 --- a/src/views/military/modules/alarmManage/alarmLevel/MsWarnLevel.data.ts +++ b/src/views/military/modules/alarmManage/alarmLevel/MsWarnLevel.data.ts @@ -1,3 +1,11 @@ +/* + * @Author: Fuyuu 1805498209@qq.com + * @Date: 2023-12-07 18:07:21 + * @LastEditors: Fuyuu 1805498209@qq.com + * @LastEditTime: 2023-12-29 11:28:03 + * @FilePath: \dt-admin-pc-v2\src\views\military\modules\alarmManage\alarmLevel\MsWarnLevel.data.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ import { BasicColumn } from '/@/components/Table'; import { FormSchema } from '/@/components/Table'; import { rules } from '/@/utils/helper/validator'; @@ -5,31 +13,30 @@ import { render } from '/@/utils/common/renderUtils'; //列表数据 export const columns: BasicColumn[] = [ { - title: '区域编号', - align: "center", - dataIndex: 'lineId' + title: '报警区域', + align: 'center', + dataIndex: 'lineId_dictText', }, { title: '报警类型', - align: "center", - dataIndex: 'warnType_dictText' + align: 'center', + dataIndex: 'warnType_dictText', }, { title: '报警级别', - align: "center", - dataIndex: 'warnLevel_dictText' + align: 'center', + dataIndex: 'warnLevel_dictText', }, { title: '音频文件路径', - align: "center", + align: 'center', dataIndex: 'warnAudio', slots: { customRender: 'fileSlot' }, }, ]; //查询数据 -export const searchFormSchema: FormSchema[] = [ -]; +export const searchFormSchema: FormSchema[] = []; //表单数据 export const formSchema: FormSchema[] = [ @@ -38,7 +45,7 @@ export const formSchema: FormSchema[] = [ field: 'lineId', component: 'JDictSelectTag', componentProps: { - dictCode: "ms_map_line,name,id" + dictCode: 'ms_map_line,name,id', }, }, { @@ -46,7 +53,7 @@ export const formSchema: FormSchema[] = [ field: 'warnType', component: 'JDictSelectTag', componentProps: { - dictCode: "ms_warn_type" + dictCode: 'ms_warn_type', }, }, { @@ -54,15 +61,14 @@ export const formSchema: FormSchema[] = [ field: 'warnLevel', component: 'JDictSelectTag', componentProps: { - dictCode: "ms_warn_level" + dictCode: 'ms_warn_level', }, }, { label: '音频文件路径', field: 'warnAudio', component: 'JUpload', - componentProps: { - }, + componentProps: {}, }, // TODO 主键隐藏字段,目前写死为ID { diff --git a/src/views/military/modules/alarmManage/alarmLevel/components/MsWarnLevelForm.vue b/src/views/military/modules/alarmManage/alarmLevel/components/MsWarnLevelForm.vue index 4848d01..f7cb048 100644 --- a/src/views/military/modules/alarmManage/alarmLevel/components/MsWarnLevelForm.vue +++ b/src/views/military/modules/alarmManage/alarmLevel/components/MsWarnLevelForm.vue @@ -2,7 +2,7 @@ * @Author: Fuyuu 1805498209@qq.com * @Date: 2023-11-24 10:15:24 * @LastEditors: Fuyuu 1805498209@qq.com - * @LastEditTime: 2023-11-29 10:10:40 + * @LastEditTime: 2023-12-29 11:22:51 * @FilePath: \dt-admin-pc\src\views\military\modules\prewarn\components\msWarnLevelForm.vue * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE --> @@ -11,23 +11,45 @@ - - + + + + + - + - + - + @@ -44,21 +66,86 @@ import { getValueType } from '/@/utils'; import { saveOrUpdate } from '../MsWarnLevel.api'; import { Form } from 'ant-design-vue'; - + // 登录用户信息 + import { useUserStore } from '/@/store/modules/user'; + // 获取当前权限下的场景id + const sceneId = useUserStore().userInfo?.sceneId; + // 场景列表 + const sceneList: any = []; + // 防区列表 + const areaList: any = []; + // 树状防区数据 + const nodeTree: any = ref([]); + // 获取当前场景及子场景信息 + function getCurrentScene() { + return defHttp.get( + { url: '/military/msMapScene/list', params: { sceneId: sceneId + '*', pageNo: 1, pageSize: 9999 } }, + { isTransformResponse: false } + ); + } + // 获取当前场景(包括其子场景)下的所有防区 + function getCurrentSceneArea() { + return defHttp.get({ url: '/military/msMapLine/list', params: { pageNo: 1, pageSize: 9999 } }, { isTransformResponse: false }); + } + // 处理相机树状数据 + function handleCameraTree(data, index = undefined) { + let arr: any = []; + for (let i = 0; i < data.length; i++) { + let obj: any = {}; + let item = data[i]; + obj.title = item.title; + obj.value = obj.key = item.value; + obj.disabled = item.children?.length >= 0 ? true : false; + if (item.children && item.children.length > 0) { + obj.children = []; + let indexValue: any = index ? index + '-' + (i + 1) : i + 1; + obj.children = handleCameraTree(item.children, indexValue); + } + arr.push(obj); + } + return arr; + } + onMounted(() => { + // 将数据转化为树状结构 + getCurrentScene().then((res) => { + sceneList.value = res.result.records; + getCurrentSceneArea().then((res1) => { + areaList.value = res1.result.records; + // 定义一个空数组作为树状数组的根节点 + const tree: any = []; + //遍历场景列表,查找当前场景(及子场景)数据 + sceneList.value.forEach((row) => { + const node = { title: row.sceneName, value: row.sceneId, children: [] }; + tree.push(node); + }); + // 遍历防区列表,查找对应场景下的数据 + areaList.value.forEach((row) => { + const parentNode = tree.find((node) => node.value === row.sceneId); + if (parentNode) { + const node = { title: row.name, value: row.id, children: null }; + parentNode.children.push(node); + } + }); + // 转化为ant tree-select结构 + nodeTree.value = handleCameraTree(tree); + }); + }); + }); + const props = defineProps({ formDisabled: { type: Boolean, default: false }, - formData: { type: Object, default: ()=>{} }, - formBpm: { type: Boolean, default: true } + formData: { type: Object, default: () => {} }, + formBpm: { type: Boolean, default: true }, }); const formRef = ref(); const useForm = Form.useForm; const emit = defineEmits(['register', 'ok']); const formData = reactive>({ id: '', - lineId: '', + lineId: undefined, warnType: undefined, warnLevel: undefined, - warnAudio: '', + warnAudio: '', }); const { createMessage } = useMessage(); const labelCol = ref({ xs: { span: 24 }, sm: { span: 5 } }); @@ -66,25 +153,24 @@ const confirmLoading = ref(false); //表单验证 const validatorRules = { - lineId: [{ required: true, message: '请选择区域编号!'},], - warnType: [{ required: true, message: '请选择报警类型!'},], - warnLevel: [{ required: true, message: '请选择报警级别!'},], + lineId: [{ required: true, message: '请选择区域编号!' }], + warnType: [{ required: true, message: '请选择报警类型!' }], + warnLevel: [{ required: true, message: '请选择报警级别!' }], }; const { resetFields, validate, validateInfos } = useForm(formData, validatorRules, { immediate: true }); // 表单禁用 - const disabled = computed(()=>{ - if(props.formBpm === true){ - if(props.formData.disabled === false){ + const disabled = computed(() => { + if (props.formBpm === true) { + if (props.formData.disabled === false) { return false; - }else{ + } else { return true; } } return props.formDisabled; }); - /** * 新增 */ @@ -141,7 +227,6 @@ }); } - defineExpose({ add, edit,