From 457f9c817adef8b003ee6379f493798bae5cbb69 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期一, 19 五月 2025 09:31:19 +0800 Subject: [PATCH] 修改 --- config/env.development.js | 4 src/util/validate.js | 5 + src/views/Admin/components/msgEditMod.vue | 2 src/views/Admin/dataStatistic.vue | 91 ++++++++++++++++++++++++++++-- src/views/Admin/massSend.vue | 20 ++++++ src/router/index.js | 2 src/views/Admin/notice.vue | 20 +++++- 7 files changed, 128 insertions(+), 16 deletions(-) diff --git a/config/env.development.js b/config/env.development.js index 3f00d8e..52d686c 100644 --- a/config/env.development.js +++ b/config/env.development.js @@ -1,5 +1,5 @@ module.exports = { NODE_ENV: "development", - baseUrl: 'http://192.168.2.11:8087', + baseUrl: 'http://192.168.2.58:8087', // baseUrl: 'http://sms.sinanoaq.cn/api', -}; \ No newline at end of file +}; diff --git a/src/router/index.js b/src/router/index.js index f8e86ef..017b783 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,7 +8,7 @@ { path: '/', name: 'login', - component: () => import('@/views/Login'), + component: () => import('@/views/Login.vue'), meta: { title: '登录' }, }, { diff --git a/src/util/validate.js b/src/util/validate.js index 71e4366..8489a95 100644 --- a/src/util/validate.js +++ b/src/util/validate.js @@ -370,3 +370,8 @@ // true:车牌号正确 else return true; } + +export function verifySimpleContent(val) { + var regex = /^[^\u3010-\u3011]*$/; // 正则表达式,\d 匹配数字,{11} 表示匹配11次 + return regex.test(val); +} diff --git a/src/views/Admin/components/msgEditMod.vue b/src/views/Admin/components/msgEditMod.vue index 230370a..850b76f 100644 --- a/src/views/Admin/components/msgEditMod.vue +++ b/src/views/Admin/components/msgEditMod.vue @@ -190,7 +190,7 @@ <h2>短信预览</h2> <div class="mobile"> <div class="mesg"> - <P>【防灾减灾工作提示】{{form.content}}</P> + <P>【新疆自然灾害预警中心】{{form.content}}</P> </div> </div> </div> diff --git a/src/views/Admin/dataStatistic.vue b/src/views/Admin/dataStatistic.vue index 3a3010d..a91f2ce 100644 --- a/src/views/Admin/dataStatistic.vue +++ b/src/views/Admin/dataStatistic.vue @@ -3,8 +3,8 @@ <div id="charts" style="width: 100%;height: 400px"></div> <a-row type="flex" justify="space-between" style="margin-bottom: 20px"> <a-col :span="20"> - <a-row type="flex" :gutter="18"> - <a-col :span="8"> + <a-row type="flex" :gutter="24"> + <a-col :span="6"> <a-range-picker v-model="timeRange" format="YYYY-MM-DD" @@ -13,6 +13,14 @@ @ok="timeOk" style="width: 100%" /> + </a-col> + <a-col :span="6"> + <a-select v-model="search.disasterType" style="width: 100%" placeholder="选择灾种类别" allow-clear> + <a-select-option v-for="item in typeList" :value="item.value" :key="item.value">{{item.name}}</a-select-option> + </a-select> + </a-col> + <a-col :span="6"> + <a-cascader :options="areaData" v-model="areaVal" placeholder="选择地理位置" expandTrigger="hover" :fieldNames="fieldNames" changeOnSelect @change="onChange1" style="width: 100%"/> </a-col> <a-col :span="6"> <a-button type="primary" @click="searchData">查询</a-button> @@ -25,7 +33,7 @@ <!-- 表格实体部分--> <div class="table-cont"> <a-button type="primary" v-if="backButton" @click="backData" :loading="backLoading" style="margin-bottom: 20px">返回上级</a-button> - <a-table :columns="columns" :data-source="data" bordered :pagination="false" :rowKey="record=>record.name"> + <a-table :columns="columns" :loading="loading" :data-source="data" bordered :pagination="false" :rowKey="record=>record.name"> <template #index="text,record,index"> {{ index + 1 }} </template> @@ -44,6 +52,7 @@ import Cookies from "js-cookie"; import {getUserInfo} from "@/util/storage"; import * as echarts from 'echarts'; +import {getDistrictInfo} from "@/api/login"; const columns = [{ title: '序号', dataIndex: 'index', @@ -84,9 +93,28 @@ components: {}, data() { return { + loading: false, search:{ startTime: '', - endTime: '' + endTime: '', + disasterType: undefined , + province: '', + city: '' + + }, + typeList: [ + {name: '地震',value: 1}, + {name: '气象',value: 3}, + {name: '地质灾害',value: 4}, + {name: '水旱',value: 5}, + {name: '森林草原火灾',value: 6} + ], + areaData: [], + areaVal: [], + fieldNames:{ + label: 'name', + value: 'id', + children: 'children' }, timeRange: [], category: 'default', @@ -110,11 +138,13 @@ t.$router.push(t.$route.path) } t.getData() + t.getDistrictInfo() }, methods: { async getData(){ const t = this t.backLoading = true + t.loading = true const res = await getTotalStatisticsByArea(t.search) if(res.data.code == 100){ if(t.areaName && t.areaName !== '新疆维吾尔自治区'){ @@ -126,11 +156,57 @@ t.backButton = false } t.backLoading = false + t.loading = false }else{ this.$message.error(res.data.msg) } }, + async getDistrictInfo(){ + let res = await getDistrictInfo() + if(res.data.code == 100){ + this.areaData = res.data.data.map(item => ({ + ...item, + children: item.children?.map(child => ({...child,children:undefined })) + })) + } else { + this.$message.warning(res.data.msg); + } + }, + // 根据id查对象 + findCodeById(data,value) { + for (const node of data) { + if (node.id === value) { + return node; + } + if (node.children) { + const foundNode = this.findCodeById(node.children, value); + if (foundNode) { + return foundNode; + } + } + } + return null; + }, + onChange1(value) { + const t = this + t.search.province = '' + t.search.city = '' + if(value[0]){ + t.search.province = t.findCodeById(t.areaData,value[0]).name + } + if(value[1]){ + t.search.city = t.findCodeById(t.areaData,value[1]).name + } + // if(value[2]){ + // t.search.searchParams.area = t.findCodeById(t.areaData,value[2]).name + // } + // if(value[3]){ + // t.search.searchParams.town = t.findCodeById(t.areaData,value[3]).name + // } + console.log('111',t.search.searchParams) + + }, async getChartsData(){ const t = this const res = await getTotalStatistics() @@ -212,7 +288,10 @@ const t = this t.search = { startTime: '', - endTime: '' + endTime: '', + disasterType: undefined , + province: '', + city: '' } t.timeRange = [] t.getData() @@ -220,4 +299,4 @@ } } -</script> \ No newline at end of file +</script> diff --git a/src/views/Admin/massSend.vue b/src/views/Admin/massSend.vue index ad09f01..8fa0dc9 100644 --- a/src/views/Admin/massSend.vue +++ b/src/views/Admin/massSend.vue @@ -233,7 +233,7 @@ <h2>短信预览</h2> <div class="mobile"> <div class="mesg"> - <P>【防灾减灾工作提示】{{form.content}}</P> + <P>【新疆自然灾害预警中心】{{form.content}}</P> </div> </div> @@ -249,9 +249,21 @@ import {getUserInfo} from "@/util/storage"; import {getNewAddressBook, getNewAddressBookArea, getNewAddressBookUser} from "@/api/contactBook"; import {debounce} from "@/util/debounce"; +import {verifySimpleContent} from "@/util/validate"; export default { name: "massSend", data() { + let validateContent = (rule, value, callback)=>{ + if(value === ''){ + callback(new Error('请输入信息内容')) + }else{ + if(!verifySimpleContent(value)){ + callback(new Error('内容不可包含中文中括号【】')) + }else{ + callback() + } + } + } return { newBookUsers: [], currentLoadedKeys: [], @@ -312,7 +324,11 @@ emergType: [{ required: true, message: '请选择紧急类型', trigger: 'change'}], disasterType: [{ required: true, message: '请选择灾种', trigger: 'change'}], warningLevel: [{ required: true, message: '请选择预警级别', trigger: 'change'}], - content: [{ required: true, message: '请输入信息内容', trigger: 'blur'}], + content: [{ + required: true, + validator: validateContent, + trigger: 'blur' + }], txlUsers: [{ required: true, message: '请选择通讯录接收人', trigger: 'blur'}], // receiver: [{ required: true, message: '请选择接收单位', trigger: 'change'}], // recipient: [{ required: true, message: '请选择平级接收人', trigger: 'change'}] diff --git a/src/views/Admin/notice.vue b/src/views/Admin/notice.vue index 95a9b6f..597bb82 100644 --- a/src/views/Admin/notice.vue +++ b/src/views/Admin/notice.vue @@ -153,7 +153,7 @@ <h2>短信预览</h2> <div class="mobile"> <div class="mesg"> - <P>【防灾减灾工作提示】{{form.content}}</P> + <P>【新疆自然灾害预警中心】{{form.content}}</P> </div> </div> </div> @@ -179,11 +179,23 @@ deleteFile } from "@/api/list"; import { TreeSelect } from 'ant-design-vue'; + import {verifySimpleContent} from "@/util/validate"; const SHOW_PARENT = TreeSelect.SHOW_PARENT; const treeData = []; export default { name: "notice", data() { + let validateContent = (rule, value, callback)=>{ + if(value === ''){ + callback(new Error('请输入信息内容')) + }else{ + if(!verifySimpleContent(value)){ + callback(new Error('内容不可包含中文中括号【】')) + }else{ + callback() + } + } + } return { value: [], SHOW_PARENT, @@ -284,9 +296,9 @@ trigger: 'blur' }], content: [{ - required: true, - message: '请输入信息内容', - trigger: 'blur' + required: true, + validator: validateContent, + trigger: 'blur' }], timeout: [{ required: true, -- Gitblit v1.9.2