diff --git a/.env.development b/.env.development index 96e32fde..7bd45920 100644 --- a/.env.development +++ b/.env.development @@ -1,7 +1,7 @@ #VITE_BASE_URL=http://dev.ccwin-in.com:25300/api/admin-api #VITE_BASE_URL_IMAGE=http://dev.ccwin-in.com:25300/api/admin-api -VITE_BASE_URL=http://172.21.32.13:81/api/admin-api VITE_BASE_URL_IMAGE=http://172.21.32.13:81/admin-api +VITE_BASE_URL=http://172.22.32.9:81/api/admin-api VITE_BASE_URL_IMAGE=http://172.21.32.13:81/admin-api # 租户配置 VITE_TENANT='[{"text":"长春1379","value":1},{"text":"成都1397","value":2},{"text":"长春2379","value":3}]' # 是否是测试环境 diff --git a/.env.production b/.env.production index 1f71bb53..d98ea7b5 100644 --- a/.env.production +++ b/.env.production @@ -1,11 +1,11 @@ -VITE_BASE_URL=http://172.22.32.9:81/api/admin-api -VITE_BASE_URL_IMAGE=http://172.22.32.9:81/admin-api +VITE_BASE_URL=http://172.21.32.14:81/api/admin-api +VITE_BASE_URL_IMAGE=http://172.21.32.14:81/admin-api # 租户配置 -VITE_TENANT='[{"text":"成都1397","value":2},{"text":"长春2379","value":3}]' +VITE_TENANT='[{"text":"长春1379","value":1}]' # 是否是测试环境 VITE_isDevelopment=false # 积木报表请求路径 -VITE_JMREPORT_BASE_URL='http://172.22.32.9:90' +VITE_JMREPORT_BASE_URL='http://172.21.32.14:90' diff --git a/src/common/basic.js b/src/common/basic.js index f0f4ab1f..c9793c7b 100644 --- a/src/common/basic.js +++ b/src/common/basic.js @@ -732,22 +732,21 @@ export function getPackingNumberAndBatch(managementList, itemCode, packingNumber } // //提示是否消息 -// export function showConfirmMsg(content, callback) { -// uni.showModal({ -// title: '提示', -// cancelText: '否', -// confirmText: '是', -// content: content, -// success: function(res) { -// if (res.confirm) { -// callback(true); -// } else { -// callback(false); -// } -// }, -// }) -// scanErrorAudio(); -// } +export function showConfirmMsg(content, callback) { + uni.showModal({ + title: '提示', + cancelText: '否', + confirmText: '是', + content: content, + success: function(res) { + if (res.confirm) { + callback(true); + } else { + callback(false); + } + }, + }) +} export function compare(key) { return function(a, b) { diff --git a/src/main.js b/src/main.js index 2e583bc0..5bd28748 100644 --- a/src/main.js +++ b/src/main.js @@ -4,7 +4,6 @@ import './router/my_router.js'; //引入拦截 import VueClipboard from 'vue-clipboard2' //复制粘贴 import uView from './uni_modules/vk-uview-ui';// 引入 uView UI import comMessage from './mycomponents/common/comMessage.vue' -import comLoading from './mycomponents/common/comLoading.vue' // #ifndef VUE3 import Vue from 'vue' @@ -34,7 +33,6 @@ export function createApp() { app.use(VueClipboard) app.use(uView) app.component('comMessage', comMessage) - app.component('comLoading', comLoading) console.log("网络22请求") // startApp(app); diff --git a/src/manifest.json b/src/manifest.json index 059947f9..50308035 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,8 +2,8 @@ "name" : "wms", "appid" : "__UNI__C9CF4BF", "description" : "", - "versionName" : "1.0.13", - "versionCode" : 13, + "versionName" : "1.0.23", + "versionCode" : 23, "transformPx" : false, /* 5+App特有相关 */ "app-plus" : { diff --git a/src/mycomponents/scan/winComScanBalance.vue b/src/mycomponents/scan/winComScanBalance.vue index 612dd048..9023f7f6 100644 --- a/src/mycomponents/scan/winComScanBalance.vue +++ b/src/mycomponents/scan/winComScanBalance.vue @@ -149,7 +149,11 @@ "未查找到库存余额" this.showErrorMessage(hint) } else if (res.data.length == 1) { + result.balance = res.data[0] + if(result.label.packingNumber!=result.balance.packingNumber){ + result.balance.lableQty=result.label.qty + } this.$emit("getBalance", result) // this.closeScanPopup() } else { diff --git a/src/pages/fg/receiptByPlan.vue b/src/pages/fg/receiptByPlan.vue index 02409e35..a1d60e90 100644 --- a/src/pages/fg/receiptByPlan.vue +++ b/src/pages/fg/receiptByPlan.vue @@ -1,7 +1,36 @@ + \ No newline at end of file diff --git a/src/pages/repleinsh/record/directRepleinshRecord.vue b/src/pages/repleinsh/record/directRepleinshRecord.vue index db7adf2c..ff3fc5ce 100644 --- a/src/pages/repleinsh/record/directRepleinshRecord.vue +++ b/src/pages/repleinsh/record/directRepleinshRecord.vue @@ -238,6 +238,9 @@ newDetail.packingNumber =pack.number newDetail.packUnit =pack.packUnit; newDetail.packQty=pack.packQty; + if(balance.lableQty){ + newDetail.handleQty =balance.lableQty + } itemp.subList.push(newDetail); this.detailSource.push(itemp) this.itemCode = balance.itemCode; @@ -258,6 +261,9 @@ newDetail.packingNumber =pack.number newDetail.packUnit =pack.packUnit; newDetail.packQty=pack.packQty; + if(balance.lableQty){ + newDetail.handleQty =balance.lableQty + } item.subList.push(newDetail); this.scanPopupGetFocus() } else { diff --git a/src/uni_modules/wz-select-popup/changelog.md b/src/uni_modules/wz-select-popup/changelog.md new file mode 100644 index 00000000..8a5f41c0 --- /dev/null +++ b/src/uni_modules/wz-select-popup/changelog.md @@ -0,0 +1,8 @@ +## 1.0.11(2023-11-15) +reqFun只允许传入Promise +## 1.0.10(2023-11-13) +去除默认值 +## 1.0.1(2023-11-13) +更新插件依赖 +## 1.0.0(2023-11-13) +第一次发布 diff --git a/src/uni_modules/wz-select-popup/components/wz-select-popup/util/defaultConfig.js b/src/uni_modules/wz-select-popup/components/wz-select-popup/util/defaultConfig.js new file mode 100644 index 00000000..76b74eaf --- /dev/null +++ b/src/uni_modules/wz-select-popup/components/wz-select-popup/util/defaultConfig.js @@ -0,0 +1,22 @@ +export default { + mode: 'radio', //radio checkbox 单选、多选 + showType: 'text', //暂时不用 text image 纯文字、图文 + selected: '', //已选中的 + dataList: null, //如果dataList传入了数组则直接使用传入的数组渲染,无需再配置proxyConfig + proxyConfig: { //组件内部代理请求数据配置 + reqFun: Promise.resolve(), //请求方法 + localPaging: false //前端本地分页,如果使用的是dataList默认是本地分页 + }, + page: { //如果是组件内部代理请求会把page的值加入到请求参数里 + pageIndex: 1, //当前页 + pageSize: 20 //页大小 + }, + search: { + type: 'local', //搜索的类型,local本地搜索, remote向服务器请求。只有使用proxyConfig.reqFun请求才能配置为remote + }, + fields: { //显示的key,value + label: 'name', + value: 'code', + image: 'image', //暂时不用 + } +} \ No newline at end of file diff --git a/src/uni_modules/wz-select-popup/components/wz-select-popup/util/index.js b/src/uni_modules/wz-select-popup/components/wz-select-popup/util/index.js new file mode 100644 index 00000000..d10ab80c --- /dev/null +++ b/src/uni_modules/wz-select-popup/components/wz-select-popup/util/index.js @@ -0,0 +1,74 @@ +/**深度合并对象*/ +export const deepMerge = function(target = {}, source = {}) { + target = deepClone(target); //深度克隆 + if (typeof target !== 'object' || typeof source !== 'object') return false; //判断类型 + for (let prop in source) { + if (!source.hasOwnProperty(prop)) continue; //检测属性是否为对象的自有属性 + if (prop in target) { //prop 中是否有 target 属性 + if (typeof target[prop] !== 'object') { + target[prop] = source[prop]; + } else { + if (typeof source[prop] !== 'object') { + target[prop] = source[prop]; + } else { + if (target[prop].concat && source[prop].concat) { + target[prop] = target[prop].concat(source[prop]); //合并 + } else { + target[prop] = deepMerge(target[prop], source[prop]); //递归 + } + } + } + } else { + target[prop] = source[prop]; + } + } + return target; +} + +const isArray = function(arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; +} + +/**深度合并对象*/ +export const deepClone = function(obj) { + // 对常见的“非”值,直接返回原来值 + if ([null, undefined, NaN, false].includes(obj)) return obj; + if (typeof obj !== "object" && typeof obj !== 'function') { + //原始类型直接返回 + return obj; + } + let o = isArray(obj) ? [] : {}; + for (let i in obj) { + if (obj.hasOwnProperty(i)) { + o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i]; + } + } + return o; +}; + +let timeout = null +/** + * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数 + * + * @param {Function} func 要执行的回调函数 + * @param {Number} wait 延时的时间 + * @param {Boolean} immediate 是否立即执行 + * @return null + */ +export const debounce = function(func, wait = 500, immediate = false) { + // 清除定时器 + if (timeout !== null) clearTimeout(timeout) + // 立即执行,此类情况一般用不到 + if (immediate) { + const callNow = !timeout + timeout = setTimeout(() => { + timeout = null + }, wait) + if (callNow) typeof func === 'function' && func() + } else { + // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法 + timeout = setTimeout(() => { + typeof func === 'function' && func() + }, wait) + } +} \ No newline at end of file diff --git a/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-list.vue b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-list.vue new file mode 100644 index 00000000..fe1ae074 --- /dev/null +++ b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-list.vue @@ -0,0 +1,130 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-search.vue b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-search.vue new file mode 100644 index 00000000..6977a7fd --- /dev/null +++ b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-search.vue @@ -0,0 +1,90 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-select-popup.vue b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-select-popup.vue new file mode 100644 index 00000000..7e3b04f9 --- /dev/null +++ b/src/uni_modules/wz-select-popup/components/wz-select-popup/wz-select-popup.vue @@ -0,0 +1,357 @@ + + + + + \ No newline at end of file diff --git a/src/uni_modules/wz-select-popup/package.json b/src/uni_modules/wz-select-popup/package.json new file mode 100644 index 00000000..3176f71f --- /dev/null +++ b/src/uni_modules/wz-select-popup/package.json @@ -0,0 +1,82 @@ +{ + "id": "wz-select-popup", + "displayName": "popup弹窗选择器", + "version": "1.0.11", + "description": "popup弹窗选择器支持单选,多选,组件内部代理请求,自定义label,value显示,分页加载,", + "keywords": [ + "wz-select-popup" + ], + "repository": "", + "engines": { + "HBuilderX": "^3.96" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": ["uni-icons", "uni-popup"], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "u" + }, + "App": { + "app-vue": "y", + "app-nvue": "u", + "app-uvue": "n" + }, + "H5-mobile": { + "Safari": "u", + "Android Browser": "u", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "u" + }, + "H5-pc": { + "Chrome": "y", + "IE": "u", + "Edge": "y", + "Firefox": "u", + "Safari": "u" + }, + "小程序": { + "微信": "y", + "阿里": "u", + "百度": "u", + "字节跳动": "u", + "QQ": "u", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/wz-select-popup/readme.md b/src/uni_modules/wz-select-popup/readme.md new file mode 100644 index 00000000..0b6e839e --- /dev/null +++ b/src/uni_modules/wz-select-popup/readme.md @@ -0,0 +1,132 @@ +# wz-select-popup + +## 示例 + +```vue + + + + + +``` + +## 属性props + +| 属性 | 类型 | 默认值 | 说明 | +| ------- | ------ | ------ | ------------------------------------------------------------ | +| scrollH | String | 50vh | 滚动内容的高度,不包含搜索框和多选时的底部按钮栏。需要带单位 | + + +## 方法methods + +| 方法名 | 说明 | 参数 | +| ------ | -------- | ----------------------------- | +| open | 打开弹窗 | [configs](#open方法的configs) | +| close | 关闭弹窗 | | + +### open方法的configs + +| 参数名 | 说明 | 类型 | 默认值 | +| ----------- | ------------------------------------------------------------ | ------------- | -------------------------- | +| mode | 选择模式radio单选 ,checkbox多选 | String | radio | +| selected | 已选中的value, 单选传字符串,多选传数组 | String\|Array | [] | +| dataList | 传入了数组,则直接使用传入的数组渲染,无需再配置proxyConfig | Array | null | +| proxyConfig | 组件内部代理请求数据配置 | Object | [proxyConfig](#proxyConfig的属性) | +| search | 搜索配置 | Object | [search](#search的属性) | +| page | 分页配置,如果是组件内部代理请求会把page的值加入到proxyConfig.reqFun请求参数里 | Object | [page](#page的属性) | +| fields | 显示和取值的label,value | Object | [fields](#fields的属性) | + +#### proxyConfig的属性 + +| 参数名 | 说明 | 类型 | 默认值 | 返回值 | +| ----------- | --------------------------------------------------------- | ------- | ------------------- | --------------------------------------- | +| reqFun | 向服务器请求数据的Promise方法,会返回页码以及搜索框的value | Promise | Promise.resolve([]) | ({pageIndex, pageSize,searchValue})=>{} | +| localPaging | 是否本地分页 | Boolean | false | | + +#### search的属性 + +| 参数名 | 说明 | 类型 | 默认值 | +| ------ | ------------------------------------------------------------ | ------ | ------ | +| type | 搜索的类型,local本地搜索, remote向服务器请求。只有使用proxyConfig.reqFun请求才能配置为remote | String | local | + +#### page的属性 + +| 参数名 | 说明 | 类型 | 默认值 | +| --------- | ------ | ------ | ------ | +| pageIndex | 当前页 | Number | 1 | +| pageSize | 页大小 | Number | 20 | + +#### fields的属性 + +| 参数名 | 说明 | 类型 | 默认值 | +| ------ | ------------ | ------ | ------ | +| label | 显示的字段名 | String | name | +| value | 取值的字段名 | String | code | + +## 事件enevt + +| 名称 | 触发时机 | 返回值 | +| ------ | ------------------------------------------ | ------------------------------------------------------------ | +| select | 单选点击列表时触发,多选点击确定按钮时触发 | mode等于radio时:(mode, {check,name,code})=>{}
mode等于checkbox时:(mode, {names,values,origin})=>{} | +| close | popup关闭 | void |