chenhaozhe
2025-07-31 110b4b3e45617d7842a36983015cac3fb27ca61e
修复登录选择地址 修复条码打印模板
8个文件已修改
923 ■■■■■ 已修改文件
.hbuilderx/launch.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manifest.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/caigouruku/form.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/caigoutuiliao/form.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/index/login.vue 770 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/shengchanlingliaoshengdan/form.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tiaomadaying/tiaomadaying.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
uni_modules/uni-combox/components/uni-combox/uni-combox.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.hbuilderx/launch.json
@@ -21,8 +21,8 @@
            "type" : "uni-app:app-ios"
        },
        {
            "customPlaygroundType" : "device",
            "localRepoPath" : "D:/WorkBench/ZY_APP_Dev/STUWMS",
            "customPlaygroundType" : "local",
            "localRepoPath" : "D:/WorkBench/ZY_APP_Dev/STUWMS/unpackage/debug",
            "openVueDevtools" : true,
            "packageName" : "com.shebeiguanli.www",
            "playground" : "custom",
manifest.json
@@ -2,8 +2,8 @@
    "name" : "智云LMES",
    "appid" : "__UNI__B002F49",
    "description" : "",
    "versionName" : "1.0.30",
    "versionCode" : 130,
    "versionName" : "1.0.32",
    "versionCode" : 132,
    "transformPx" : false,
    /* 5+App特有相关 */
    "app-plus" : {
pages/caigouruku/form.vue
@@ -59,7 +59,8 @@
                <view class="form-item">
                    <view class="title">源单单号:</view>
                    <view class="right" v-show="showHSourceBillNo">
                        <uni-combox :isAutoFocus="true" ref="uniComboxSourceBill"
                        <uni-combox ref="uniComboxSourceBill"
                            :isFocus="HSourceBillNoFocus"
                            :confirm-call="onSourceBillBlurHandler" v-if="reHSourceBillNo"
                            :candidates="arrayHSourceBillNo" placeholder="请输入源单单号" v-model="hform.HSourceBillNo"
                            @input="HSourceBillNoChange"></uni-combox>
@@ -239,6 +240,7 @@
    export default {
        data() {
            return {
                HSourceBillNoFocus: false,
                barCodeFocus: false,
                userInfo: getUserInfo(),
                serverUrl: uni.getStorageSync('serverUrl') || 'http://47.96.97.237/API',
@@ -329,14 +331,28 @@
                this.barCodeFocus = true
            } else {
                this.getNewData()
                this.HSourceBillNoFocus = true
            }
            this.getHBaseList()
            this.getHSupList()
            this.getHEmpList()
            this.getHDeptList()
        },
        methods: {
            async refreshHSourceBillState(){
                this.HSourceBillNoFocus = false
                await this.$nextTick(() => {
                    this.HSourceBillNoFocus = true
                    this.hform.HBarCode = ""
                })
            },
            async refreshBarCodeState(){
                this.barCodeFocus = false
                await this.$nextTick(() => {
                    this.barCodeFocus = true
                    this.hform.HSourceBillNo = ""
                })
            },
            playSound(e) {
                const innerAudioContext = uni.createInnerAudioContext();
                if (e == 1) {
@@ -452,6 +468,7 @@
                let inputVal = this.$refs.uniComboxSourceBill.inputVal
                if (inputVal == '') {
                    CommonUtils.playSound(0)
                    this.refreshHSourceBillState()
                    return uni.showToast({
                        icon: 'none',
                        Message: '源单单号不得为空...'
@@ -771,8 +788,11 @@
                            this.tabs = 2
                            this.showHSupName = false
                            this.barCodeFocus = true
                            this.playSound(1)
                            this.DisBillEntryList()
                        } else {
                            this.refreshHSourceBillState()
                            this.playSound(0)
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
@@ -780,6 +800,8 @@
                        }
                    },
                    fail: (res) => {
                        this.refreshHSourceBillState()
                        this.playSound(0)
                        console.log(res);
                        uni.showToast({
                            title: '接口请求失败',
@@ -811,6 +833,7 @@
                if (HDeleteFlag == "*") {
                    if (sBarCode == "") {
                        this.playSound(0)
                        this.refreshBarCodeState()
                        uni.showToast({
                            title: '请输入要删除的条码',
                            icon: 'none'
@@ -832,6 +855,7 @@
                                    this.DisBillEntryList()
                                } else {
                                    this.playSound(0)
                                    this.refreshBarCodeState()
                                    uni.showToast({
                                        title: res.data.Message,
                                        icon: 'none'
@@ -840,6 +864,7 @@
                            },
                            fail: (res) => {
                                console.log(res);
                                this.refreshBarCodeState()
                                this.playSound(0)
                                uni.showToast({
                                    title: '接口请求失败',
@@ -965,6 +990,7 @@
                                this.hform.HQty = ''
                            } else {
                                this.playSound(0)
                                this.refreshBarCodeState()
                                uni.showToast({
                                    title: res.data.Message,
                                    icon: 'none'
@@ -973,6 +999,7 @@
                        },
                        fail: (res) => {
                            this.playSound(0)
                            this.refreshBarCodeState()
                            console.log(res);
                            uni.showToast({
                                title: '接口请求失败',
pages/caigoutuiliao/form.vue
@@ -60,7 +60,7 @@
                    <view class="title">源单单号:</view>
                    <view class="right" v-show="showHSourceBillNo">
                        <!-- <uni-combox v-if="reHSourceBillNo" :candidates="arrayHSourceBillNo" placeholder="请输入源单单号" v-model="hform.HSourceBillNo" @input="HSourceBillNoChange"></uni-combox> -->
                        <uni-combox :isAutoFocus="true" ref="uniComboxSourceBill" :blur-call="onSourceBillBlurHandler"
                        <uni-combox :isFocus="HSourceBillNoFocus" ref="uniComboxSourceBill" :confirm-call="onSourceBillBlurHandler"
                            v-if="reHSourceBillNo" :candidates="arrayHSourceBillNo" placeholder="请输入源单单号"
                            v-model="hform.HSourceBillNo" @input="HSourceBillNoChange"></uni-combox>
                    </view>
@@ -237,6 +237,9 @@
    export default {
        data() {
            return {
                HSourceBillNoFocus: false,
                barCodeFocus: false,
                userInfo: getUserInfo(),
                serverUrl: uni.getStorageSync('serverUrl') || 'http://47.96.97.237/API',
                HModName: 'Kf_POStockInBackBill_PDA',
@@ -324,8 +327,10 @@
                this.HInterID_Temp = e.HInterID
                // this.btnType = 1
                this.RoadBillMain(e.HInterID)
                this.barCodeFocus = true
            } else {
                this.getNewData()
                this.HSourceBillNoFocus = true
            }
            this.getHBaseList()
            this.getHSupList()
@@ -333,6 +338,21 @@
            this.getHDeptList()
        },
        methods: {
            async refreshHSourceBillState(){
                this.HSourceBillNoFocus = false
                await this.$nextTick(() => {
                    this.hform.HSourceBillNo = ""
                    this.HSourceBillNoFocus = true
                })
            },
            async refreshBarCodeState(){
                this.barCodeFocus = false
                await this.$nextTick(() => {
                    this.hform.HBarCode = ""
                    this.barCodeFocus = true
                })
            },
            playSound(e) {
                const innerAudioContext = uni.createInnerAudioContext();
                if (e == 1) {
@@ -764,6 +784,7 @@
                            this.DisBillEntryList()
                        } else {
                            CommonUtils.playSound(0)
                            this.refreshHSourceBillState()
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
@@ -772,6 +793,7 @@
                    },
                    fail: (res) => {
                        CommonUtils.playSound(0)
                        this.refreshHSourceBillState()
                        console.log(res);
                        uni.showToast({
                            title: '接口请求失败',
@@ -803,6 +825,7 @@
                if (HDeleteFlag == "*") {
                    if (sBarCode == "") {
                        this.playSound(0)
                        this.refreshBarCodeState()
                        uni.showToast({
                            title: '请扫描要删除的条码',
                            icon: 'none'
@@ -825,6 +848,7 @@
                                    this.DisBillEntryList()
                                } else {
                                    this.playSound(0)
                                    this.refreshBarCodeState()
                                    uni.showToast({
                                        title: res.data.Message,
                                        icon: 'none'
@@ -833,6 +857,7 @@
                            },
                            fail: (res) => {
                                this.playSound(0)
                                this.refreshBarCodeState()
                                console.log(res);
                                uni.showToast({
                                    title: '接口请求失败',
@@ -935,6 +960,7 @@
                                this.hform.HQty = ''
                            } else {
                                this.playSound(0)
                                this.refreshBarCodeState()
                                uni.showToast({
                                    title: res.data.Message,
                                    icon: 'none'
@@ -943,6 +969,7 @@
                        },
                        fail: (res) => {
                            this.playSound(0)
                            this.refreshBarCodeState()
                            console.log(res);
                            uni.showToast({
                                title: '接口请求失败',
pages/index/login.vue
@@ -1,348 +1,432 @@
<template>
    <view class="content">
        <image class="bg-img" src="../../static/login.jpg"></image>
        <view class="container">
            <view class="title">智云L-MES制造执行系统</view>
            <view class="box">
                <view class="logo">
                    <image src="../../static/logo.png" mode=""></image>
                </view>
                <view class="login">
<!--                     <view class="item">
                        <view class="left">当前帐套:</view>
                        <picker :range="arrayDataBases" :value="DataBases" @change="DataBasesChange">
                            <view class="right" style="display: flex;align-items: center;">
                                <input type="text" disabled v-model="DataBases" placeholder="请选择当前帐套">
                                <uni-icons type="forward" color="#808080" style="border-left: 1px solid #aaaaaa;padding: 0 8rpx;" size="18"></uni-icons>
                            </view>
                        </picker>
                    </view> -->
                    <view class="item">
                        <view class="left">当前组织:</view>
                        <picker :range="arrayOrganization" :value="Organization" @change="OrganizationChange">
                            <view class="right" style="display: flex;align-items: center;">
                                <input type="text" disabled v-model="Organization" placeholder="请选择当前组织">
                                <uni-icons type="forward" color="#808080" style="border-left: 1px solid #aaaaaa;padding: 0 8rpx;" size="18"></uni-icons>
                            </view>
                        </picker>
                    </view>
                    <view class="item">
                        <view class="left">用户名:</view>
                        <view class="right">
                            <input type="text" v-model="UserName">
                        </view>
                    </view>
                    <view class="item">
                        <view class="left">密  码:</view>
                        <view class="right">
                            <input type="password" v-model="PassWord">
                        </view>
                    </view>
<!--                     <view class="api">
                        当前服务器地址:{{serverUrl}}
                    </view>
                    <view class="apibtn" @tap="changeApi=true">修改服务器地址</view> -->
                </view>
            </view>
            <hFormAlert v-if="changeApi" placeholder="请输入服务器地址" @confirm="confirm" @cancel="cancel"></hFormAlert>
            <view class="btn" @tap="submit">登 录</view>
            <view class="btn apibtn" @tap="changeApi=true">服务器设置</view>
        </view>
    </view>
    <view class="content">
        <image class="bg-img" src="../../static/login.jpg"></image>
        <view class="container">
            <view class="title">智云L-MES制造执行系统</view>
            <view class="box">
                <view class="logo">
                    <image src="../../static/logo.png" mode=""></image>
                </view>
                <view class="login">
                    <!--                     <view class="item">
                        <view class="left">当前帐套:</view>
                        <picker :range="arrayDataBases" :value="DataBases" @change="DataBasesChange">
                            <view class="right" style="display: flex;align-items: center;">
                                <input type="text" disabled v-model="DataBases" placeholder="请选择当前帐套">
                                <uni-icons type="forward" color="#808080" style="border-left: 1px solid #aaaaaa;padding: 0 8rpx;" size="18"></uni-icons>
                            </view>
                        </picker>
                    </view> -->
                    <view class="item">
                        <view class="left">当前组织:</view>
                        <picker :range="arrayOrganization" :value="Organization" @change="OrganizationChange">
                            <view class="right" style="display: flex;align-items: center;">
                                <input type="text" disabled v-model="Organization" placeholder="请选择当前组织">
                                <uni-icons type="forward" color="#808080"
                                    style="border-left: 1px solid #aaaaaa;padding: 0 8rpx;" size="18"></uni-icons>
                            </view>
                        </picker>
                    </view>
                    <view class="item">
                        <view class="left">用户名:</view>
                        <view class="right">
                            <input type="text" v-model="UserName">
                        </view>
                    </view>
                    <view class="item">
                        <view class="left">密 码:</view>
                        <view class="right">
                            <input type="password" v-model="PassWord">
                        </view>
                    </view>
                    <!--                     <view class="api">
                        当前服务器地址:{{serverUrl}}
                    </view>
                    <view class="apibtn" @tap="changeApi=true">修改服务器地址</view> -->
                </view>
            </view>
            <!-- <hFormAlert v-if="changeApi" placeholder="请输入服务器地址" @confirm="confirm" @cancel="cancel"></hFormAlert> -->
            <uni-popup ref="popup" type="center">
                <uni-popup-dialog title="服务器设置" mode="input" @confirm="confirmHandler">
                    <view class="popup-content">
                        <picker class="pop-item" :range="arrayServerOrganization" :value="serverOrganization"
                            @change="serverOrganizationChange">
                            <view class="right" style="display: flex;align-items: center;">
                                <input type="text" disabled v-model="serverOrganization" placeholder="请选择当前组织">
                                <uni-icons type="forward" color="#808080"
                                    style="border-left: 1px solid #aaaaaa;padding: 0 8rpx;" size="18"></uni-icons>
                            </view>
                        </picker>
                        <view class="pop-item">
                            <input type="text" :value="serverUrlCache" placeholder="请输入服务器地址" />
                        </view>
                    </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';
    export default {
        components: {
            hFormAlert
        },
        data() {
            return {
                arrayDataBases:[],
                DataBases:'',
                arrayOrganization:[],
                Organization:'',
                HOrgNameList:[],
                HOrgName:'',
                UserName:'',//admin    001
                PassWord:'',//123456
                changeApi:false,
                serverUrl: uni.getStorageSync('serverUrl')||'http://47.96.97.237/API',
            }
        },
        onLoad() {
            var logindata = uni.getStorageSync('loginData')||''
            // console.log(logindata)
            if(logindata){
                logindata = JSON.parse(logindata)
                this.HOrgName = logindata.HOrgName
                this.Organization = logindata.Organization
                this.UserName = logindata.UserName
                this.PassWord = logindata.PassWord
            }
            this.getOrganization()
            // this.getDataBases()
        },
        methods: {
            async InitOrgination() {
                console.log("初始化组织")
                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)) {
                        this.Organization = org
                        this.HOrgName = orgName
                    }
                })
            },
            confirm(e) {
                console.log(e)
                uni.setStorageSync('serverUrl',e)
                this.serverUrl = e
                this.changeApi = false
                this.getOrganization()
            },
            cancel(){
                this.changeApi = false
            },
            getDataBases(){
                uni.request({
                    url: this.serverUrl + '/Web/GetDataBases',
                    success: (result) => {
                        console.log(result);
                        if (result.count == 1) {
                            for(var i=0;i<res.data.data.length;i++){
                                this.arrayDataBases[i] = result.data.data[i].name;
                            }
                        }
                        console.log(this.arrayDataBases);
                        this.$forceUpdate();
                    },
                    fail: (res) => {
                        console.log(res);
                    },
                });
            },
            DataBasesChange(e){
                console.log(e.detail.value)
                this.DataBases = this.arrayDataBases[e.detail.value]
                uni.setStorageSync('DataBases', this.DataBases);
            },
            getOrganization(){
                uni.request({
                    url: this.serverUrl + '/Web/GetOrganizations',
                    success: (res) => {
                        console.log(res.data.data);
                        for(var i=0;i<res.data.data.length;i++){
                            this.arrayOrganization[i] = res.data.data[i].Name
                            this.HOrgNameList[i] = res.data.data[i].ID
                        }
                        // this.Organization = res.data.data[0].Name
                        // this.HOrgName = res.data.data[0].ID
                        this.$forceUpdate();
                        this.InitOrgination()
                    },
                    fail: (res) => {
                        console.log(res);
                        uni.showToast({
                            title:'获取组织失败,请检查服务器地址',
                            icon:'none'
                        })
                    },
                });
            },
            OrganizationChange(e){
                // console.log(e.detail.value)
                this.Organization = this.arrayOrganization[e.detail.value]
                this.HOrgName = this.HOrgNameList[e.detail.value]
            },
            submit(){
                if(!this.Organization){
                    uni.showToast({
                        title:'请选择组织',
                        icon:'none'
                    })
                }else if(!this.UserName){
                    uni.showToast({
                        title:'请输入用户名',
                        icon:'none'
                    })
                }else if(!this.PassWord){
                    uni.showToast({
                        title:'请输入密码',
                        icon:'none'
                    })
                }else{
                    uni.showLoading({
                        title:'登录中...',
                        mask:true
                    })
                    var data = {
                        UserName: this.UserName,
                        PassWord: this.PassWord,
                        HOrgName: this.HOrgName,
                        Organization: this.Organization
                    }
                    uni.setStorageSync('loginData', JSON.stringify(data));
                    uni.request({
                        url: this.serverUrl + '/Web/GetUser',
                        method:'GET',
                        data:data,
                        success: (res) => {
                            console.log(res)
                            uni.hideLoading()
                            uni.showToast({
                                title:res.data.Message,
                                icon:'none'
                            })
                            if(res.data.count == 1){
                                setLoginData(data)
                                setUserInfo(res.data.data[0])
                                uni.setStorageSync('HUserName', res.data.data[0].Czymc);
                                uni.setStorageSync('HBillerID', res.data.data[0].HK3UserID);
                                uni.setStorageSync('SourceFlag', false);
                                uni.setStorageSync('login', "login");
                                uni.setStorageSync('Organization', this.Organization);
                                uni.setStorageSync('OrganizationID', this.HOrgName);
                                uni.reLaunch({
                                    url:'/pages/index/index'
                                })
                            }
                        },
                        fail: (res) => {
                            console.log(res);
                            uni.hideLoading()
                            uni.showToast({
                                title:'接口请求失败',
                                icon:'none'
                            })
                        },
                    });
                }
            }
        }
    }
    import {
        setLoginData,
        setUserInfo
    } from "@/utils/auth.js";
    import hFormAlert from '@/components/h-form-alert/h-form-alert.vue';
    export default {
        components: {
            hFormAlert
        },
        data() {
            return {
                arrayDataBases: [],
                DataBases: '',
                arrayServerOrganization: ["浙江智云迈思", "温州海诚"],
                arrayServerOrganizationValues: [
                    'http://47.96.97.237/API/',
                    'http://122.228.39.234:7177/API/'
                ],
                serverOrganization: '',
                arrayOrganization: [],
                Organization: '',
                HOrgNameList: [],
                HOrgName: '',
                UserName: '', //admin    001
                PassWord: '', //123456
                changeApi: false,
                serverUrl: uni.getStorageSync('serverUrl') || 'http://47.96.97.237/API',
                serverUrlCache: '',
            }
        },
        onLoad() {
            var logindata = uni.getStorageSync('loginData') || ''
            // console.log(logindata)
            if (logindata) {
                logindata = JSON.parse(logindata)
                this.HOrgName = logindata.HOrgName
                this.Organization = logindata.Organization
                this.UserName = logindata.UserName
                this.PassWord = logindata.PassWord
            }
            this.serverUrlCache = this.serverUrl
            console.log('this.serverUrlCache: ',this.serverUrlCache);
            let index = this.arrayServerOrganizationValues.findIndex((e) => {
                return e == this.serverUrlCache
            })
            if (index == -1) {
                index = 0
            }
            this.serverOrganization = this.arrayServerOrganization[index]
            this.getOrganization()
            this.getDataBases()
        },
        methods: {
            async InitOrgination() {
                console.log("初始化组织")
                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)) {
                        this.Organization = org
                        this.HOrgName = orgName
                    }
                })
            },
            confirm(e) {
                console.log(e)
                uni.setStorageSync('serverUrl', e)
                this.serverUrl = e
                this.changeApi = false
                this.getOrganization()
            },
            confirmHandler() {
                uni.setStorageSync('serverUrl', this.serverUrlCache)
                this.serverUrl = this.serverUrlCache
                // this.changeApi = false
                this.getOrganization()
            },
            cancel() {
                this.changeApi = false
            },
            openServerSettingHandler() {
                this.$refs.popup.open()
            },
            getDataBases() {
                uni.request({
                    url: this.serverUrl + '/Web/GetDataBases',
                    success: (result) => {
                        console.log(result);
                        if (result.count == 1) {
                            for (var i = 0; i < res.data.data.length; i++) {
                                this.arrayDataBases[i] = result.data.data[i].name;
                            }
                        }
                        console.log(this.arrayDataBases);
                        this.$forceUpdate();
                    },
                    fail: (res) => {
                        console.log(res);
                    },
                });
            },
            DataBasesChange(e) {
                console.log(e.detail.value)
                this.DataBases = this.arrayDataBases[e.detail.value]
                uni.setStorageSync('DataBases', this.DataBases);
            },
            getOrganization() {
                uni.request({
                    url: this.serverUrl + '/Web/GetOrganizations',
                    success: (res) => {
                        console.log(res.data.data);
                        for (var i = 0; i < res.data.data.length; i++) {
                            this.arrayOrganization[i] = res.data.data[i].Name
                            this.HOrgNameList[i] = res.data.data[i].ID
                        }
                        // this.Organization = res.data.data[0].Name
                        // this.HOrgName = res.data.data[0].ID
                        this.$forceUpdate();
                        this.InitOrgination()
                    },
                    fail: (res) => {
                        console.log(res);
                        uni.showToast({
                            title: '获取组织失败,请检查服务器地址',
                            icon: 'none'
                        })
                    },
                });
            },
            OrganizationChange(e) {
                // console.log(e.detail.value)
                this.Organization = this.arrayOrganization[e.detail.value]
                this.HOrgName = this.HOrgNameList[e.detail.value]
            },
            serverOrganizationChange(e) {
                // console.log(e.detail.value)
                let index = e.detail.value
                this.serverOrganization = this.arrayServerOrganization[index]
                this.serverUrlCache = this.arrayServerOrganizationValues[index]
            },
            submit() {
                if (!this.Organization) {
                    uni.showToast({
                        title: '请选择组织',
                        icon: 'none'
                    })
                } else if (!this.UserName) {
                    uni.showToast({
                        title: '请输入用户名',
                        icon: 'none'
                    })
                } else if (!this.PassWord) {
                    uni.showToast({
                        title: '请输入密码',
                        icon: 'none'
                    })
                } else {
                    uni.showLoading({
                        title: '登录中...',
                        mask: true
                    })
                    var data = {
                        UserName: this.UserName,
                        PassWord: this.PassWord,
                        HOrgName: this.HOrgName,
                        Organization: this.Organization
                    }
                    uni.setStorageSync('loginData', JSON.stringify(data));
                    uni.request({
                        url: this.serverUrl + '/Web/GetUser',
                        method: 'GET',
                        data: data,
                        success: (res) => {
                            console.log(res)
                            uni.hideLoading()
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
                            })
                            if (res.data.count == 1) {
                                setLoginData(data)
                                setUserInfo(res.data.data[0])
                                uni.setStorageSync('HUserName', res.data.data[0].Czymc);
                                uni.setStorageSync('HBillerID', res.data.data[0].HK3UserID);
                                uni.setStorageSync('SourceFlag', false);
                                uni.setStorageSync('login', "login");
                                uni.setStorageSync('Organization', this.Organization);
                                uni.setStorageSync('OrganizationID', this.HOrgName);
                                uni.reLaunch({
                                    url: '/pages/index/index'
                                })
                            }
                        },
                        fail: (res) => {
                            console.log(res);
                            uni.hideLoading()
                            uni.showToast({
                                title: '接口请求失败',
                                icon: 'none'
                            })
                        },
                    });
                }
            }
        }
    }
</script>
<style lang="scss" scoped>
.bg-img{
    position: fixed;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    z-index: -1;
}
.container{
    width: 100%;
    height: 100%;
    display: flex;
    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;
            padding: 10rpx;
            position: absolute;
            z-index: 9;
            background-color: rgba(255, 255, 255, 0.5);
            border-radius: 100%;
            image{
                width: 100%;
                height: 100%;
                border-radius: 100%;
                background-color: #f0f3f7;
            }
        }
        .login{
            width: 100%;
            height: 480rpx;
            position: absolute;
            top: 90rpx;
            z-index: 0;
            background: #FFFFFF;
            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;
                        font-size: 30rpx;
                    }
                }
            }
            // .api{
            //     margin-left: 30rpx;
            //     font-size: 27rpx;
            //     color: #888;
            // }
            // .apibtn{
            //     text-align: center;
            //     font-size: 27rpx;
            //     margin-top: 14rpx;
            //     color: #066fb8;
            //     text-decoration: underline; /* 添加下划线 */
            //     font-style: italic; /* 将字体变为斜体 */
            // }
        }
    }
    .btn{
        width: 540rpx;
        height: 92rpx;
        line-height: 92rpx;
        margin-top: 940rpx;
        background: #78CEFD;
        box-shadow: 0rpx 0rpx 44rpx 7rpx rgba(120,206,253,0.3);
        border-radius: 10rpx;
        font-weight: 400;
        color: #FEFEFE;
        text-align: center;
        font-size: 36rpx;
    }
    .apibtn{
        margin-top: 50rpx;
        background: #eec18e;
        box-shadow: 0rpx 0rpx 44rpx 7rpx rgba(253, 186, 118, 0.3);
    }
}
</style>
    .bg-img {
        position: fixed;
        width: 100%;
        height: 100%;
        top: 0;
        left: 0;
        z-index: -1;
    }
    .container {
        width: 100%;
        height: 100%;
        display: flex;
        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;
                padding: 10rpx;
                position: absolute;
                z-index: 9;
                background-color: rgba(255, 255, 255, 0.5);
                border-radius: 100%;
                image {
                    width: 100%;
                    height: 100%;
                    border-radius: 100%;
                    background-color: #f0f3f7;
                }
            }
            .login {
                width: 100%;
                height: 480rpx;
                position: absolute;
                top: 90rpx;
                z-index: 0;
                background: #FFFFFF;
                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;
                            font-size: 30rpx;
                        }
                    }
                }
                // .api{
                //     margin-left: 30rpx;
                //     font-size: 27rpx;
                //     color: #888;
                // }
                // .apibtn{
                //     text-align: center;
                //     font-size: 27rpx;
                //     margin-top: 14rpx;
                //     color: #066fb8;
                //     text-decoration: underline; /* 添加下划线 */
                //     font-style: italic; /* 将字体变为斜体 */
                // }
            }
        }
        .btn {
            width: 540rpx;
            height: 92rpx;
            line-height: 92rpx;
            margin-top: 940rpx;
            background: #78CEFD;
            box-shadow: 0rpx 0rpx 44rpx 7rpx rgba(120, 206, 253, 0.3);
            border-radius: 10rpx;
            font-weight: 400;
            color: #FEFEFE;
            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;
        }
    }
</style>
pages/shengchanlingliaoshengdan/form.vue
@@ -64,7 +64,7 @@
                    <view class="right" v-show="showHSourceBillNo">
                        <!-- <uni-combox v-if="reHSourceBillNo" :candidates="arrayHSourceBillNo" placeholder="请输入源单单号"
                            v-model="hform.HSourceBillNo" @input="HSourceBillNoChange"></uni-combox> -->
                        <input auto-focus type="text" name="HSourceBillNo" v-model="hform.HSourceBillNo"
                        <input :focus="HSourceBillNoFocus" type="text" name="HSourceBillNo" v-model="hform.HSourceBillNo"
                            @confirm="onSourceBillBlurHandler" placeholder="请输入源单单号" />
                    </view>
@@ -333,6 +333,9 @@
                Materlist: [],
                FIFOlist: [],
                hform: {
                    HSourceBillNoFocus: false,
                    barCodeFocus: false,
                    HBillType: 1204,
                    HBillerID: uni.getStorageSync('HBillerID'),
                    HRedBlueFlag: false,
@@ -389,6 +392,7 @@
                this.barCodeFocus = true
            } else {
                this.getNewData()
                this.HSourceBillNoFocus = true
            }
            this.getHBaseList()
            this.getHSupList()
@@ -405,6 +409,21 @@
            uni.$off('BillSelectComplete')
        },
        methods: {
            async refreshHSourceBillState(){
                console.log('执行刷新单据状态函数');
                this.HSourceBillNoFocus = false
                await this.$nextTick(() => {
                    this.hform.HSourceBillNo = ""
                    this.HSourceBillNoFocus = true
                })
            },
            async refreshBarCodeState(){
                this.barCodeFocus = false
                await this.$nextTick(() => {
                    this.hform.HBarCode = ""
                    this.barCodeFocus = true
                })
            },
            onSourceBillBlurHandler() {
                if (CommonUtils.isEmpty(this.hform.HSourceBillNo) === true) {
                    return
@@ -863,6 +882,7 @@
                            this.DisBillEntryList()
                        } else {
                            this.playSound(0)
                            this.refreshHSourceBillState()
                            uni.showToast({
                                title: res.data.Message,
                                icon: 'none'
@@ -871,6 +891,7 @@
                    },
                    fail: (res) => {
                        this.playSound(0)
                        this.refreshHSourceBillState()
                        console.log(res);
                        uni.showToast({
                            title: '接口请求失败',
@@ -902,6 +923,7 @@
                if (HDeleteFlag == "*") {
                    if (sBarCode == "") {
                        this.playSound(0)
                        this.refreshBarCodeState()
                        uni.showToast({
                            title: '请扫描要删除的条码',
                            icon: 'none'
@@ -923,6 +945,7 @@
                                    this.DisBillEntryList()
                                } else {
                                    this.playSound(0)
                                    this.refreshBarCodeState()
                                    uni.showToast({
                                        title: res.data.Message,
                                        icon: 'none'
@@ -931,6 +954,7 @@
                            },
                            fail: (res) => {
                                this.playSound(0)
                                this.refreshBarCodeState()
                                console.log(res);
                                uni.showToast({
                                    title: '接口请求失败',
@@ -1041,6 +1065,7 @@
                                this.hform.HQty = ''
                            } else {
                                this.playSound(0)
                                this.refreshBarCodeState()
                                uni.showToast({
                                    title: res.data.Message,
                                    icon: 'none'
@@ -1049,6 +1074,7 @@
                        },
                        fail: (res) => {
                            this.playSound(0)
                            this.refreshBarCodeState()
                            console.log(res);
                            uni.showToast({
                                title: '接口请求失败',
pages/tiaomadaying/tiaomadaying.vue
@@ -298,27 +298,40 @@
                    this.printInfo = `! 0 200 200 400 1
PAGE-WIDTH 608
SETQRVER 3
B QR 440 30 M 4 U 6
B QR 470 30 M 4 U 5
LA,${this.lailiaoInfo.barCodeNo}
B QR 500 30 M 2 U 3
LA,${this.generatedBarCode}
ENDQR
T 24 0 30 30 供应商: ${this.lailiaoInfo.HSupName}
T 24 0 30 80 供应商料号:
T 24 0 30 130 物料编码: ${this.lailiaoInfo.HMaterName}
T 24 0 30 180 物料分组:
T 24 0 300 180 规格型号: ${this.lailiaoInfo.HMaterModel}
T 24 0 30 230 数量:  ${this.lailiaoInfo.HQty}
T 24 0 300 230 日期:
T 24 0 30 280 检验员:
T 24 0 300 280 计划跟踪号: ${this.lailiaoInfo.HMTONo || ''}
T 24 0 30 330 检验结果:
BOX 260 330 280 350 4
T 24 0 290 330 合格
BOX 360 330 380 350 4
T 24 0 390 330 不合格
BOX 480 330 500 350 4
T 24 0 510 330 特采
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 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)
FORM
PRINT`
uni_modules/uni-combox/components/uni-combox/uni-combox.vue
@@ -4,7 +4,7 @@
            <text>{{label}}</text>
        </view>
        <view class="uni-combox__input-box">
            <input :auto-focus="isAutoFocus" :blur-call="blurCall" class="uni-combox__input" type="text"
            <input :auto-focus="isAutoFocus" :focus="isFocus" :blur-call="blurCall" class="uni-combox__input" type="text"
                :placeholder="placeholder" placeholder-class="uni-combox__input-plac" v-model="inputVal"
                @input="onInput" @focus="onFocus" @blur="onBlur" @confirm="onConfirm" />
            <uni-icons :type="showSelector? 'top' : 'bottom'" size="14" color="#999" @click="onIconClick">
@@ -79,6 +79,10 @@
                type: Function,
                default: () => {}
            },
            isFocus: {
                type: Boolean,
                default: false
            },
            // #ifndef VUE3
            value: {
                type: [String, Number],