From 599dc1a68be60373048aff95bd53ef8fdd138b4e Mon Sep 17 00:00:00 2001 From: wwl <xchao828@163.com> Date: 星期四, 03 四月 2025 18:02:28 +0800 Subject: [PATCH] 1 --- src/views/doctor/checkAll/index.vue | 304 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 263 insertions(+), 41 deletions(-) diff --git a/src/views/doctor/checkAll/index.vue b/src/views/doctor/checkAll/index.vue index a329d02..68f6865 100644 --- a/src/views/doctor/checkAll/index.vue +++ b/src/views/doctor/checkAll/index.vue @@ -371,11 +371,13 @@ style="margin-bottom: 10px"> <div> 鏍囬锛� - <el-input v-model="jianyi.bt" size="small" type="textarea" autosize></el-input> + <el-input v-model="jianyi.bt" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, index1)"></el-input> </div> <div> 鍐呭锛� - <el-input v-model="jianyi.nr" size="small" type="textarea" autosize></el-input> + <el-input v-model="jianyi.nr" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, index1)"></el-input> </div> </div> </div> @@ -384,14 +386,15 @@ <div v-else> <div> 鏍囬锛� - <el-input v-model="emptyAdvice.bt" size="small" type="textarea" autosize></el-input> + <el-input v-model="emptyAdvice.bt" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, -1)"></el-input> </div> <div> 鍐呭锛� - <el-input v-model="emptyAdvice.nr" size="small" type="textarea" autosize></el-input> + <el-input v-model="emptyAdvice.nr" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, -1)"></el-input> </div> </div> - <div style="margin-top: 10px;"> <el-button @click="shanchu(props.row)" type="danger" size="small">鍒犻櫎</el-button> @@ -428,11 +431,13 @@ style="margin-bottom: 10px"> <div> 鏍囬锛� - <el-input v-model="jianyi.bt" size="small" type="textarea" autosize></el-input> + <el-input v-model="jianyi.bt" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, index1)"></el-input> </div> <div> 鍐呭锛� - <el-input v-model="jianyi.nr" size="small" type="textarea" autosize></el-input> + <el-input v-model="jianyi.nr" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, index1)"></el-input> </div> </div> </div> @@ -441,14 +446,15 @@ <div v-else> <div> 鏍囬锛� - <el-input v-model="emptyAdvice.bt" size="small" type="textarea" autosize></el-input> + <el-input v-model="emptyAdvice.bt" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, -1)"></el-input> </div> <div> 鍐呭锛� - <el-input v-model="emptyAdvice.nr" size="small" type="textarea" autosize></el-input> + <el-input v-model="emptyAdvice.nr" size="small" type="textarea" autosize + @blur="handleAdviceBlur(props.row, -1)"></el-input> </div> </div> - <div style="margin-top: 10px;"> <el-button @click="shanchu(props.row)" type="danger" size="small">鍒犻櫎</el-button> @@ -714,8 +720,7 @@ <el-button @click="jianqians = false">鍙� 娑�</el-button> </span> </el-dialog> - <el-dialog title="鏂板寮傚父缁撴灉" :visible.sync="addNewDialogVisible" width="900px" :before-close="handleAddNewClose" - class="custom-dialog"> + <el-dialog title="鏂板寮傚父缁撴灉" :visible.sync="addNewDialogVisible" width="900px" class="custom-dialog"> <el-form :model="newItem" ref="newItemForm" label-width="100px" class="custom-form"> <el-form-item label="椤圭洰鍒嗙被" prop="parentName"> <el-select v-model="newItem.parentName" placeholder="璇烽�夋嫨椤圭洰鍒嗙被" clearable filterable @@ -740,10 +745,11 @@ <!-- 鍔ㄦ�佸缓璁粍 --> <div v-for="(advice, index) in newItem.map" :key="index" class="advice-group"> <el-form-item label="寤鸿鏍囬" :prop="'map.' + index + '.bt'"> - <el-input v-model="advice.bt" placeholder="璇疯緭鍏ュ缓璁爣棰�" clearable></el-input> + <el-input v-model="advice.bt" placeholder="璇疯緭鍏ュ缓璁爣棰�" clearable @focus="tan"></el-input> </el-form-item> <el-form-item label="寤鸿鍐呭" :prop="'map.' + index + '.nr'"> - <el-input v-model="advice.nr" type="textarea" rows="3" placeholder="璇疯緭鍏ュ缓璁唴瀹�" resize="none"></el-input> + <el-input v-model="advice.nr" type="textarea" rows="3" placeholder="璇疯緭鍏ュ缓璁唴瀹�" resize="none" + @focus="tan"></el-input> </el-form-item> <el-button v-if="index > 0" type="danger" size="small" @click="removeAdvice(index)" style="margin-left: 100px; margin-bottom: 10px;">鍒犻櫎</el-button> @@ -758,6 +764,37 @@ <el-button type="primary" @click="submitNewItem">纭畾</el-button> </span> </el-dialog> + <el-dialog title="蹇嵎寤鸿閫夋嫨" :visible.sync="showjianyi" width="1000px" class="custom-dialog"> + <!-- 鏇挎崲涓鸿緭鍏ユ --> + <div style="margin-bottom: 15px;"> + <el-form :inline="true"> + <el-form-item label="寤鸿鍚嶇О"> + <el-input v-model="queryParams1.zyzd" placeholder="璇疯緭鍏ュ缓璁悕绉拌繘琛岀瓫閫�" clearable style="width: 200px" + @input="filterAdvices(true)" onkeydown="if(event.keyCode === 32 || event.keyCode === 13) return false;" /> + </el-form-item> + </el-form> + </div> + + <el-table :data="advicerulesList" ref="adviceTable" border highlight-current-row + @current-change="handleCurrentChangeAdvice" style="max-height: 400px; overflow-y: auto;"> + <el-table-column label="绉戝" prop="ks" width="100" align="center" /> + <el-table-column label="寤鸿鍚嶇О" prop="jymc" align="center" /> + <el-table-column label="寤鸿鍐呭" prop="jynr" align="center" /> + </el-table> + + <!-- 鍒嗛〉缁勪欢 --> + <div class="pag"> + <div class="pag2"> + <pagination v-show="total1 > 0" :total="total1" :page.sync="queryParams1.pageNum" + :limit.sync="queryParams1.pageSize" @pagination="filterAdvices(false)" /> + </div> + </div> + + <span slot="footer" class="dialog-footer"> + <el-button @click="showjianyi = false">鍙栨秷</el-button> + <el-button type="primary" @click="applySelectedAdvice" :disabled="!selectedAdvice">纭畾</el-button> + </span> + </el-dialog> <Packages ref="bbb" :baogao="baogao" /> <Prescription ref="Pre" :preObj="preObj" /> <proposal ref="proposal" :cusobj="cusobj" @event1="eventchange($event)" /> @@ -770,6 +807,7 @@ <script> +import _ from 'lodash'; import jianqianwenzhen from "@/components/jianqianwenzhen"; import Packages from "@/components/Packages"; import Prescription from "@/components/Prescription"; @@ -804,7 +842,9 @@ import { getconfigKey } from "@/api/login"; import moment from "moment"; import { get } from "sortablejs"; - +import { + listAdvicerules, +} from "@/api/hosp/advicerules"; export default { components: { ViewPdf, @@ -829,6 +869,10 @@ name: "checkAll", data() { return { + selectedAdvice: null, + activeAdviceIndex: 0, + advicerulesList: [], + showjianyi: false, addNewDialogVisible: false, newItem: { parentName: '', // 椤圭洰鍒嗙被锛屽搴旀ā鏉夸腑鐨� parentName @@ -973,6 +1017,12 @@ tjCategory: undefined, payType: undefined, }, + total1: 0, + queryParams1: { + pageNum: 1, + pageSize: 10, + zyzd: '' + }, status1: 0, // 0灞曠ず寮傚父1灞曠ず椤圭洰鎯呭喌 viewportHeight: 0, expends: [], @@ -993,6 +1043,112 @@ }); }, methods: { + + handleAdviceBlur(row, index) { + // 鏋勯�� advices 鏁版嵁 + let advicesToSubmit = []; + + if (index === -1) { + // advices 涓虹┖锛屼娇鐢� emptyAdvice 鐨勫�� + if (this.emptyAdvice.bt || this.emptyAdvice.nr) { + advicesToSubmit = [{ bt: this.emptyAdvice.bt || '', nr: this.emptyAdvice.nr || '' }]; + // 灏� emptyAdvice 鐨勫�艰祴鍊肩粰 row.advices + this.$set(row, 'advices', advicesToSubmit); + } + } else { + // advices 涓嶄负绌猴紝鐩存帴浣跨敤 row.advices + advicesToSubmit = row.advices; + } + + // 濡傛灉 advicesToSubmit 涓虹┖鎴栨病鏈夋湁鏁堟暟鎹紝涓嶆彁浜� + if (!advicesToSubmit || advicesToSubmit.length === 0) { + return; + } + + + const parentItem = this.yichangList.find(item => + item.sone.some(soneItem => soneItem.orderDetailId === row.orderDetailId) + ); + + if (!parentItem) { + this.$message.error('鏈壘鍒板搴旂殑鐖剁骇椤圭洰'); + return; + } + + const data = { + tjh: this.tableAll.tjNumber, // 浣撴鍙� + parentName: parentItem.proName, // 鐖剁骇椤圭洰鍚嶇О + jcxm: row.proName, // 妫�娴嬮」鐩� + jcjg: row.proResult, // 妫�娴嬬粨鏋� + ckfw: row.stanId, // 鍙傝�冭寖鍥� + dw: row.proAdvice, // 鍗曚綅 + map: advicesToSubmit, // 寤鸿鍒楄〃 + jyjc: parentItem.jyjc, // 妫�鏌ョ被鍨嬶紙0 鎴� 1锛� + id: row.orderDetailId, // 褰撳墠椤圭殑 orderDetailId + }; + + addOrder1(data).then((res) => { + if (res.code === 200) { + + } else { + this.$message.error('寤鸿鏇存柊澶辫触锛�' + (res.msg || '鏈煡閿欒')); + } + }).catch((error) => { + console.error('寤鸿鏇存柊澶辫触:', error); + this.$message.error('寤鸿鏇存柊澶辫触锛�' + error.message); + }); + }, + handleCurrentChangeAdvice(currentRow) { + this.selectedAdvice = currentRow; // 瀛樺偍閫変腑鐨勫缓璁」 + }, + applySelectedAdvice() { + if (this.selectedAdvice) { + this.$set(this.newItem.map, this.activeAdviceIndex, { + bt: this.selectedAdvice.jymc, // 寤鸿鍚嶇О璧嬪�肩粰鏍囬 + nr: this.selectedAdvice.jynr // 寤鸿鍐呭璧嬪�肩粰鍐呭 + }); + this.showjianyi = false; // 鍏抽棴寮圭獥 + this.selectedAdvice = null; // 娓呯┖閫変腑椤� + } else { + this.$message.warning('璇峰厛閫夋嫨涓�鏉″缓璁�'); + } + }, + handleSelectionChange(selection) { + console.log(selection); + + }, + tan(event) { + // 鑾峰彇褰撳墠寤鸿缁勭殑绱㈠紩 + this.activeAdviceIndex = event.target.closest('.advice-group') + ? Array.from(event.target.closest('.el-form').querySelectorAll('.advice-group')) + .indexOf(event.target.closest('.advice-group')) + : 0; + + // 閲嶇疆鍒嗛〉鍙傛暟鍜岀瓫閫夋潯浠� + this.queryParams1.pageNum = 1; + this.queryParams1.pageSize = 10; + this.queryParams1.zyzd = ''; // 娓呯┖寤鸿鍚嶇О杈撳叆妗� + // 绉婚櫎绉戝绛涢�夋潯浠� + delete this.queryParams1.ks; // 纭繚涓嶆惡甯� ks 鍙傛暟 + + // 鍔犺浇鎵�鏈夊揩鎹峰缓璁垪琛� + this.filterAdvices(); + this.showjianyi = true; + }, + + // 涓嬫媺妗嗙瓫閫夊揩鎹峰缓璁紙鍖呭惈鍒嗛〉閫昏緫锛� + filterAdvices: _.debounce(function (resetPage = false) { + if (resetPage) { + this.queryParams1.pageNum = 1; + } + listAdvicerules(this.queryParams1).then((response) => { + this.advicerulesList = response.rows; + this.total1 = response.total; + }).catch((error) => { + console.error('绛涢�夊揩鎹峰缓璁け璐�:', error); + this.$message.error('绛涢�夊揩鎹峰缓璁け璐�'); + }); + }, 300), submitNewItem() { const data = { tjh: this.tableAll.tjNumber, // 浣撴鍙凤紝浠� tableAll 涓幏鍙� @@ -1051,12 +1207,6 @@ } }, - handleAddNewClose(done) { - // this.$confirm('纭畾鍏抽棴鏂板绐楀彛鍚楋紵鏈繚瀛樼殑鏁版嵁灏嗕涪澶便��') - // .then(() => done()) - // .catch(() => { }); - }, - // 娣诲姞鏂扮殑寤鸿缁� addAdvice() { this.newItem.map.push({ bt: '', nr: '' }); @@ -1069,19 +1219,24 @@ this.$message.warning('鑷冲皯淇濈暀涓�缁勫缓璁�'); } }, + shanchu(row) { + // 绂佺敤鍒犻櫎鎸夐挳锛岄槻姝㈤噸澶嶇偣鍑� + this.isdisabled = true; + + // 璋冪敤鍚庣鎺ュ彛鍒犻櫎鏁版嵁 shanchu({ id: row.orderDetailId, }).then((res) => { - if (res.code === 200) { // 娣诲姞鎴愬姛鍝嶅簲妫�鏌� + if (res.code === 200) { // 鍚庣鍒犻櫎鎴愬姛 // 鎵惧埌瑕佸垹闄ら」鎵�鍦ㄧ殑鐖剁骇鏁扮粍 const parentItem = this.yichangList.find(item => - item.sone.some(soneItem => soneItem.proId === row.proId) + item.sone.some(soneItem => soneItem.orderDetailId === row.orderDetailId) ); if (parentItem) { // 浠庣埗绾х殑 sone 鏁扮粍涓垹闄よ椤� - const index = parentItem.sone.findIndex(item => item.proId === row.proId); + const index = parentItem.sone.findIndex(item => item.orderDetailId === row.orderDetailId); if (index > -1) { parentItem.sone.splice(index, 1); @@ -1093,22 +1248,40 @@ } } - // 鏇存柊 expends 鏁扮粍 + // 鏇存柊 expends 鏁扮粍锛岀‘淇濆睍寮�鐘舵�佹纭� this.getExpends(); + + // 寮哄埗鍒锋柊琛ㄦ牸 + this.$forceUpdate(); this.$message.success('鍒犻櫎鎴愬姛'); - // 鑷姩鏇存柊寮傚父缁撴灉鏁版嵁 - this.yichangjieguo(); + // 鍙�夛細璋冪敤 yichangjieguo 鍒锋柊鏁版嵁锛堝鏋滈渶瑕佷笌鍚庣鍚屾锛� + // this.yichangjieguo(); + } else { + this.$message.error('鏈壘鍒拌鍒犻櫎鐨勫瓙椤�'); } + } else { + this.$message.error('鏈壘鍒拌鍒犻櫎鐨勭埗椤�'); } } else { - this.$message.error('鍒犻櫎澶辫触'); + this.$message.error('鍚庣鍒犻櫎澶辫触锛�' + (res.msg || '鏈煡閿欒')); } }).catch((error) => { console.error('鍒犻櫎澶辫触:', error); - this.$message.error('鍒犻櫎鎿嶄綔澶辫触'); + this.$message.error('鍒犻櫎鎿嶄綔澶辫触锛�' + error.message); + }).finally(() => { + // 鎭㈠鍒犻櫎鎸夐挳鐘舵�� + this.isdisabled = false; }); + }, + + // 纭繚 getExpends 鏂规硶瀛樺湪锛岀敤浜庢洿鏂板睍寮�鐘舵�� + getExpends() { + this.expends = this.yichangList.flatMap(item => + item.sone.map(soneItem => soneItem.orderDetailId) + ); + console.log('Updated expends:', this.expends); }, getConfigKey() { getconfigKey("sfkqtwbg").then((res) => { @@ -1122,12 +1295,7 @@ }); }, //璁剧疆table涓殑鎵╁睍椤癸紝灞曞紑鐨刬d锛屾澶勬垜闇�瑕佸叏閮ㄥ睍寮� - getExpends() { - // 閫氳繃flatMap灏嗘瘡涓猻one鏁扮粍涓殑ID鎻愬彇鍑烘潵锛屽苟杩斿洖涓�涓墎骞冲寲鐨処D鏁扮粍 - this.expends = this.yichangList.flatMap((item) => - item.sone.map((subItem) => subItem.proId) - ); - }, + getRowKeys(row) { return row.orderDetailId; @@ -1154,8 +1322,7 @@ }).then((res) => { this.yichangList = res.data; - console.log(this.yichangList, 3232); - this.getExpends(); + this.yichangList.forEach((item) => { item.sone.forEach((soneItem) => { @@ -1282,7 +1449,7 @@ loading.close(); }, 3000); this.$message({ - message: "鎶ュ憡姝e湪鐢熸垚锛岃涓ゅ垎閽熷悗棰勮锛�", + message: "璇锋挙鍥為噸鏂扮敓鎴愭姤鍛�", type: "error" }); } else { @@ -1445,8 +1612,14 @@ if (this.textarea1 == null) { this.textarea1 = ""; } + console.log(data) data.forEach((item) => { - this.textarea1 += item.advice; + if(item.advice){ + this.textarea1 += item.advice; + }else{ + this.textarea1 += item.jynr; + } + }); }, proposalChange() { @@ -2292,10 +2465,40 @@ width: 100%; display: flex; justify-content: center; + /* 纭繚鍒嗛〉鍣ㄦ暣浣撳眳涓� */ + align-items: center; + /* 鍨傜洿灞呬腑 */ + margin-top: 15px; + /* 涓庤〃鏍肩殑闂磋窛 */ +} + +.pag2 { + width: auto; + /* 绉婚櫎鍥哄畾瀹藉害锛岃鍒嗛〉鍣ㄦ牴鎹唴瀹硅嚜閫傚簲 */ + min-width: 750px; + /* 璁剧疆鏈�灏忓搴︼紝纭繚鍒嗛〉鍣ㄤ笉浼氬お绐� */ + text-align: center; + /* 纭繚鍒嗛〉鍣ㄥ唴閮ㄥ厓绱犲眳涓� */ +} + +@media (max-width: 750px) { + .pag2 { + min-width: 300px; + /* 绉诲姩绔渶灏忓搴� */ + overflow-x: auto; + /* 鍏佽妯悜婊氬姩 */ + padding: 10px; + /* 绉诲姩绔唴杈硅窛 */ + } } .pag1 { - width: 30%; + width: auto; + /* 绉婚櫎鍥哄畾瀹藉害锛岃鍒嗛〉鍣ㄦ牴鎹唴瀹硅嚜閫傚簲 */ + min-width: 300px; + /* 璁剧疆鏈�灏忓搴︼紝纭繚鍒嗛〉鍣ㄤ笉浼氬お绐� */ + text-align: center; + /* 纭繚鍒嗛〉鍣ㄥ唴閮ㄥ厓绱犲眳涓� */ } .dialog-footers { @@ -2462,4 +2665,23 @@ } } } -</style> + +.dialog-pager { + display: flex; + justify-content: center; + /* 姘村钩灞呬腑 */ + align-items: center; + /* 鍨傜洿灞呬腑 */ + margin-top: 15px; + /* 涓庤〃鏍肩殑闂磋窛 */ + padding: 0 20px; + /* 澧炲姞鍐呰竟璺濓紝閬垮厤杩囦簬璐磋竟 */ + box-sizing: border-box; + /* 纭繚鍐呰竟璺濅笉褰卞搷瀹藉害 */ +} + +// .dialog-pager-inner { +// width: auto; /* 鑷�傚簲瀹藉害 */ +// min-width: 300px; /* 璁剧疆鏈�灏忓搴︼紝纭繚鍒嗛〉鍣ㄤ笉浼氬お绐� */ +// text-align: center; /* 纭繚鍒嗛〉鍣ㄥ唴閮ㄥ厓绱犲眳涓� */ +// }</style> -- Gitblit v1.8.0