From 457f9c817adef8b003ee6379f493798bae5cbb69 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期一, 19 五月 2025 09:31:19 +0800 Subject: [PATCH] 修改 --- src/views/Admin/notice.vue | 180 ++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 116 insertions(+), 64 deletions(-) diff --git a/src/views/Admin/notice.vue b/src/views/Admin/notice.vue index 259af39..597bb82 100644 --- a/src/views/Admin/notice.vue +++ b/src/views/Admin/notice.vue @@ -78,8 +78,8 @@ </a-form-model-item> </a-col> </a-row> - <span><b>发布单位:</b>{{form.publishingUnit}}</span> - <br /><br /> +<!-- <span><b>发布单位:</b>{{form.publishingUnit}}</span>--> +<!-- <br /><br />--> <!-- 子单位--> <a-row :gutter="24"> <a-col :span="12"> @@ -110,12 +110,24 @@ </a-checkbox> </div> <a-form-model-item prop="recipient"> - <a-select mode="multiple" placeholder="选择平级接收单位" v-model="form.recipient" @change="handle" - :maxTagCount="3"> - <a-select-option v-for="item in filteredOptions" :key="item.id" :value="item.id"> - {{ item.recipientName }}({{item.company}} {{item.phone}}) - </a-select-option> - </a-select> +<!-- <a-select mode="multiple" placeholder="选择平级接收单位" v-model="form.recipient" @change="handle"--> +<!-- :maxTagCount="3">--> +<!-- <a-select-option v-for="item in filteredOptions" :key="item.id" :value="item.id">--> +<!-- {{ item.recipientName }}({{item.company}} {{item.phone}})--> +<!-- </a-select-option>--> +<!-- </a-select>--> + <a-tree-select + v-model="form.recipient" + style="width: 100%" + :maxTagCount="3" + :tree-data="treeData" + tree-checkable + placeholder="选择平级接收单位" + :show-checked-strategy="SHOW_PARENT" + search-placeholder="Please select" + @change="handle" + @focus="getPj()" + /> </a-form-model-item> </a-col> </a-row> @@ -130,7 +142,7 @@ </a-form-model-item> </a-col> <a-col :span="12" style="text-align: right"> - <a-button type="primary" style="width: 250px;" @click="confirmSend()" v-preventReClick="1500" + <a-button type="primary" style="width: 250px;" @click="confirmSend()" v-preventReClick="2000" :disabled="userInfo.role.id==1?true:false"> 确认并提交审核 </a-button> @@ -141,7 +153,7 @@ <h2>短信预览</h2> <div class="mobile"> <div class="mesg"> - <P>【自然灾害风险预警提示】{{form.content}}<br>发布单位:{{form.publishingUnit}}</P> + <P>【新疆自然灾害预警中心】{{form.content}}</P> </div> </div> </div> @@ -166,10 +178,28 @@ import { 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, + treeData, userInfo: {}, unittype: null, wrapperCol: { @@ -266,9 +296,9 @@ trigger: 'blur' }], content: [{ - required: true, - message: '请输入信息内容', - trigger: 'blur' + required: true, + validator: validateContent, + trigger: 'blur' }], timeout: [{ required: true, @@ -301,6 +331,9 @@ components: {}, created() { const t = this + t.treeData = [] + t.getAreaUsers() + t.areaUsers = JSON.parse(localStorage.getItem('areaUsers')) const { baseUrl } = require('../../../config/env.' + process.env.NODE_ENV) @@ -310,7 +343,6 @@ t.form.districtId = t.userInfo.districtId t.form.publishingUnit = t.userInfo.company t.getSameLevel() - t.getAreaUsers() t.getLeaders() }, computed: {}, @@ -321,7 +353,23 @@ let res = await getPeerRecipient() if (res.data.code == 100) { if (res.data.data) { - t.filteredOptions = res.data.data + // t.filteredOptions = res.data.data + + for (const resKey in res.data.data) { + t.filteredOptions = t.filteredOptions.concat(...res.data.data[resKey]); + const obj = { + title: resKey, + value: resKey, + key: resKey, + children: res.data.data[resKey].map(item => { + item['title'] = item.recipientName + '(' +item.company +item.phone+ ')' + item['value'] = item.id + item['key'] = item.id + return item + }) + } + t.treeData.push(obj) + } } else { console.log('暂无数据') } @@ -329,18 +377,19 @@ this.$message.warning(res.data.msg); } }, - + getPj(){ + this.treeData = [] + this.getSameLevel() + }, // 获取接收单位 async getAreaUsers() { let t = this let res = await getAreaWithUserIfo() if (res.data.code == 100) { if (res.data.data) { - // const treeD = [] t.userTitTree(res.data.data) - // treeD.push(t.findNodeById(res.data.data,t.userInfo.districtId)) const treeD = t.findNodeById(res.data.data, t.userInfo.districtId) - t.areaUsers = treeD.children + // t.areaUsers = treeD.children t.unittype = treeD.type } else { console.log('暂无数据') @@ -385,18 +434,25 @@ //选择平级部门部分 handle(selectedItems) { const t = this - if (t.form.recipient.length == t.filteredOptions.length) { - t.checkSlAll = true - } else { - t.checkSlAll = false - } + // if (t.form.recipient.length == t.filteredOptions.length) { + // t.checkSlAll = true + // } else { + // t.checkSlAll = false + // } + const group = t.treeData.map(item => item.value) + if (group.length === t.form.recipient.length && group.every((v,i) => v === t.form.recipient[i])) { + t.checkSlAll = true + } else { + t.checkSlAll = false + } }, checkSlChange(e) { const t = this t.checkSlAll = !t.checkSlAll if (t.checkSlAll == true) { - t.form.recipient = t.filteredOptions.map(i => i.id) + // t.form.recipient = t.filteredOptions.map(i => i.id) + t.form.recipient = t.treeData.map(item => item.value) } else { t.form.recipient = [] } @@ -479,7 +535,6 @@ if (valid) { this.form.acceptingUnitIds = [] this.form.peerRecipientIds = [] - const aList = this.form.receiver.map(item => this.findNodeById(this.areaUsers, item.value) ?.users) if (aList.includes(null)) { @@ -489,48 +544,45 @@ const newAList = [].concat(...aList) for (let i of newAList) { // const {realName,...data} = i - const { - id: recipienterId, - name: recipienterName, - phone: recipienterPhone, - company: receiveUnit, - realName: recipienterRealName, - ...rest - } = i - const obj = { - recipienterId, - recipienterName, - recipienterRealName, - recipienterPhone, - receiveUnit, - ...rest - } + const {id: recipienterId, name: recipienterName, phone: recipienterPhone, company: receiveUnit, realName: recipienterRealName, registrationId: registrationId, ...rest} = i + const obj = {recipienterId, recipienterName, recipienterRealName, recipienterPhone, receiveUnit, registrationId, ...rest} this.form.acceptingUnitIds.push(obj) } this.form.acceptingUnitIds = [...this.form.acceptingUnitIds, ...this.sendLeaders] + + if (this.form.recipient.length > 0) { - const bList = this.form.recipient.map(item => this.filteredOptions.find(i => i.id == - item)) - for (let i of bList) { - const { - id: recipienterId, - recipientName: recipienterName, - phone: recipienterPhone, - company: receiveUnit, - ...rest - } = i - const obj = { - recipienterId, - recipienterName, - recipienterPhone, - receiveUnit, - unittype: this.unittype, - recipienterRealName: recipienterName, - ...rest - } - this.form.peerRecipientIds.push(obj) - } + // const bList = this.form.recipient.map(item => this.filteredOptions.find(i => i.id == item)) + // for (let i of bList) { + // const {id: recipienterId, recipientName: recipienterName, phone: recipienterPhone, company: receiveUnit, ...rest} = i + // const obj = {recipienterId, recipienterName, recipienterPhone, receiveUnit, unittype: this.unittype, recipienterRealName: recipienterName, ...rest} + // this.form.peerRecipientIds.push(obj) + // } + + let bList = [] + for(let i of this.form.recipient){ + for(let j of this.treeData){ + if(j.value == i){ + bList = bList.concat(j.children) + }else{ + if(j.children && j.children.length>0){ + for(let k of j.children){ + if(k.id == i){ + bList.push(k) + } + } + } + } + } + } + for (let i of bList) { + const {id: recipienterId, recipientName: recipienterName, phone: recipienterPhone, company: receiveUnit, id,province,city,area,town,...rest} = i + const obj = {recipienterId, recipienterName, recipienterPhone, receiveUnit, unittype: this.unittype, recipienterRealName: recipienterName, id,province,city,area,town} + this.form.peerRecipientIds.push(obj) + } + } + this.form.attachments = this.fileList.map(i => i.response.data.id) const { receiver, @@ -683,4 +735,4 @@ } } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.2