Merge branch 'Dev' of http://101.37.171.70:10101/r/~jhz/STUWMS into Dev
# Conflicts:
# pages/tiaomadaying/tiaomadaying.vue
| | |
| | | </view> |
| | | </uni-popup-dialog> |
| | | </uni-popup> |
| | | |
| | | |
| | | <view class="btn" @tap="submit">登 录</view> |
| | | <!-- <view class="btn apibtn" @tap="changeApi=true">服务器设置</view> --> |
| | | <view class="btn apibtn" @click="openServerSettingHandler">服务器设置</view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | |
| | | <script> |
| | | import { |
| | | setLoginData, |
| | | setUserInfo |
| | | } from "@/utils/auth.js"; |
| | | import hFormAlert from '@/components/h-form-alert/h-form-alert.vue'; |
| | | import { |
| | | CommonUtils |
| | | } from "../../utils/common"; |
| | | export default { |
| | | components: { |
| | | hFormAlert |
| | | }, |
| | | data() { |
| | | return { |
| | | CommonUtils, |
| | | arrayDataBases: [], |
| | | DataBases: '', |
| | | |
| | | |
| | | arrayServerOrganization: ["浙江智云迈思", "温州海诚"], |
| | | arrayServerOrganizationValues: [ |
| | | 'http://47.96.97.237/API/', |
| | |
| | | arrayOrganization: [], |
| | | Organization: '', |
| | | HOrgNameList: [], |
| | | |
| | | |
| | | HOrgName: '', |
| | | UserName: '', //admin 001 |
| | | PassWord: '', //123456 |
| | |
| | | serverUrlCache: '', |
| | | } |
| | | }, |
| | | onLoad() { |
| | | onShow() { |
| | | var logindata = uni.getStorageSync('loginData') || '' |
| | | // console.log(logindata) |
| | | if (logindata) { |
| | |
| | | this.UserName = logindata.UserName |
| | | this.PassWord = logindata.PassWord |
| | | } |
| | | |
| | | |
| | | this.serverUrlCache = this.serverUrl |
| | | console.log('this.serverUrlCache: ',this.serverUrlCache); |
| | | console.log('this.serverUrlCache: ', this.serverUrlCache); |
| | | let index = this.arrayServerOrganizationValues.findIndex((e) => { |
| | | return e == this.serverUrlCache |
| | | }) |
| | |
| | | await this.$nextTick(() => { |
| | | this.Organization = this.arrayOrganization[0] |
| | | this.HOrgName = this.HOrgNameList[0] |
| | | |
| | | |
| | | let org = uni.getStorageSync('Organization') |
| | | let orgName = uni.getStorageSync('OrganizationID') |
| | | let orgHas = Array.from(this.arrayOrganization).findIndex((e) => e == org) |
| | | if(org && (orgHas != -1)) { |
| | | if (org && (orgHas != -1)) { |
| | | this.Organization = org |
| | | this.HOrgName = orgName |
| | | } |
| | |
| | | this.DataBases = this.arrayDataBases[e.detail.value] |
| | | uni.setStorageSync('DataBases', this.DataBases); |
| | | }, |
| | | |
| | | |
| | | getOrganization() { |
| | | uni.request({ |
| | | url: this.serverUrl + '/Web/GetOrganizations', |
| | |
| | | uni.setStorageSync('login', "login"); |
| | | uni.setStorageSync('Organization', this.Organization); |
| | | uni.setStorageSync('OrganizationID', this.HOrgName); |
| | | |
| | | console.log('this.serverUrl: ', this.serverUrl); |
| | | this.CommonUtils.setServerUrl(this.serverUrl) |
| | | uni.reLaunch({ |
| | | url: '/pages/index/index' |
| | | }) |
| | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | |
| | | <style lang="scss" scoped> |
| | | .bg-img { |
| | | position: fixed; |
| | |
| | | left: 0; |
| | | z-index: -1; |
| | | } |
| | | |
| | | |
| | | .container { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | |
| | | .title { |
| | | margin-top: 174rpx; |
| | | font-size: 47rpx; |
| | | font-weight: bold; |
| | | color: #FFFFFF; |
| | | } |
| | | |
| | | |
| | | .box { |
| | | width: 682rpx; |
| | | position: relative; |
| | | top: 120rpx; |
| | | display: flex; |
| | | justify-content: center; |
| | | |
| | | |
| | | .logo { |
| | | width: 155rpx; |
| | | height: 155rpx; |
| | |
| | | z-index: 9; |
| | | background-color: rgba(255, 255, 255, 0.5); |
| | | border-radius: 100%; |
| | | |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | background-color: #f0f3f7; |
| | | } |
| | | } |
| | | |
| | | |
| | | .login { |
| | | width: 100%; |
| | | height: 480rpx; |
| | |
| | | border-radius: 25rpx 0 25rpx 0; |
| | | box-shadow: 0 6rpx 24rpx 8rpx rgba(21, 99, 210, 0.14); |
| | | padding-top: 160rpx; |
| | | |
| | | |
| | | .item { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | margin-right: 38rpx; |
| | | margin-bottom: 70rpx; |
| | | |
| | | |
| | | .left { |
| | | font-size: 34rpx; |
| | | font-weight: 400; |
| | | color: #3C3C3C; |
| | | } |
| | | |
| | | |
| | | .right { |
| | | width: 441rpx; |
| | | height: 68rpx; |
| | | background: #EBEBEB; |
| | | border-radius: 10rpx; |
| | | |
| | | |
| | | input { |
| | | height: 100%; |
| | | padding: 0 30rpx; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // .api{ |
| | | // margin-left: 30rpx; |
| | | // font-size: 27rpx; |
| | |
| | | // } |
| | | } |
| | | } |
| | | |
| | | |
| | | .btn { |
| | | width: 540rpx; |
| | | height: 92rpx; |
| | |
| | | text-align: center; |
| | | font-size: 36rpx; |
| | | } |
| | | |
| | | |
| | | .apibtn { |
| | | margin-top: 50rpx; |
| | | background: #eec18e; |
| | | box-shadow: 0rpx 0rpx 44rpx 7rpx rgba(253, 186, 118, 0.3); |
| | | } |
| | | } |
| | | |
| | | |
| | | .popup-content { |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 30rpx; |
| | | |
| | | |
| | | .pop-item { |
| | | border: #EBEBEB 2rpx solid; |
| | | border-radius: 10rpx; |
| | | padding: 14rpx 8rpx; |
| | | } |
| | | |
| | | |
| | | >picker { |
| | | background-color: #EBEBEB; |
| | | } |
| | |
| | | <template> |
| | | <view class="container"> |
| | | <view class="content"> |
| | | <view class="header">基本信息</view> |
| | | <view class="items"> |
| | | <view class="item"> |
| | | <view class="left">条码编号:</view> |
| | | <view class="right barcode"> |
| | | <input :focus="HBarCodeFocus" name="HBarCode" v-model="lailiaoInfo.barCodeNo" |
| | | @focus="lailiaoInfo.barCodeNo = ''" @confirm="barCodeEntryHandler(lailiaoInfo.barCodeNo)" |
| | | placeholder="请扫描商品条码" /> |
| | | </view> |
| | | <view> |
| | | <uni-icons type="scan" |
| | | style="background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;font-weight: 500;" |
| | | size="20" @click="toScanCode"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">源单号:</view> |
| | | <view class="right"> |
| | | <input name="HBillNo" disabled v-model="lailiaoInfo.HBillNo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">源单行号:</view> |
| | | <view class="right"> |
| | | <input name="HBillLineNo" disabled v-model="lailiaoInfo.HBillLineNo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">物料编码:</view> |
| | | <view class="right"> |
| | | <input name="HMaterNo" disabled v-model="lailiaoInfo.HMaterNumber" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">物料名称:</view> |
| | | <view class="right"> |
| | | <input name="HMaterName" disabled v-model="lailiaoInfo.HMaterName" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">规格型号:</view> |
| | | <view class="right"> |
| | | <input name="HMaterType" disabled v-model="lailiaoInfo.HMaterModel" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">批次:</view> |
| | | <view class="right"> |
| | | <input name="HBatchNo" disabled v-model="lailiaoInfo.HBatchNo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">数量:</view> |
| | | <view class="right"> |
| | | <input name="HQty" disabled v-model="lailiaoInfo.HQty" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">MTO号:</view> |
| | | <view class="right"> |
| | | <input name="HMTONo" disabled v-model="lailiaoInfo.HMTONo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">供应商:</view> |
| | | <view class="right"> |
| | | <input name="HSupName" disabled v-model="lailiaoInfo.HSupName" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">供应商简称:</view> |
| | | <view class="right"> |
| | | <input name="HSupNameShort" disabled v-model="lailiaoInfo.HSupNameShort" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="operation-zone"> |
| | | <button class="btn-c" @click="GenereateBarCode">生成</button> |
| | | <button class="btn-c" :disabled="buttonStatus.btn2 == false" @click="print">打印</button> |
| | | <view></view> |
| | | <button class="btn-c" @click="setClearLailiaoInfo">新增</button> |
| | | <button class="btn-c" @click="exit">退出</button> |
| | | </view> |
| | | <labelPrinterComponentVue ref="labelPrinter" :printInfo="printInfo" :printMode="'cpcl'"> |
| | | </labelPrinterComponentVue> |
| | | </view> |
| | | <view class="container"> |
| | | <view class="content"> |
| | | <view class="header">基本信息</view> |
| | | <view class="items"> |
| | | <view class="item"> |
| | | <view class="left">条码编号:</view> |
| | | <view class="right barcode"> |
| | | <input :focus="HBarCodeFocus" name="HBarCode" v-model="lailiaoInfo.barCodeNo" |
| | | @focus="lailiaoInfo.barCodeNo = ''" @confirm="barCodeEntryHandler(lailiaoInfo.barCodeNo)" |
| | | placeholder="请扫描商品条码" /> |
| | | </view> |
| | | <view> |
| | | <uni-icons type="scan" |
| | | style="background-color: #3A78FF;padding: 6rpx;color: #fff;border-radius: 100%;font-weight: 500;" |
| | | size="20" @click="toScanCode"></uni-icons> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">源单号:</view> |
| | | <view class="right"> |
| | | <input name="HBillNo" disabled v-model="lailiaoInfo.HBillNo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">源单行号:</view> |
| | | <view class="right"> |
| | | <input name="HBillLineNo" disabled v-model="lailiaoInfo.HBillLineNo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">物料编码:</view> |
| | | <view class="right"> |
| | | <input name="HMaterNo" disabled v-model="lailiaoInfo.HMaterNumber" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">物料名称:</view> |
| | | <view class="right"> |
| | | <input name="HMaterName" disabled v-model="lailiaoInfo.HMaterName" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">规格型号:</view> |
| | | <view class="right"> |
| | | <input name="HMaterType" disabled v-model="lailiaoInfo.HMaterModel" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">批次:</view> |
| | | <view class="right"> |
| | | <input name="HBatchNo" disabled v-model="lailiaoInfo.HBatchNo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">数量:</view> |
| | | <view class="right"> |
| | | <input name="HQty" disabled v-model="lailiaoInfo.HQty" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">MTO号:</view> |
| | | <view class="right"> |
| | | <input name="HMTONo" disabled v-model="lailiaoInfo.HMTONo" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">供应商:</view> |
| | | <view class="right"> |
| | | <input name="HSupName" disabled v-model="lailiaoInfo.HSupName" /> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="left">供应商简称:</view> |
| | | <view class="right"> |
| | | <input name="HSupNameShort" disabled v-model="lailiaoInfo.HSupNameShort" /> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="operation-zone"> |
| | | <button class="btn-c" :disabled="buttonStatus.btn1" @click="GenereateBarCode">生成</button> |
| | | <button class="btn-c" :disabled="buttonStatus.btn2" @click="print">打印</button> |
| | | <view></view> |
| | | <button class="btn-c" @click="setClearLailiaoInfo">新增</button> |
| | | <button class="btn-c" @click="exit">退出</button> |
| | | </view> |
| | | <labelPrinterComponentVue ref="labelPrinter" :printInfo="printInfo" :printMode="'cpcl'"> |
| | | </labelPrinterComponentVue> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import labelPrinterComponentVue from '../../components/labelPrinterComponent/labelPrinterComponent.vue'; |
| | | import { |
| | | CBar, |
| | | CBox, |
| | | CForm, |
| | | CImage, |
| | | CLine, |
| | | CCodeRotation, |
| | | CCodeType, |
| | | CPage, |
| | | CText, |
| | | CFont, |
| | | CBold, |
| | | CRotation, |
| | | CInverse, |
| | | CMag, |
| | | CQRCode, |
| | | CCorrectLevel, |
| | | CSN, |
| | | CStatus, |
| | | CPCL, |
| | | } from "@psdk/cpcl"; |
| | | import { |
| | | CommonUtils |
| | | } from '../../utils/common'; |
| | | import { |
| | | getUserInfo |
| | | } from "@/utils/auth.js"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | HBarCodeFocus: false, |
| | | import labelPrinterComponentVue from '../../components/labelPrinterComponent/labelPrinterComponent.vue'; |
| | | import { |
| | | CBar, |
| | | CBox, |
| | | CForm, |
| | | CImage, |
| | | CLine, |
| | | CCodeRotation, |
| | | CCodeType, |
| | | CPage, |
| | | CText, |
| | | CFont, |
| | | CBold, |
| | | CRotation, |
| | | CInverse, |
| | | CMag, |
| | | CQRCode, |
| | | CCorrectLevel, |
| | | CSN, |
| | | CStatus, |
| | | CPCL, |
| | | } from "@psdk/cpcl"; |
| | | import { |
| | | CommonUtils |
| | | } from '../../utils/common'; |
| | | import { |
| | | getUserInfo |
| | | } from "@/utils/auth.js"; |
| | | export default { |
| | | data() { |
| | | return { |
| | | HBarCodeFocus: false, |
| | | |
| | | printInfo: "", |
| | | userInfo: getUserInfo(), |
| | | buttonStatus: { |
| | | btn1: true, |
| | | btn2: false |
| | | }, |
| | | barCodeMeta: '', |
| | | generatedBarCode: '', |
| | | lailiaoInfo: { |
| | | HMainID: '', |
| | | HSubID: '', |
| | | HOrderBillNo: '', |
| | | HMaterID: '', |
| | | barCodeNo: '', |
| | | HBillNo: '', |
| | | HBillLineNo: '', |
| | | HMaterNumber: '', |
| | | HMaterName: '', |
| | | HMaterModel: '', |
| | | HBatchNo: '', |
| | | HQty: '', |
| | | HMTONo: '', |
| | | HSupName: '', |
| | | HSupNameShort: '', |
| | | HMinQty: '', |
| | | HBQty: '', |
| | | HSupID: '', |
| | | HUnitID: '', |
| | | } |
| | | }; |
| | | }, |
| | | components: { |
| | | labelPrinterComponentVue |
| | | }, |
| | | onLoad() { |
| | | this.HBarCodeFocus = true |
| | | }, |
| | | methods: { |
| | | async refreshBarcodeState() { |
| | | this.HBarCodeFocus = false |
| | | await this.$nextTick(() => { |
| | | this.HBarCodeFocus = true |
| | | this.lailiaoInfo.barCodeNo = "" |
| | | }) |
| | | }, |
| | | async print() { |
| | | if (this.$printer.isConnected() === false) { |
| | | this.$refs.labelPrinter.openPopup() |
| | | } else { |
| | | // this.printInfo = async () => { |
| | | // let cpcl = await this.$printer.cpcl().clear() |
| | | // .page(new CPage({ |
| | | // width: 608, |
| | | // height: 400 |
| | | // })) |
| | | // .qrcode(new CQRCode({ |
| | | // x: 500, |
| | | // y: 30, |
| | | // width: 3, |
| | | // content: this.generatedBarCode, |
| | | // codeRotation: CCodeRotation.ROTATION_0, |
| | | // level: CCorrectLevel.L |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 30, |
| | | // content: "供应商: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 80, |
| | | // content: "供应商料号: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 130, |
| | | // content: "物料编码: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 180, |
| | | // content: "物料分组: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 300, |
| | | // y: 180, |
| | | // content: "规格型号: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 230, |
| | | // content: "数量: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 300, |
| | | // y: 230, |
| | | // content: "日期: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 280, |
| | | // content: "检验员: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 300, |
| | | // y: 280, |
| | | // content: "计划跟踪号: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 330, |
| | | // content: "检验结果: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .box(new CBox({ |
| | | // topLeftX: 260, |
| | | // topLeftY: 320, |
| | | // bottomRightX: 280, |
| | | // bottomRightY: 340, |
| | | // lineWidth: 4, |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 290, |
| | | // y: 320, |
| | | // content: "合格", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .box(new CBox({ |
| | | // topLeftX: 360, |
| | | // topLeftY: 320, |
| | | // bottomRightX: 380, |
| | | // bottomRightY: 340, |
| | | // lineWidth: 4, |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 390, |
| | | // y: 320, |
| | | // content: "不合格", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .box(new CBox({ |
| | | // topLeftX: 480, |
| | | // topLeftY: 320, |
| | | // bottomRightX: 500, |
| | | // bottomRightY: 340, |
| | | // lineWidth: 4, |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 510, |
| | | // y: 320, |
| | | // content: "特采", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .form(new CForm()) |
| | | // .print(); |
| | | // console.log(cpcl.command().string()) |
| | | // return cpcl.command().binary() |
| | | // } |
| | | // await this.$nextTick(() => { |
| | | // this.$refs.labelPrinter.execPrint() |
| | | // }) |
| | | // T 24 0 300 280 计划跟踪号: ${this.lailiaoInfo.HMTONo || ''} |
| | | this.printInfo = `! 0 200 200 400 1 |
| | | printInfo: "", |
| | | userInfo: getUserInfo(), |
| | | buttonStatus: { |
| | | btn1: true, |
| | | btn2: true |
| | | }, |
| | | barCodeMeta: '', |
| | | generatedBarCode: '', |
| | | lailiaoInfo: { |
| | | HMainID: '', |
| | | HSubID: '', |
| | | HOrderBillNo: '', |
| | | HMaterID: '', |
| | | barCodeNo: '', |
| | | HBillNo: '', |
| | | HBillLineNo: '', |
| | | HMaterNumber: '', |
| | | HMaterName: '', |
| | | HMaterModel: '', |
| | | HBatchNo: '', |
| | | HQty: '', |
| | | HMTONo: '', |
| | | HSupName: '', |
| | | HSupNameShort: '', |
| | | HMinQty: '', |
| | | HBQty: '', |
| | | HSupID: '', |
| | | HUnitID: '', |
| | | } |
| | | }; |
| | | }, |
| | | components: { |
| | | labelPrinterComponentVue |
| | | }, |
| | | onLoad() { |
| | | this.HBarCodeFocus = true |
| | | }, |
| | | methods: { |
| | | async refreshBarcodeState() { |
| | | this.HBarCodeFocus = false |
| | | await this.$nextTick(() => { |
| | | this.HBarCodeFocus = true |
| | | this.lailiaoInfo.barCodeNo = "" |
| | | }) |
| | | }, |
| | | async print() { |
| | | if (this.$printer.isConnected() === false) { |
| | | this.$refs.labelPrinter.openPopup() |
| | | } else { |
| | | // this.printInfo = async () => { |
| | | // let cpcl = await this.$printer.cpcl().clear() |
| | | // .page(new CPage({ |
| | | // width: 608, |
| | | // height: 400 |
| | | // })) |
| | | // .qrcode(new CQRCode({ |
| | | // x: 500, |
| | | // y: 30, |
| | | // width: 3, |
| | | // content: this.generatedBarCode, |
| | | // codeRotation: CCodeRotation.ROTATION_0, |
| | | // level: CCorrectLevel.L |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 30, |
| | | // content: "供应商: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 80, |
| | | // content: "供应商料号: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 130, |
| | | // content: "物料编码: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 180, |
| | | // content: "物料分组: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 300, |
| | | // y: 180, |
| | | // content: "规格型号: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 230, |
| | | // content: "数量: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 300, |
| | | // y: 230, |
| | | // content: "日期: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 280, |
| | | // content: "检验员: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 300, |
| | | // y: 280, |
| | | // content: "计划跟踪号: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 30, |
| | | // y: 330, |
| | | // content: "检验结果: ", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .box(new CBox({ |
| | | // topLeftX: 260, |
| | | // topLeftY: 320, |
| | | // bottomRightX: 280, |
| | | // bottomRightY: 340, |
| | | // lineWidth: 4, |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 290, |
| | | // y: 320, |
| | | // content: "合格", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .box(new CBox({ |
| | | // topLeftX: 360, |
| | | // topLeftY: 320, |
| | | // bottomRightX: 380, |
| | | // bottomRightY: 340, |
| | | // lineWidth: 4, |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 390, |
| | | // y: 320, |
| | | // content: "不合格", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .box(new CBox({ |
| | | // topLeftX: 480, |
| | | // topLeftY: 320, |
| | | // bottomRightX: 500, |
| | | // bottomRightY: 340, |
| | | // lineWidth: 4, |
| | | // })) |
| | | // .text(new CText({ |
| | | // x: 510, |
| | | // y: 320, |
| | | // content: "特采", |
| | | // font: CFont.TSS24 |
| | | // })) |
| | | // .form(new CForm()) |
| | | // .print(); |
| | | // console.log(cpcl.command().string()) |
| | | // return cpcl.command().binary() |
| | | // } |
| | | // await this.$nextTick(() => { |
| | | // this.$refs.labelPrinter.execPrint() |
| | | // }) |
| | | // T 24 0 300 280 计划跟踪号: ${this.lailiaoInfo.HMTONo || ''} |
| | | |
| | | this.printInfo = `! 0 200 200 400 1 |
| | | PAGE-WIDTH 608 |
| | | SETQRVER 3 |
| | | B QR 470 30 M 5 U 5 |
| | | B QR 480 30 M 4 U 4 |
| | | LA,${this.lailiaoInfo.barCodeNo} |
| | | ENDQR |
| | | T 24 0 10 30 供应商: ${this.lailiaoInfo.HSupName} |
| | | T 55 0 10 55 (Supplier) |
| | | T 24 0 10 80 供应商料号: ${this.lailiaoInfo.HMaterNumber} |
| | | T 55 0 10 105 (Supplier Sku No.) |
| | | T 24 0 10 130 物料名称: ${this.lailiaoInfo.HMaterName} |
| | | T 55 0 5 155 (Material Code) |
| | | T 24 0 300 130 款号: |
| | | T 55 0 300 155 (eng) |
| | | T 24 0 5 180 分组: ${this.lailiaoInfo.HBatchNo} |
| | | T 55 0 5 205 (Group) |
| | | T 24 0 300 180 规格: ${this.lailiaoInfo.HMaterModel} |
| | | T 55 0 300 205 (SKU NO.) |
| | | T 24 0 10 230 数量: ${this.lailiaoInfo.HQty} (${this.lailiaoInfo.HPcsName}) |
| | | T 55 0 5 255 (Quantity) |
| | | |
| | | T 24 0 10 70 供应商料号: ${this.lailiaoInfo.HMaterNumber} |
| | | T 55 0 10 95 (Supplier Sku No.) |
| | | T 24 0 10 110 物料名称: ${this.lailiaoInfo.HMaterName} |
| | | T 55 0 10 135 (Material Code) |
| | | T 24 0 10 150 款号: |
| | | T 55 0 10 175 (eng) |
| | | T 24 0 300 150 客户编号: |
| | | T 55 0 300 175 (eng) |
| | | T 24 0 10 190 分组: ${this.lailiaoInfo.HBatchNo} |
| | | T 55 0 10 215 (Group) |
| | | T 24 0 300 190 规格: ${this.lailiaoInfo.HMaterModel} |
| | | T 55 0 300 215 (SKU NO.) |
| | | T 24 0 10 230 数量: ${this.lailiaoInfo.HQty} (${this.lailiaoInfo.HPcsName}) |
| | | T 55 0 10 255 (Quantity) |
| | | T 24 0 300 230 日期: ${this.lailiaoInfo.HDate} |
| | | T 55 0 300 255 (Date) |
| | | T 24 0 5 280 检验员: |
| | | T 55 0 5 305 (QC) |
| | | T 24 0 300 280 采购单号: ${this.lailiaoInfo.HBillNo || ''} |
| | | T 55 0 300 305 (Purchase Order No.) |
| | | T 24 0 5 330 检验结果: |
| | | T 55 0 5 355 (Inspection status) |
| | | BOX 240 330 260 350 4 |
| | | T 24 0 270 330 合格 |
| | | T 55 0 250 355 (Pass) |
| | | BOX 340 330 360 350 4 |
| | | T 24 0 370 330 不合格 |
| | | T 55 0 370 355 (Fail) |
| | | BOX 460 330 480 350 4 |
| | | T 24 0 490 330 特采 |
| | | T 55 0 440 355 (Spec. accepted) |
| | | |
| | | T 24 0 10 270 检验员: |
| | | T 55 0 10 295 (QC) |
| | | T 24 0 300 270 采购单号: ${this.lailiaoInfo.HBillNo || ''} |
| | | T 55 0 300 295 (Purchase Order No.) |
| | | T 24 0 10 310 检验结果: |
| | | T 55 0 10 335 (Inspection status) |
| | | BOX 240 310 260 330 4 |
| | | T 24 0 270 310 合格 |
| | | T 55 0 250 335 (Pass) |
| | | BOX 340 310 360 330 4 |
| | | T 24 0 370 310 不合格 |
| | | T 55 0 370 335 (Fail) |
| | | BOX 460 310 480 330 4 |
| | | T 24 0 490 310 特采 |
| | | T 55 0 440 335 (Spec. accepted) |
| | | FORM |
| | | PRINT` |
| | | |
| | | |
| | | |
| | | await this.$nextTick(() => { |
| | | this.$refs.labelPrinter.execPrint() |
| | | }) |
| | | } |
| | | }, |
| | | setLailiaoInfo(data, row) { |
| | | if (row > data.length) { |
| | | CommonUtils.playSound(0) |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '查询的单据号不存在...' |
| | | }) |
| | | await this.$nextTick(() => { |
| | | this.$refs.labelPrinter.execPrint() |
| | | }) |
| | | } |
| | | }, |
| | | setLailiaoInfo(data, row) { |
| | | if (row > data.length) { |
| | | CommonUtils.playSound(0) |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '查询的单据号不存在...' |
| | | }) |
| | | |
| | | } |
| | | let d = data[row - 1] |
| | | this.lailiaoInfo = Object.assign(this.lailiaoInfo, { |
| | | HMaterNumber: d['物料编码'], |
| | | HMaterName: d['物料名称'], |
| | | HMaterModel: d['规格型号'], |
| | | HBatchNo: d['批号'], |
| | | HQty: d['数量'], |
| | | HMinQty: d['数量'], |
| | | HBQty: d['数量'], |
| | | HSupID: d['HSupID'], |
| | | HSupName: d['供应商'], |
| | | HUnitID: d['HUnitID'], |
| | | HSupNameShort: d['供应商'], |
| | | HMTONo: d['订单跟踪号'], |
| | | HMainID: d['linterid'], |
| | | HSubID: d['HEntryID'], |
| | | HMaterID: d['HMaterID'], |
| | | }) |
| | | CommonUtils.playSound(1) |
| | | this.buttonStatus.btn2 = true |
| | | }, |
| | | setClearLailiaoInfo() { |
| | | this.lailiaoInfo = { |
| | | HMainID: '', |
| | | HSubID: '', |
| | | HOrderBillNo: '', |
| | | HMaterID: '', |
| | | barCodeNo: '', |
| | | HBillNo: '', |
| | | HBillLineNo: '', |
| | | HMaterNumber: '', |
| | | HMaterName: '', |
| | | HMaterModel: '', |
| | | HBatchNo: '', |
| | | HQty: '', |
| | | HMTONo: '', |
| | | HSupName: '', |
| | | HSupNameShort: '', |
| | | HMinQty: '', |
| | | HBQty: '', |
| | | } |
| | | } |
| | | let d = data[row - 1] |
| | | this.lailiaoInfo = Object.assign(this.lailiaoInfo, { |
| | | HMaterNumber: d['物料编码'], |
| | | HMaterName: d['物料名称'], |
| | | HMaterModel: d['规格型号'], |
| | | HBatchNo: d['批号'], |
| | | HQty: d['数量'], |
| | | HMinQty: d['数量'], |
| | | HBQty: d['数量'], |
| | | HSupID: d['HSupID'], |
| | | HSupName: d['供应商'], |
| | | HUnitID: d['HUnitID'], |
| | | HSupNameShort: d['供应商'], |
| | | HMTONo: d['计划跟踪号'], |
| | | HMainID: d['linterid'], |
| | | HSubID: d['HEntryID'], |
| | | HMaterID: d['HMaterID'], |
| | | }) |
| | | CommonUtils.playSound(1) |
| | | this.buttonStatus.btn2 = true |
| | | }, |
| | | setClearLailiaoInfo() { |
| | | this.lailiaoInfo = { |
| | | HMainID: '', |
| | | HSubID: '', |
| | | HOrderBillNo: '', |
| | | HMaterID: '', |
| | | barCodeNo: '', |
| | | HBillNo: '', |
| | | HBillLineNo: '', |
| | | HMaterNumber: '', |
| | | HMaterName: '', |
| | | HMaterModel: '', |
| | | HBatchNo: '', |
| | | HQty: '', |
| | | HMTONo: '', |
| | | HSupName: '', |
| | | HSupNameShort: '', |
| | | HMinQty: '', |
| | | HBQty: '', |
| | | } |
| | | |
| | | this.buttonStatus = { |
| | | btn1: true, |
| | | btn2: false |
| | | } |
| | | }, |
| | | barCodeEntryHandler(barCode) { |
| | | if (CommonUtils.isEmpty(barCode) === false) { |
| | | console.log('条码内容:' + barCode); |
| | | this.lailiaoInfo.barCodeNo = barCode; |
| | | if (barCode.includes("@") === false) { |
| | | this.buttonStatus.btn2 = false |
| | | CommonUtils.playSound(0) |
| | | this.refreshBarcodeState() |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '条码格式错误,请重新扫描...' |
| | | }) |
| | | } |
| | | let barCodeInfo = barCode.split("@") |
| | | let [PurchaseBillNo, Row] = barCodeInfo |
| | | this.lailiaoInfo.HBillNo = PurchaseBillNo, |
| | | this.lailiaoInfo.HBillLineNo = Row |
| | | console.log({ |
| | | sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | user: this.userInfo.Czymc, |
| | | }) |
| | | CommonUtils.doRequest( |
| | | "/Cg_POOrderBill/list", { |
| | | sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | user: this.userInfo.Czymc, |
| | | }, |
| | | (res) => { |
| | | console.log('采购订单: ', res) |
| | | let { |
| | | data, |
| | | count |
| | | } = res.data |
| | | if (count > 0) { |
| | | this.buttonStatus = { |
| | | btn1: true, |
| | | btn2: false |
| | | } |
| | | }, |
| | | barCodeEntryHandler(barCode) { |
| | | if (CommonUtils.isEmpty(barCode) === false) { |
| | | console.log('条码内容:' + barCode); |
| | | this.lailiaoInfo.barCodeNo = barCode; |
| | | if (barCode.includes("@") === false) { |
| | | this.buttonStatus.btn2 = false |
| | | CommonUtils.playSound(0) |
| | | this.refreshBarcodeState() |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '条码格式错误,请重新扫描...' |
| | | }) |
| | | } |
| | | let barCodeInfo = barCode.split("@") |
| | | let [PurchaseBillNo, Row] = barCodeInfo |
| | | this.lailiaoInfo.HBillNo = PurchaseBillNo, |
| | | this.lailiaoInfo.HBillLineNo = Row |
| | | console.log({ |
| | | sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | user: this.userInfo.Czymc, |
| | | }) |
| | | CommonUtils.doRequest( |
| | | "/Cg_POOrderBill/list", { |
| | | sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | user: this.userInfo.Czymc, |
| | | }, |
| | | (res) => { |
| | | console.log('采购订单: ', res) |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count > 0) { |
| | | |
| | | this.setLailiaoInfo(data, Row) |
| | | this.setLailiaoInfo(data, Row) |
| | | // uni.showToast({ |
| | | // icon: 'none', |
| | | // title: Message |
| | | // }) |
| | | this.buttonStatus.btn1 = false |
| | | |
| | | } else { |
| | | CommonUtils.playSound(0) |
| | | this.refreshBarcodeState() |
| | | } |
| | | }, |
| | | (error) => { |
| | | CommonUtils.playSound(0) |
| | | this.refreshBarcodeState() |
| | | this.buttonStatus.btn2 = false |
| | | } |
| | | ) |
| | | } else { |
| | | CommonUtils.playSound(0) |
| | | this.refreshBarcodeState() |
| | | // uni.showToast({ |
| | | // icon: 'none', |
| | | // title: Message |
| | | // }) |
| | | this.buttonStatus.btn1 = true |
| | | this.buttonStatus.btn2 = true |
| | | } |
| | | }, |
| | | (error) => { |
| | | CommonUtils.playSound(0) |
| | | this.refreshBarcodeState() |
| | | this.buttonStatus.btn1 = true |
| | | this.buttonStatus.btn2 = true |
| | | } |
| | | ) |
| | | |
| | | } |
| | | }, |
| | | toScanCode() { |
| | | var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module") |
| | | mpaasScanModule.mpaasScan({ |
| | | 'hideAlbum': true, |
| | | 'timeoutInterval':'10', //超时时间 |
| | | 'timeoutText':'未识别到二维码' //超时提醒 |
| | | },(ret) => { |
| | | console.log(ret.resp_result) |
| | | if (CommonUtils.isEmpty(ret.resp_result) === false) { |
| | | console.log('条码内容:' + ret.resp_result); |
| | | this.lailiaoInfo.barCodeNo = ret.resp_result; |
| | | if (ret.resp_result.includes("@") === false) { |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '条码格式错误,请重新扫描...' |
| | | }) |
| | | } |
| | | let barCodeInfo = ret.resp_result.split("@") |
| | | let [PurchaseBillNo, Row] = barCodeInfo |
| | | this.lailiaoInfo.HBillNo = PurchaseBillNo, |
| | | this.lailiaoInfo.HBillLineNo = Row |
| | | console.log({ |
| | | sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | user: this.userInfo.Czymc, |
| | | }) |
| | | CommonUtils.doRequest( |
| | | "/Cg_POOrderBill/list", { |
| | | sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | user: this.userInfo.Czymc, |
| | | }, |
| | | (res) => { |
| | | console.log('采购订单: ', res) |
| | | let { |
| | | data, |
| | | count |
| | | } = res.data |
| | | if (count > 0) { |
| | | this.setLailiaoInfo(data, Row) |
| | | } |
| | | }, |
| | | (error) => { |
| | | |
| | | } |
| | | ) |
| | | |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | GenereateBarCode() { |
| | | let HBarCodeNoStr = |
| | | `${this.lailiaoInfo.HBillNo}@${this.lailiaoInfo.HBillLineNo}@${this.lailiaoInfo.HMaterNumber}@${this.lailiaoInfo.HMTONo}@${this.lailiaoInfo.HQty}@${this.lailiaoInfo.HSupID}` |
| | | let sMain = [] |
| | | sMain[0] = this.lailiaoInfo |
| | | let sMainStr = JSON.stringify(sMain); |
| | | //获取选择的组织 |
| | | let HOrgType = uni.getStorageSync('Organization'); |
| | | //获取选择的工厂代码 |
| | | let CampanyName = "xxx"; |
| | | //获取选择的源单类型 |
| | | let HSourceBillType = "来料通知单"; |
| | | //获取选择的条码类型 |
| | | let HSelectBarCodeType = "唯一条码"; |
| | | //获取当前登录人员 |
| | | let UserName = uni.getStorageSync('HUserName'); |
| | | let sMainSub = sMainStr + ';' + HOrgType + ';' + HSourceBillType + ';' + HSelectBarCodeType + ';' + |
| | | CampanyName + ';' + UserName + ';' + HBarCodeNoStr; |
| | | } |
| | | }, |
| | | toScanCode() { |
| | | var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module") |
| | | mpaasScanModule.mpaasScan({ |
| | | 'hideAlbum': true, |
| | | 'timeoutInterval': '10', //超时时间 |
| | | 'timeoutText': '未识别到二维码' //超时提醒 |
| | | }, (ret) => { |
| | | console.log(ret.resp_result) |
| | | if (CommonUtils.isEmpty(ret.resp_result) === false) { |
| | | console.log('条码内容:' + ret.resp_result); |
| | | this.lailiaoInfo.barCodeNo = ret.resp_result; |
| | | if (ret.resp_result.includes("@") === false) { |
| | | return uni.showToast({ |
| | | icon: 'none', |
| | | title: '条码格式错误,请重新扫描...' |
| | | }) |
| | | } |
| | | // let barCodeInfo = ret.resp_result.split("@") |
| | | // let [PurchaseBillNo, Row] = barCodeInfo |
| | | // this.lailiaoInfo.HBillNo = PurchaseBillNo, |
| | | // this.lailiaoInfo.HBillLineNo = Row |
| | | // console.log({ |
| | | // sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | // user: this.userInfo.Czymc, |
| | | // }) |
| | | // CommonUtils.doRequest( |
| | | // "/Cg_POOrderBill/list", { |
| | | // sWhere: ` and 单据号 = '${PurchaseBillNo}'`, |
| | | // user: this.userInfo.Czymc, |
| | | // }, |
| | | // (res) => { |
| | | // console.log('采购订单: ', res) |
| | | // let { |
| | | // data, |
| | | // count |
| | | // } = res.data |
| | | // if (count > 0) { |
| | | // this.setLailiaoInfo(data, Row) |
| | | // } |
| | | // }, |
| | | // (error) => { |
| | | |
| | | CommonUtils.doRequest( |
| | | "/Sc_BarCode/SaveBarCode_NoGenerate", { |
| | | msg: sMainSub, |
| | | CampanyName: CampanyName |
| | | }, |
| | | (res) => { |
| | | console.log(res) |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count > 0) { |
| | | this.buttonStatus = { |
| | | btn1: false, |
| | | btn2: true |
| | | } |
| | | this.generatedBarCode = data[0]['条码编号'] |
| | | console.log(this.generatedBarCode) |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } else { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | }, |
| | | (err) => { |
| | | // } |
| | | // ) |
| | | this.barCodeEntryHandler(ret.resp_result) |
| | | } |
| | | |
| | | }, |
| | | "POST" |
| | | ) |
| | | }, |
| | | exit() { |
| | | uni.navigateBack() |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | GenereateBarCode() { |
| | | let HBarCodeNoStr = |
| | | `${this.lailiaoInfo.HBillNo}@${this.lailiaoInfo.HBillLineNo}@${this.lailiaoInfo.HMaterNumber || ''}@${this.lailiaoInfo.HMTONo || ''}@${this.lailiaoInfo.HQty || ''}@${this.lailiaoInfo.HSupID || ''}` |
| | | let sMain = [] |
| | | sMain[0] = this.lailiaoInfo |
| | | let sMainStr = JSON.stringify(sMain); |
| | | //获取选择的组织 |
| | | let HOrgType = uni.getStorageSync('Organization'); |
| | | //获取选择的工厂代码 |
| | | let CampanyName = "xxx"; |
| | | //获取选择的源单类型 |
| | | let HSourceBillType = "采购订单"; |
| | | //获取选择的条码类型 |
| | | let HSelectBarCodeType = "品种条码"; |
| | | //获取当前登录人员 |
| | | let UserName = uni.getStorageSync('HUserName'); |
| | | let sMainSub = sMainStr + ';' + HOrgType + ';' + HSourceBillType + ';' + HSelectBarCodeType + ';' + |
| | | CampanyName + ';' + UserName + ';' + HBarCodeNoStr; |
| | | |
| | | CommonUtils.doRequest( |
| | | "/Sc_BarCode/SaveBarCode_NoGenerate", { |
| | | msg: sMainSub, |
| | | CampanyName: CampanyName |
| | | }, |
| | | (res) => { |
| | | console.log(res) |
| | | let { |
| | | data, |
| | | count, |
| | | Message |
| | | } = res.data |
| | | if (count > 0) { |
| | | // this.generatedBarCode = data[0]['条码编号']/ |
| | | // console.log(this.generatedBarCode) |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | this.buttonStatus = { |
| | | btn1: true, |
| | | btn2: true |
| | | } |
| | | } else { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: Message |
| | | }) |
| | | } |
| | | }, |
| | | (err) => { |
| | | uni.showToast({ |
| | | icon: 'none', |
| | | title: err |
| | | }) |
| | | }, |
| | | "POST" |
| | | ) |
| | | }, |
| | | exit() { |
| | | uni.navigateBack() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | * { |
| | | box-sizing: border-box; |
| | | } |
| | | * { |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | input { |
| | | padding: 8rpx 20rpx; |
| | | font-size: 30rpx; |
| | | line-height: 30rpx; |
| | | } |
| | | input { |
| | | padding: 8rpx 20rpx; |
| | | font-size: 30rpx; |
| | | line-height: 30rpx; |
| | | } |
| | | |
| | | .uni-input-input[disabled] { |
| | | background-color: #e4e4e4; |
| | | } |
| | | .uni-input-input[disabled] { |
| | | background-color: #e4e4e4; |
| | | } |
| | | |
| | | .container { |
| | | display: flex; |
| | | flex-direction: column; |
| | | height: 100vh; |
| | | padding: 20rpx 0; |
| | | .container { |
| | | display: flex; |
| | | flex-direction: column; |
| | | height: 100vh; |
| | | padding: 20rpx 0; |
| | | |
| | | .content { |
| | | flex: 1; |
| | | background-image: url('/static/svgs/folder_bg.svg'); |
| | | background-size: cover; |
| | | padding: 20rpx; |
| | | .content { |
| | | flex: 1; |
| | | background-image: url('/static/svgs/folder_bg.svg'); |
| | | background-size: cover; |
| | | padding: 20rpx; |
| | | |
| | | .header { |
| | | font-size: 30rpx; |
| | | } |
| | | .header { |
| | | font-size: 30rpx; |
| | | } |
| | | |
| | | .items { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 10rpx; |
| | | padding: 40rpx 0rpx; |
| | | .items { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 10rpx; |
| | | padding: 40rpx 0rpx; |
| | | |
| | | .item { |
| | | display: flex; |
| | | flex-direction: row; |
| | | padding: 0 10rpx; |
| | | gap: 20rpx; |
| | | font-size: 30rpx; |
| | | // height: 1.5rem; |
| | | // justify-content: center; |
| | | align-items: center; |
| | | .item { |
| | | display: flex; |
| | | flex-direction: row; |
| | | padding: 0 10rpx; |
| | | gap: 20rpx; |
| | | font-size: 30rpx; |
| | | // height: 1.5rem; |
| | | // justify-content: center; |
| | | align-items: center; |
| | | |
| | | .left { |
| | | text-align: left; |
| | | width: 6rem; |
| | | } |
| | | .left { |
| | | text-align: left; |
| | | width: 6rem; |
| | | } |
| | | |
| | | .right { |
| | | flex: 1; |
| | | height: 100%; |
| | | padding: 6rpx 0; |
| | | border-radius: 22rpx; |
| | | border: 1px solid #e4e4e4; |
| | | background-color: #e4e4e4; |
| | | .right { |
| | | flex: 1; |
| | | height: 100%; |
| | | padding: 6rpx 0; |
| | | border-radius: 22rpx; |
| | | border: 1px solid #e4e4e4; |
| | | background-color: #e4e4e4; |
| | | |
| | | >input { |
| | | height: auto; |
| | | } |
| | | >input { |
| | | height: auto; |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | .barcode { |
| | | background-color: #fff !important; |
| | | } |
| | | .barcode { |
| | | background-color: #fff !important; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .operation-zone { |
| | | height: 3rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | gap: 30rpx; |
| | | padding: 20rpx; |
| | | .operation-zone { |
| | | height: 3rem; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | gap: 30rpx; |
| | | padding: 20rpx; |
| | | |
| | | >view { |
| | | flex: 1; |
| | | } |
| | | >view { |
| | | flex: 1; |
| | | } |
| | | |
| | | >button { |
| | | width: 4rem; |
| | | padding: 0; |
| | | font-size: 25rpx; |
| | | border-radius: 50rpx; |
| | | line-height: 66rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | >button { |
| | | width: 4rem; |
| | | padding: 0; |
| | | font-size: 25rpx; |
| | | border-radius: 50rpx; |
| | | line-height: 66rpx; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | | >button[disabled] { |
| | | background-color: #acacac; |
| | | color: #fff; |
| | | } |
| | | >button[disabled] { |
| | | background-color: #acacac; |
| | | color: #fff; |
| | | } |
| | | |
| | | .btn-a { |
| | | background-color: #acacac; |
| | | color: #fff; |
| | | } |
| | | .btn-a { |
| | | background-color: #acacac; |
| | | color: #fff; |
| | | } |
| | | |
| | | .btn-b { |
| | | background-color: #41a863; |
| | | color: #fff; |
| | | } |
| | | .btn-b { |
| | | background-color: #41a863; |
| | | color: #fff; |
| | | } |
| | | |
| | | .btn-c { |
| | | background-color: #3a78ff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | .btn-c { |
| | | background-color: #3a78ff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | class commonUtils { |
| | | serverUrl |
| | | serverUrl |
| | | |
| | | constructor() { |
| | | this.serverUrl = uni.getStorageSync('serverUrl') || 'http://47.96.97.237/API'; |
| | | } |
| | | constructor() { |
| | | this.serverUrl = uni.getStorageSync('serverUrl') || 'http://47.96.97.237/API/'; |
| | | } |
| | | |
| | | // 防抖函数 |
| | | debounce(func, delay, immediate = false) { |
| | | let timer = null; |
| | | return function() { |
| | | const context = this; |
| | | const args = arguments; |
| | | setServerUrl(url) { |
| | | this.serverUrl = url |
| | | } |
| | | |
| | | const callNow = immediate && !timer; |
| | | // 如果定时器已经存在,清除它 |
| | | if (timer) { |
| | | clearTimeout(timer); |
| | | } |
| | | // 防抖函数 |
| | | debounce(func, delay, immediate = false) { |
| | | let timer = null; |
| | | return function() { |
| | | const context = this; |
| | | const args = arguments; |
| | | |
| | | // 设置一个新的定时器 |
| | | timer = setTimeout(() => { |
| | | if (!immediate) { |
| | | func.apply(context, args); |
| | | } |
| | | timer = null; |
| | | }, delay); |
| | | const callNow = immediate && !timer; |
| | | // 如果定时器已经存在,清除它 |
| | | if (timer) { |
| | | clearTimeout(timer); |
| | | } |
| | | |
| | | // 配置立即执行 |
| | | if (callNow == true) { |
| | | func.apply(context, args) |
| | | } |
| | | }; |
| | | } |
| | | // 设置一个新的定时器 |
| | | timer = setTimeout(() => { |
| | | if (!immediate) { |
| | | func.apply(context, args); |
| | | } |
| | | timer = null; |
| | | }, delay); |
| | | |
| | | // 判空函数 |
| | | isEmpty(value, zeroIsEmpty = false, falseIsEmpty = false) { |
| | | let val = value |
| | | // 检查是否为null 或者 undefind |
| | | if (val === null || val === undefined) { |
| | | return true; |
| | | } |
| | | //如果字符串全部是由数字构成的,则转化为数字型 |
| | | if (this.isAllDigits(val) === true) { |
| | | val = Number(val) |
| | | } |
| | | // 配置立即执行 |
| | | if (callNow == true) { |
| | | func.apply(context, args) |
| | | } |
| | | }; |
| | | } |
| | | |
| | | // 是否是字符串类型 |
| | | if (typeof val === 'string') { |
| | | return val.trim().length === 0; |
| | | } |
| | | // 判空函数 |
| | | isEmpty(value, zeroIsEmpty = false, falseIsEmpty = false) { |
| | | let val = value |
| | | // 检查是否为null 或者 undefind |
| | | if (val === null || val === undefined) { |
| | | return true; |
| | | } |
| | | //如果字符串全部是由数字构成的,则转化为数字型 |
| | | if (this.isAllDigits(val) === true) { |
| | | val = Number(val) |
| | | } |
| | | |
| | | // 是否是数组 |
| | | if (Array.isArray(val)) { |
| | | return val.length === 0; |
| | | } |
| | | // 是否是字符串类型 |
| | | if (typeof val === 'string') { |
| | | return val.trim().length === 0; |
| | | } |
| | | |
| | | //是否是对象 |
| | | if (typeof val === 'object') { |
| | | return Object.keys(val).length === 0; |
| | | } |
| | | // 是否是数组 |
| | | if (Array.isArray(val)) { |
| | | return val.length === 0; |
| | | } |
| | | |
| | | // 数字类型默认不为空 |
| | | if (typeof val === 'number') { |
| | | // 数字为0视为空 |
| | | if (zeroIsEmpty == true) { |
| | | if (val === 0) { |
| | | return true |
| | | } |
| | | } |
| | | return false |
| | | } |
| | | //是否是对象 |
| | | if (typeof val === 'object') { |
| | | return Object.keys(val).length === 0; |
| | | } |
| | | |
| | | // 布尔类型默认不为空 |
| | | if (typeof val === 'boolean') { |
| | | // false值视为空 |
| | | if (falseIsEmpty == true) { |
| | | if (val === 0) { |
| | | return true |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | | // 数字类型默认不为空 |
| | | if (typeof val === 'number') { |
| | | // 数字为0视为空 |
| | | if (zeroIsEmpty == true) { |
| | | if (val === 0) { |
| | | return true |
| | | } |
| | | } |
| | | return false |
| | | } |
| | | |
| | | // 判断是否全是数字 |
| | | isAllDigits(str) { |
| | | return /^\d+$/.test(str); |
| | | } |
| | | // 布尔类型默认不为空 |
| | | if (typeof val === 'boolean') { |
| | | // false值视为空 |
| | | if (falseIsEmpty == true) { |
| | | if (val === 0) { |
| | | return true |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | isJson(str) { |
| | | try { |
| | | JSON.parse(str) |
| | | return true |
| | | } catch { |
| | | return false |
| | | } |
| | | } |
| | | // 判断是否全是数字 |
| | | isAllDigits(str) { |
| | | return /^\d+$/.test(str); |
| | | } |
| | | |
| | | timeClock(callback, delay) { |
| | | let timeoutId; |
| | | let isRunning = false; |
| | | isJson(str) { |
| | | try { |
| | | JSON.parse(str) |
| | | return true |
| | | } catch { |
| | | return false |
| | | } |
| | | } |
| | | |
| | | function interval() { |
| | | timeoutId = setTimeout(() => { |
| | | callback(); |
| | | clearTimeout(timeoutId); // 立即清除当前定时器ID |
| | | if (isRunning) { |
| | | interval(); |
| | | } |
| | | }, delay); |
| | | } |
| | | timeClock(callback, delay) { |
| | | let timeoutId; |
| | | let isRunning = false; |
| | | |
| | | return { |
| | | start() { |
| | | if (!isRunning) { |
| | | isRunning = true; |
| | | interval(); |
| | | } |
| | | }, |
| | | stop() { |
| | | if (isRunning) { |
| | | isRunning = false; |
| | | clearTimeout(timeoutId); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | function interval() { |
| | | timeoutId = setTimeout(() => { |
| | | callback(); |
| | | clearTimeout(timeoutId); // 立即清除当前定时器ID |
| | | if (isRunning) { |
| | | interval(); |
| | | } |
| | | }, delay); |
| | | } |
| | | |
| | | deepClone(target, map = new WeakMap()) { |
| | | // 处理原始值和函数(typeof 数组会返回object) |
| | | if (typeof target !== 'object' || target === null) { |
| | | return target; |
| | | } |
| | | return { |
| | | start() { |
| | | if (!isRunning) { |
| | | isRunning = true; |
| | | interval(); |
| | | } |
| | | }, |
| | | stop() { |
| | | if (isRunning) { |
| | | isRunning = false; |
| | | clearTimeout(timeoutId); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | // 处理循环引用 |
| | | if (map.has(target)) { |
| | | return map.get(target); |
| | | } |
| | | deepClone(target, map = new WeakMap()) { |
| | | // 处理原始值和函数(typeof 数组会返回object) |
| | | if (typeof target !== 'object' || target === null) { |
| | | return target; |
| | | } |
| | | |
| | | let clone; |
| | | // 处理循环引用 |
| | | if (map.has(target)) { |
| | | return map.get(target); |
| | | } |
| | | |
| | | // 处理数组 |
| | | if (Array.isArray(target)) { |
| | | clone = []; |
| | | map.set(target, clone); |
| | | target.forEach((item, index) => { |
| | | clone[index] = deepClone(item, map); |
| | | }); |
| | | return clone; |
| | | } |
| | | let clone; |
| | | |
| | | // 处理日期对象 |
| | | if (target instanceof Date) { |
| | | clone = new Date(target.getTime()); |
| | | map.set(target, clone); |
| | | return clone; |
| | | } |
| | | // 处理数组 |
| | | if (Array.isArray(target)) { |
| | | clone = []; |
| | | map.set(target, clone); |
| | | target.forEach((item, index) => { |
| | | clone[index] = deepClone(item, map); |
| | | }); |
| | | return clone; |
| | | } |
| | | |
| | | // 处理正则表达式 |
| | | if (target instanceof RegExp) { |
| | | clone = new RegExp(target); |
| | | map.set(target, clone); |
| | | return clone; |
| | | } |
| | | // 处理日期对象 |
| | | if (target instanceof Date) { |
| | | clone = new Date(target.getTime()); |
| | | map.set(target, clone); |
| | | return clone; |
| | | } |
| | | |
| | | // 处理函数 (直接使用函数的引用) |
| | | if (typeof target === 'function') { |
| | | return target; |
| | | } |
| | | // 处理正则表达式 |
| | | if (target instanceof RegExp) { |
| | | clone = new RegExp(target); |
| | | map.set(target, clone); |
| | | return clone; |
| | | } |
| | | |
| | | // 处理其他对象(普通对象、类实例等) |
| | | clone = Object.create(Object.getPrototypeOf(target)); |
| | | map.set(target, clone); |
| | | // 处理函数 (直接使用函数的引用) |
| | | if (typeof target === 'function') { |
| | | return target; |
| | | } |
| | | |
| | | // 获取所有属性(包括 Symbol 类型) |
| | | const allKeys = [...Object.getOwnPropertyNames(target), ...Object.getOwnPropertySymbols(target)]; |
| | | // 处理其他对象(普通对象、类实例等) |
| | | clone = Object.create(Object.getPrototypeOf(target)); |
| | | map.set(target, clone); |
| | | |
| | | allKeys.forEach(key => { |
| | | const descriptor = Object.getOwnPropertyDescriptor(target, key); |
| | | if (descriptor && descriptor.enumerable) { |
| | | // 递归复制属性值 |
| | | clone[key] = deepClone(target[key], map); |
| | | } |
| | | }); |
| | | // 获取所有属性(包括 Symbol 类型) |
| | | const allKeys = [...Object.getOwnPropertyNames(target), ...Object.getOwnPropertySymbols(target)]; |
| | | |
| | | return clone; |
| | | } |
| | | allKeys.forEach(key => { |
| | | const descriptor = Object.getOwnPropertyDescriptor(target, key); |
| | | if (descriptor && descriptor.enumerable) { |
| | | // 递归复制属性值 |
| | | clone[key] = deepClone(target[key], map); |
| | | } |
| | | }); |
| | | |
| | | // uni-app 使用 封装请求函数 使用传统函数当作回调需要传that,箭头函数不需要 |
| | | doRequest(url, data, resFunction, errFunction, method, that) { |
| | | that = that || this; |
| | | let errorTip = null; |
| | | uni.showLoading({ |
| | | title: '加载中...' |
| | | }) |
| | | uni.request({ |
| | | method: method || "GET", |
| | | url: this.serverUrl + url, |
| | | data: data || "", |
| | | success: (res) => { |
| | | if (typeof resFunction === 'function') { |
| | | resFunction.call(that, res) |
| | | } else if (typeof errFunction === 'undefined' || errFunction === null) { |
| | | return |
| | | } else { |
| | | throw new TypeError("访问成功回调函数类型不为函数或者空!") |
| | | } |
| | | }, |
| | | fail: (err) => { |
| | | console.error(err) |
| | | errorTip = () => { |
| | | uni.showToast({ |
| | | icon: "none", |
| | | title: err.errMsg || err.data.message || "接口异常!", |
| | | duration: 2000 |
| | | }) |
| | | } |
| | | if (typeof errFunction === 'function') { |
| | | errFunction.call(that, err) |
| | | } else if (typeof errFunction === 'undefined' || errFunction === null) { |
| | | return |
| | | } else { |
| | | throw new TypeError("访问失败回调函数类型不为函数或者空!") |
| | | } |
| | | return clone; |
| | | } |
| | | |
| | | }, |
| | | complete() { |
| | | setTimeout(() => { |
| | | uni.hideLoading() |
| | | if (errorTip != null) { |
| | | errorTip() |
| | | } |
| | | }, 1000) |
| | | } |
| | | }) |
| | | } |
| | | // uni-app 使用 封装请求函数 使用传统函数当作回调需要传that,箭头函数不需要 |
| | | doRequest(url, data, resFunction, errFunction, method, that) { |
| | | that = that || this; |
| | | let errorTip = null; |
| | | uni.showLoading({ |
| | | title: '加载中...' |
| | | }) |
| | | uni.request({ |
| | | method: method || "GET", |
| | | url: this.serverUrl + url, |
| | | data: data || "", |
| | | success: (res) => { |
| | | if (typeof resFunction === 'function') { |
| | | resFunction.call(that, res) |
| | | } else if (typeof errFunction === 'undefined' || errFunction === null) { |
| | | return |
| | | } else { |
| | | throw new TypeError("访问成功回调函数类型不为函数或者空!") |
| | | } |
| | | }, |
| | | fail: (err) => { |
| | | console.error(err) |
| | | errorTip = () => { |
| | | uni.showToast({ |
| | | icon: "none", |
| | | title: err.errMsg || err.data.message || "接口异常!", |
| | | duration: 2000 |
| | | }) |
| | | } |
| | | if (typeof errFunction === 'function') { |
| | | errFunction.call(that, err) |
| | | } else if (typeof errFunction === 'undefined' || errFunction === null) { |
| | | return |
| | | } else { |
| | | throw new TypeError("访问失败回调函数类型不为函数或者空!") |
| | | } |
| | | |
| | | // uni-app 播放音频封装 |
| | | playSound(e) { |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | if (e == 1) { |
| | | innerAudioContext.src = '/static/success.wav'; |
| | | } else { |
| | | innerAudioContext.src = '/static/jingbao.wav'; |
| | | } |
| | | innerAudioContext.play(); // 播放音频 |
| | | } |
| | | }, |
| | | complete() { |
| | | setTimeout(() => { |
| | | uni.hideLoading() |
| | | if (errorTip != null) { |
| | | errorTip() |
| | | } |
| | | }, 1000) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // uni-app 播放音频封装 |
| | | playSound(e) { |
| | | const innerAudioContext = uni.createInnerAudioContext(); |
| | | if (e == 1) { |
| | | innerAudioContext.src = '/static/success.wav'; |
| | | } else { |
| | | innerAudioContext.src = '/static/jingbao.wav'; |
| | | } |
| | | innerAudioContext.play(); // 播放音频 |
| | | } |
| | | } |
| | | |
| | | export const CommonUtils = Object.freeze(new commonUtils()); |
| | | export const CommonUtils = new commonUtils() |