From 19824ba58a83eb98c0ed547067fbe988875b7283 Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期一, 29 九月 2025 17:08:05 +0800 Subject: [PATCH] 最新版本541200007 --- admin/src/components/business/OperaWarningRuleWindow.vue | 222 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 183 insertions(+), 39 deletions(-) diff --git a/admin/src/components/business/OperaWarningRuleWindow.vue b/admin/src/components/business/OperaWarningRuleWindow.vue index 5635278..2f8126f 100644 --- a/admin/src/components/business/OperaWarningRuleWindow.vue +++ b/admin/src/components/business/OperaWarningRuleWindow.vue @@ -1,43 +1,57 @@ <template> <GlobalWindow :title="title" + width="50%" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" > + <p class="tip-warn"><i class="el-icon-warning"></i>鎿嶄綔璇存槑锛�<br> + 1.璇锋寜闇�閰嶇疆鎺ㄩ�佽鍒欙紝閰嶉�佸涓鍒欐椂锛屽嵆涓哄涓鍒欐弧瓒虫椂鎵嶆帹閫�;<br> + 2.鍙戠敓鍖哄煙闈炲繀濉紝涓嶅~鍒欒〃绀鸿瑙勫垯涓嬫墍鏈夊尯鍩熺殑鐩稿簲鎶ヨ绫诲瀷鍧囬�氱煡;<br> + </p> <el-form :model="form" ref="form" :rules="rules"> - <el-form-item label="鍒涘缓浜虹紪鐮�" prop="creator"> - <el-input v-model="form.creator" placeholder="璇疯緭鍏ュ垱寤轰汉缂栫爜" v-trim/> + <el-form-item label="閫夋嫨绛惧埌閫氱煡浜哄憳" prop="memberIds" style="margin-bottom: 30px" > + <el-select v-model="memberSelect" filterable multiple clearable placeholder="璇烽�夋嫨" @change="changeMembers"> + <el-option v-for="item in memberList" :key="'member_'+item.id" :label="item.name+'-'+item.companyName" :value="item.id+''"> + </el-option> + </el-select> </el-form-item> - <el-form-item label="鍒涘缓鏃堕棿" prop="createDate"> - <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ュ垱寤烘椂闂�"></el-date-picker> + <div style="display: flex;" v-for="(item,index) in form.detailList" :key="'region_'+item.random" > + <span style="line-height: 32px;font-size: 14px;"><b style="color: #F56C6C;margin-right: 4px;font-size: 11px;">*</b>{{'瑙勫垯'+(index +1)}}</span> + <el-form-item label="" style="display: inline-block;margin-left: 10px; " > + <el-select v-model="item.warningId" filterable placeholder="璇烽�夋嫨鎶ヨ绫诲瀷" > + <el-option v-for="item in warningList" :label="item.name" :value="item.id"> </el-option> + </el-select> + </el-form-item> + <el-form-item label="" style="display: inline-block;margin-left: 10px"> +<!-- <el-select v-model="item.regionId" filterable multiple clearable placeholder="璇烽�夋嫨鍙戠敓鍖哄煙" > + <el-option v-for="item in regionList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select>--> + <treeselect + style="width: 200px;height:32px;display: inline-block" + @input="changeSel(index)" + v-model="item.regionId" + placeholder="璇烽�夋嫨鍙戠敓鍖哄煙" + :options="regionList" + :normalizer="normalizeOptions" + :default-expand-level="1" + noChildrenText="娌℃湁瀛愰�夐」" + noOptionsText="娌℃湁鍙�夐」" + noResultsText="娌℃湁鍖归厤鐨勭粨鏋�" /> + </el-form-item> + <el-button type="danger" style="margin-left: 10px;height: 32px; " @click="delDo(index)" v-if="index>0 || form.detailList.length>1">鍒犻櫎</el-button> + </div> + <el-button type="primary" style="margin-left: 10px;margin-bottom: 20px;" @click="addDo">澧炲姞瑙勫垯</el-button> + <el-form-item label="鐘舵��" prop="status"> + <el-radio-group v-model="form.status"> + <el-radio :label="0" :value="0">绂佺敤</el-radio> + <el-radio :label="1" :value="1">鍚敤</el-radio> + </el-radio-group> </el-form-item> - <el-form-item label="鏇存柊浜虹紪鐮�" prop="editor"> - <el-input v-model="form.editor" placeholder="璇疯緭鍏ユ洿鏂颁汉缂栫爜" v-trim/> - </el-form-item> - <el-form-item label="鏇存柊鏃堕棿" prop="editDate"> - <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="璇疯緭鍏ユ洿鏂版椂闂�"></el-date-picker> - </el-form-item> - <el-form-item label="鏄惁鍒犻櫎0鍚� 1鏄�" prop="isdeleted"> - <el-input v-model="form.isdeleted" placeholder="璇疯緭鍏ユ槸鍚﹀垹闄�0鍚� 1鏄�" v-trim/> - </el-form-item> - <el-form-item label="澶囨敞" prop="info"> - <el-input v-model="form.info" placeholder="璇疯緭鍏ュ娉�" v-trim/> - </el-form-item> - <el-form-item label="鍐呴儴浜哄憳缂栫爜锛堝叧鑱攎ember)" prop="memberId"> - <el-input v-model="form.memberId" placeholder="璇疯緭鍏ュ唴閮ㄤ汉鍛樼紪鐮侊紙鍏宠仈member)" v-trim/> - </el-form-item> - <el-form-item label="澶氳鍒欓棿闅旀椂闂�(绉掞級" prop="intervalSec"> - <el-input v-model="form.intervalSec" placeholder="璇疯緭鍏ュ瑙勫垯闂撮殧鏃堕棿(绉掞級" v-trim/> - </el-form-item> - <el-form-item label="鎺掑簭鐮�" prop="sortnum"> - <el-input v-model="form.sortnum" placeholder="璇疯緭鍏ユ帓搴忕爜" v-trim/> - </el-form-item> - <el-form-item label="鐘舵�� 0绂佺敤 1鍚敤" prop="status"> - <el-input v-model="form.status" placeholder="璇疯緭鍏ョ姸鎬� 0绂佺敤 1鍚敤" v-trim/> - </el-form-item> - <el-form-item label="鎶ヨ绫诲瀷缂栫爜(鍏宠仈warning锛�" prop="warningId"> - <el-input v-model="form.warningId" placeholder="璇疯緭鍏ユ姤璀︾被鍨嬬紪鐮�(鍏宠仈warning锛�" v-trim/> + <el-form-item label="鍙戠敓闂撮殧鏃堕棿(绉掞級" prop="intervalSec"> + <el-input type="number" v-model="form.intervalSec" placeholder="璇疯緭鍏ュ瑙勫垯闂撮殧鏃堕棿(绉掞級" v-trim/> </el-form-item> </el-form> </GlobalWindow> @@ -46,6 +60,8 @@ <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' +import { allList } from '@/api/business/member' +import { allList as warningList, regionList } from '@/api/business/warning' export default { name: 'OperaWarningRuleWindow', extends: BaseOpera, @@ -55,20 +71,20 @@ // 琛ㄥ崟鏁版嵁 form: { id: null, - creator: '', - createDate: '', - editor: '', - editDate: '', - isdeleted: '', - info: '', - memberId: '', + memberIds: '', intervalSec: '', sortnum: '', - status: '', - warningId: '' + status: 0, + detailList: [{ random:Math.random(),regionId: null, regionName: null, regionCode: null ,warningId:null}] }, + memberSelect: [], + memberList: [], + warningList: [], + regionList: [], // 楠岃瘉瑙勫垯 rules: { + memberIds: [{ required: true, message: '璇烽�夋嫨閫氱煡浜哄憳', tigger: 'blur' }], + status: [{ required: true, message: '璇烽�夋嫨鐘舵��'}] } } }, @@ -77,6 +93,134 @@ api: '/business/warningRule', 'field.id': 'id' }) + }, + methods: { + normalizeOptions (node) { + if (!node.childList || !node.childList.length) { + // 鍘绘帀children=[]鐨刢hildren灞炴�� + delete node.childList + } + return { + id: node.indexCode, + label: node.name, + children: node.childList + } + }, + changeSel(opt){ + var item = this.form.detailList[opt] + this.form.detailList[opt].regionCode = null + this.form.detailList[opt].regionName = null + if(item.regionId){ + var reg = this.getSelectedObject(item.regionId) + if(reg){ + this.form.detailList[opt].regionCode = reg.indexCode + this.form.detailList[opt].regionName = reg.name + } + } + console.log(" this.form.detailList[opt]",reg, this.form.detailList[opt]) + }, + getSelectedObject(id) { + if (!id) { + return null // 娌℃湁閫変腑椤规椂杩斿洖 null 鎴� {} 鏍规嵁闇�瑕佸鐞� + } + const findSelected = (options) => { + for (const option of options) { + if (option.indexCode === id) { + return option // 杩斿洖鍖归厤鐨勫畬鏁村璞� + } else if (option.childList && option.childList.length > 0) { + const found = findSelected(option.childList) // 閫掑綊鎼滅储瀛愰�夐」 + if (found) return found // 濡傛灉鎵惧埌杩斿洖璇ュ璞� + } + } + return null; // 鏈壘鍒拌繑鍥� null 鎴� {} 鏍规嵁闇�瑕佸鐞� + } + return findSelected(this.regionList); // 寮�濮嬫悳绱㈠苟杩斿洖缁撴灉 + }, + addDo () { + this.form.detailList.push({random:Math.random(), regionId: null, regionName: null, regionCode: null,warningId:null }) + }, + delDo (index) { + if (this.form.detailList.length > 1 && this.form.detailList.length > index) { + this.form.detailList.splice(index, 1) + } + }, + changeMembers () { + console.log(this.memberSelect) + this.form.memberIds = '' + if (!this.memberSelect || !this.memberSelect.length) { + return + } + this.form.memberIds = this.memberSelect.join(',') + }, + open (title, target) { + this.memberSelect =[] + this.title = title + this.loadMember() + this.loadRegions() + this.loadWarning() + this.visible = true + this.form = { + id: null, + memberIds: '', + intervalSec: '', + sortnum: '', + status: 0, + detailList: [{ random:Math.random(),regionId: null, regionName: null, regionCode: null,warningId:null }] + } + // 鏂板缓 + if (target == null) { + this.$nextTick(() => { + this.$refs.form.resetFields() + this.form[this.configData['field.id']] = null + }) + return + } + // 缂栬緫 + this.$nextTick(() => { + for (const key in this.form) { + this.form[key] = target[key] + } + if (!this.form.detailList || !this.form.detailList.length) { + this.form.detailList = [{ random:Math.random(),regionId: null, regionName: null, regionCode: null,warningId:null }] + } + if(this.form.memberIds){ + this.memberSelect = this.form.memberIds.split(",") + } + }) + }, + loadMember () { + allList({ + type: 2 + }).then(res => { + this.memberList = res + }) + }, + loadWarning () { + warningList({ + }).then(res => { + this.warningList = res + }) + }, + loadRegions () { + regionList({ + }).then(res => { + this.regionList = res + }) + } } } </script> +<style scoped lang="scss"> +.inline { + width: 178px; +} +.vue-treeselect { + line-height: 30px; + ::v-deep .vue-treeselect__control { + height: 32px; + .vue-treeselect__single-value { + line-height: 30px; + } + } +} +</style> -- Gitblit v1.9.3