From 18f35fe78de41a1b240758c91e05380decb48978 Mon Sep 17 00:00:00 2001 From: lkk <364857242@qq.com> Date: 星期五, 25 七月 2025 17:39:59 +0800 Subject: [PATCH] 1 --- src/views/doctor/inspectCheck/index.vue | 340 +++++++++++++++++--------------------------------------- 1 files changed, 104 insertions(+), 236 deletions(-) diff --git a/src/views/doctor/inspectCheck/index.vue b/src/views/doctor/inspectCheck/index.vue index 7a3a261..943887e 100644 --- a/src/views/doctor/inspectCheck/index.vue +++ b/src/views/doctor/inspectCheck/index.vue @@ -17,10 +17,9 @@ </el-button> </el-form-item> </el-form> + <div class="box"> - <div class="table-header"> - 妫�楠岃褰� - </div> + <div class="table-header">妫�楠岃褰�</div> <div> <el-table :data="exaLists" border style="width: 100%" @selection-change="handleSelectionChange" :header-cell-style="{ background: '#aad8df', fontSize: '14px', color: '#333' }" height="350" ref="firstTable"> @@ -49,14 +48,26 @@ </el-table> </div> </div> + <div class="table-title"> - <h3> - 浣撴璁板綍锛� - <span class="highlight">濮撳悕锛歿{ infoList.tjCustomerName || "鏆傛棤" }}</span> - <span class="highlight">鎬у埆锛歿{ infoList.tjCustomerSex == 0 ? "鐢�" : infoList.tjCustomerSex == 1 ? "濂�" : "鏆傛棤" }}</span> - <span class="highlight">骞撮緞锛歿{ infoList.tjCustomerAge || "鏆傛棤" }}</span> - </h3> -</div> + <h3> + 浣撴璁板綍锛� + <span class="highlight">濮撳悕锛歿{ infoList.tjCustomerName || "鏆傛棤" }}</span> + <span class="highlight"> + 鎬у埆锛� + {{ + infoList.tjCustomerSex == 0 + ? "鐢�" + : infoList.tjCustomerSex == 1 + ? "濂�" + : "鏆傛棤" + }} + </span> + <span class="highlight">骞撮緞锛歿{ infoList.tjCustomerAge || "鏆傛棤" }}</span> + <span class="highlight">闂ㄨ瘖鍙凤細{{ infoList.cardId || "鏆傛棤" }}</span> + </h3> + </div> + <el-table border height="350" ref="tab1" :data="checkList" v-loading="loading" style="width: 100%" @selection-change="handleSelectionChangeSecond" :header-cell-style="{ background: '#aad8df', fontSize: '14px', color: '#333' }"> @@ -78,263 +89,131 @@ </el-table> </div> </template> + <script> import { getlisList, getJyTjList, asyncPacs } from "@/api/doctor/pacsCheck"; import { getOrderList } from "@/api/hosp/order"; -import moment from "moment"; export default { - dicts: ["dict_tj_status"], data() { return { - isProcessing: false, // 闃叉姝诲惊鐜� - isDeselection: false, // 鏍囪鏄惁涓哄彇娑堥�変腑 - infoList: {}, - dis: false, - code: null, - createTimeList: "", - total: 0, - loading: false, - isSyncing: false, - isFetchingRightTableData: false, queryParams: { - name: null, - start: null, - end: null, tjNum: null, }, - checkStatus: "0", exaLists: [], - selectedFirstTable: null, - selectedSecondTable: [], - form: {}, - clearTimeSet: null, - tjNumbers: "", - multipleSelection: "", - tjnum: "", - xiangmuList: [], checkList: [], - tg: true, - bh: true, - pickerOptions: { - shortcuts: [ - { - text: "鏈�杩戜竴鍛�", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); - picker.$emit("pick", [start, end]); - }, - }, - { - text: "鏈�杩戜竴涓湀", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); - picker.$emit("pick", [start, end]); - }, - }, - { - text: "鏈�杩戜笁涓湀", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); - picker.$emit("pick", [start, end]); - }, - }, - ], - }, + infoList: {}, + selectedFirstTable: [], + selectedSecondTable: [], + loading: false, + isProcessingSelection: false, }; }, - mounted() { this.$nextTick(() => { this.$refs.inputName.focus(); }); }, - methods: { - handleDateChange(val) { - if (val && val.length === 2) { - this.queryParams.start = val[0]; - this.queryParams.end = val[1]; - } else { - this.queryParams.start = null; - this.queryParams.end = null; - } - console.log("Query Params:", this.queryParams); - }, - - tableRowClassName({ row }) { - return !row.brid ? "row-disabled" : ""; - }, - -handleSelectionChange(val) { - this.selectedFirstTable = val; - - this.$nextTick(() => { - if (val.length === 0) { - console.log('鏃犻�変腑琛岋紝娓呯┖閫夋嫨鍜� checkList'); - this.checkList = []; - this.exaLists.forEach(row => { - this.$refs.firstTable && this.$refs.firstTable.toggleRowSelection(row, false); - }); - return; - } - - const firstSelectedRow = val[0]; - let filterKey = firstSelectedRow.checkParts ? 'checkParts' : 'brid'; - let filterValue = firstSelectedRow.checkParts || firstSelectedRow.brid; - - console.log(`鎸� ${filterKey} 绛涢��: ${filterValue}`); - const selectedSet = new Set( - this.exaLists - .filter(row => row[filterKey] === filterValue) - .map(item => item.tempId) - ); - console.log(`閫変腑鐨� ${filterKey} 闆嗗悎 (tempId):`, selectedSet); - - this.exaLists.forEach(row => { - if (!row.brid) { - console.warn(`鍚嶇О涓� ${row.name} 鐨勮娌℃湁鐢宠鍗曞彿锛岃烦杩囬�夋嫨`); - return; - } - const shouldSelect = selectedSet.has(row.tempId); - console.log(`琛� tempId: ${row.tempId}, ${filterKey}: ${row[filterKey]}, 鏄惁閫変腑: ${shouldSelect}`); - this.$refs.firstTable.toggleRowSelection(row, shouldSelect); - }); - - if (!this.isFetchingRightTableData) { - this.isFetchingRightTableData = true; - this.fetchRightTableData().finally(() => { - this.isFetchingRightTableData = false; - }); - } - }); -}, - - fetchRightTableData() { - const code = this.queryParams.tjNum; - if (!code) { - console.warn('鏈彁渚涗綋妫�鍙凤紝璺宠繃 fetchRightTableData'); - this.checkList = []; - this.loading = false; - return Promise.resolve(); - } - this.loading = true; - return getJyTjList(code) - .then((response) => { - this.checkList = response.data || []; - this.loading = false; - }) - .catch((error) => { - console.error('鑾峰彇 checkList 澶辫触:', error); - this.checkList = []; - this.loading = false; - throw error; - }); - }, - - handleSelectionChangeSecond(selectedRows) { - this.selectedSecondTable = selectedRows; - if (selectedRows.length > 1) { - let del_row = selectedRows.shift(); - this.$refs.tab1.toggleRowSelection(del_row, false); - } - console.log("褰撳墠閫変腑鐨勮鏁版嵁:", this.selectedSecondTable); - }, - async handleQuery() { if (!this.queryParams.tjNum) { this.$message.error("浣撴鍙蜂笉鑳戒负绌�"); return; } - this.loading = true; try { - // 骞惰鎵ц涓や釜鏌ヨ const [orderResponse, lisResponse] = await Promise.all([ - getOrderList(this.queryParams).catch((error) => { - console.error('鑾峰彇 orderList 澶辫触:', error); - return { data: { list: [] } }; // 杩斿洖绌烘暟鎹互缁х画鎵ц - }), + getOrderList(this.queryParams).catch(() => ({ data: { list: [] } })), getlisList(this.queryParams), ]); - - // 澶勭悊 getOrderList 缁撴灉 - if (orderResponse.data?.list?.length > 0) { - this.infoList = orderResponse.data.list[0]; - } else { - this.infoList = {}; - console.warn('getOrderList 杩斿洖绌哄垪琛�'); - } - - // 澶勭悊 getlisList 缁撴灉 - if (lisResponse.code === 200) { - this.exaLists = lisResponse.data.map((item, index) => ({ - ...item, - brid: item.brid?.trim(), // 娓呯悊绌烘牸 - mzh: item.mzh?.trim(), - tempId: index, - })); - console.log('Loaded exaLists:', this.exaLists); - - // 鑾峰彇鍙充晶琛ㄦ牸鏁版嵁 - await this.fetchRightTableData(); - } else { - this.exaLists = []; - this.$message.error(lisResponse.msg || "鏌ヨ妫�楠岃褰曞け璐�"); - } - } catch (error) { - console.error('鏌ヨ澶辫触:', error); - this.$message.error(error?.msg || "鏌ヨ澶辫触锛岃绋嶅悗閲嶈瘯"); - this.exaLists = []; - this.checkList = []; - this.infoList = {}; + this.infoList = orderResponse.data.list?.[0] || {}; + this.exaLists = lisResponse.data.map((item, index) => ({ + ...item, + brid: item.brid?.trim(), + tempId: index, + })); + await this.fetchRightTableData(); + } catch (e) { + console.error(e); } finally { this.loading = false; - } - - // 澶勭悊鏃堕棿鑼冨洿 - if (this.createTimeList) { - this.queryParams.start = this.createTimeList[0]; - this.queryParams.end = this.createTimeList[1]; - } else { - this.queryParams.start = null; - this.queryParams.end = null; } }, resetQuery() { - this.createTimeList = []; - this.resetForm("queryForm"); - this.queryParams = { - name: null, - start: null, - end: null, - tjNum: null, - }; - this.checkList = []; + this.queryParams.tjNum = null; this.exaLists = []; + this.checkList = []; this.infoList = {}; }, + handleSelectionChange(selected) { + if (this.isProcessingSelection) return; + this.isProcessingSelection = true; - handleCurrentChange(row) { - this.currentRow = row; + // 鎵惧埌鐢ㄦ埛鍒氭搷浣滅殑閭d竴鏉★紙瀵规瘮涔嬪墠鍜岀幇鍦ㄧ殑宸紓锛� + const old = this.selectedFirstTable; + let changedRow = null; + + if (selected.length > old.length) { + // 鏂板锛氭壘鍑烘柊澧炵殑 + changedRow = selected.find(row => !old.includes(row)); + } else { + // 鍒犻櫎锛氭壘鍑哄垹闄ょ殑 + changedRow = old.find(row => !selected.includes(row)); + } + + if (changedRow) { + const group = this.exaLists.filter(r => r.brid === changedRow.brid); + const isAdding = selected.length > old.length; + + this.$refs.firstTable.clearSelection(); + if (isAdding) { + // 娣诲姞锛屾暣涓粍閫変笂 + 鍘熸湁閫夌殑 brid 涔熼�変笂 + const allBrids = new Set(); + selected.forEach(row => allBrids.add(row.brid)); + allBrids.add(changedRow.brid); + const newSelection = this.exaLists.filter(row => allBrids.has(row.brid)); + newSelection.forEach(row => { + this.$refs.firstTable.toggleRowSelection(row, true); + }); + this.selectedFirstTable = newSelection; + } else { + // 鍒犻櫎锛屾暣涓粍鍙栨秷锛屽啀鎶婂墿涓� brid 鍒嗙粍琛ュ洖鍘� + const remaining = old.filter(row => row.brid !== changedRow.brid); + const remainBrids = [...new Set(remaining.map(r => r.brid))]; + const newSelection = this.exaLists.filter(row => remainBrids.includes(row.brid)); + newSelection.forEach(row => { + this.$refs.firstTable.toggleRowSelection(row, true); + }); + this.selectedFirstTable = newSelection; + } + } else { + this.selectedFirstTable = selected; + } + + this.fetchRightTableData(); + this.isProcessingSelection = false; }, - setTime() { - this.clearTimeSet = setInterval(() => { - this.$modal.closeLoading(); - }, 300000); + + handleSelectionChangeSecond(selected) { + this.selectedSecondTable = selected.slice(0, 1); + }, + + fetchRightTableData() { + if (!this.queryParams.tjNum) return; + this.loading = true; + return getJyTjList(this.queryParams.tjNum) + .then(res => { + this.checkList = res.data || []; + }) + .finally(() => { + this.loading = false; + }); }, tongbu() { this.$modal.loading("姝e湪鍚屾锛岃绋嶅��..."); - this.setTime(); const requestData = { lis: this.selectedFirstTable ? this.selectedFirstTable.map((item) => ({ ...item, @@ -363,7 +242,9 @@ }); }, }, -};</script> +}; +</script> + <style lang="scss" scoped> .app-container { padding: 20px; @@ -407,17 +288,4 @@ border-radius: 4px; font-size: 14px; } - -.el-table .warning-row { - background: #e5f3ff !important; -} - -::v-deep .el-table__body tr.current-row > td { - background: #edf2fa !important; -} - -.row-disabled { - color: #999; - background-color: #f5f5f5; -} -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0