From 85fd8ec92dc19f1a478f010723fa85ec7ec670a2 Mon Sep 17 00:00:00 2001 From: xwt <2740516069@qq.com> Date: 星期六, 19 七月 2025 14:47:15 +0800 Subject: [PATCH] 来料检获取附件 --- pages/QC/XJ/Add.vue | 1524 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 762 insertions(+), 762 deletions(-) diff --git a/pages/QC/XJ/Add.vue b/pages/QC/XJ/Add.vue index 0bfe3bf..da84f2f 100644 --- a/pages/QC/XJ/Add.vue +++ b/pages/QC/XJ/Add.vue @@ -1,354 +1,450 @@ <template> - <view class="container"> - <!-- 澶撮儴 --> - <view class="header"> - <view class="title">宸℃椤圭洰鏄庣粏</view> - <view class="order-number">宸℃鍗曞彿: {{formData.releaseNo}}</view> - </view> - - <!-- 鍩烘湰淇℃伅 --> - <view class="section"> - <view class="section-header">鍩烘湰淇℃伅</view> - <view class="section-body"> - <view class="info-grid"> - <view class="info-item"> - <view class="info-label">妫�楠屽崟鍙�</view> - <view class="info-value">{{ formData.releaseNo }}</view> - </view> - <view class="info-item"> - <view class="info-label">鍒涘缓浜�</view> - <view class="info-value">{{ formData.createBy }}</view> - </view> - <view class="info-item"> - <view class="info-label">鍒涘缓鏃堕棿</view> - <view class="info-value">{{ formData.createDate }}</view> - </view> - <view class="info-item"> - <view class="info-label">绾夸綋缂栧彿</view> - <picker v-if="isUpdate" class="picker-input" name="selector" :range="DAA020List" - @change="onDaa020Change"> - <view class="picker-value">{{ DAA020List[DAA020Index] || '璇烽�夋嫨' }}</view> - </picker> - <view v-else class="info-value">{{ formData.daa020 }}</view> - </view> - <view class="info-item"> - <view class="info-label">鐗╂枡缂栫爜</view> - <picker v-if="isUpdate" class="picker-input" name="selector" :range="ItemList" - @change="onItemChange"> - <view class="picker-value">{{ ItemList[ItemIndex] || '璇烽�夋嫨' }}</view> - </picker> - <view v-else class="info-value">{{ formData.itemNo }}</view> - </view> - <view class="info-item"> - <view class="info-label">璁″垝缂栧彿</view> - <picker v-if="isUpdate" class="picker-input" name="selector" :range="DAA001List" - @change="onDaa001Change"> - <view class="picker-value">{{ DAA001List[DAA001Index] || '璇烽�夋嫨' }}</view> - </picker> - <view v-else class="info-value">{{ formData.billNo }}</view> - </view> - <view class="info-item"> - <view class="info-label">鐗╂枡鍚嶇О</view> - <view class="info-value">{{ formData.itemName }}</view> - </view> - <view class="info-item"> - <view class="info-label">瑙勬牸鍨嬪彿</view> - <view class="info-value">{{ formData.itemModel }}</view> - </view> - <view class="info-item"> - <view class="info-label">宸ュ崟鏁伴噺</view> - <view class="info-value highlight">{{ formData.planQty }}</view> - </view> - <view class="info-item" v-if="formData.remarks"> - <view class="info-label">涓嶅悎鏍兼弿杩�</view> - <view class="info-value danger">{{ formData.remarks }}</view> + <view class="container"> + <!-- 澶撮儴 --> + <view class="header"> + <view class="title">宸℃椤圭洰鏄庣粏</view> + <view class="order-number">宸℃鍗曞彿: {{formData.releaseNo}}</view> + </view> + + <!-- 鍩烘湰淇℃伅 --> + <view class="section"> + <view class="section-header">鍩烘湰淇℃伅</view> + <view class="section-body"> + <view class="info-grid"> + <view class="info-item"> + <view class="info-label">妫�楠屽崟鍙�</view> + <view class="info-value">{{ formData.releaseNo }}</view> + </view> + <view class="info-item"> + <view class="info-label">鍒涘缓浜�</view> + <view class="info-value">{{ formData.createBy }}</view> + </view> + <view class="info-item"> + <view class="info-label">鍒涘缓鏃堕棿</view> + <view class="info-value">{{ formData.createDate }}</view> + </view> + <view class="info-item"> + <view class="info-label">绾夸綋缂栧彿</view> + <picker v-if="isUpdate" class="picker-input" name="selector" :range="DAA020List" + @change="onDaa020Change"> + <view class="picker-value">{{ DAA020List[DAA020Index] || '璇烽�夋嫨' }}</view> + </picker> + <view v-else class="info-value">{{ formData.daa020 }}</view> + </view> + <view class="info-item"> + <view class="info-label">鐗╂枡缂栫爜</view> + <picker v-if="isUpdate" class="picker-input" name="selector" :range="ItemList" + @change="onItemChange"> + <view class="picker-value">{{ ItemList[ItemIndex] || '璇烽�夋嫨' }}</view> + </picker> + <view v-else class="info-value">{{ formData.itemNo }}</view> + </view> + <view class="info-item"> + <view class="info-label">璁″垝缂栧彿</view> + <picker v-if="isUpdate" class="picker-input" name="selector" :range="DAA001List" + @change="onDaa001Change"> + <view class="picker-value">{{ DAA001List[DAA001Index] || '璇烽�夋嫨' }}</view> + </picker> + <view v-else class="info-value">{{ formData.billNo }}</view> + </view> + <view class="info-item"> + <view class="info-label">鐗╂枡鍚嶇О</view> + <view class="info-value">{{ formData.itemName }}</view> + </view> + <view class="info-item"> + <view class="info-label">瑙勬牸鍨嬪彿</view> + <view class="info-value">{{ formData.itemModel }}</view> + </view> + <view class="info-item"> + <view class="info-label">宸ュ崟鏁伴噺</view> + <view class="info-value highlight">{{ formData.planQty }}</view> + </view> + <view class="info-item" v-if="formData.remarks"> + <view class="info-label">涓嶅悎鏍兼弿杩�</view> + <view class="info-value danger">{{ formData.remarks }}</view> + </view> </view> </view> </view> - </view> - - <!-- 妫�楠岄」鐩� --> - <view class="section" v-if="tableData.length > 0"> - <view class="section-header">妫�楠岄」鐩�</view> - <view class="section-body"> - <view class="inspection-table"> - <table> - <thead> - <tr> - <th width="20%" style="text-align: center;">妫�楠岄」鐩�</th> - <th width="50%" style="text-align: center;">妫�楠屾弿杩�</th> - <th width="15%" style="text-align: center;">璁板綍(鐐瑰嚮)</th> - </tr> - </thead> - <tbody> - <tr v-for="(item, index) in tableData" :key="index"> - <td>{{ item.projName }}</td> - <td> - <view v-if="item.result=='鍚堟牸'" class="watermark approved"> - {{ getStatusText(item.result) }} - </view> - <view v-if="item.result=='涓嶅悎鏍�'" class="watermark rejected"> - {{ getStatusText(item.result) }} - </view> - <view v-if="item.result==null || item.result=='鏈畬鎴�'" class="watermark pending"> - {{ getStatusText(item.result) }} - </view> - <view class="description-text">{{ item.projName }}</view> - </td> - <td> - <button v-if="item.isCheck >= item.levelNum" class="record-btn" @click="toDetail(item)">鏌ョ湅</button> - <button v-else class="record-btn" @click="toDetail(item)">濉啓</button> - </td> - </tr> - </tbody> - </table> - </view> - </view> - </view> - - <!-- 鎿嶄綔鎸夐挳 --> - <view class="action-buttons"> - <button class="action-btn primary" v-if="isUpdate && !isShowTable" @click="getItem">鍒涘缓妫�楠屽崟骞剁敓鎴愰儴鍒嗛粯璁ゅ��</button> - <button class="action-btn secondary" v-if="!isUpdate && !isShowTable" @click="toImage">涓婁紶/鏌ョ湅鍥剧墖</button> - <button class="action-btn danger" v-if="!isUpdate && !formData.fcheckResu && !isShowTable" @click="removeXJ">鍒犻櫎鍗曟嵁</button> - <button class="action-btn warning" v-if="!isUpdate && !isShowTable" @click="saveRemarks">娣诲姞涓嶅悎鏍兼弿杩�</button> - <button class="action-btn primary" v-if="isShowTable" @click="getTable">鑾峰彇妫�楠岄」鐩�</button> - <button class="action-btn primary" v-if="isShowTable && isUpdate" @click="saveTable">鐢熸垚妫�楠岄」鐩�</button> - </view> - <!-- 淇敼涓嶅悎鏍兼弿杩板脊鍑烘 --> - <view v-if="remarksPopup" class="overlay"> - <view class="popup"> - <view class="popup-header"> - <h3>淇敼涓嶅悎鏍兼弿杩�</h3> - </view> - <view class="popup-content"> - <view class="input-group"> - <view class="input-label">涓嶅悎鏍兼弿杩帮細</view> - <input class="input-field" type="text" v-model="remarks" placeholder="璇疯緭鍏ヤ笉鍚堟牸鎻忚堪"/> + + <!-- 妫�楠岄」鐩� --> + <view class="section" v-if="tableData.length > 0"> + <view class="section-header">妫�楠岄」鐩�</view> + <view class="section-body"> + <view class="inspection-table"> + <table> + <thead> + <tr> + <th width="20%" style="text-align: center;">妫�楠岄」鐩�</th> + <th width="50%" style="text-align: center;">妫�楠屾弿杩�</th> + <th width="15%" style="text-align: center;">璁板綍(鐐瑰嚮)</th> + </tr> + </thead> + <tbody> + <tr v-for="(item, index) in tableData" :key="index"> + <td>{{ item.projName }}</td> + <td> + <view v-if="item.result=='鍚堟牸'" class="watermark approved"> + {{ getStatusText(item.result) }} + </view> + <view v-if="item.result=='涓嶅悎鏍�'" class="watermark rejected"> + {{ getStatusText(item.result) }} + </view> + <view v-if="item.result==null || item.result=='鏈畬鎴�'" class="watermark pending"> + {{ getStatusText(item.result) }} + </view> + <view class="description-text">{{ item.projName }}</view> + </td> + <td> + <button v-if="item.isCheck >= item.levelNum" class="record-btn" @click="toDetail(item)">鏌ョ湅</button> + <button v-else class="record-btn" @click="toDetail(item)">濉啓</button> + </td> + </tr> + </tbody> + </table> </view> </view> - <view class="popup-actions"> - <button class="action-btn primary" @click="editRemarks">淇敼</button> - <button class="action-btn secondary" @click="remarksPopup = !remarksPopup">鍙栨秷</button> + </view> + + <!-- 鎿嶄綔鎸夐挳 --> + <view class="action-buttons"> + <button class="action-btn primary" v-if="isUpdate && !isShowTable" @click="getItem">鍒涘缓妫�楠屽崟骞剁敓鎴愰儴鍒嗛粯璁ゅ��</button> + <button class="action-btn secondary" v-if="!isUpdate && !isShowTable" @click="toImage">涓婁紶/鏌ョ湅鍥剧墖</button> + <button class="action-btn danger" v-if="!isUpdate && !formData.fcheckResu && !isShowTable" @click="removeXJ">鍒犻櫎鍗曟嵁</button> + <button class="action-btn warning" v-if="!isUpdate && !isShowTable" @click="saveRemarks">娣诲姞涓嶅悎鏍兼弿杩�</button> + <button class="action-btn primary" v-if="isShowTable" @click="getTable">鑾峰彇妫�楠岄」鐩�</button> + <button class="action-btn primary" v-if="isShowTable && isUpdate" @click="saveTable">鐢熸垚妫�楠岄」鐩�</button> + </view> + <!-- 淇敼涓嶅悎鏍兼弿杩板脊鍑烘 --> + <view v-if="remarksPopup" class="overlay"> + <view class="popup"> + <view class="popup-header"> + <h3>淇敼涓嶅悎鏍兼弿杩�</h3> + </view> + <view class="popup-content"> + <view class="input-group"> + <view class="input-label">涓嶅悎鏍兼弿杩帮細</view> + <input class="input-field" type="text" v-model="remarks" placeholder="璇疯緭鍏ヤ笉鍚堟牸鎻忚堪"/> + </view> + </view> + <view class="popup-actions"> + <button class="action-btn primary" @click="editRemarks">淇敼</button> + <button class="action-btn secondary" @click="remarksPopup = !remarksPopup">鍙栨秷</button> + </view> </view> </view> + </view> - - </view> -</template> - -<script> -export default { - data() { - return { - formData: { - id: "", - releaseNo: "", - createBy: "", - createDate: "", - daa020: "", - itemNo: "", - billNo: "", - catQty: "", - detailMem: "", - taskNo: "", - fcheckResu: "", - boardModel: "", - planQty: "", - mocode: "", - boardStyle: "" - }, - - DAA020List: [], - DAA020Index: -1, - - DAA001List: [], - DAA001Index: -1, - schemeResult: [], - - isShowTable: false, - - ItemList: [], - ItemIndex: -1, - boardItems: [], - - lineList: [], - - lineNo: "", - - tableData: [], - - isSubmit: true, - - isUpdate: true, - - remarks: "", - remarksPopup: false, - }; - }, - onLoad(options) { - //options涓寘鍚簡url闄勫甫鐨勫弬鏁� - - let params = options; - - if (params["id"]) { - this.isUpdate = false; - this.formData.id = params["id"]; - this.formData.releaseNo = params["releaseNo"]; - //getQaItemXj02 - this.init(); - } else { - //鍒濆鍖栨楠屽崟鍙� - this.$post({ - url: "/XJ/getMaxReleaseNo" - }).then(res => { - this.formData.releaseNo = res.data.tbBillList; - this.formData.createBy = this.$loginInfo.account; - this.formData.createDate = this.$getDate("yyyy-mm-dd"); - }); - - //杞﹂棿涓嬫媺妗嗙殑鍒濆鍖� - this.$post({ - url: "/XJ/getLineAll" - }).then(res => { - this.lineList = res.data.tbBillList; - this.DAA020List = res.data.tbBillList.map(item => item.lineName); - }) - } - }, - methods: { - getStatusClass(result) { - if (result === '鍚堟牸') return 'status-pass'; - if (result === '涓嶅悎鏍�') return 'status-fail'; - return 'status-pending'; + </template> + + <script> + export default { + data() { + return { + formData: { + id: "", + releaseNo: "", + createBy: "", + createDate: "", + daa020: "", + itemNo: "", + billNo: "", + catQty: "", + detailMem: "", + taskNo: "", + fcheckResu: "", + boardModel: "", + planQty: "", + mocode: "", + boardStyle: "" + }, + + DAA020List: [], + DAA020Index: -1, + + DAA001List: [], + DAA001Index: -1, + schemeResult: [], + + isShowTable: false, + + ItemList: [], + ItemIndex: -1, + boardItems: [], + + lineList: [], + + lineNo: "", + + tableData: [], + + isSubmit: true, + + isUpdate: true, + + remarks: "", + remarksPopup: false, + }; }, - - getStatusText(status) { - const statusMap = { - approved: '鍚堟牸', - rejected: '涓嶅悎鏍�', - pending: '寰呯‘璁�' - } - if (status == null || status == '鏈畬鎴�') { - return statusMap['pending'] || '寰呯‘璁�'; - } else if (status == '鍚堟牸') { - return statusMap['approved'] || '鍚堟牸'; - } else { - return statusMap['rejected'] || '涓嶅悎鏍�'; - } - }, - - removeXJ() { - if (this.formData.id) { - this.$post({ - url: "/XJ/removeXJ", - data: { - id: this.formData.id - } - }).then(res => { - if (res.data.tbBillList > 0) { - this.$showMessage("鍒犻櫎鎴愬姛"); - //鍏抽棴褰撳墠椤甸潰锛岃繑鍥炰笂涓�椤甸潰鎴栧绾ч〉闈� - uni.navigateBack(); - } else { - this.$showMessage("鍒犻櫎澶辫触"); - } - }); - } else { - this.$showMessage("璇峰厛閫夋嫨妫�楠屽崟鍙�"); - } - }, - getItem() { - - if (this.isSubmit) { - this.$showMessage("姝ょ墿鏂欐棤鍚敤鐨勬楠岄」鐩紝璇风淮鎶�!"); - return; - } - - if (!this.formData.billNo) { - this.$showMessage("璇烽�夋嫨璁″垝缂栧彿"); - return; - } - - this.$post({ - url: "/XJ/save", - data: { - from: this.formData, - userNo: this.$loginInfo.account, - items: this.tableData - } - }).then(res => { - this.formData.id = res.data.tbBillList; - this.$showMessage("鐢熸垚妫�楠岄」鐩垚鍔�"); - this.init(); + onLoad(options) { + //options涓寘鍚簡url闄勫甫鐨勫弬鏁� + + let params = options; + + if (params["id"]) { this.isUpdate = false; - }); + this.formData.id = params["id"]; + this.formData.releaseNo = params["releaseNo"]; + //getQaItemXj02 + this.init(); + } else { + //鍒濆鍖栨楠屽崟鍙� + this.$post({ + url: "/XJ/getMaxReleaseNo" + }).then(res => { + this.formData.releaseNo = res.data.tbBillList; + this.formData.createBy = this.$loginInfo.account; + this.formData.createDate = this.$getDate("yyyy-mm-dd"); + }); + + //杞﹂棿涓嬫媺妗嗙殑鍒濆鍖� + this.$post({ + url: "/XJ/getLineAll" + }).then(res => { + this.lineList = res.data.tbBillList; + this.DAA020List = res.data.tbBillList.map(item => item.lineName); + }) + } }, - //鐢熶骇绾垮埆閫夋嫨骞跺垵濮嬭瘽宸ュ崟鍙� - onDaa020Change(event) { - //鑾峰彇鐢熶骇绾垮埆鐨勪笅鏍囧湴鍧� - this.DAA020Index = event.mp.detail.value; - - this.lineNo = this.lineList[this.DAA020Index].lineNo; - - this.$post({ - url: "/XJ/getBoardItem", - data: { - lineNo: this.lineNo + methods: { + getStatusClass(result) { + if (result === '鍚堟牸') return 'status-pass'; + if (result === '涓嶅悎鏍�') return 'status-fail'; + return 'status-pending'; + }, + + getStatusText(status) { + const statusMap = { + approved: '鍚堟牸', + rejected: '涓嶅悎鏍�', + pending: '寰呯‘璁�' } - }).then(res => { - //濉厖宸ュ崟鍙风殑鏁版嵁婧� - this.boardItems = res.data.tbBillList; - this.ItemList = this.boardItems.map(item => item.itemName); - //鍙樹负榛樿绌哄�肩殑鐘舵�� - this.ItemIndex = -1; - }) - - }, - onItemChange(event) { - this.ItemIndex = event.mp.detail.value; - this.formData.itemNo = this.boardItems[this.ItemIndex].itemNo;//涓昏鏄敼杩欓噷 - this.formData.itemId = this.boardItems[this.ItemIndex].id;//涓昏鏄敼杩欓噷 - this.formData.itemName = this.boardItems[this.ItemIndex].itemName;//涓昏鏄敼杩欓噷 - this.formData.itemModel = this.boardItems[this.ItemIndex].itemModel;//涓昏鏄敼杩欓噷 - this.$post({ - url: "/XJ/getDaa001", - data: { - daa020: this.lineNo, - item: this.formData.itemNo + if (status == null || status == '鏈畬鎴�') { + return statusMap['pending'] || '寰呯‘璁�'; + } else if (status == '鍚堟牸') { + return statusMap['approved'] || '鍚堟牸'; + } else { + return statusMap['rejected'] || '涓嶅悎鏍�'; } - }).then(res => { - //濉厖宸ュ崟鍙风殑鏁版嵁婧� - this.schemeResult = res.data.tbBillList; - this.DAA001List = this.schemeResult.map(s => s.daa001); - //鍙樹负榛樿绌哄�肩殑鐘舵�� - this.DAA001Index = -1; - - this.formData.billNo = ""; - }) - }, - //閫夊彇宸ュ崟濉厖鐗╂枡鍙峰拰鍏朵粬淇℃伅 - onDaa001Change(event) { - this.DAA001Index = event.mp.detail.value; - this.formData.billNo = this.schemeResult[this.DAA001Index].daa001; - this.formData.planQty = this.schemeResult[this.DAA001Index].daa008; - //琛ㄥ崟涓殑閮ㄥ垎瀛楁璧嬪�� - this.$post({ - url: "/XJ/getItem", - data: { - daa001: this.formData.billNo + }, + + removeXJ() { + if (this.formData.id) { + this.$post({ + url: "/XJ/removeXJ", + data: { + id: this.formData.id + } + }).then(res => { + if (res.data.tbBillList > 0) { + this.$showMessage("鍒犻櫎鎴愬姛"); + //鍏抽棴褰撳墠椤甸潰锛岃繑鍥炰笂涓�椤甸潰鎴栧绾ч〉闈� + uni.navigateBack(); + } else { + this.$showMessage("鍒犻櫎澶辫触"); + } + }); + } else { + this.$showMessage("璇峰厛閫夋嫨妫�楠屽崟鍙�"); } - }).then(res => { - let data = res.data.tbBillList[0]; - //褰撹繑鍥炵殑缁撴灉闆嗕负绌烘椂缃┖鍘熸湁鐨勫�� - if (!data) { - this.formData.billNo = ""; - this.formData.itemNo = ""; - this.formData.planQty = ""; - this.tableData = []; + }, + getItem() { + + if (this.isSubmit) { + this.$showMessage("姝ょ墿鏂欐棤鍚敤鐨勬楠岄」鐩紝璇风淮鎶�!"); return; } - + + if (!this.formData.billNo) { + this.$showMessage("璇烽�夋嫨璁″垝缂栧彿"); + return; + } + + this.$post({ + url: "/XJ/save", + data: { + from: this.formData, + userNo: this.$loginInfo.account, + items: this.tableData + } + }).then(res => { + this.formData.id = res.data.tbBillList; + this.$showMessage("鐢熸垚妫�楠岄」鐩垚鍔�"); + this.init(); + this.isUpdate = false; + }); + }, + //鐢熶骇绾垮埆閫夋嫨骞跺垵濮嬭瘽宸ュ崟鍙� + onDaa020Change(event) { + //鑾峰彇鐢熶骇绾垮埆鐨勪笅鏍囧湴鍧� + this.DAA020Index = event.mp.detail.value; + + this.lineNo = this.lineList[this.DAA020Index].lineNo; + + this.$post({ + url: "/XJ/getBoardItem", + data: { + lineNo: this.lineNo + } + }).then(res => { + //濉厖宸ュ崟鍙风殑鏁版嵁婧� + this.boardItems = res.data.tbBillList; + this.ItemList = this.boardItems.map(item => item.itemNo); + //鍙樹负榛樿绌哄�肩殑鐘舵�� + this.ItemIndex = -1; + }) + + }, + onItemChange(event) { + this.ItemIndex = event.mp.detail.value; + this.formData.itemNo = this.boardItems[this.ItemIndex].itemNo;//涓昏鏄敼杩欓噷 + this.formData.itemId = this.boardItems[this.ItemIndex].id;//涓昏鏄敼杩欓噷 + this.formData.itemName = this.boardItems[this.ItemIndex].itemName;//涓昏鏄敼杩欓噷 + this.formData.itemModel = this.boardItems[this.ItemIndex].itemModel;//涓昏鏄敼杩欓噷 + this.$post({ + url: "/XJ/getDaa001", + data: { + daa020: this.lineNo, + item: this.formData.itemNo + } + }).then(res => { + //濉厖宸ュ崟鍙风殑鏁版嵁婧� + this.schemeResult = res.data.tbBillList; + this.DAA001List = this.schemeResult.map(s => s.daa001); + //鍙樹负榛樿绌哄�肩殑鐘舵�� + this.DAA001Index = -1; + + this.formData.billNo = ""; + }) + }, + //閫夊彇宸ュ崟濉厖鐗╂枡鍙峰拰鍏朵粬淇℃伅 + onDaa001Change(event) { + this.DAA001Index = event.mp.detail.value; + this.formData.billNo = this.schemeResult[this.DAA001Index].daa001; + this.formData.planQty = this.schemeResult[this.DAA001Index].daa008; + //琛ㄥ崟涓殑閮ㄥ垎瀛楁璧嬪�� + this.$post({ + url: "/XJ/getItem", + data: { + daa001: this.formData.billNo + } + }).then(res => { + let data = res.data.tbBillList[0]; + //褰撹繑鍥炵殑缁撴灉闆嗕负绌烘椂缃┖鍘熸湁鐨勫�� + if (!data) { + this.formData.billNo = ""; + this.formData.itemNo = ""; + this.formData.planQty = ""; + this.tableData = []; + return; + } + + this.$post({ + url: "/XJ/setJYItem", + data: { + itemNo: this.formData.itemNo + } + }).then(res => { + if (res.data.tbBillList.length > 0) { + this.tableData = res.data.tbBillList; // 鍦ㄧ澶村嚱鏁颁腑锛宼his 鎸囧悜澶栧眰浣滅敤鍩熺殑 this + this.isSubmit = false; + } else { + this.$showMessage("姝ょ墿鏂欐病鏈夊惎鐢ㄧ殑妫�楠岄」鐩紝璇风淮鎶�!"); + this.isSubmit = true; + this.tableData = []; + } + }); + }); + }, + init() { + this.$post({ + url: "/XJ/getPage", + data: { + id: this.formData.id, + pageIndex: 1, + limit: 1, + } + }).then(res => { + let data = res.data.tbBillList[0]; + if (data) { + this.formData = data; + + this.$post({ + url: "/XJ/getJYItem", + data: { + pid: this.formData.id + } + }).then(res1 => { + let tableData = res1.data.tbBillList + //褰撳凡妫�楠屼釜鏁伴兘涓嶄负绌烘椂鎸夌収妫�娴嬬粨鏋勬帓搴� + tableData.sort((a, b) => { + if (a.result === '鏈畬鎴�' && b.result === '鍚堟牸') { + return -1; + } else if (a.result === '鍚堟牸' && b.result === '鏈畬鎴�') { + return 1; + } else { + return 0; + } + }); + this.tableData = tableData; + if (this.tableData.length === 0) { + this.isShowTable = true; + } + }) + } + }); + }, + toDetail(item) { + if (this.isUpdate) { + uni.showToast({ + icon: "none", + title: "璇峰厛鐢熸垚妫�楠岄」鐩�", + duration: 2000, + }); + } else { + uni.navigateTo({ + url: 'detail?id=' + item.id + '&billNo=' + this.formData.billNo + '&gid=' + this.formData + .id + }); + } + }, saveRemarks() { + this.remarksPopup = !this.remarksPopup; + this.remarks = this.formData.remarks; + }, + editRemarks() { + if (this.remarks) { + //saveRemarksGid + this.$post({ + url: "/XJ/saveRemarksGid", + data: { + gid: this.formData.id, + remarks: this.remarks + } + }).then(res => { + if (res.data.tbBillList > 0) { + this.formData.remarks = this.remarks; + this.remarksPopup = !this.remarksPopup; + this.$showMessage("淇濆瓨鎴愬姛"); + } + }) + } + }, + toImage() { + uni.navigateTo({ + url: 'ImageItem?id=' + this.formData.id + }); + }, + getTable() { this.$post({ url: "/XJ/setJYItem", data: { @@ -357,450 +453,354 @@ }).then(res => { if (res.data.tbBillList.length > 0) { this.tableData = res.data.tbBillList; // 鍦ㄧ澶村嚱鏁颁腑锛宼his 鎸囧悜澶栧眰浣滅敤鍩熺殑 this - this.isSubmit = false; + this.isShowTable = true; + this.isUpdate = true; } else { this.$showMessage("姝ょ墿鏂欐病鏈夊惎鐢ㄧ殑妫�楠岄」鐩紝璇风淮鎶�!"); - this.isSubmit = true; + this.isShowTable = true; + this.isUpdate = false; this.tableData = []; } }); - }); - }, - init() { - this.$post({ - url: "/XJ/getPage", - data: { - id: this.formData.id, - pageIndex: 1, - limit: 1, + }, + saveTable() { + if (this.tableData.length === 0) { + return; } - }).then(res => { - let data = res.data.tbBillList[0]; - if (data) { - this.formData = data; - - this.$post({ - url: "/XJ/getJYItem", - data: { - pid: this.formData.id - } - }).then(res1 => { - let tableData = res1.data.tbBillList - //褰撳凡妫�楠屼釜鏁伴兘涓嶄负绌烘椂鎸夌収妫�娴嬬粨鏋勬帓搴� - tableData.sort((a, b) => { - if (a.result === '鏈畬鎴�' && b.result === '鍚堟牸') { - return -1; - } else if (a.result === '鍚堟牸' && b.result === '鏈畬鎴�') { - return 1; - } else { - return 0; - } - }); - this.tableData = tableData; - if (this.tableData.length === 0) { - this.isShowTable = true; - } - }) - } - }); - }, - toDetail(item) { - if (this.isUpdate) { - uni.showToast({ - icon: "none", - title: "璇峰厛鐢熸垚妫�楠岄」鐩�", - duration: 2000, - }); - } else { - uni.navigateTo({ - url: 'detail?id=' + item.id + '&billNo=' + this.formData.billNo + '&gid=' + this.formData - .id - }); - } - }, saveRemarks() { - this.remarksPopup = !this.remarksPopup; - this.remarks = this.formData.remarks; - }, - editRemarks() { - if (this.remarks) { - //saveRemarksGid this.$post({ - url: "/XJ/saveRemarksGid", + url: "/XJ/saveItem", data: { gid: this.formData.id, - remarks: this.remarks + items: this.tableData, + userNo: this.$loginInfo.account } }).then(res => { - if (res.data.tbBillList > 0) { - this.formData.remarks = this.remarks; - this.remarksPopup = !this.remarksPopup; - this.$showMessage("淇濆瓨鎴愬姛"); - } + this.formData.id = res.data.tbBillList; + this.isShowTable = false; + this.isUpdate = false; + this.init(); }) } }, - toImage() { - uni.navigateTo({ - url: 'ImageItem?id=' + this.formData.id - }); - }, - getTable() { - this.$post({ - url: "/XJ/setJYItem", - data: { - itemNo: this.formData.itemNo - } - }).then(res => { - if (res.data.tbBillList.length > 0) { - this.tableData = res.data.tbBillList; // 鍦ㄧ澶村嚱鏁颁腑锛宼his 鎸囧悜澶栧眰浣滅敤鍩熺殑 this - this.isShowTable = true; - this.isUpdate = true; - } else { - this.$showMessage("姝ょ墿鏂欐病鏈夊惎鐢ㄧ殑妫�楠岄」鐩紝璇风淮鎶�!"); - this.isShowTable = true; - this.isUpdate = false; - this.tableData = []; - } - }); - }, - saveTable() { - if (this.tableData.length === 0) { - return; - } - this.$post({ - url: "/XJ/saveItem", - data: { - gid: this.formData.id, - items: this.tableData, - userNo: this.$loginInfo.account - } - }).then(res => { - this.formData.id = res.data.tbBillList; - this.isShowTable = false; - this.isUpdate = false; + onShow() { + //姣忔杩涘叆椤甸潰閮戒細鎵ц鐨勬柟娉� + if (this.formData.id) { this.init(); - }) + } } - }, - onShow() { - //姣忔杩涘叆椤甸潰閮戒細鎵ц鐨勬柟娉� - if (this.formData.id) { - this.init(); - } - } -}; -</script> -<style scoped> -/* 鍩虹鏍峰紡 */ -.container { - padding: 10px; - background-color: #f5f7fa; - min-height: 100vh; -} - -/* 澶撮儴鏍峰紡 */ -.header { - background-color: white; - padding: 20px; - border-radius: 8px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); - margin-bottom: 20px; -} - -.title { - font-size: 20px; - font-weight: 600; - color: #2c3e50; - margin-bottom: 8px; -} - -.order-number { - font-size: 14px; - color: #3498db; - font-weight: 500; -} - -/* 鍖哄煙鏍峰紡 */ -.section { - background-color: white; - border-radius: 8px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); - margin-bottom: 20px; - overflow: hidden; -} - -.section-header { - background-color: #f8f9fa; - padding: 15px 20px; - border-bottom: 1px solid #eee; - font-size: 16px; - font-weight: 600; - color: #2c3e50; -} - -.section-body { - padding: 20px; -} - -/* 淇℃伅缃戞牸 */ -.info-grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 15px; -} - -.info-item { - display: flex; - flex-direction: column; - gap: 5px; -} - -.info-label { - font-size: 12px; - color: #7f8c8d; - font-weight: 500; -} - -.info-value { - font-size: 14px; - color: #2c3e50; -} - -.info-value.highlight { - font-weight: 600; - color: #3498db; - font-size: 16px; -} - -.info-value.danger { - color: #e74c3c; - font-weight: 500; -} - -/* 閫夋嫨鍣ㄦ牱寮� */ -.picker-input { - border: 1px solid #ddd; - border-radius: 4px; - padding: 8px 12px; - background-color: white; - cursor: pointer; -} - -.picker-value { - font-size: 14px; - color: #2c3e50; -} - -/* 妫�楠岄」鐩〃鏍� */ -.inspection-table { - width: 100%; - border-radius: 8px; - overflow: hidden; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); - margin: 25px 0; -} - -.inspection-table table { - width: 100%; - border-collapse: collapse; -} - -.inspection-table th { - background-color: #f8f9fa; - color: #34495e; - padding: 12px 15px; - font-weight: bold; - text-align: left; - border: 1px solid #ddd; -} - -.inspection-table td { - padding: 12px 15px; - text-align: left; - border: 1px solid #ddd; -} - -.inspection-table tr:nth-child(even) { - background-color: #f9f9f9; -} - -.inspection-table tr:hover { - background-color: #f1f5f9; -} - -/* 姘村嵃鏍峰紡 */ -.watermark { - position: absolute; - font-size: 40px; - font-weight: bold; - opacity: 1; - z-index: 1; - pointer-events: none; - transform: rotate(-15deg); - width: 100%; - text-align: center; - top: 50%; - left: 50%; - transform: translate(-50%, -50%) rotate(-15deg); -} - -.watermark.approved { - color: #2ecc71; -} - -.watermark.rejected { - color: #e74c3c; -} - -.watermark.pending { - color: #f39c12; -} - -/* 鎻忚堪鏂囨湰瀹瑰櫒 */ -.description-text { - position: relative; - z-index: 2; - padding: 25px; - background-color: rgba(255, 255, 255, 0.7); -} - -/* 璋冩暣琛ㄦ牸鍗曞厓鏍� */ -.inspection-table td:nth-child(2) { - position: relative; - overflow: hidden; - padding: 0; -} - -.record-btn { - padding: 6px 12px; - background-color: #f8f9fa; - border: 1px solid #ddd; - border-radius: 3px; - cursor: pointer; - transition: all 0.2s; - font-size: 14px; - color: #333; -} - -.record-btn:hover { - background-color: #e9ecef; -} - - -/* 鎿嶄綔鎸夐挳 */ -.action-buttons { - display: flex; - flex-direction: column; - gap: 10px; - margin-bottom: 20px; -} - -.action-btn { - padding: 12px 20px; - border: none; - border-radius: 6px; - font-size: 14px; - font-weight: 500; - cursor: pointer; - transition: all 0.2s; -} - -.action-btn.primary { - background-color: #3498db; - color: white; -} - -.action-btn.secondary { - background-color: #95a5a6; - color: white; -} - -.action-btn.danger { - background-color: #e74c3c; - color: white; -} - -.action-btn.warning { - background-color: #f39c12; - color: white; -} - -/* 寮瑰嚭妗嗘牱寮� */ -.overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); - display: flex; - justify-content: center; - align-items: center; - z-index: 1000; -} - -.popup { - background-color: white; - border-radius: 8px; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); - width: 90%; - max-width: 400px; - max-height: 80vh; - overflow-y: auto; -} - -.popup-header { - padding: 20px; - border-bottom: 1px solid #eee; -} - -.popup-header h3 { - font-size: 18px; - font-weight: 600; - color: #2c3e50; - margin: 0; -} - -.popup-content { - padding: 20px; -} - -.input-group { - display: flex; - flex-direction: column; - gap: 8px; -} - -.input-label { - font-size: 14px; - color: #7f8c8d; - font-weight: 500; -} - -.input-field { - padding: 8px 12px; - border: 1px solid #ddd; - border-radius: 4px; - font-size: 14px; - background-color: white; -} - -.popup-actions { - padding: 20px; - border-top: 1px solid #eee; - display: flex; - gap: 10px; - justify-content: flex-end; -} - -/* 鍝嶅簲寮忚璁� */ -@media (max-width: 768px) { - .info-grid { - grid-template-columns: 1fr; + }; + </script> + <style scoped> + /* 鍩虹鏍峰紡 */ + .container { + padding: 10px; + background-color: #f5f7fa; + min-height: 100vh; } - .action-buttons { - flex-direction: column; + /* 澶撮儴鏍峰紡 */ + .header { + background-color: white; + padding: 20px; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); + margin-bottom: 20px; } -} -</style> \ No newline at end of file + + .title { + font-size: 20px; + font-weight: 600; + color: #2c3e50; + margin-bottom: 8px; + } + + .order-number { + font-size: 14px; + color: #3498db; + font-weight: 500; + } + + /* 鍖哄煙鏍峰紡 */ + .section { + background-color: white; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); + margin-bottom: 20px; + overflow: hidden; + } + + .section-header { + background-color: #f8f9fa; + padding: 15px 20px; + border-bottom: 1px solid #eee; + font-size: 16px; + font-weight: 600; + color: #2c3e50; + } + + .section-body { + padding: 20px; + } + + /* 淇℃伅缃戞牸 */ + .info-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 15px; + } + + .info-item { + display: flex; + flex-direction: column; + gap: 5px; + } + + .info-label { + font-size: 12px; + color: #7f8c8d; + font-weight: 500; + } + + .info-value { + font-size: 14px; + color: #2c3e50; + } + + .info-value.highlight { + font-weight: 600; + color: #3498db; + font-size: 16px; + } + + .info-value.danger { + color: #e74c3c; + font-weight: 500; + } + + /* 閫夋嫨鍣ㄦ牱寮� */ + .picker-input { + border: 1px solid #ddd; + border-radius: 4px; + padding: 8px 12px; + background-color: white; + cursor: pointer; + } + + .picker-value { + font-size: 14px; + color: #2c3e50; + } + + /* 妫�楠岄」鐩〃鏍� */ + .inspection-table { + width: 100%; + border-radius: 8px; + overflow: hidden; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + margin: 25px 0; + } + + .inspection-table table { + width: 100%; + border-collapse: collapse; + } + + .inspection-table th { + background-color: #f8f9fa; + color: #34495e; + padding: 12px 15px; + font-weight: bold; + text-align: left; + border: 1px solid #ddd; + } + + .inspection-table td { + padding: 12px 15px; + text-align: left; + border: 1px solid #ddd; + } + + .inspection-table tr:nth-child(even) { + background-color: #f9f9f9; + } + + .inspection-table tr:hover { + background-color: #f1f5f9; + } + + /* 姘村嵃鏍峰紡 */ + .watermark { + position: absolute; + font-size: 40px; + font-weight: bold; + opacity: 1; + z-index: 1; + pointer-events: none; + transform: rotate(-15deg); + width: 100%; + text-align: center; + top: 50%; + left: 50%; + transform: translate(-50%, -50%) rotate(-15deg); + } + + .watermark.approved { + color: #2ecc71; + } + + .watermark.rejected { + color: #e74c3c; + } + + .watermark.pending { + color: #f39c12; + } + + /* 鎻忚堪鏂囨湰瀹瑰櫒 */ + .description-text { + position: relative; + z-index: 2; + padding: 25px; + background-color: rgba(255, 255, 255, 0.7); + } + + /* 璋冩暣琛ㄦ牸鍗曞厓鏍� */ + .inspection-table td:nth-child(2) { + position: relative; + overflow: hidden; + padding: 0; + } + + .record-btn { + padding: 6px 12px; + background-color: #f8f9fa; + border: 1px solid #ddd; + border-radius: 3px; + cursor: pointer; + transition: all 0.2s; + font-size: 14px; + color: #333; + } + + .record-btn:hover { + background-color: #e9ecef; + } + + + /* 鎿嶄綔鎸夐挳 */ + .action-buttons { + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 20px; + } + + .action-btn { + padding: 12px 20px; + border: none; + border-radius: 6px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + transition: all 0.2s; + } + + .action-btn.primary { + background-color: #3498db; + color: white; + } + + .action-btn.secondary { + background-color: #95a5a6; + color: white; + } + + .action-btn.danger { + background-color: #e74c3c; + color: white; + } + + .action-btn.warning { + background-color: #f39c12; + color: white; + } + + /* 寮瑰嚭妗嗘牱寮� */ + .overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + justify-content: center; + align-items: center; + z-index: 1000; + } + + .popup { + background-color: white; + border-radius: 8px; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); + width: 90%; + max-width: 400px; + max-height: 80vh; + overflow-y: auto; + } + + .popup-header { + padding: 20px; + border-bottom: 1px solid #eee; + } + + .popup-header h3 { + font-size: 18px; + font-weight: 600; + color: #2c3e50; + margin: 0; + } + + .popup-content { + padding: 20px; + } + + .input-group { + display: flex; + flex-direction: column; + gap: 8px; + } + + .input-label { + font-size: 14px; + color: #7f8c8d; + font-weight: 500; + } + + .input-field { + padding: 8px 12px; + border: 1px solid #ddd; + border-radius: 4px; + font-size: 14px; + background-color: white; + } + + .popup-actions { + padding: 20px; + border-top: 1px solid #eee; + display: flex; + gap: 10px; + justify-content: flex-end; + } + + /* 鍝嶅簲寮忚璁� */ + @media (max-width: 768px) { + .info-grid { + grid-template-columns: 1fr; + } + + .action-buttons { + flex-direction: column; + } + } + </style> \ No newline at end of file -- Gitblit v1.9.3