From 4a800a8fc83c6bd1f86a8e847b079a51a7532c09 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期三, 20 七月 2022 15:05:58 +0800 Subject: [PATCH] 修复国标配置的bug --- src/pages/library/components/baseList.vue | 526 ++++++++++++++++++++++++++++------------------------------ 1 files changed, 256 insertions(+), 270 deletions(-) diff --git a/src/pages/library/components/baseList.vue b/src/pages/library/components/baseList.vue index d56c868..9a70af5 100644 --- a/src/pages/library/components/baseList.vue +++ b/src/pages/library/components/baseList.vue @@ -1,138 +1,157 @@ <template> - <div :style="listWidth?`width:${listWidth};`:''" class="out-div el-menu-vertical-demo"> + <div + :style="listWidth ? `width:${listWidth};` : ''" + class="out-div el-menu-vertical-demo" + > <el-collapse v-model="activeNames"> <el-collapse-item name="1" class="el-collapse-item__wrap"> <template slot="title"> - <span - :class="title==='鍚屾搴�'?'iconfont iconshuaxintongbu':'iconfont iconwenjianjia'" - style="font-size:18px;" - ></span> - <span class="m5">{{title}}</span> - <i - class="el-icon-circle-plus-outline ml10" - style="font-size:20px;color:#3D68E1;" - @click.stop="add('sync')" - v-if="isShow('library:set')" - ></i> - <span - class="m5" - style="font-size:14px;color:#3D68E1;" - @click.stop="add('sync')" - v-if="isShow('library:set')" - >鏂板</span> + <img + v-if="title === '鍚屾搴�'" + src="/images/library/鍚屾搴�2.png" + alt="" + srcset="" + /> + <img v-else src="/images/library/鏈湴搴�2.png" alt="" srcset="" /> + <span class="m5">{{ title }}</span> + <el-tooltip content="娣诲姞鍚屾搴�" placement="top"> + <!-- popper-class="atooltip" --> + <span + class="iconfont icontianjiaku-09" + style=" + font-size: 22px; + color: #666666; + position: absolute; + right: 10px; + " + @click.stop="add('sync')" + v-if="isShow('library:set')" + ></span> + </el-tooltip> </template> <div class="max-height"> <el-row - class="p10 cursor-pointer" - v-for="(item, index) in data" + class="p5 cursor-pointer" + v-for="(item, index) in syncTableList" :key="item.id" - @click.native="clickCategory(index, 'sync' ,item)" - :class="{activeRow:categoryIndex=='sync' + index}" + @click.native="clickCategory(index, 'sync', item)" + :class="{ activeRow: categoryIndex == 'sync' + index }" > - <el-col :span="12" :class="item.bwType === '1'?'c-red':'c-green'"> + <el-col + :span="12" + :class="item.bwType === '1' ? 'c-red' : 'c-green'" + > <p - style="text-align:left;margin-left:10px" + style="text-align: left; margin-left: 5px" class="name-ellipsis" :title="item.tableName" - >{{item.tableName}}</p> + > + <span + class="iconfont iconrenyuanku-09" + v-if="item.tableType == 'person'" + ></span> + <span + class="iconfont iconcheliangku-09" + v-if="item.tableType == 'car'" + ></span> + <span style="font-size: 14px; font-weight: bold"> + {{ item.tableName }}</span + > + </p> </el-col> <el-col :span="10" :offset="1"> - <el-switch - :active-value="1" - :inactive-value="0" - v-model="item.enable" - size="small" - style="margin-top:-7px" - :disabled="isDisabled(item)" - @change="enable(item)" - > - <!-- :disabled="isDisa(item)" --> - </el-switch> - <el-tooltip content="缂栬緫" placement="top" popper-class="atooltip"> - <span - class="iconfont iconbianji iconStyle1" - @click.stop="edit(item,'sync')" - v-if="isShow('library:set')" - ></span> - </el-tooltip> - <el-tooltip content="鍒犻櫎" placement="top" popper-class="atooltip"> - <span - class="iconfont iconshanchu iconStyle1" - style="color:#E74C3C;" - v-if="isShow('library:set')" - @click.stop="deleteBase(item.id)" - ></span> - </el-tooltip> + <div + class="status-dot" + :class="item.enable == 1 ? 'status-dot-active' : ''" + :style="item.enable == 1 ? { background: '#4E94FF' } : {}" + ></div> </el-col> <el-col :span="24" - style="text-align:left;margin-left:10px; color:#888888" - >{{item.startTime}}~{{item.endTime?item.endTime:'姘镐箙鏈夋晥'}}</el-col> + style=" + text-align: left; + margin-left: 5px; + color: #888888; + font-size: 12px; + line-height: 17px; + " + > + <div class="time-start">{{ item.startTime }}~</div> + <div class="time-end"> + {{ item.endTime ? item.endTime : "姘镐箙鏈夋晥" }} + </div> + </el-col> </el-row> </div> </el-collapse-item> <el-collapse-item name="2" class="el-collapse-item__wrap"> <template slot="title"> - <span class="iconfont iconwenjianjia" style="font-size:18px;"></span> - <span class="m5">{{titleB}}</span> - <i - class="el-icon-circle-plus-outline ml10" - style="font-size:20px;color:#3D68E1;" - @click.stop="add('local')" - v-if="isShow('library:set')" - ></i> - <span - class="m5" - style="font-size:14px;color:#3D68E1;" - @click.stop="add('local')" - v-if="isShow('library:set')" - >鏂板</span> + <img src="/images/library/鏈湴搴�2.png" alt="" srcset="" /> + <span class="m5">{{ titleB }}</span> + <el-tooltip content="娣诲姞鍚屾搴�" placement="top"> + <span + class="iconfont icontianjiaku-09" + style=" + font-size: 22px; + color: #666666; + position: absolute; + right: 10px; + " + @click.stop="add('local')" + v-if="isShow('library:set')" + ></span> + </el-tooltip> </template> <div class="max-height"> <el-row - class="p10 cursor-pointer" - v-for="(item, index) in dataB" + class="p5 cursor-pointer" + v-for="(item, index) in localTableList" :key="item.id" - @click.native="clickCategory(index, 'local' ,item)" - :class="{activeRow:categoryIndex=='local' + index}" + @click.native="clickCategory(index, 'local', item)" + :class="{ activeRow: categoryIndex == 'local' + index }" > - <el-col :span="12" :class="item.bwType === '1'?'c-red':'c-green'"> + <el-col + :span="12" + :class="item.bwType === '1' ? 'c-red' : 'c-green'" + > <p - style="text-align:left;margin-left:10px" + style="text-align: left; margin-left: 5px" class="name-ellipsis" :title="item.tableName" - >{{item.tableName}}</p> + > + <span + class="iconfont iconrenyuanku-09" + v-if="item.tableType == 'person'" + ></span> + <span + class="iconfont iconcheliangku-09" + v-if="item.tableType == 'car'" + ></span> + <span> {{ item.tableName }}</span> + </p> </el-col> <el-col :span="10" :offset="1"> - <el-switch - :active-value="1" - :inactive-value="0" - v-model="item.enable" - size="small" - style="margin-top:-7px" - :disabled="isDisabled(item)" - @change="enable(item)" - ></el-switch> - <el-tooltip content="缂栬緫" placement="top" popper-class="atooltip"> - <span - class="iconfont iconbianji iconStyle1" - @click.stop="edit(item,'local')" - v-if="isShow('library:set')" - ></span> - </el-tooltip> - <el-tooltip content="鍒犻櫎" placement="top" popper-class="atooltip"> - <span - class="iconfont iconshanchu iconStyle1" - style="color:#E74C3C;" - v-if="isShow('library:set')" - @click.stop="deleteBase(item.id)" - ></span> - </el-tooltip> + <div + class="status-dot" + :class="item.enable == 1 ? 'status-dot-active' : ''" + :style="item.enable == 1 ? { background: '#4E94FF' } : {}" + ></div> </el-col> <el-col :span="24" - style="text-align:left;margin-left:10px; color:#888888" - >{{item.startTime}}~{{item.endTime?item.endTime:'姘镐箙鏈夋晥'}}</el-col> + style=" + text-align: left; + margin-left: 5px; + color: #888888; + font-size: 12px; + line-height: 17px; + " + > + <div class="time-start">{{ item.startTime }}~</div> + <div class="time-end"> + {{ item.endTime ? item.endTime : "姘镐箙鏈夋晥" }} + </div> + </el-col> </el-row> </div> </el-collapse-item> @@ -140,223 +159,131 @@ </div> </template> <script> -// const data = [{ name: '鍚告瘨搴�', id: '1', time: '2019-01-01 12:00:00 ~ 2019-01-04 12:00:00' }, -// { name: '鍦ㄩ�冨簱', id: '2', time: '2019-01-01 12:00:00 ~ 2019-01-04 12:00:00' }, { name: '鍚告瘨搴�', id: '3', time: '2019-01-01 12:00:00 ~ 2019-01-04 12:00:00' }, -// { name: '鍦ㄩ�冨簱', id: '4', time: '2019-01-01 12:00:00 ~ 2019-01-04 12:00:00' }] -import { updateDbTableStatus } from '@/api/baseLibrary' +import { updateDbTableStatus } from "@/api/baseLibrary"; export default { - name: 'baseList', + name: "baseList", data() { return { - buttonAuthority: sessionStorage.getItem('buttonAuthoritys') || [], - activeNames: ['1', '2'], - categoryIndex: '', - data: [], - dataB: [], - clickBase: {} // 褰撳墠鐐瑰嚮鐨勫簳搴撳璞� - } + buttonAuthority: sessionStorage.getItem("buttonAuthoritys") || [], + activeNames: ["1", "2"], + categoryIndex: "", + syncTableList: [], + localTableList: [], + clickBase: {}, // 褰撳墠鐐瑰嚮鐨勫簳搴撳璞� + }; }, computed: { - // eslint-disable-next-line vue/return-in-computed-property isAdmin() { if ( - sessionStorage.getItem('userInfo') && - sessionStorage.getItem('userInfo') !== '' + sessionStorage.getItem("userInfo") && + sessionStorage.getItem("userInfo") !== "" ) { - let loginName = JSON.parse(sessionStorage.getItem('userInfo')).username - return ( - loginName === 'superadmin' || loginName === 'basic' - ) + let loginName = JSON.parse(sessionStorage.getItem("userInfo")).username; + return loginName === "superadmin" || loginName === "basic"; } return false; - } + }, }, mounted() { - this.init() + this.init(); }, methods: { isShow(authority) { - if (this.isAdmin) { - return true - } else if ( - this.buttonAuthority.indexOf(',' + authority + ',') > -1 - ) { - return true + return ( + this.isAdmin || this.buttonAuthority.indexOf("," + authority + ",") > -1 + ); + }, + async init(typ) { + await this.BaseManageData.querySyncTables(); + this.syncTableList = this.BaseManageData.syncTables; + if (typ) { + this.$emit("getList"); } else { - return false + this.defaultShow(); } - }, - async init() { - // console.log("鎵ц浜唅nit娌�") - await this.BaseManageData.querySyncTables() - this.data = this.BaseManageData.syncTables - this.defaultShow() - await this.BaseManageData.queryLocalTables() - this.dataB = this.BaseManageData.localTables - this.defaultShow() - }, - handleChange(val) { - console.log(val) - }, - async enable(item) { - let res = await updateDbTableStatus({ - id: item.id, - enable: item.enable - }) - if (res.success === true) { - this.$notify({ - type: 'success', - message: '搴曞簱鎴愬姛鍙樻洿鐢熸晥鐘舵�侊紒' - }) + await this.BaseManageData.queryLocalTables(); + this.localTableList = this.BaseManageData.localTables; + if (typ) { + this.$emit("getList"); } else { - this.$notify({ - type: 'error', - message: '搴曞簱鍙樻洿鐢熸晥鐘舵�佸け璐ワ紒' - }) + this.defaultShow(); } }, add(type) { - this.$emit('changeShow', null, type) + this.$emit("changeShow", null, type); }, - isDisabled(item) { - var flag = true - if (this.isShow('library:set')) { - if (item.endTime == "") { - flag = false - } else { - flag = !this.$moment(new Date()).isBetween(item.startTime, item.endTime) - } - } - return flag + clickLast(type) { + // this.$nextTick(() => { + + // }); + this.clickCategory( + this.syncTableList.length - 1, + type, + this.syncTableList[this.syncTableList.length - 1] + ); }, - clickCategory(index, type, item) { // 杩欓噷鎴戜滑浼犲叆涓�涓綋鍓嶅�� - this.categoryIndex = type + index + clickCategory(index, type, item) { + this.categoryIndex = type + index; // 璋冪敤鍒囨崲鍙充晶闈㈡澘鐨勫嚱鏁板苟涓斿垏鎹㈢埗缁勪欢涓璱sSelected鐨勫�艰鍙︿竴涓粍浠舵竻闄よ閫変腑鐘舵�� - // this.$emit('clearSelected') - this.clickBase = item - this.$emit('getList', item) - }, - edit(item, type) { - this.$emit('changeShow', item, type) - }, - deleteBase(id) { - let token = sessionStorage.getItem('loginedInfo') && JSON.parse(sessionStorage.getItem('loginedInfo')).access_token - this.$confirm('鎻愮ず锛氱‘瀹氬垹闄ゅ簳搴擄紵', { - center: true, - cancelButtonClass: 'comfirm-class-cancle', - confirmButtonClass: 'comfirm-class-sure' - }).then(() => { - fetch(`/data/api-v/dbtable/deleteDBtablesById/${id}`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Authorization': token - } - }).then(res => { - return res.json() - }).then(data => { - console.log(data.data) - if (data.success) { - this.$notify({ - type: 'success', - message: '搴曞簱鍒犻櫎鎴愬姛锛�' - }) - } - this.init() - }).catch(err => { - this.$notify({ - type: 'error', - message: err - }) - }) - }) + this.clickBase = item; + this.$emit("getList", item, type); }, // 榛樿鏄剧ず绗竴涓簱鐨勬暟鎹� defaultShow() { - // console.log(this.data.length,'defaultShow') - if (this.data !== undefined && this.data.length > 0) { - this.clickCategory(0, 'sync', this.data[0]) + if (this.syncTableList && this.syncTableList.length) { + this.clickCategory(0, "sync", this.syncTableList[0]); } else { - if (this.dataB !== undefined && this.dataB.length > 0) { - this.clickCategory(0, 'local', this.data[0]) + if (this.localTableList && this.localTableList.length) { + this.clickCategory(0, "local", this.syncTableList[0]); } } }, // 娣诲姞鏃堕棿姣旇緝鍑芥暟 dateParse(dateString) { - var SEPARATOR_BAR = '-' - var SEPARATOR_SLASH = '/' - var SEPARATOR_DOT = '.' - var dateArray + var SEPARATOR_BAR = "-"; + var SEPARATOR_SLASH = "/"; + var SEPARATOR_DOT = "."; + var dateArray; if (dateString.indexOf(SEPARATOR_BAR) > -1) { - dateArray = dateString.split(SEPARATOR_BAR) + dateArray = dateString.split(SEPARATOR_BAR); } else if (dateString.indexOf(SEPARATOR_SLASH) > -1) { - dateArray = dateString.split(SEPARATOR_SLASH) + dateArray = dateString.split(SEPARATOR_SLASH); } else { - dateArray = dateString.split(SEPARATOR_DOT) + dateArray = dateString.split(SEPARATOR_DOT); } - return new Date(dateArray[0], dateArray[1] - 1, dateArray[2]) + return new Date(dateArray[0], dateArray[1] - 1, dateArray[2]); }, isEmpty(str) { if (!str || str === undefined || str === null) { - return true + return true; } else { - return false + return false; } }, - dateCompare(dateString, compareDateString) { - // dateString:褰撳墠鏃堕棿 - // compareDateString:闇�瑕佹瘮杈冪殑鏃堕棿 - if (this.isEmpty(dateString)) { - // alert('dateString涓嶈兘涓虹┖') - return - } - if (this.isEmpty(compareDateString)) { - // alert('compareDateString涓嶈兘涓虹┖') - return 1 - } - var dateTime = this.dateParse(dateString).getTime() - var compareDateTime = this.dateParse(compareDateString).getTime() - if (compareDateTime > dateTime) { - return 1 - } else if (compareDateTime === dateTime) { - return 0 - } else { - return -1 - } - }, - // 宸︿晶搴曞簱鐢熸晥寮�鍏虫槸鍚﹀惎鐢ㄥ垽鏂� - // isDisa(data) { - // if (!this.isShow('library:set')) { - // return true - // } else { - // return false - // } - // } }, props: { listWidth: { - default: '300px', - type: String + default: "224px", + type: String, }, title: { - default: '鍚屾搴�', - type: String + default: "鍚屾搴�", + type: String, }, titleB: { - default: '鏈湴搴�', - type: String + default: "鏈湴搴�", + type: String, }, isSelected: { default: false, - type: Boolean + type: Boolean, }, type: { - default: '', - type: String - } - } -} + default: "", + type: String, + }, + }, +}; </script> <style lang="scss"> .iconStyle1 { @@ -364,14 +291,30 @@ margin-left: 15px; cursor: pointer; } -.activeRow { - background: rgb(245, 247, 250); -} + .cursor-pointer { cursor: pointer; } .max-height { max-height: 350px; + .el-col-10 { + height: 28px; + display: flex; + align-items: center; + justify-content: right; + width: auto; + float: right; + margin-right: 10px; + } + .el-col-12 { + width: auto; + } + .status-dot { + background: #bbbbbb; + height: 8px; + width: 8px; + border-radius: 50%; + } } .c-red { color: red; @@ -382,9 +325,11 @@ font-size: 14px; } .out-div { - overflow: hidden auto; max-height: 100%; - // max-height: 890px; + height: 100%; + .el-collapse-item__header { + position: relative; + } .el-collapse-item__wrap { will-change: height; background-color: #fff; @@ -393,6 +338,36 @@ box-sizing: border-box; border-bottom: 0px solid #ebeef5; } + .el-collapse-item__arrow { + display: none; + } + .el-row { + border-radius: 9px; + background: rgba(239, 241, 245, 0.35); + margin-bottom: 4px; + min-height: 72px; + box-sizing: border-box; + padding: 10px 5px; + } + .time-start { + display: inline-block; + } + .time-end { + display: inline-block; + } + .activeRow { + background: var(--colorCard); + color: #fff; + .time-start { + color: #e9e9e9; + } + .time-end { + color: #e9e9e9; + } + .status-dot-active { + background: #fff !important; + } + } } .name-ellipsis { max-width: 160px; @@ -400,11 +375,22 @@ text-overflow: ellipsis; white-space: nowrap; margin: 0 auto; + display: flex; + align-items: center; + .iconfont { + font-size: 24px; + margin-right: 5px; + line-height: 28px; + } } .m5 { - margin: 5px; + margin-left: 10px; + font-weight: bold; + font-size: 16px; + color: #5f5f5f; + font-family: PingFang SC; } -.p10 { - padding: 10px; +.p5 { + padding: 6px; } </style> -- Gitblit v1.8.0