| New file |
| | |
| | | <template> |
| | | <view class="form"> |
| | | <view class="form-base-info"> |
| | | <view class="form-item"> |
| | | <view class="title">箱条码</view> |
| | | <!-- 按照源单物料样式添加disabled类和禁用属性 --> |
| | | <view class="right" :class="disableBarCodePack ? 'disabled' : ''"> |
| | | <input type="text" :focus="HBarCodePackFocus" v-model="HBarCode_Pack" |
| | | @confirm="GetMeesageByBarCode_Pack(HBarCode_Pack)" :disabled="disableBarCodePack" /> |
| | | </view> |
| | | <view class="right-icon"> |
| | | <uni-icons class="right-icon" :class="disableBarCodePack ? 'disabled':''" type="scan" |
| | | style="background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;" size="20" |
| | | @click="toScanCode" :disabled="disableBarCodePack"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="title">产品码</view> |
| | | <!-- 按照源单物料样式添加disabled类和禁用属性 --> |
| | | <view class="right" :class="disableBarCode ? 'disabled' : ''"> |
| | | <input type="text" :focus="HBarCodeFocus" v-model="HBarCode" |
| | | @confirm="GetMeesageByBarCode(HBarCode)" :disabled="disableBarCode" /> |
| | | </view> |
| | | <view class="right-icon"> |
| | | <uni-icons class="right-icon" :class="[disableBarCode ? 'disabled':'']" type="scan" |
| | | style="background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;" size="20" |
| | | @click="toScanCode" :disabled="disableBarCode"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="title">已扫数量</view> |
| | | <view class="right disabled"> |
| | | <input type="text" disabled :value="hform.HQtySum" /> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | <view class="tabs"> |
| | | <view :class="tabs == 0 ? 'on':''" @tap="tabs = 0">单据信息</view> |
| | | <view :class="tabs == 1 ? 'on':''" @tap="tabs = 1">装箱信息</view> |
| | | </view> |
| | | |
| | | <!-- 单据信息 --> |
| | | <view v-if="tabs == 0"> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">源单类型:</view> |
| | | <view class="right" v-show="showHMainSourceBillType"> |
| | | <picker :range="arrayHMainSourceBillType" v-model="HMainSourceBillTypeIndex" |
| | | @change="HMainSourceBillTypeChange"> |
| | | <input name="HMainSourceBillType" disabled :value="HMainSourceBillType" |
| | | placeholder="请选择源单类型" /> |
| | | <view class="picker-overlay"></view> |
| | | </picker> |
| | | </view> |
| | | <view class="righton" v-show="!showHMainSourceBillType"> |
| | | <input name="HMainSourceBillType" disabled :value="HMainSourceBillType" placeholder="请选择源单类型" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">源单单号:</view> |
| | | <view class="right" v-show="showHSourceBillNo"> |
| | | <input :focus="HSourcebillNoFocus" type="text" @confirm="onHSourceBillNoConfirmHandler" |
| | | name="HSourceBillNo" v-model="hform.HSourceBillNo" placeholder="请输入源单单号" /> |
| | | </view> |
| | | <view class="icon-wrapper" v-show="showHSourceBillNo" :disabled="hform.HMainSourceBillType === -1"> |
| | | <uni-icons type="search" size="20" @click="showBillList"></uni-icons> |
| | | </view> |
| | | <view class="icon-wrapper" v-show="showHSourceBillNo"> |
| | | <uni-icons type="right" size="20" @click="onHSourceBillNoConfirmHandler"></uni-icons> |
| | | </view> |
| | | <view class="righton" v-show="!showHSourceBillNo"> |
| | | <input name="HSourceBillNo" disabled v-model="hform.HSourceBillNo" placeholder="请输入源单单号" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">源单物料</view> |
| | | <view class="right disabled"> |
| | | <input type="text" disabled :value="hform.HMaterName" /> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">单据日期</view> |
| | | <view class="right"> |
| | | <uni-datetime-picker type="date" v-model="hform.HDate"> |
| | | <input type="text" v-model="hform.HDate" /> |
| | | </uni-datetime-picker> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">制单人</view> |
| | | <view class="right disabled"> |
| | | <input type="text" disabled :value="hform.HMaker" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">单据号</view> |
| | | <view class="right disabled"> |
| | | <input type="text" disabled :value="hform.HBillNo" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">单据ID</view> |
| | | <view class="right disabled"> |
| | | <input type="text" disabled :value="hform.HInterID" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="bill-info"> |
| | | <view class="form-item"> |
| | | <view class="title">组织</view> |
| | | <view class="right disabled"> |
| | | <input type="text" disabled :value="hform.HStockOrgName" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- 装箱信息 --> |
| | | <view v-if="tabs == 1"> |
| | | <zb-table id="list-table" :checked-highlight="true" :fit="true" :style="{height: `${listTableHeight}px`}" |
| | | :columns="columns" :data="listData" :show-header="true" :border="true" :row-key="row => row.index" |
| | | @toggleRowSelection="handleSelect" @toggleAllSelection="handleSelectAll" |
| | | @rowClick="onTableRowClickHandler" /> |
| | | </view> |
| | | <view class="bottom-btn" id="bottom-btn"> |
| | | <button :class="EnableSubmit?'btn-a':'btn-c'" :disabled="!EnableSubmit" size="mini" |
| | | @tap="cmdSubmit">提交</button> |
| | | <view style="flex: 1;"></view> |
| | | <button class="btn-d" size="mini" @tap="cmdDelete">删除</button> |
| | | <button class="btn-c" size="mini" @tap="cmdExit">退出</button> |
| | | </view> |
| | | <!-- 弹窗组件 --> |
| | | <BillListPopupVue ref="billList" :HBillType="HBillType" :HSourceBillType="hform.HMainSourceBillType || 3710" |
| | | :HStockOrgID="hform.HStockOrgID"></BillListPopupVue> |
| | | </view> |
| | | </template> |
| | | <script> |
| | | import dayjs from 'dayjs' |
| | | import { |
| | | getUserInfo |
| | | } from "../../utils/auth"; |
| | | import { |
| | | CommonUtils |
| | | } from "@/utils/common.js" |
| | | import { |
| | | MpaasScan |
| | | } from "@/utils/mpaasScan.js" |
| | | import BillListPopupVue from '../../components/BillListPopup/BillListPopup.vue'; |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | // ==================== 布局计算相关 ==================== |
| | | // 计算列表高度 |
| | | bottomBtnTop: 0, |
| | | listTableTop: 0, |
| | | |
| | | // ==================== 界面状态控制 ==================== |
| | | EnableSubmit: true, // 是否允许提交 |
| | | disableBarCodePack: true, // 箱条码禁用状态 |
| | | disableBarCode: true, // 产品码禁用状态 |
| | | HBarCodePackFocus: false, // 箱条码输入框聚焦状态 |
| | | HBarCodeFocus: false, // 产品码输入框聚焦状态 |
| | | tabs: 0, // 当前选项卡(0:单据信息,1:装箱信息) |
| | | |
| | | |
| | | // ==================== 业务数据 ==================== |
| | | HBarCode_Pack: '', // 箱条码 |
| | | HBarCode: '', // 产品码 |
| | | HBillType: '3783', // 单据类型 |
| | | HBillSubType: '1', // 子类型(1装箱、2组托) |
| | | OperationType: 1, // 操作类型(1新增、2从缓存列表中返回) |
| | | HMaterNumber_Pack: "", // 托条码对应物料代码 |
| | | HBarCode_Pack_Temp: "", // 从缓存列表中返回箱条码 |
| | | BarCodeType: 1, // 条码类型(1:装箱,2:组托) |
| | | |
| | | HSourcebillNoFocus: false, // 源单单号输入框聚焦状态 - 新增这个属性 |
| | | showHMainSourceBillType: true, |
| | | showHSourceBillNo: true, |
| | | HMainSourceBillTypeIndex: 0, |
| | | HMainSourceBillType: '生产订单', |
| | | arrayHMainSourceBillType: ['生产订单', '手工录入'], |
| | | arrayHMainSourceBillValue: [3710, -1], |
| | | |
| | | // ==================== 列表数据 ==================== |
| | | listOption: [], // 列表选项 |
| | | listData: [], // 表格数据 |
| | | selectedRows: [], // 表格选中的数据 |
| | | columns: [ // 表格列配置 |
| | | { |
| | | type: 'selection', |
| | | fixed: true, |
| | | width: 50 |
| | | }, |
| | | { |
| | | name: 'index', |
| | | label: '序号', |
| | | width: 60, |
| | | hidden: true |
| | | }, |
| | | { |
| | | name: '条码编号', |
| | | label: '条码编号', |
| | | width: 100 |
| | | }, |
| | | { |
| | | name: '数量', |
| | | label: '数量', |
| | | width: 100 |
| | | }, |
| | | { |
| | | name: '物料代码', |
| | | label: '物料代码', |
| | | width: 100 |
| | | }, |
| | | { |
| | | name: '物料名称', |
| | | label: '物料名称', |
| | | width: 100 |
| | | }, |
| | | { |
| | | name: '条码个数', |
| | | label: '条码个数', |
| | | width: 100 |
| | | } |
| | | ], |
| | | |
| | | // ==================== 主表单数据 ==================== |
| | | hform: { |
| | | HDate: dayjs(new Date()).format('YYYY-MM-DD'), // 单据日期 |
| | | HMaker: getUserInfo()['Czymc'], // 制单人 |
| | | HBillNo: '', // 单据号 |
| | | HInterID: '', // 单据ID |
| | | HStockOrgName: uni.getStorageSync("Organization"), // 组织名称 |
| | | HStockOrgID: uni.getStorageSync("OrganizationID"), // 组织ID |
| | | HMainSourceBillType: 3710, //源单类型 |
| | | HMaterName: '', //源单物料 |
| | | HMaterID: '', //源单物料id |
| | | HQtySum: '', //外箱码数量 |
| | | totalQty: 0, // 总数 |
| | | }, |
| | | |
| | | // ==================== 系统配置 ==================== |
| | | HModName: "Sc_PackUnionBill_Packing_PDA", // 模块名称 |
| | | ModRightName: "CE_PackUnionBill_Packing", // 模块权限参数 |
| | | titleData: [] // 不需要显示的字段 |
| | | } |
| | | }, |
| | | components: { |
| | | BillListPopupVue, |
| | | }, |
| | | // ==================== 计算属性 ==================== |
| | | computed: { |
| | | // 计算表格高度 |
| | | listTableHeight: { |
| | | get() { |
| | | return this.bottomBtnTop - this.listTableTop - 10 |
| | | } |
| | | } |
| | | }, |
| | | |
| | | // ==================== 方法 ==================== |
| | | methods: { |
| | | // 复选框变化处理 |
| | | checkboxGroupChangeHandler(e) { |
| | | let checkBoxValues = Array.from(e.detail.value) |
| | | this.hform.HQualityApproval = checkBoxValues.includes('qualityApproval') |
| | | }, |
| | | |
| | | // 表格行点击处理 |
| | | onTableRowClickHandler(row, index) { |
| | | if (!this.listData[index].checked) { |
| | | this.$set(this.listData[index], 'checked', true) |
| | | } else { |
| | | this.listData[index].checked = !this.listData[index].checked |
| | | } |
| | | }, |
| | | |
| | | // 刷新产品码输入框焦点 |
| | | async HBarCodeFocusRefresh() { |
| | | this.HBarCode = '' |
| | | this.HBarCodeFocus = false |
| | | await this.$nextTick() |
| | | this.HBarCodeFocus = true |
| | | }, |
| | | |
| | | // 刷新箱条码输入框焦点 |
| | | async HBarCodePackFocusRefresh() { |
| | | this.HBarCode_Pack = '' |
| | | this.HBarCodePackFocus = false |
| | | await this.$nextTick() |
| | | this.HBarCodePackFocus = true |
| | | }, |
| | | |
| | | // 扫描箱条码 |
| | | toScanCode() { |
| | | MpaasScan.scanCode((scanCode) => { |
| | | this.HBarCode_Pack = scanCode |
| | | this.GetMeesageByBarCode_Pack(this.HBarCode_Pack) |
| | | }) |
| | | }, |
| | | |
| | | // 根据箱条码获取信息 |
| | | GetMeesageByBarCode_Pack(HBarCode_Pack) { |
| | | CommonUtils.doRequest2({ |
| | | url: '/WEBSController/Get_PackBarCode_PackUnionBill_New_Json_Cus', |
| | | data: { |
| | | HInterID: this.hform.HInterID || 0, |
| | | HBillNo: this.hform.HBillNo, |
| | | HBillType: this.HBillType, |
| | | HBillSubType: this.HBillSubType, |
| | | HBarCode_Pack: HBarCode_Pack, |
| | | HSourceBillNo: this.hform.HSourceBillNo, |
| | | }, |
| | | resFunction: (res) => { |
| | | let { |
| | | data, |
| | | count, |
| | | Message, |
| | | list |
| | | } = res.data |
| | | if (count == 1) { |
| | | CommonUtils.playSound(1) |
| | | this.hform.HBillNo = data[0].HBillNo |
| | | this.hform.HInterID = data[0].HInterID |
| | | this.HMaterNumber_Pack = data[0].HMaterNumber |
| | | this.hform.HMaterName = data[0].HMaterName |
| | | // 设置总数,当前扫描数量通过DisBillEntryList更新 |
| | | const totalQty = data[0].HBarcodeQtys || 0 |
| | | this.hform.HQtySum = `0/${totalQty}` |
| | | //处理成功后聚焦到产品码输入框 |
| | | this.HBarCodeFocusRefresh() |
| | | this.DisBillEntryList(); |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } else { |
| | | CommonUtils.playSound(0) |
| | | this.HBarCodePackFocusRefresh() |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 扫描产品码 |
| | | toScanCode2() { |
| | | MpaasScan.scanCode((scanCode) => { |
| | | this.HBarCode = scanCode |
| | | this.GetMeesageByBarCode(scanCode) |
| | | }) |
| | | }, |
| | | |
| | | // 根据产品码获取信息 |
| | | GetMeesageByBarCode(HBarCode) { |
| | | let HBarCode_Pack = this.HBarCode_Pack |
| | | let sOldBarCode = this.HBarCode |
| | | let HDeleteFlag = sOldBarCode.substring(0, 1) |
| | | let sBarCode = sOldBarCode.slice(1) |
| | | |
| | | if (!HBarCode_Pack) { |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '箱条码不能为空,请先扫描托条码!' |
| | | }) |
| | | } |
| | | if (HDeleteFlag == '*') { |
| | | // 删除条码逻辑 |
| | | if (!sBarCode) { |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '请扫描要删除的条码' |
| | | }) |
| | | } else { |
| | | this.HBarCodeFocusRefresh() |
| | | } |
| | | CommonUtils.doRequest2({ |
| | | url: '/WEBSController/set_DelPackUnionBill_Temp_Pack_Json', |
| | | data: { |
| | | "HInterID": this.hform.HInterID, |
| | | "HBarCode": sBarCode, |
| | | "HBillType": this.HBillType |
| | | }, |
| | | resFunction: (res) => { |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count == 1) { |
| | | CommonUtils.playSound(1) |
| | | this.tabs = 1 |
| | | this.DisBillEntryList() |
| | | } else { |
| | | CommonUtils.playSound(0) |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } else { |
| | | // 新增条码逻辑 |
| | | let sBarCode = this.HBarCode |
| | | if (!sBarCode) { |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '条码不能为空,请扫描条码!' |
| | | }) |
| | | } |
| | | CommonUtils.doRequest2({ |
| | | url: '/WEBSController/Get_BarCode_PackUnionBill_New_Json_Cus', |
| | | data: { |
| | | "HBarCode": sBarCode, |
| | | "HInterID": this.hform.HInterID, |
| | | "HBillNo": this.hform.HBillNo, |
| | | "HBillType": this.HBillType, |
| | | "HBillSubType": this.HBillSubType, |
| | | "HBarCode_Pack": this.HBarCode_Pack, |
| | | "HMaterNumber_Pack": this.HMaterNumber_Pack, |
| | | "HMaker": this.hform.HMaker, |
| | | "HStockOrgID": this.hform.HStockOrgID |
| | | }, |
| | | resFunction: (res) => { |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count == 1) { |
| | | CommonUtils.playSound(1) |
| | | this.tabs = 1 |
| | | this.HBarCodeFocusRefresh() |
| | | this.DisBillEntryList() |
| | | } else { |
| | | CommonUtils.playSound(0) |
| | | this.HBarCodeFocusRefresh() |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | // 显示单据明细列表 |
| | | DisBillEntryList() { |
| | | CommonUtils.doRequest2({ |
| | | url: '/WEBSController/GetBillEntry_Tmp_Pack_Json', |
| | | data: { |
| | | "HInterID": this.hform.HInterID, |
| | | "HBillNo": this.hform.HBillNo, |
| | | "HBillType": this.HBillType |
| | | }, |
| | | resFunction: (res) => { |
| | | let { |
| | | count, |
| | | data, |
| | | Message |
| | | } = res.data |
| | | this.listData = [] |
| | | if (count == 1) { |
| | | for (let i = 0; i < data.length; i++) { |
| | | this.listData.push(Object.assign(data[i], { |
| | | index: i |
| | | })) |
| | | } |
| | | |
| | | // 新增:根据返回的条码列表数量更新已扫数量 |
| | | if (this.hform.HQtySum && this.hform.HQtySum.includes('/')) { |
| | | const total = this.hform.HQtySum.split('/')[1] // 获取总数 |
| | | const currentScanned = data.length // 当前已扫描数量 |
| | | this.hform.HQtySum = `${currentScanned}/${total}` |
| | | // 新增:检查是否达到总数,如果是则提示保存 |
| | | if (currentScanned >= total) { |
| | | uni.showModal({ |
| | | title: '提示', |
| | | content: '已扫数量已达到上限,是否立即保存?', |
| | | confirmText: '保存', |
| | | cancelText: '取消', |
| | | success: ({ |
| | | confirm |
| | | }) => { |
| | | if (confirm) { |
| | | // 用户点击保存,调用保存方法 |
| | | this.cmdSubmit() |
| | | } else { |
| | | // 用户点击取消,不做任何操作 |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: '您可以选择手动保存' |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } else { |
| | | // 如果没有数据,重置已扫数量 |
| | | if (this.hform.HQtySum && this.hform.HQtySum.includes('/')) { |
| | | const total = this.hform.HQtySum.split('/')[1] // 获取总数 |
| | | this.hform.HQtySum = `0/${total}` |
| | | } |
| | | } |
| | | } else { |
| | | // 如果没有数据,重置已扫数量 |
| | | if (this.hform.HQtySum && this.hform.HQtySum.includes('/')) { |
| | | const total = this.hform.HQtySum.split('/')[1] // 获取总数 |
| | | this.hform.HQtySum = `0/${total}` |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 表格选择处理 |
| | | handleSelect(selected, array) { |
| | | this.selectedRows = array |
| | | }, |
| | | |
| | | // 表格全选处理 |
| | | handleSelectAll(selected, array) { |
| | | this.selectedRows = array |
| | | }, |
| | | // 播放提示音 |
| | | playSound(type) { |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | innerAudioContext.src = type == 1 ? '/static/success.wav' : '/static/jingbao.wav'; |
| | | innerAudioContext.play(); |
| | | }, |
| | | |
| | | // -----------------设置源单信息---------------------------------------------------- |
| | | async setSourceBillInfo(data) { |
| | | this.hform.HMaterName = data[0].物料名称 |
| | | this.hform.HMaterID = data[0].HMaterID |
| | | this.hform.HSourceBillNo = data[0].单据号 |
| | | this.hform.HMainSourceBillType = data[0].HSourceBillType |
| | | |
| | | // 更新源单类型显示 |
| | | const index = this.arrayHMainSourceBillValue.findIndex(e => e == data[0].HSourceBillType) |
| | | if (index !== -1) { |
| | | this.HMainSourceBillType = this.arrayHMainSourceBillType[index] |
| | | this.HMainSourceBillTypeIndex = index |
| | | this.showHMainSourceBillType = false |
| | | } |
| | | |
| | | if (data.hMulSourceFlagField == 0) { |
| | | this.showHSourceBillNo = false |
| | | } |
| | | }, |
| | | // 源单类型变更 |
| | | HMainSourceBillTypeChange(e) { |
| | | this.HMainSourceBillTypeIndex = e.detail.value |
| | | this.HMainSourceBillType = this.arrayHMainSourceBillType[this.HMainSourceBillTypeIndex] |
| | | this.hform.HMainSourceBillType = this.arrayHMainSourceBillValue[this.HMainSourceBillTypeIndex] |
| | | }, |
| | | |
| | | // 源单单号确认 |
| | | async onHSourceBillNoConfirmHandler() { |
| | | if (this.hform.HMainSourceBillType == -1) { |
| | | this.playSound(1) |
| | | return |
| | | } |
| | | // 获取源单状态 |
| | | await this.getSourceBarCodeControl(this.hform.HSourceBillNo) |
| | | }, |
| | | // 获取源单状态 |
| | | async getSourceBarCodeControl(HSourceBillNo) { |
| | | try { |
| | | let res = await CommonUtils.doRequest2Sync({ |
| | | url: '/WEBSController/GetSourceBillList_Control', |
| | | data: { |
| | | HBillType: this.HBillType, |
| | | HSourceBillType: this.hform.HMainSourceBillType, |
| | | HStockOrgID: this.hform.HStockOrgID, |
| | | HSourceBillNo: HSourceBillNo, |
| | | HMater: '', |
| | | HCustom: '' |
| | | } |
| | | }) |
| | | |
| | | if (res.data.count == 1) { |
| | | // 获取源单数据 |
| | | await this.getSourceBarCodeData(this.hform.HSourceBillNo) |
| | | } else { |
| | | this.playSound(0) |
| | | uni.showToast({ |
| | | title: res.data.Message, |
| | | icon: 'none' |
| | | }) |
| | | this.refreshHSourceBillState() |
| | | } |
| | | } catch (error) { |
| | | this.playSound(0) |
| | | uni.showToast({ |
| | | title: '获取源单数据失败', |
| | | icon: 'none' |
| | | }) |
| | | this.refreshHSourceBillState() |
| | | } |
| | | }, |
| | | // 获取源单数据 |
| | | async getSourceBarCodeData(HSourceBillNo) { |
| | | try { |
| | | let res = await CommonUtils.doRequest2Sync({ |
| | | url: '/WEBSController/GetSourceBillList_Json', |
| | | data: { |
| | | HBillType: this.HBillType, |
| | | HSourceBillType: this.hform.HMainSourceBillType, |
| | | HStockOrgID: this.hform.HStockOrgID, |
| | | HSourceBillNo: HSourceBillNo, |
| | | HMater: '', |
| | | HCustom: '' |
| | | } |
| | | }) |
| | | |
| | | if (res.data.count == 1) { |
| | | this.playSound(1) |
| | | await this.setSourceBillInfo(res.data.data) |
| | | // 源单数据返回成功后,解除禁用并聚焦到箱条码 |
| | | this.disableBarCodePack = false |
| | | this.disableBarCode = false |
| | | this.HBarCodePackFocusRefresh() |
| | | } else { |
| | | this.playSound(0) |
| | | uni.showToast({ |
| | | title: res.data.Message, |
| | | icon: 'none' |
| | | }) |
| | | this.refreshHSourceBillState() |
| | | } |
| | | } catch (error) { |
| | | this.playSound(0) |
| | | uni.showToast({ |
| | | title: '获取源单数据失败', |
| | | icon: 'none' |
| | | }) |
| | | this.refreshHSourceBillState() |
| | | } |
| | | }, |
| | | |
| | | // 刷新源单输入状态 |
| | | async refreshHSourceBillState() { |
| | | this.HSourcebillNoFocus = false |
| | | await this.$nextTick(() => { |
| | | this.hform.HSourceBillNo = "" |
| | | this.HSourcebillNoFocus = true |
| | | }) |
| | | }, |
| | | |
| | | // 显示源单列表 |
| | | showBillList() { |
| | | this.$refs.billList.showPopup() |
| | | }, |
| | | //-------------------------------------------------------------------------------------- |
| | | |
| | | // 获取最大单据号 |
| | | getMaxNo() { |
| | | CommonUtils.doRequest2({ |
| | | url: "/WEBSController/GetMaxBillNoAndID_Json", |
| | | data: { |
| | | "HBillType": this.HBillType |
| | | }, |
| | | resFunction: (d) => { |
| | | let { |
| | | count, |
| | | data, |
| | | Message |
| | | } = d.data |
| | | if (count == 1) { |
| | | this.hform.HInterID = data[0].HInterID; |
| | | this.hform.HBillNo = data[0].HBillNo |
| | | } else { |
| | | uni.showModal({ |
| | | title: "温馨提示", |
| | | showCancel: false, |
| | | content: Message |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 提交前检查 |
| | | submitPreCheck() { |
| | | if (CommonUtils.isEmpty(this.hform.HInterID)) { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: '单据内码获取失败,错误的单据内码!' |
| | | }) |
| | | return false |
| | | } |
| | | if (CommonUtils.isEmpty(this.hform.HBillNo)) { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: '单据号获取失败,错误的单据号!' |
| | | }) |
| | | return false |
| | | } |
| | | if (this.listData.length < 1) { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: '没有扫码信息,请先扫描条码,确认无误后再提交!' |
| | | }) |
| | | return false |
| | | } |
| | | return true |
| | | }, |
| | | |
| | | // 删除选中行 |
| | | cmdDelete() { |
| | | if (this.selectedRows.length != 1) { |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '请选择一行记录,进行删除!' |
| | | }) |
| | | } |
| | | uni.showModal({ |
| | | title: '删除确认', |
| | | content: '确认要删除选中行所有扫码记录?删除后将不可恢复!', |
| | | success: ({ |
| | | confirm |
| | | }) => { |
| | | if (confirm) { |
| | | CommonUtils.doRequest2({ |
| | | url: '/WEBSController/set_DelPackUnionBill_Temp_Pack_Json', |
| | | data: { |
| | | HInterID: this.hform.HInterID, |
| | | HBillType: this.HBillType, |
| | | HBarCode: this.selectedRows[0].HBarCode |
| | | }, |
| | | resFunction: (res) => { |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count == 1) { |
| | | CommonUtils.playSound(1) |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | this.DisBillEntryList() |
| | | } else { |
| | | CommonUtils.playSound(0) |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 提交单据 |
| | | cmdSubmit() { |
| | | let checkRes = this.submitPreCheck() |
| | | if (!checkRes) return |
| | | |
| | | this.EnableSubmit = false |
| | | CommonUtils.doRequest2({ |
| | | url: '/WEBSController/set_SavePackUnionBill_Json', |
| | | data: { |
| | | "HInterID": this.hform.HInterID, |
| | | "HBillType": this.HBillType, |
| | | "HBillNo": this.hform.HBillNo, |
| | | "HBarCode_Pack": this.HBarCode_Pack, |
| | | "HMaker": this.hform.HMaker, |
| | | "HStockOrgID": this.hform.HStockOrgID |
| | | }, |
| | | resFunction: (res) => { |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count == 1) { |
| | | this.Sc_ICMOBillWorkQtyStatus_Save() |
| | | uni.showModal({ |
| | | title: '温馨提示', |
| | | content: Message, |
| | | confirmText: "新增", |
| | | cancelText: '关闭', |
| | | success: ({ |
| | | confirm, |
| | | cancel |
| | | }) => { |
| | | if (confirm) { |
| | | uni.redirectTo({ |
| | | url: "/pages/zhuangxiangdan/form" |
| | | }) |
| | | } |
| | | if (cancel) { |
| | | uni.navigateBack() |
| | | } |
| | | } |
| | | }) |
| | | } else { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | //自动生产产量汇报单 |
| | | Sc_ICMOBillWorkQtyStatus_Save() { |
| | | CommonUtils.doRequest2({ |
| | | url: "/WEBSController/Sc_ICMOBillWorkQtyStatus_Tmp_Save", |
| | | data: { |
| | | "HInterID": this.hform.HInterID |
| | | }, |
| | | resFunction: (d) => { |
| | | let { |
| | | count, |
| | | data, |
| | | Message |
| | | } = d.data |
| | | if (count == 1) { |
| | | |
| | | } else { |
| | | uni.showModal({ |
| | | title: "温馨提示", |
| | | showCancel: false, |
| | | content: Message |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | // 退出页面 |
| | | cmdExit() { |
| | | uni.navigateBack() |
| | | } |
| | | }, |
| | | |
| | | // ==================== 生命周期 ==================== |
| | | async onReady() { |
| | | // 计算表格高度 |
| | | // #ifndef MP-WEIXIN |
| | | let query = uni.createSelectorQuery().in(this) |
| | | query.select("#bottom-btn").boundingClientRect((data) => { |
| | | if (data) this.bottomBtnTop = data.top |
| | | }).exec(); |
| | | query.select("#list-table").boundingClientRect((data) => { |
| | | if (data) this.listTableTop = data.top |
| | | }).exec(); |
| | | // #endif |
| | | }, |
| | | |
| | | onLoad(e) { |
| | | // 初始化参数 |
| | | this.BarCodeType = e.BarCodeType || 1 |
| | | this.OperationType = e.OperationType || 1 |
| | | this.HBarCode_Pack = e.HBarCode_Pack_Temp || "" |
| | | this.hform.HSourceBillNo = e.HSourceBillNo || "" |
| | | |
| | | // 根据操作类型初始化数据 |
| | | if (this.OperationType == 1) { |
| | | this.getMaxNo() // 新增模式:获取新单据号 |
| | | // 初始化时聚焦到源单单号 |
| | | this.HSourcebillNoFocus = true |
| | | } else if (this.OperationType == 2) { |
| | | this.disableBarCodePack = false |
| | | this.disableBarCode = false |
| | | this.GetMeesageByBarCode_Pack(this.HBarCode_Pack) // 缓存模式:加载已有数据 |
| | | this.DisBillEntryList() |
| | | this.tabs = 0 |
| | | } |
| | | |
| | | // 默认聚焦到箱条码输入框 |
| | | //this.HBarCodePackFocusRefresh() |
| | | uni.$on('BillSelectComplete', (e) => { |
| | | console.log("接收到的源单: ", e.HBillNo) |
| | | this.getSourceBarCodeData(e.HBillNo) |
| | | this.$refs.billList.exit() |
| | | }) |
| | | }, |
| | | onUnload() { |
| | | uni.$off('BillSelectComplete') |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | input { |
| | | width: inherit; |
| | | padding: 8rpx 20rpx; |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .form { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 20rpx; |
| | | |
| | | .form-base-info { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 10rpx; |
| | | box-sizing: border-box; |
| | | padding: 30rpx; |
| | | } |
| | | |
| | | .bill-info { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 10rpx; |
| | | box-sizing: border-box; |
| | | padding: 16rpx 30rpx; |
| | | } |
| | | |
| | | .form-item { |
| | | display: flex; |
| | | flex-direction: row; |
| | | gap: 10rpx; |
| | | |
| | | .title { |
| | | width: 5rem; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .right { |
| | | flex: 1; |
| | | border-radius: 22rpx; |
| | | border: 1px solid #acacac; |
| | | } |
| | | |
| | | .disabled { |
| | | border: 1px solid #e4e4e4; |
| | | background-color: #e4e4e4; |
| | | } |
| | | |
| | | .right-icon { |
| | | flex-shrink: 0; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | } |
| | | |
| | | .icon-wrapper { |
| | | background-color: #3A78FF; |
| | | border-radius: 100%; |
| | | width: 52rpx; |
| | | height: 52rpx; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | flex-shrink: 0; |
| | | |
| | | .uni-icons { |
| | | color: #fff !important; |
| | | } |
| | | } |
| | | |
| | | .icon-wrapper[disabled] { |
| | | background-color: rgba(228, 228, 228, 1); |
| | | pointer-events: none; |
| | | touch-action: none; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .tabs { |
| | | width: 100%; |
| | | display: flex; |
| | | border-bottom: 1px solid #ddd; |
| | | margin: 20rpx 0; |
| | | |
| | | view { |
| | | width: 25%; |
| | | font-size: 30rpx; |
| | | color: #555; |
| | | text-align: center; |
| | | padding: 16rpx 0; |
| | | } |
| | | |
| | | .on { |
| | | color: #3a78ff; |
| | | font-weight: bold; |
| | | border-bottom: 3px solid #3a78ff; |
| | | } |
| | | } |
| | | |
| | | .bottom-btn { |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | // height: 120rpx; |
| | | position: fixed; |
| | | bottom: 0; |
| | | left: 0; |
| | | background-color: #fff; |
| | | box-shadow: 0 2rpx 10rpx 2rpx rgba(0, 0, 0, 0.4); |
| | | padding: 30rpx 40rpx 40rpx 40rpx; |
| | | display: flex; |
| | | flex-direction: row; |
| | | gap: 10rpx; |
| | | |
| | | button { |
| | | border-radius: 50rpx; |
| | | width: 180rpx; |
| | | height: 66rpx; |
| | | line-height: 66rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | .btn-a { |
| | | background-color: #3A78FF; |
| | | color: #fff; |
| | | } |
| | | |
| | | .btn-b { |
| | | background-color: #41a863; |
| | | color: #fff; |
| | | } |
| | | |
| | | .btn-c { |
| | | background-color: #acacac; |
| | | color: #fff; |
| | | // position: absolute; |
| | | // right: 120rpx; |
| | | } |
| | | |
| | | .btn-d { |
| | | background-color: #ff8901; |
| | | color: #fff; |
| | | } |
| | | } |
| | | |
| | | .right-icon.disabled { |
| | | background-color: #ccc !important; |
| | | color: #666 !important; |
| | | cursor: not-allowed; |
| | | } |
| | | </style> |