From 25508db9e43fe793d7a34fa2d8ca1d7244d887a6 Mon Sep 17 00:00:00 2001 From: yyb <995253665@qq.com> Date: 星期四, 17 七月 2025 16:11:56 +0800 Subject: [PATCH] PDA核磅录入除提交外其余地方联调结果 --- pages/wareHouse/nuclearScale/createwriteoffform.vue | 563 ++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 424 insertions(+), 139 deletions(-) diff --git a/pages/wareHouse/nuclearScale/createwriteoffform.vue b/pages/wareHouse/nuclearScale/createwriteoffform.vue index 14963bf..dfaa5e2 100644 --- a/pages/wareHouse/nuclearScale/createwriteoffform.vue +++ b/pages/wareHouse/nuclearScale/createwriteoffform.vue @@ -4,77 +4,100 @@ <view class="packing-registration-bg" /> <u-navbar title="鏍哥褰曞叆" :background="background" :border-bottom="false" :title-bold="true" title-color="#000" back-icon-color="#000" /> - <u-form :model="form" ref="uForm" :label-width="200" :rules="rules" :error-type="['toast']" class="uForm"> - <u-form-item label="浜у搧绫诲瀷" :border-bottom="false" prop="value0"> - <u-radio-group v-model="form.value0"> - <u-radio name="瀵间綋">瀵间綋</u-radio> - <u-radio name="閾滄潌">閾滄潌</u-radio> - <u-radio name="瀵间綋2.6">瀵间綋2.6</u-radio> + <u-form :model="form" ref="uForm" :label-width="210" labelAlign="left" :rules="rules" :error-type="['toast']" + class="uForm"> + <u-form-item label="浜у搧绫诲瀷锛�" :border-bottom="false" prop="productType"> + <u-radio-group v-model="form.productType" @change="handleProductTypeChange"> + <u-radio name="1">瀵间綋</u-radio> + <u-radio name="2">閾滄潌</u-radio> + <u-radio name="3">瀵间綋2.6</u-radio> </u-radio-group> </u-form-item> - <u-form-item label="鏇挎崲浜岀淮鐮�" :border-bottom="false" prop="value1"> - <u-radio-group v-model="form.value1"> + <u-form-item label="鏇挎崲浜岀淮鐮侊細" :border-bottom="false" prop="replace"> + <u-radio-group v-model="form.replace"> <u-radio name="1">鏄�</u-radio> <u-radio name="0">鍚�</u-radio> </u-radio-group> </u-form-item> - <u-form-item label="杞︾墝鍙�" :border-bottom="false" prop="value2"> - <u-input v-model="form.value2" type="select" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @click="lpn" /> + <u-form-item label="杞︾墝鍙凤細" :border-bottom="false" prop="licensePlate"> + <u-input v-model="form.licensePlate" type="select" placeholder="璇疯緭鍏ヨ溅鐗屽彿" @click="lpn" /> </u-form-item> - <u-form-item label="瀹㈡埛鍚嶇О" :border-bottom="false" prop="value3"> + <u-form-item label="瀹㈡埛鍚嶇О1锛�" :border-bottom="false" prop="customerName1"> <picker class="item-one item-two" style="width: 100%; text-align: right" - @change="locNoNumBindChange($event, locNoList)" :value="locNoNumIndex" :range="locNoList" - range-key="label"> + @change="selClientChange($event, selClientList, 'customerName1')" :value="selClientIndex1" + :range="selClientList" range-key="label"> <view> - <text :style="{ color: locNoNumIndex == null ? '#a5abb4' : '#0c0c0c' }">{{ - locNoNumIndex == null + <text :style="{ + color: selClientIndex1 == null ? '#a5abb4' : '#0c0c0c', + }">{{ + selClientIndex1 == null ? "璇烽�夋嫨" - : locNoList[locNoNumIndex].label + : selClientList[selClientIndex1].label }}</text> </view> </picker> - <u-icon v-if="locNoNumIndex == null" name="arrow-right" color="#687792" size="28"></u-icon> + <u-icon v-if="selClientIndex1 == null" name="arrow-right" color="#687792" size="28"></u-icon> </u-form-item> - <u-form-item label="鍙戣揣閫氱煡鍗曞彿" :border-bottom="false" prop="value4"> - <u-input v-model="form.value4" placeholder="" disabled /> + <u-form-item label="鍙戣揣閫氱煡鍗曞彿1锛�" :border-bottom="false" prop="shippingNoticeNo1"> + <u-input v-model="form.shippingNoticeNo1" placeholder="" disabled /> </u-form-item> - <u-form-item label="鐢熶骇杞﹂棿" :border-bottom="false" prop="value5"> + <u-form-item label="瀹㈡埛鍚嶇О2锛�" :border-bottom="false" prop="customerName2"> <picker class="item-one item-two" style="width: 100%; text-align: right" - @change="locNoNumBindChange($event, locNoList)" :value="locNoNumIndex" :range="locNoList" - range-key="label"> + @change="selClientChange($event, selClientList, 'customerName2')" :value="selClientIndex2" + :range="selClientList" range-key="label"> <view> - <text :style="{ color: locNoNumIndex == null ? '#a5abb4' : '#0c0c0c' }">{{ - locNoNumIndex == null + <text :style="{ + color: selClientIndex2 == null ? '#a5abb4' : '#0c0c0c', + }">{{ + selClientIndex2 == null ? "璇烽�夋嫨" - : locNoList[locNoNumIndex].label + : selClientList[selClientIndex2].label }}</text> </view> </picker> - <u-icon v-if="locNoNumIndex == null" name="arrow-right" color="#687792" size="28"></u-icon> + <u-icon v-if="selClientIndex2 == null" name="arrow-right" color="#687792" size="28"></u-icon> </u-form-item> - <u-form-item label="鍙哥鍛�" :border-bottom="false" prop="value6"> + <u-form-item label="鍙戣揣閫氱煡鍗曞彿2锛�" :border-bottom="false" prop="shippingNoticeNo2"> + <u-input v-model="form.shippingNoticeNo2" placeholder="" disabled /> + </u-form-item> + <u-form-item label="鐢熶骇杞﹂棿锛�" :border-bottom="false" prop="workshop"> <picker class="item-one item-two" style="width: 100%; text-align: right" - @change="locNoNumBindChange($event, locNoList)" :value="locNoNumIndex" :range="locNoList" - range-key="label"> + @change="workshopChange($event, workshopList)" :value="workshopIndex" :range="workshopList" + range-key="label" :disabled="!form.productType"> <view> - <text :style="{ color: locNoNumIndex == null ? '#a5abb4' : '#0c0c0c' }">{{ - locNoNumIndex == null + <text :style="{ color: workshopIndex == null ? '#a5abb4' : '#0c0c0c' }">{{ + workshopIndex == null ? "璇烽�夋嫨" - : locNoList[locNoNumIndex].label + : workshopList[workshopIndex].label }}</text> </view> </picker> - <u-icon v-if="locNoNumIndex == null" name="arrow-right" color="#687792" size="28"></u-icon> + <u-icon v-if="workshopIndex == null" name="arrow-right" color="#687792" size="28"></u-icon> </u-form-item> - <u-form-item label="鍙夎溅宸�" :border-bottom="false" prop="value7"> - <u-input v-model="form.value7" type="select" placeholder="璇烽�夋嫨" @click="openForkliftDriverList" /> + <u-form-item label="鍙哥鍛橈細" :border-bottom="false" prop="weighingOperator"> + <picker class="item-one item-two" style="width: 100%; text-align: right" + @change="weighmanChange($event, weighmanList)" :value="weighmanIndex" :range="weighmanList" + range-key="label"> + <view> + <text :style="{ color: weighmanIndex == null ? '#a5abb4' : '#0c0c0c' }">{{ + weighmanIndex == null + ? "璇烽�夋嫨" + : weighmanList[weighmanIndex].label + }}</text> + </view> + </picker> + <u-icon v-if="weighmanIndex == null" name="arrow-right" color="#687792" size="28"></u-icon> + </u-form-item> + <u-form-item label="鍙夎溅宸ワ細" :border-bottom="false" prop="forkliftOperator"> + <u-input v-model="form.forkliftOperator" type="select" placeholder="璇烽�夋嫨" + @click="openForkliftDriverList" /> </u-form-item> </u-form> <u-button type="primary" class="bottom-button1" @click="submit">鍒涘缓</u-button> <!--杞︾墝鍙� --> <modalBg ref="modalBg" :confirm="confirm"> - <u-field v-model="form.value2" label="杞︾墝鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false"> + <u-field v-model="form.licensePlate" label="杞︾墝鍙凤細" placeholder="璇疯緭鍏�" :border-bottom="false"> </u-field> </modalBg> <!-- 鍙夎溅宸� --> @@ -103,32 +126,7 @@ }, data() { return { - checkboxList: [{ - label: "宸ヤ汉1", - value: "a", - checked: false, - }, - { - label: "宸ヤ汉2", - value: "2", - checked: false, - }, - { - label: "宸ヤ汉3", - value: "3", - checked: false, - }, - { - label: "宸ヤ汉4", - value: "4", - checked: false, - }, - { - label: "宸ヤ汉", - value: "5", - checked: false, - }, - ], + checkboxList: [], background: { backgroundImage: `url(${content_bg})`, backgroundAttachment: "fixed", @@ -138,96 +136,228 @@ show: false, num: 1, form: { - value0: "", - value1: "", - value2: "", - value3: "", - value4: "111", - value5: "", - value6: "", - value7: "", - value8: "", + replace: '0', + productType: '', + licensePlate: '', + customerName1: '', + shippingNoticeNo1: '', + customerName2: '', + shippingNoticeNo2: '', + workshop: '', + weighingOperator: '', + forkliftOperator: '', }, rules: { - value0: [{ + productType: [{ required: true, message: "璇烽�夋嫨浜у搧绫诲瀷", trigger: ["change"], }, ], - value1: [{ + replace: [{ required: true, message: "璇烽�夋嫨鏄惁鏇挎崲浜岀淮鐮�", trigger: ["change", "blur"], }, ], - value2: [{ + licensePlate: [{ required: true, message: "璇疯緭鍏ヨ溅鐗屽彿", trigger: ["change", "blur"], }, ], - // value3: [ - // { - // required: true, - // message: "璇烽�夋嫨瀹㈡埛鍚嶇О", - // trigger: ["change", "blur"], - // }, - // ], - value4: [{ - required: true, - message: "璇疯緭鍏ュ彂璐ч�氱煡鍗曞彿", - trigger: ["change"], - }, ], - value5: [{ + workshop: [{ required: true, message: "璇烽�夋嫨鐢熶骇杞﹂棿", trigger: ["change"], }, ], - value6: [{ + weighingOperator: [{ required: true, message: "璇烽�夋嫨鍙哥鍛�", trigger: ["change"], }, ], - value7: [{ - type: "array", + forkliftOperator: [{ + type: "string", required: true, message: "璇疯嚦灏戦�夋嫨涓�涓弶杞﹀伐", trigger: ["change"], }, ], }, - locNoList: [{ - value: "0", - label: "鍏徃1", - }, - { - value: "1", - label: "鍏徃2", - }, - { - value: "2", - label: "鍏徃3", - }, - { - value: "3", - label: "鍏徃4", - }, - { - value: "4", - label: "鍏徃5", - }, - { - value: "5", - label: "鍏徃6", - }, - ], - locNoNumIndex: null, + // 瀹㈡埛鍚嶇О + selClientList: [], + selClientIndex1: null, + selClientIndex2: null, + // 鐢熶骇杞﹂棿 + workshopList: [], + workshopIndex: null, + // 鍙哥鍛� + weighmanList: [], + weighmanIndex: null, showModal: false, selectedItems: [], + id1: '', + id2: '', + isSubmitting: false }; }, onReady() { this.$refs.uForm.setRules(this.rules); + // 浠呭湪缁勪欢鍒濇鍔犺浇鏃惰幏鍙栨暟鎹� + if (this.selClientList.length === 0) { + this.fetchClients(); + } + if (this.workshopList.length === 0) { + this.fetchWorkshops(); + } + if (this.checkboxList.length === 0) { + this.fetchForkliftOperators(); + } + if (this.weighmanList.length === 0) { + this.fetchWeighmen(); + } }, - onShow() {}, + onShow() { + // 閲嶇疆琛ㄥ崟鏁版嵁 + this.form = { + replace: '0', + productType: '', + licensePlate: '', + customerName1: '', + shippingNoticeNo1: '', + customerName2: '', + shippingNoticeNo2: '', + workshop: '', + weighingOperator: '', + forkliftOperator: '', + }; + this.selClientIndex1 = null; + this.selClientIndex2 = null; + this.workshopIndex = null; + this.weighmanIndex = null; + this.checkboxList = this.checkboxList.map(item => ({ + ...item, + checked: false + })); + this.$refs.uForm && this.$refs.uForm.resetValidation(); + }, methods: { + /** + * 鑾峰彇瀹㈡埛鍒楄〃 + */ + fetchClients() { + this.$u.api.NuclearScaleEntry.selClient().then((res) => { + console.log('瀹㈡埛鍚嶇О', res) + if (res.code === 0) { + res.data.forEach((i) => { + const obj = Object.assign({ + label: i.customerName, + value: i.customerName, + shippingNoticeNo: i.shippingNoticeNo, + id: i.id + }); + this.selClientList.push(obj); + }); + } else { + uni.showToast({ + title: res.msg || '鑾峰彇瀹㈡埛鍚嶇О澶辫触', + icon: 'none' + }); + } + }).catch(err => { + uni.showToast({ + title: '缃戠粶閿欒锛岃幏鍙栧鎴峰悕绉板け璐�', + icon: 'none' + }); + console.error('鑾峰彇瀹㈡埛鍚嶇О閿欒:', err); + }); + }, + + /** + * 鑾峰彇杞﹂棿鍒楄〃 + */ + fetchWorkshops() { + this.$u.api.dictData({ + dictType: 'workshop' + }).then(res => { + if (res.code === 0 && res.data.length > 0) { + res.data.forEach(i => { + const obj = Object.assign({ + label: i.label, + value: i.value, + }) + this.workshopList.push(obj) + }) + } else { + uni.showToast({ + title: res.msg || '鑾峰彇杞﹂棿鍒楄〃澶辫触', + icon: 'none' + }); + } + }).catch(err => { + uni.showToast({ + title: '缃戠粶閿欒锛岃幏鍙栬溅闂村垪琛ㄥけ璐�', + icon: 'none' + }); + console.error('鑾峰彇杞﹂棿鍒楄〃閿欒:', err); + }); + }, + + /** + * 鑾峰彇鍙夎溅宸ュ垪琛� + */ + fetchForkliftOperators() { + this.$u.api.dictData({ + dictType: 'forklift' + }).then(res => { + if (res.code === 0 && res.data.length > 0) { + res.data.forEach(i => { + const obj = Object.assign({ + label: i.label, + value: i.label, + }) + this.checkboxList.push(obj) + }) + } else { + uni.showToast({ + title: res.msg || '鑾峰彇鍙夎溅宸ュ垪琛ㄥけ璐�', + icon: 'none' + }); + } + }).catch(err => { + uni.showToast({ + title: '缃戠粶閿欒锛岃幏鍙栧弶杞﹀伐鍒楄〃澶辫触', + icon: 'none' + }); + console.error('鑾峰彇鍙夎溅宸ュ垪琛ㄩ敊璇�:', err); + }); + }, + + /** + * 鑾峰彇鍙哥鍛樺垪琛� + */ + fetchWeighmen() { + this.$u.api.dictData({ + dictType: 'weighing' + }).then(res => { + if (res.code === 0 && res.data.length > 0) { + res.data.forEach(i => { + const obj = Object.assign({ + label: i.label, + value: i.label, + }) + this.weighmanList.push(obj) + }) + } else { + uni.showToast({ + title: res.msg || '鑾峰彇鍙哥鍛樺垪琛ㄥけ璐�', + icon: 'none' + }); + } + }).catch(err => { + uni.showToast({ + title: '缃戠粶閿欒锛岃幏鍙栧徃纾呭憳鍒楄〃澶辫触', + icon: 'none' + }); + console.error('鑾峰彇鍙哥鍛樺垪琛ㄩ敊璇�:', err); + }); + }, // 澶嶉�夋鍙樺寲浜嬩欢 checkboxChange(e) { const values = e.detail.value; @@ -241,43 +371,196 @@ // 纭閫夋嫨 confirmSelection() { - this.form.value7 = this.checkboxList + // 灏嗛�変腑鐨勫弶杞﹀伐鏍囩鏁扮粍杞负浠ラ�楀彿鍒嗛殧鐨勫瓧绗︿覆 + this.form.forkliftOperator = this.checkboxList .filter((item) => item.checked) - .map((item) => item.label); + .map((item) => item.label) + .join(','); }, + cancel() {}, openForkliftDriverList() { this.showModal = true; }, - locNoNumBindChange(e, storage) { + // 瀹㈡埛鍚嶇О + selClientChange(e, storage, code) { if (storage.length <= 0) { - this.locNoNumIndex = null; + this.selClientIndex1 = null; + this.selClientIndex2 = null; return; } - this.locNoNumIndex = e.target.value; - this.form.value3 = storage[this.locNoNumIndex].label; + const selectedIndex = e.target.value; + const selectedCustomer = storage[selectedIndex]; + + // 妫�鏌ユ槸鍚﹂�夋嫨浜嗙浉鍚岀殑瀹㈡埛 + if (code === "customerName1" && this.selClientIndex2 === selectedIndex) { + uni.showToast({ + title: '涓嶈兘閫夋嫨鐩稿悓鐨勫鎴�', + icon: 'none' + }); + return; + } + if (code === "customerName2" && this.selClientIndex1 === selectedIndex) { + uni.showToast({ + title: '涓嶈兘閫夋嫨鐩稿悓鐨勫鎴�', + icon: 'none' + }); + return; + } + + if (code === "customerName2") { + this.selClientIndex2 = selectedIndex; + this.form.customerName2 = selectedCustomer.label; + this.form.shippingNoticeNo2 = selectedCustomer.shippingNoticeNo; + this.id2 = selectedCustomer.id; + } + if (code === "customerName1") { + this.selClientIndex1 = selectedIndex; + this.form.customerName1 = selectedCustomer.label; + this.form.shippingNoticeNo1 = selectedCustomer.shippingNoticeNo; + this.id1 = selectedCustomer.id + } }, - // 鎵撳紑寮规--鍚庨潰杩橀渶瑕佺洃鍚壂鐮佹灙鎵爜缁撴灉锛岃祴鍊肩粰鎶ュ伐鍗曞彿瀛楁锛岀劧鍚庢墦寮�寮规閫夋嫨璁㈠崟鍙风瓑鎿嶄綔 + // 鐢熶骇杞﹂棿 + workshopChange(e, storage) { + if (storage.length <= 0) { + this.workshopIndex = null; + return; + } + + const productType = this.form.productType; + const selectedWorkshop = storage[e.target.value]; + + // 妫�鏌ヤ骇鍝佺被鍨嬫槸鍚︿负閾滄潌(鍊间负2) + if (productType === '2') { + // 閾滄潌鍙兘閫夋嫨閾滄潌鐩稿叧杞﹂棿 + if (!selectedWorkshop.label.includes('閾滄潌')) { + uni.showModal({ + title: "鎻愮ず", + content: "閾滄潌浜у搧鍙兘閫夋嫨閾滄潌鐩稿叧杞﹂棿", + showCancel: false + }); + return; + } + } else { + // 瀵间綋浜у搧涓嶈兘閫夋嫨閾滄潌杞﹂棿 + if (selectedWorkshop.label.includes('閾滄潌')) { + uni.showModal({ + title: "鎻愮ず", + content: "瀵间綋浜у搧涓嶈兘閫夋嫨閾滄潌杞﹂棿", + showCancel: false + }); + return; + } + } + + this.workshopIndex = e.target.value; + this.form.workshop = selectedWorkshop.label; + }, + // 鍙哥鍛� + weighmanChange(e, storage) { + if (storage.length <= 0) { + this.weighmanIndex = null; + return; + } + this.weighmanIndex = e.target.value; + this.form.weighingOperator = storage[this.weighmanIndex].label; + }, lpn() { this.$refs.modalBg.open(); }, // 寮规淇濆瓨 - confirm() { - console.log("淇濆瓨", this.form.value1); - // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊� + confirm() {}, + + /** + * 浜у搧绫诲瀷鍙樺寲鏃舵竻绌鸿溅闂撮�夋嫨 + */ + handleProductTypeChange() { + this.workshopIndex = null; + this.form.workshop = ''; }, // 鎻愪氦鎸夐挳 - submit() { - if (!this.$refs.uForm.validate()) { - console.log("1111"); - return; + async submit() { + if (this.isSubmitting) return; + + try { + // 缁熶竴琛ㄥ崟楠岃瘉 + if (!await this.validateForm()) return; + + // 鏋勫缓鎻愪氦鏁版嵁 + const submitData = this.buildSubmitData().customerList; + console.log('鎻愪氦鐨勬暟鎹�',submitData) + this.isSubmitting = true; + const res = await this.$u.api.NuclearScaleEntry.createMain(submitData); + + if (res.code === 0) { + this.$u.toast("鎻愪氦鎴愬姛"); + uni.navigateBack(); + } else { + uni.showToast({ + title: res.msg || '鎻愪氦澶辫触锛氫笟鍔″鐞嗛敊璇�', + icon: 'none' + }); + console.error('涓氬姟閿欒:', res); + } + } catch (err) { + if (err.type === 'validation') { + uni.showToast({ + title: err.message, + icon: 'none' + }); + } else if (err.message.includes('Network Error')) { + uni.showToast({ + title: '缃戠粶杩炴帴閿欒锛岃妫�鏌ョ綉缁滃悗閲嶈瘯', + icon: 'none' + }); + } else { + uni.showToast({ + title: '绯荤粺閿欒锛岃绋嶅悗閲嶈瘯', + icon: 'none' + }); + } + console.error('鎻愪氦琛ㄥ崟閿欒:', err); + } finally { + this.isSubmitting = false; } - if (this.form.value3 === "") { - uni.showToast({ - title: "璇峰厛閫夋嫨瀹㈡埛鍚嶇О", - icon: "none", - }); - return; + }, + + // 缁熶竴琛ㄥ崟楠岃瘉 + async validateForm() { + // 浣跨敤uView琛ㄥ崟楠岃瘉 + if (!await this.$refs.uForm.validate()) { + return false; } + + // 瀹㈡埛鍚嶇О楠岃瘉 + if (!this.form.customerName1 || !this.form.customerName2) { + throw { type: 'validation', message: '璇峰厛閫夋嫨瀹㈡埛鍚嶇О' }; + } + + return true; + }, + + // 鏋勫缓鎻愪氦鏁版嵁 + buildSubmitData() { + // 鍒涘缓瀹㈡埛鏁版嵁鐨勮緟鍔╁嚱鏁� + const createCustomerItem = (customerIndex) => ({ + customerName: this.form[`customerName${customerIndex}`], + shippingNoticeNo: this.form[`shippingNoticeNo${customerIndex}`], + shippingNoticeId: this[`id${customerIndex}`], + replace: this.form.replace, + productType: this.form.productType, + licensePlate: this.form.licensePlate, + workshop: this.form.workshop, + weighingOperator: this.form.weighingOperator, + forkliftOperator: this.form.forkliftOperator, + }); + + // 鏋勫缓瀹㈡埛鍒楄〃 + const customerList = [1, 2].map(createCustomerItem); + + return { + customerList + }; }, }, }; @@ -314,12 +597,14 @@ /* 澶嶉�夋鏍峰紡 */ .checkbox-item { - width: 200px; + width: 230px; display: flex; align-items: center; padding: 20rpx 0; border-bottom: 1rpx solid #f5f5f5; - .label{ + background-color: #f8f9fa; + + .label { position: relative; left: 130px; } -- Gitblit v1.9.3