剩余模块:生产入库,销售出库
This commit is contained in:
parent
14a5fa371b
commit
933ddab8f3
60
App.vue
60
App.vue
@ -1,5 +1,10 @@
|
||||
<script>
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import {
|
||||
useI18n
|
||||
} from 'vue-i18n'
|
||||
import {
|
||||
getAppVersion
|
||||
} from './common/request/api/api'
|
||||
export default {
|
||||
onLaunch: function() {
|
||||
console.log('App Launch')
|
||||
@ -28,24 +33,73 @@
|
||||
|
||||
},
|
||||
onShow: function() {
|
||||
//语言变更
|
||||
console.log('App Show')
|
||||
const getI18n = useI18n()
|
||||
const { t, locale } = getI18n
|
||||
const {
|
||||
t,
|
||||
locale
|
||||
} = getI18n
|
||||
if (!uni.getStorageSync('locale')) {
|
||||
locale.value = 'en'
|
||||
uni.setStorageSync('locale', locale.value)
|
||||
} else {
|
||||
locale.value = uni.getStorageSync('locale')
|
||||
}
|
||||
|
||||
//登录状态变更
|
||||
let tokenStr = ''
|
||||
tokenStr = uni.getStorageSync('TOKEN')
|
||||
console.log(tokenStr, '==================================================');
|
||||
if (tokenStr === '') {
|
||||
uni.reLaunch({
|
||||
url: '/pages/client/account/login',
|
||||
})
|
||||
}
|
||||
|
||||
//不要问我为什么这么写,但你先别觉得,去问客户
|
||||
const appVersion = '0.0.1' //珠海版本号
|
||||
const appTaiGuoVersion = '0.0.1' //泰国版本号
|
||||
|
||||
//版本信息获取以及更新
|
||||
getAppVersion().then(res => {
|
||||
console.log(res);
|
||||
let appLoginInfo = uni.getStorageSync('appLoginInfo')
|
||||
let patternId = appLoginInfo.organizationObj['FOrgOrgId.FNumber']
|
||||
var pages = getCurrentPages();
|
||||
var page = pages[pages.length - 1];
|
||||
var currentWebview = page.$getAppWebview();
|
||||
let pageUrl = '/uni_modules/uni-upgrade-center-app/pages/upgrade-popup'
|
||||
if (pageUrl.indexOf(currentWebview.__uniapp_route) == -1) {
|
||||
uni.setStorageSync('local_storage_key', res.data)
|
||||
if (Object.keys(appLoginInfo).length !== 0) {
|
||||
//珠海
|
||||
if (patternId === '101') {
|
||||
if (appVersion !== res.data.version) {
|
||||
uni.$u.route({
|
||||
url: pageUrl,
|
||||
params: {
|
||||
local_storage_key: 'local_storage_key',
|
||||
patternId: '101'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
//泰国
|
||||
if (patternId === '103') {
|
||||
if (appTaiGuoVersion !== res.data.taiGuoVersion) {
|
||||
uni.$u.route({
|
||||
url: pageUrl,
|
||||
params: {
|
||||
local_storage_key: 'local_storage_key',
|
||||
patternId: '103'
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
},
|
||||
onHide: function() {
|
||||
console.log('App Hide')
|
||||
|
||||
@ -3,110 +3,98 @@ import requst from "../request";
|
||||
* 登录
|
||||
*/
|
||||
//账号登录
|
||||
export const loginApp = async (data : object) => requst('/api/Account/login', 'post', { ...data })
|
||||
export const loginApp = async (data: object) => requst('/api/Account/login', 'post', {...data})
|
||||
//获取用户信息
|
||||
export const getDetails = async (data : object) => requst('/api/Account/getDetails', 'post', { ...data })
|
||||
export const getDetails = async (data: object) => requst('/api/Account/getDetails', 'post', {...data})
|
||||
//退出登录
|
||||
export const logout = async (data : object) => requst('/api/Account/logout', 'post', { ...data })
|
||||
|
||||
export const logout = async (data: object) => requst('/api/Account/logout', 'post', {...data})
|
||||
//获取采购收料单接口
|
||||
export const receiveBillView = async (data : object) => requst('/api/PUR_PurchaseOrder/View', 'get', { ...data })
|
||||
export const receiveBillList = async (data : object) => requst('/api/PUR_PurchaseOrder/List', 'get', { ...data })
|
||||
export const receiveBillPush = async (data : object) => requst('/api/PUR_PurchaseOrder/Push', 'post', { ...data })
|
||||
export const receiveBillScanData = async (data : object) => requst('/api/PUR_PurchaseOrder/ScanData', 'get', { ...data })
|
||||
|
||||
export const receiveBillView = async (data: object) => requst('/api/PUR_PurchaseOrder/View', 'get', {...data})
|
||||
export const receiveBillList = async (data: object) => requst('/api/PUR_PurchaseOrder/List', 'get', {...data})
|
||||
export const receiveBillPush = async (data: object) => requst('/api/PUR_PurchaseOrder/Push', 'post', {...data})
|
||||
export const receiveBillScanData = async (data: object) => requst('/api/PUR_PurchaseOrder/ScanData', 'get', {...data})
|
||||
//获取来料验证接口
|
||||
export const checkList = async (data : object) => requst('/api/PUR_ReceiveBill/CheckList', 'get', { ...data })
|
||||
export const PURReceiveBillView = async (data : object) => requst('/api/PUR_ReceiveBill/View', 'get', { ...data })
|
||||
export const PURReceiveBillList = async (data : object) => requst('/api/PUR_ReceiveBill/List', 'get', { ...data })
|
||||
export const PURReceiveBillScanData = async (data : object) => requst('/api/PUR_ReceiveBill/ScanData', 'get', { ...data })
|
||||
export const PURReceiveBillScanPush = async (data : object) => requst('/api/PUR_ReceiveBill/Push', 'post', { ...data })
|
||||
export const PURReceiveBillScanCheck = async (data : object) => requst('/api/PUR_ReceiveBill/Check', 'post', { ...data })
|
||||
|
||||
export const checkList = async (data: object) => requst('/api/PUR_ReceiveBill/CheckList', 'get', {...data})
|
||||
export const PURReceiveBillView = async (data: object) => requst('/api/PUR_ReceiveBill/View', 'get', {...data})
|
||||
export const PURReceiveBillList = async (data: object) => requst('/api/PUR_ReceiveBill/List', 'get', {...data})
|
||||
export const PURReceiveBillScanData = async (data: object) => requst('/api/PUR_ReceiveBill/ScanData', 'get', {...data})
|
||||
export const PURReceiveBillScanPush = async (data: object) => requst('/api/PUR_ReceiveBill/Push', 'post', {...data})
|
||||
export const PURReceiveBillScanCheck = async (data: object) => requst('/api/PUR_ReceiveBill/Check', 'post', {...data})
|
||||
//条码装箱单
|
||||
//列表
|
||||
export const BarcodePackBillList = async (data : object) => requst('/api/BarcodePackBill/List', 'get', { ...data })
|
||||
export const BarcodePackBillList = async (data: object) => requst('/api/BarcodePackBill/List', 'get', {...data})
|
||||
//扫描查询
|
||||
export const BarcodePackBillScanData = async (data : object) => requst('/api/BarcodePackBill/ScanData', 'get', { ...data })
|
||||
export const BarcodePackBillScanData = async (data: object) => requst('/api/BarcodePackBill/ScanData', 'get', {...data})
|
||||
//保存
|
||||
export const BarcodePackBillSave = async (data : object) => requst('/api/BarcodePackBill/Save', 'post', { ...data })
|
||||
|
||||
export const BarcodePackBillSave = async (data: object) => requst('/api/BarcodePackBill/Save', 'post', {...data})
|
||||
//生产发料 & 生产补料
|
||||
export const PRDPPBOMList = async (data : object) => requst('/api/PRD_PPBOM/List', 'get', { ...data })
|
||||
export const PRDPPBOMView = async (data : object) => requst('/api/PRD_PPBOM/View', 'get', { ...data })
|
||||
export const PRDPPBOMScanData = async (data : object) => requst('/api/PRD_PPBOM/ScanData', 'get', { ...data })
|
||||
export const PRDPPBOMPush = async (data : object) => requst('/api/PRD_PPBOM/Push', 'post', { ...data })
|
||||
|
||||
export const PRDPPBOMList = async (data: object) => requst('/api/PRD_PPBOM/List', 'get', {...data})
|
||||
export const PRDPPBOMView = async (data: object) => requst('/api/PRD_PPBOM/View', 'get', {...data})
|
||||
export const PRDPPBOMScanData = async (data: object) => requst('/api/PRD_PPBOM/ScanData', 'get', {...data})
|
||||
export const PRDPPBOMPush = async (data: object) => requst('/api/PRD_PPBOM/Push', 'post', {...data})
|
||||
//生产投产 & 生产汇报
|
||||
//投产查看
|
||||
export const PRD_MOViewIntoPro = async (data : object) => requst('/api/PRD_MO/ViewIntoPro', 'get', { ...data })
|
||||
export const PRD_MOViewIntoPro = async (data: object) => requst('/api/PRD_MO/ViewIntoPro', 'get', {...data})
|
||||
//投产进入
|
||||
export const PRD_MOEnterIntoPro = async (data : object) => requst('/api/PRD_MO/EnterIntoPro', 'get', { ...data })
|
||||
export const PRD_MOEnterIntoPro = async (data: object) => requst('/api/PRD_MO/EnterIntoPro', 'get', {...data})
|
||||
//保存修改
|
||||
export const PRD_MORPTSave = async (data : object) => requst('/api/PRD_MORPT/Save', 'post', { ...data })
|
||||
export const PRD_MORPTSave = async (data: object) => requst('/api/PRD_MORPT/Save', 'post', {...data})
|
||||
//投产下推
|
||||
export const PRD_MOPushIntoPro = async (data : object) => requst('/api/PRD_MO/PushIntoPro', 'post', { ...data })
|
||||
export const PRD_MOPushIntoPro = async (data: object) => requst('/api/PRD_MO/PushIntoPro', 'post', {...data})
|
||||
//查看
|
||||
export const PRD_MOView = async (data : object) => requst('/api/PRD_MO/View', 'get', { ...data })
|
||||
export const PRD_MOView = async (data: object) => requst('/api/PRD_MO/View', 'get', {...data})
|
||||
//汇报打印数据
|
||||
export const PRD_MORPTGetPrintData = async (data: object) => requst('/api/PRD_MORPT/GetPrintData', 'get', {...data})
|
||||
//成套领料查看
|
||||
export const WholeSetView = async (data:object) => requst('/api/PRD_MO/WholeSetView', 'get' ,{...data})
|
||||
export const WholeSetView = async (data: object) => requst('/api/PRD_MO/WholeSetView', 'get', {...data})
|
||||
//成套领料下推
|
||||
export const WholeSetPush = async (data : object) => requst('/api/PRD_PPBOM/WholeSetPush', 'post', { ...data })
|
||||
export const WholeSetPush = async (data: object) => requst('/api/PRD_PPBOM/WholeSetPush', 'post', {...data})
|
||||
//列表
|
||||
export const PRD_MOList = async (data : object) => requst('/api/PRD_MO/List', 'get', { ...data })
|
||||
export const PRD_MOList = async (data: object) => requst('/api/PRD_MO/List', 'get', {...data})
|
||||
//下推
|
||||
export const PRD_MOPush = async (data : object) => requst('/api/PRD_MO/Push', 'post', { ...data })
|
||||
export const PRD_MOPush = async (data: object) => requst('/api/PRD_MO/Push', 'post', {...data})
|
||||
//扫描
|
||||
export const PRD_MOScanData = async (data : object) => requst('/api/PRD_MO/ScanData', 'get', { ...data })
|
||||
|
||||
export const PRD_MOScanData = async (data: object) => requst('/api/PRD_MO/ScanData', 'get', {...data})
|
||||
//成套验证
|
||||
//列表
|
||||
export const PRD_PickMtrlList = async (data : object) => requst('/api/PRD_PickMtrl/List', 'get', { ...data })
|
||||
export const PRD_PickMtrlList = async (data: object) => requst('/api/PRD_PickMtrl/List', 'get', {...data})
|
||||
//查看
|
||||
export const PRD_PickMtrlView = async (data : object) => requst('/api/PRD_PickMtrl/View', 'get', { ...data })
|
||||
export const PRD_PickMtrlView = async (data: object) => requst('/api/PRD_PickMtrl/View', 'get', {...data})
|
||||
//扫描查询
|
||||
export const PRD_PickMtrlScanData = async (data : object) => requst('/api/PRD_PickMtrl/ScanData', 'get', { ...data })
|
||||
export const PRD_PickMtrlScanData = async (data: object) => requst('/api/PRD_PickMtrl/ScanData', 'get', {...data})
|
||||
//验证提交
|
||||
export const PRD_PickMtrlCheck = async (data : object) => requst('/api/PRD_PickMtrl/Check', 'post', { ...data })
|
||||
|
||||
export const PRD_PickMtrlCheck = async (data: object) => requst('/api/PRD_PickMtrl/Check', 'post', {...data})
|
||||
//生产入库
|
||||
export const PRD_MORPTList = async (data : object) => requst('/api/PRD_MORPT/List', 'get', { ...data })
|
||||
export const PRD_MORPTView = async (data : object) => requst('/api/PRD_MORPT/View', 'get', { ...data })
|
||||
|
||||
export const PRD_MORPTList = async (data: object) => requst('/api/PRD_MORPT/List', 'get', {...data})
|
||||
export const PRD_MORPTView = async (data: object) => requst('/api/PRD_MORPT/View', 'get', {...data})
|
||||
//入库扫描查询 && 生产装箱
|
||||
export const PRD_MORPTScanData = async (data : object) => requst('/api/PRD_MORPT/ScanData', 'get', { ...data })
|
||||
export const PRD_MORPTPush = async (data : object) => requst('/api/PRD_MORPT/Push', 'post', { ...data })
|
||||
|
||||
export const PRD_MORPTScanData = async (data: object) => requst('/api/PRD_MORPT/ScanData', 'get', {...data})
|
||||
export const PRD_MORPTPush = async (data: object) => requst('/api/PRD_MORPT/Push', 'post', {...data})
|
||||
//销售出库
|
||||
export const SAL_DELIVERYNOTICEList = async (data : object) => requst('/api/SAL_DELIVERYNOTICE/List', 'get', { ...data })
|
||||
export const SAL_DELIVERYNOTICEView = async (data : object) => requst('/api/SAL_DELIVERYNOTICE/View', 'get', { ...data })
|
||||
export const SAL_DELIVERYNOTICEScanData = async (data : object) => requst('/api/SAL_DELIVERYNOTICE/ScanData', 'get', { ...data })
|
||||
export const SAL_DELIVERYNOTICEPush = async (data : object) => requst('/api/SAL_DELIVERYNOTICE/Push', 'post', { ...data })
|
||||
|
||||
export const SAL_DELIVERYNOTICEList = async (data: object) => requst('/api/SAL_DELIVERYNOTICE/List', 'get', {...data})
|
||||
export const SAL_DELIVERYNOTICEView = async (data: object) => requst('/api/SAL_DELIVERYNOTICE/View', 'get', {...data})
|
||||
export const SAL_DELIVERYNOTICEScanData = async (data: object) => requst('/api/SAL_DELIVERYNOTICE/ScanData', 'get', {...data})
|
||||
export const SAL_DELIVERYNOTICEPush = async (data: object) => requst('/api/SAL_DELIVERYNOTICE/Push', 'post', {...data})
|
||||
//生产装箱
|
||||
export const PRD_MORPTPackView = async (data : object) => requst('/api/PRD_MORPT/PackView', 'get', { ...data })
|
||||
export const UHIK_BD_BarCodeMainFileSave = async (data : object) => requst('/api/UHIK_BD_BarCodeMainFile/Save', 'post', { ...data })
|
||||
|
||||
|
||||
export const PRD_MORPTPackView = async (data: object) => requst('/api/PRD_MORPT/PackView', 'get', {...data})
|
||||
export const getPrintData = async (data: object) => requst('/api/BarcodePackBill/GetPrintData', 'get', {...data})
|
||||
export const UHIK_BD_BarCodeMainFileSave = async (data: object) => requst('/api/UHIK_BD_BarCodeMainFile/Save', 'post', {...data})
|
||||
//仓库信息
|
||||
export const stockList = async (data : object) => requst('/api/Stock/List', 'get', { ...data })
|
||||
export const stockView = async (data : object) => requst('/api/Stock/View', 'get', { ...data })
|
||||
export const fStockFlexDetailList = async (data : object) => requst('/api/FStockFlexDetail/List', 'get', { ...data })
|
||||
|
||||
export const stockList = async (data: object) => requst('/api/Stock/List', 'get', {...data})
|
||||
export const stockView = async (data: object) => requst('/api/Stock/View', 'get', {...data})
|
||||
export const fStockFlexDetailList = async (data: object) => requst('/api/FStockFlexDetail/List', 'get', {...data})
|
||||
//扫描记录
|
||||
export const temporaryScanList = async (data : object) => requst('/api/TemporaryScan/List', 'get', { ...data })
|
||||
export const temporaryScanDraftSave = async (data : object) => requst('/api/TemporaryScan/DraftSave', 'post', { ...data })
|
||||
export const fStockFlexDetailDelete = async (data : object) => requst('/api/TemporaryScan/Delete', 'post', { ...data })
|
||||
export const fStockFlexDetailMultiDelete = async (data : object) => requst('/api/TemporaryScan/MultiDelete', 'post', { ...data })
|
||||
|
||||
|
||||
export const temporaryScanList = async (data: object) => requst('/api/TemporaryScan/List', 'get', {...data})
|
||||
export const temporaryScanDraftSave = async (data: object) => requst('/api/TemporaryScan/DraftSave', 'post', {...data})
|
||||
export const fStockFlexDetailDelete = async (data: object) => requst('/api/TemporaryScan/Delete', 'post', {...data})
|
||||
export const fStockFlexDetailMultiDelete = async (data: object) => requst('/api/TemporaryScan/MultiDelete', 'post', {...data})
|
||||
//版本信息处理
|
||||
export const version = () => requst('/util/versions/find/AppAppVersionsServiceOrder', 'get', {});
|
||||
|
||||
//组织列表
|
||||
export const ORGOrganizationsList = (data:object) => requst('/api/ORG_Organizations/List', 'get', {...data});
|
||||
|
||||
export const ORGOrganizationsList = (data: object) => requst('/api/ORG_Organizations/List', 'get', {...data});
|
||||
//获取账套数据中心
|
||||
export const getDataCenterList = (data:object) => requst('/api/Account/GetDataCenterList', 'post', {...data});
|
||||
export const getDataCenterList = (data: object) => requst('/api/Account/GetDataCenterList', 'post', {...data});
|
||||
//组织范围
|
||||
export const accountSearchOrg = (data:object) => requst('/api/Account/SearchOrg', 'post', {...data});
|
||||
export const accountSearchOrg = (data: object) => requst('/api/Account/SearchOrg', 'post', {...data});
|
||||
//获取版本
|
||||
export const getAppVersion = () => requst('https://maxcess.gatedge.cn:91/api/Admin/GlobalSwitch/GetAppVersion?key=A9E45EED-E6F2-4276-8554-AF3055CA0512', 'get', {});
|
||||
@ -5,25 +5,21 @@ let API_URL = '';
|
||||
// 开发环境
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
API_URL = '';
|
||||
// API_URL = 'https://jyptapp.com/prod-app';
|
||||
}
|
||||
// 生产环境
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
API_URL = '';
|
||||
// API_URL = 'https://jyptapp.com/prod-app';
|
||||
}
|
||||
// #endif
|
||||
|
||||
// #ifdef APP-PLUS
|
||||
// 开发环境
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
API_URL = 'http://58.252.252.77:5000';
|
||||
// API_URL = 'https://jyptapp.com/prod-app';
|
||||
API_URL = 'http://8.148.230.89:5000';
|
||||
}
|
||||
// 生产环境
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
API_URL = 'http://58.252.252.77:5000';
|
||||
// API_URL = 'https://jyptapp.com/prod-app';
|
||||
API_URL = 'http://8.148.230.89:5000';
|
||||
}
|
||||
// #endif
|
||||
|
||||
|
||||
@ -11,13 +11,26 @@ export default function requst(url : string, type : string, params : any, header
|
||||
// #endif
|
||||
console.log('检查URL' + env.API_URL + url,)
|
||||
console.log(params);
|
||||
var apiHeader = ''
|
||||
var headerObj = {}
|
||||
if(url.indexOf('http') !== -1){
|
||||
apiHeader = url
|
||||
headerObj = {}
|
||||
} else {
|
||||
apiHeader = env.API_URL + url
|
||||
headerObj = {
|
||||
Authorization: 'Bearer '+ uni.getStorageSync('TOKEN') || ''
|
||||
}
|
||||
}
|
||||
console.log(apiHeader);
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: env.API_URL + url,
|
||||
url: apiHeader,
|
||||
method: type,
|
||||
data: params,
|
||||
sslVerify:false,
|
||||
header: {
|
||||
Authorization: 'Bearer '+ uni.getStorageSync('TOKEN') || ''
|
||||
...headerObj
|
||||
},
|
||||
timeout: 5000,
|
||||
success(result : any) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<up-popup :show="state.show" @close="close" @open="open">
|
||||
<view class="input-box">
|
||||
<view class="input-box" v-if="screeningTypes('warehouseStr')">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('public.xzck')" border="none" clearable inputAlign="left"
|
||||
v-model="state.scanFrame.warehouseStr" confirmType="next" :disabled="true">
|
||||
@ -13,7 +13,7 @@
|
||||
</up-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="input-box">
|
||||
<view class="input-box" v-if="screeningTypes('locationStr')">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="state.NoLocationListText" border="none" clearable inputAlign="left"
|
||||
v-model="state.scanFrame.locationStr" confirmType="next" @change="locationChange">
|
||||
@ -26,7 +26,7 @@
|
||||
</up-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="input-box">
|
||||
<view class="input-box" v-if="screeningTypes('articlesStr')">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('public.qsrwlbmmessage')" border="none" clearable inputAlign="right"
|
||||
v-model="state.scanFrame.articlesStr" confirmType="next">
|
||||
@ -36,7 +36,7 @@
|
||||
</up-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="input-box">
|
||||
<view class="input-box" v-if="screeningTypes('quantityStr')">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('public.qsrsl')" border="none" clearable inputAlign="right"
|
||||
v-model="state.scanFrame.quantityStr" @change="quantityStrChangeFun">
|
||||
@ -46,10 +46,7 @@
|
||||
</up-input>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="warningsText" >
|
||||
默认值数量 {{ state.scanFrame.quantityStr }} 大于未扫数量 {{ state.receiveBillScanData.UnScanQty }} 请修改!
|
||||
</view> -->
|
||||
<view class="input-box">
|
||||
<view class="input-box" v-if="screeningTypes('batchNumberStr')">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="state.batchNumberStrPdr" border="none" clearable inputAlign="right"
|
||||
v-model="state.scanFrame.batchNumberStr" confirmType="next" :disabled="state.batchNumberStrState">
|
||||
@ -59,19 +56,9 @@
|
||||
</up-input>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input placeholder="请输入序列号" border="none" clearable inputAlign="right"
|
||||
v-model="state.scanFrame.sequenceStr" confirmType="next">
|
||||
<template #prefix>
|
||||
<view class="item-title">{{ t('public.xxh') }}</view>
|
||||
</template>
|
||||
</up-input>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="btnListSc">
|
||||
<up-button type="primary" :plain="true" text="取消" @click="() => {state.show = false}"></up-button>
|
||||
<up-button type="primary" text="确定" style="margin-left: 36rpx;" @click="confirmationFun"></up-button>
|
||||
<up-button type="primary" :plain="true" :text="t('index.qx')" @click="() => {state.show = false}"></up-button>
|
||||
<up-button type="primary" :text="t('index.qd')" style="margin-left: 36rpx;" @click="confirmationFun"></up-button>
|
||||
</view>
|
||||
<warehouse :show="state.warehouse" @warehouseClose="warehouseClosefun" @warehouseData="warehouseDataFun" />
|
||||
<location :show="state.location"
|
||||
@ -81,7 +68,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { reactive, nextTick, onMounted, ref, computed, defineEmits, watch, defineExpose } from 'vue';
|
||||
import { reactive, nextTick, onMounted, ref, computed, defineEmits, watch, defineExpose,defineProps } from 'vue';
|
||||
import { onLoad, onShow, onReachBottom, } from '@dcloudio/uni-app'
|
||||
import warehouse from '../warehouse/warehouse.vue'
|
||||
import location from '../warehouse/location.vue'
|
||||
@ -91,13 +78,21 @@
|
||||
const getI18n = useI18n()
|
||||
const { t, locale } = getI18n
|
||||
const eimts = defineEmits(['scanFrameDataFeedback', 'confirmation', 'fast', 'err'])
|
||||
const props = defineProps({
|
||||
types:{
|
||||
type:Array,
|
||||
default: () => {
|
||||
return ['warehouseStr', 'locationStr', 'articlesStr', 'quantityStr', 'batchNumberStr']
|
||||
}
|
||||
}
|
||||
})
|
||||
const state = reactive({
|
||||
show: false,
|
||||
warehouse: false,
|
||||
location: false,
|
||||
NoLocationList: true,
|
||||
NoLocationListText: '可扫描仓位',
|
||||
batchNumberStrPdr: '请输入批号',
|
||||
NoLocationListText: '',
|
||||
batchNumberStrPdr: t('index.qsrph'),
|
||||
warehouseData: {},
|
||||
locationData: {},
|
||||
quantityStrState: false,
|
||||
@ -118,6 +113,10 @@
|
||||
/**
|
||||
* 数据逻辑
|
||||
*/
|
||||
const screeningTypes = (str:string) => {
|
||||
if(props.types.indexOf(str) !== -1) return true
|
||||
else return false
|
||||
}
|
||||
watch(() => state.scanFrame, () => {
|
||||
console.log('目标已出发');
|
||||
eimts('scanFrameDataFeedback', state.scanFrame)
|
||||
@ -133,15 +132,14 @@
|
||||
state.locationData = obj.locationData
|
||||
if (state.warehouseData.FIsOpenLocation) {
|
||||
state.NoLocationList = true
|
||||
state.NoLocationListText = '可扫描仓位'
|
||||
state.NoLocationListText = t('index.ksmcw')
|
||||
} else {
|
||||
state.NoLocationList = false
|
||||
state.NoLocationListText = '仓位未启用'
|
||||
state.NoLocationListText = t('index.cwwqy')
|
||||
}
|
||||
}
|
||||
//来自接口的数据
|
||||
const getreceiveBillScanData = (row : any) => {
|
||||
console.log(row);
|
||||
state.receiveBillScanData = row
|
||||
dataValidation()
|
||||
}
|
||||
@ -155,7 +153,7 @@
|
||||
state.scanFrame.warehouseStr = ''
|
||||
state.scanFrame.locationStr = ''
|
||||
state.NoLocationList = true
|
||||
state.NoLocationListText = '可扫描仓位'
|
||||
state.NoLocationListText = t('index.ksmcw')
|
||||
state.warehouseData = {}
|
||||
state.locationData = {}
|
||||
}
|
||||
@ -167,7 +165,7 @@
|
||||
if (state.scanFrame.batchNumberStr !== '' && state.scanFrame.batchNumberStr !== state.receiveBillScanData.FLot_Text) {
|
||||
state.show = true
|
||||
uni.showModal({
|
||||
title: '提示', content: '与默认批号不同,是否替换新的批号', cancelText: '取消', confirmText: '替换',
|
||||
title: t('index.ts'), content: '与默认批号不同,是否替换新的批号', cancelText: '取消', confirmText: '替换',
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
state.scanFrame.batchNumberStr = state.receiveBillScanData.FLot_Text
|
||||
@ -190,7 +188,7 @@
|
||||
if (Object.keys(state.warehouseData).length !== 0 && Object.keys(state.receiveBillScanData.StockId).length !== 0) {
|
||||
if (state.receiveBillScanData.StockId.Number !== state.warehouseData.FNUMBER) {
|
||||
uni.showModal({
|
||||
title: '提示', content: '与默认仓库不同,是否替换新的仓库', cancelText: '取消', confirmText: '替换',
|
||||
title: t('index.ts'), content: t('index.ymrckbt'), cancelText: t('index.qx'), confirmText: t('index.qd'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
state.scanFrame.warehouseStr = formatLangTextValue(state.receiveBillScanData.StockId.Name)
|
||||
@ -211,10 +209,10 @@
|
||||
}
|
||||
if (state.warehouseData.FIsOpenLocation) {
|
||||
state.NoLocationList = true
|
||||
state.NoLocationListText = '可扫描仓位'
|
||||
state.NoLocationListText = t('index.ksmcw')
|
||||
} else {
|
||||
state.NoLocationList = false
|
||||
state.NoLocationListText = '仓位未启用'
|
||||
state.NoLocationListText = t('index.cwwqy')
|
||||
}
|
||||
}
|
||||
//数量校验
|
||||
@ -222,7 +220,7 @@
|
||||
state.show = true
|
||||
state.quantityStrState = true
|
||||
} else if (state.scanFrame.quantityStr == '') {
|
||||
state.scanFrame.quantityStr = state.receiveBillScanData.BarCodeQty
|
||||
state.scanFrame.quantityStr = state.receiveBillScanData.UnScanQty
|
||||
}
|
||||
state.scanFrame.articlesStr = state.receiveBillScanData.MaterialNumber
|
||||
state.scanFrame.barCodeStr = state.receiveBillScanData.queryString
|
||||
@ -253,7 +251,7 @@
|
||||
}
|
||||
if (state.receiveBillScanData.stashVerify) {
|
||||
if (state.scanFrame.warehouseStr == '') {
|
||||
uni.$u.toast('该模块需要指定仓库')
|
||||
uni.$u.toast(t('index.gmkxyzdck'))
|
||||
eimts('err')
|
||||
return false
|
||||
}
|
||||
@ -264,7 +262,7 @@
|
||||
}
|
||||
}
|
||||
if (state.receiveBillScanData.FIsBatchManage === 'True' && (state.scanFrame.batchNumberStr === '' || state.scanFrame.batchNumberStr === ' ')) {
|
||||
uni.$u.toast('批号已启用,不能为空')
|
||||
uni.$u.toast(t('index.phbnwk'))
|
||||
eimts('err')
|
||||
return false
|
||||
}
|
||||
@ -285,7 +283,7 @@
|
||||
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast('数量不能为空,不能为0')
|
||||
uni.$u.toast(t('index.slbnwk'))
|
||||
}
|
||||
}
|
||||
/**
|
||||
@ -309,16 +307,14 @@
|
||||
console.log(item);
|
||||
state.scanFrame.warehouseStr = item.FNAME
|
||||
state.warehouse = false
|
||||
|
||||
state.locationData = {}
|
||||
state.shortcut.locationStr = ""
|
||||
|
||||
state.scanFrame.locationStr = ""
|
||||
if (state.warehouseData.FIsOpenLocation) {
|
||||
state.NoLocationList = true
|
||||
state.NoLocationListText = '可扫描仓位'
|
||||
state.NoLocationListText = t('index.ksmcw')
|
||||
} else {
|
||||
state.NoLocationList = false
|
||||
state.NoLocationListText = '仓库未启用'
|
||||
state.NoLocationListText = t('index.cwwqy')
|
||||
state.scanFrame.locationStr = ''
|
||||
state.locationData = {}
|
||||
}
|
||||
@ -363,10 +359,10 @@
|
||||
if (state.warehouseData.FIsOpenLocation) {
|
||||
state.location = true
|
||||
} else {
|
||||
uni.$u.toast('仓库未启用')
|
||||
uni.$u.toast(t('index.cwwqy'))
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast('请选择仓库')
|
||||
uni.$u.toast(t('public.qxzck'))
|
||||
}
|
||||
}
|
||||
const locationDataFun = (item : any) => {
|
||||
|
||||
@ -89,7 +89,7 @@
|
||||
location: false,
|
||||
warehouseData: {},
|
||||
locationData: {},
|
||||
NoLocationListText: computed(() => t('public.xzcw')),
|
||||
NoLocationListText: t('public.xzcw'),
|
||||
NoLocationList: true,
|
||||
specialModule: '',
|
||||
shortcut: {
|
||||
@ -171,10 +171,8 @@
|
||||
state.warehouseData = item
|
||||
state.shortcut.warehouseStr = item.FNAME
|
||||
state.warehouse = false
|
||||
|
||||
state.locationData = {}
|
||||
state.shortcut.locationStr = ""
|
||||
|
||||
if (state.warehouseData.FIsOpenLocation) {
|
||||
state.NoLocationList = true
|
||||
state.NoLocationListText = t('public.xzcw')
|
||||
|
||||
@ -1,18 +1,4 @@
|
||||
<template>
|
||||
<!-- <view class="float-container">
|
||||
<view v-for="(item,index) of props.type" :key="index">
|
||||
<view class="sub-btn" :style="getPosition(index)" v-if="item === 'defaultPopup'"
|
||||
:class="{active: isOpen}" @click.stop="handleClick('defaultPopup')">
|
||||
<span>{{ t('public.mrz') }}</span>
|
||||
</view>
|
||||
<view class="sub-btn" :style="getPosition(index)" v-if="item === 'scanRecord'"
|
||||
:class="{active: isOpen}" @click.stop="handleClick('scanRecord')">
|
||||
<span>{{ t('public.smjl') }}</span>
|
||||
</view>
|
||||
</view>
|
||||
<view class="main-btn" :class="{active: isOpen}" @click.stop="toggleMenu()">+</view>
|
||||
</view> -->
|
||||
|
||||
<uni-fab :show="state.show" ref="fab" :pattern="state.pattern" :content="state.content"
|
||||
:horizontal="state.horizontal" :vertical="state.vertical" :direction="state.direction" @trigger="trigger"
|
||||
@fabClick="fabClick" />
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<up-popup :show="props.show" @close="close">
|
||||
<view class="popupText">仓位</view>
|
||||
<view class="popupText">{{ t('index.cw') }}</view>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input placeholder="仓位查询" border="none" clearable inputAlign="left" v-model="state.queryString"
|
||||
<up-input :placeholder="t('index.cwcx')" border="none" clearable inputAlign="left" v-model="state.queryString"
|
||||
@change="changeFun">
|
||||
<template #prefix>
|
||||
<up-icon name="search" color="#2979ff" size="24"></up-icon>
|
||||
@ -19,7 +19,7 @@
|
||||
<view class="tit">{{ item.FFlexValueName }}</view>
|
||||
<!-- <view class="description">{{ item. }}</view> -->
|
||||
<view class="line-p"></view>
|
||||
<view class="b-font">仓位编号:{{item.FFlexValueNumber}}</view>
|
||||
<view class="b-font">{{ t('index.cwbh') }}:{{item.FFlexValueNumber}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@ -31,17 +31,21 @@
|
||||
import { reactive, nextTick, onMounted, ref, computed, defineProps, defineEmits, watch } from 'vue';
|
||||
import { onLoad, onShow, onReachBottom, } from '@dcloudio/uni-app'
|
||||
import { fStockFlexDetailList, stockList } from '../../common/request/api/api';
|
||||
import i18n from '../../locale/index'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
const getI18n = useI18n()
|
||||
const { t, locale } = getI18n
|
||||
const props = defineProps({
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
warehouseId:{
|
||||
warehouseId: {
|
||||
type: Number,
|
||||
default: null
|
||||
}
|
||||
})
|
||||
const emits = defineEmits(['locationClose','locationData'])
|
||||
const emits = defineEmits(['locationClose', 'locationData'])
|
||||
const state = reactive({
|
||||
queryString: '',
|
||||
dataList: [],
|
||||
@ -82,9 +86,9 @@
|
||||
}
|
||||
const fnDataList = () => {
|
||||
let param = {
|
||||
Number:props.warehouseId,
|
||||
queryString:state.queryString,
|
||||
IsSortBySeq:true
|
||||
Number: props.warehouseId,
|
||||
queryString: state.queryString,
|
||||
IsSortBySeq: true
|
||||
};
|
||||
fStockFlexDetailList(param).then(res => {
|
||||
uni.hideLoading();
|
||||
@ -96,11 +100,11 @@
|
||||
const close = () => {
|
||||
emits('locationClose', false)
|
||||
}
|
||||
const arehouseItemFun = (item:any) => {
|
||||
emits('locationData',{
|
||||
const arehouseItemFun = (item : any) => {
|
||||
emits('locationData', {
|
||||
...item,
|
||||
FlexEntryId:{
|
||||
Number:item.FFlexValueNumber
|
||||
FlexEntryId: {
|
||||
Number: item.FFlexValueNumber
|
||||
}
|
||||
})
|
||||
// FEntity_FEntryId
|
||||
@ -195,11 +199,13 @@
|
||||
font-weight: bold;
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
.description{
|
||||
|
||||
.description {
|
||||
font-size: 25rpx;
|
||||
margin-top: 8rpx;
|
||||
// padding: 20rpx 0;
|
||||
}
|
||||
|
||||
.line-p {
|
||||
border: 1px solid #efeaea;
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<up-popup :show="props.show" @close="close">
|
||||
<view class="popupText">仓库</view>
|
||||
<view class="popupText">{{ t('index.ck') }}</view>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input placeholder="仓库查询" border="none" clearable inputAlign="left" v-model="state.queryString"
|
||||
<up-input :placeholder="t('index.ckcx')" border="none" clearable inputAlign="left" v-model="state.queryString"
|
||||
@change="changeFun">
|
||||
<template #prefix>
|
||||
<up-icon name="search" color="#2979ff" size="24"></up-icon>
|
||||
@ -18,7 +18,7 @@
|
||||
<view class="data-item" v-for="(item, index) in state.dataList" :key="index" @click="arehouseItemFun(item)">
|
||||
<view class="tit">{{item.FNAME}}</view>
|
||||
<view class="line-p"></view>
|
||||
<view class="b-font">仓库编号:{{item.FNUMBER}}</view>
|
||||
<view class="b-font">{{ t('index.ckbh') }}:{{item.FNUMBER}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@ -30,6 +30,10 @@
|
||||
import { reactive, nextTick, onMounted, ref, computed, defineProps, defineEmits, watch } from 'vue';
|
||||
import { onLoad, onShow, onReachBottom, } from '@dcloudio/uni-app'
|
||||
import { stockList } from '../../common/request/api/api';
|
||||
import i18n from '../../locale/index'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
const getI18n = useI18n()
|
||||
const { t, locale } = getI18n
|
||||
const props = defineProps({
|
||||
show: {
|
||||
type: Boolean,
|
||||
|
||||
69
i18n/cn.ts
69
i18n/cn.ts
@ -78,5 +78,74 @@ export const cn = {
|
||||
'ys': '已扫',
|
||||
'ws': '未扫',
|
||||
'yss': '应扫',
|
||||
},
|
||||
index:{
|
||||
'bccg':'保存成功',
|
||||
'tj':'添加',
|
||||
'zxddh':'装箱单单号',
|
||||
'scddbh':'生产订单编号',
|
||||
'sczx':'生产装箱',
|
||||
'bz':'包装(物料装箱条码)',
|
||||
'minbz':'单独物料(物料最小包装条码)',
|
||||
'ts':'提示',
|
||||
'qdysc':'确定要删除该条数据吗',
|
||||
'qx':'取消',
|
||||
'qd':'确定',
|
||||
'ysc':'已删除',
|
||||
'ctll':'成套领料',
|
||||
'ctllyz':'成套领料验证',
|
||||
'scylqddh':'生产用料清单单号',
|
||||
'hbbdh':'汇报单单号',
|
||||
'qdytsccsjm':'确定要推送此次数据吗',
|
||||
'rb':'让步',
|
||||
'hg':'合格',
|
||||
'bmygtsj':'并没有该条数据',
|
||||
'scdd':'生产订单',
|
||||
'ksscsj':'开始生产时间',
|
||||
'kscssj':'开始测试时间',
|
||||
'kshbsj':'开始汇报时间',
|
||||
'kstcgs':'开始投产个数',
|
||||
'kssc':'开始生产',
|
||||
'kshb':'开始汇报',
|
||||
'kscs':'开始测试',
|
||||
'qxjxsc':'请先进行生产',
|
||||
'zwck':'暂无仓库',
|
||||
'cpmc':'成品名称',
|
||||
'cpbm':'成品编码',
|
||||
'scsl':'生产数量',
|
||||
'llts':'领料套数',
|
||||
'qsrllts':'请输入领料套数',
|
||||
'llthbddy':'领料套数不得大于生产数量',
|
||||
'csllddh':'生产领料单单号',
|
||||
'ck':'仓库',
|
||||
'ckcx':'仓库查询',
|
||||
'ckbh':'仓库编号',
|
||||
'cw':'仓位',
|
||||
'cwcx':'仓位查询',
|
||||
'cwbh':'仓位编号',
|
||||
'wzdgcw':'未找到改仓位',
|
||||
'ksmcw':'可扫描仓位',
|
||||
'qsrph':'请输入批号',
|
||||
'cwwqy':'仓位未启用',
|
||||
'ymrckbt':'与默认仓库不同,是否替换新的仓库',
|
||||
'gmkxyzdck':'该模块需要指定仓库',
|
||||
'cwyqy':'仓位已启用,不能为空',
|
||||
'phbnwk':'批号已启用,不能为空',
|
||||
'slbnwk':'数量不能为空,不能为0',
|
||||
'zwsmsj':'暂无扫描数据',
|
||||
'hgrksl':'合格品入库数量',
|
||||
'qdyqbsc':'确定要删全部删除吗',
|
||||
'tqbsc':'确定要删全部删除吗',
|
||||
'qbsc':'全部删除',
|
||||
'zwph':'暂无批号',
|
||||
'dyj':'打印机',
|
||||
'qxzdyj':'请选择打印机',
|
||||
'zbdy':'准备打印',
|
||||
'sbmc':'设备名称',
|
||||
'sbbm':'设备编码',
|
||||
'whqdlyqx':'未获取到蓝牙权限',
|
||||
'ljcg':'连接成功',
|
||||
'ljsb':'连接失败',
|
||||
'cjbqsb':'创建标签失败'
|
||||
}
|
||||
}
|
||||
79
i18n/en.ts
79
i18n/en.ts
@ -11,16 +11,16 @@ export const en = {
|
||||
'home': 'Maxcess Barcode System',
|
||||
},
|
||||
home: {
|
||||
'llyz': 'Incoming Inspection',
|
||||
'llyz': 'GRN Checking',
|
||||
'cgrk': 'Good Receipt',
|
||||
'scfl': 'Picking List',
|
||||
'scbl': 'Replenishment',
|
||||
'sctc': 'Production',
|
||||
'scrk': 'Production Receipt',
|
||||
'sczx': 'Production Packing',
|
||||
'scrk': 'MO Receipt',
|
||||
'sczx': 'MO Packing',
|
||||
'xxck': 'Sales Delivery',
|
||||
'kssc': 'Prodcution Start',
|
||||
'kscs': 'Production Test',
|
||||
'kssc': 'MO Start',
|
||||
'kscs': 'MO Test',
|
||||
'kshb': 'MO Report',
|
||||
},
|
||||
verify: {
|
||||
@ -78,5 +78,74 @@ export const en = {
|
||||
'ys': 'Already',
|
||||
'ws': 'Not yet',
|
||||
'yss': 'Should',
|
||||
},
|
||||
index:{
|
||||
'bccg':'Save Successfully',
|
||||
'tj':'Add',
|
||||
'zxddh':'Prod Packing #',
|
||||
'scddbh':'MO #',
|
||||
'sczx':'Prod Packing',
|
||||
'bz':'Material Packing #',
|
||||
'minbz':'Material Mini Package #',
|
||||
'ts':'Prompt',
|
||||
'qdysc':'Please confirm the deletion',
|
||||
'qx':'Cancel',
|
||||
'qd':'Confirm',
|
||||
'ysc':'Deleted',
|
||||
'ctll':'Kit Picking',
|
||||
'ctllyz':'Kit Picking Verify',
|
||||
'scylqddh':'Prod BOM List #',
|
||||
'hbbdh':'MO report',
|
||||
'qdytsccsjm':'Data submitting comfirmation',
|
||||
'rb':'Concession',
|
||||
'hg':'Qualified',
|
||||
'bmygtsj':'No data is found',
|
||||
'scdd':'MO',
|
||||
'ksscsj':'MO Starting Time',
|
||||
'kscssj':'Test Starting Time',
|
||||
'kshbsj':'MO Report Time',
|
||||
'kstcgs':'QTY',
|
||||
'kssc':'Production Starting ',
|
||||
'kshb':'Test Starting',
|
||||
'kscs':'MO Report',
|
||||
'qxjxsc':'You have not started the MO',
|
||||
'zwck':'No W/H is found',
|
||||
'cpmc':'FG name',
|
||||
'cpbm':'FG Part Number',
|
||||
'scsl':'QTY',
|
||||
'llts':'Kit Picking QTY',
|
||||
'qsrllts':'Please input the QTY',
|
||||
'llthbddy':'The number exceeds the MO requirement',
|
||||
'csllddh':'Material Picking List #',
|
||||
'ck':'W/H',
|
||||
'ckcx':'W/H Query',
|
||||
'ckbh':'W/H #',
|
||||
'cw':'Bin Name',
|
||||
'cwcx':'Bin Query',
|
||||
'cwbh':'Bin #',
|
||||
'wzdgcw':'Bin # is not found',
|
||||
'ksmcw':'Scan Bin #',
|
||||
'qsrph':'Input Lot #',
|
||||
'cwwqy':'Bin # is not enabled',
|
||||
'ymrckbt':'Different W/H from default. Replace?',
|
||||
'gmkxyzdck':'W/H is required',
|
||||
'cwyqy':'Bin # is required',
|
||||
'phbnwk':'Lot # is required',
|
||||
'slbnwk':'QTY is must greater than 0',
|
||||
'zwsmsj':'No data is found.',
|
||||
'hgrksl':'Qualified QTY',
|
||||
'qdyqbsc':'All records deletion confirmation.',
|
||||
'tqbsc':'Deletion Successfully!',
|
||||
'qbsc':'Delete all',
|
||||
'zwph':'Lot # is not found.',
|
||||
'dyj':'Printer',
|
||||
'qxzdyj':'Please select printer',
|
||||
'zbdy':'Printing is ready',
|
||||
'sbmc':'Device Name',
|
||||
'sbbm':'Device Code',
|
||||
'whqdlyqx':'Bluethooth is not connected',
|
||||
'ljcg':'connection is successful.',
|
||||
'ljsb':'connection failed.',
|
||||
'cjbqsb':'QR code creation is failed'
|
||||
}
|
||||
}
|
||||
@ -2,8 +2,8 @@
|
||||
"name" : "Maxcess Barcode",
|
||||
"appid" : "__UNI__901D257",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.4",
|
||||
"versionCode" : 104,
|
||||
"versionName" : "0.0.2",
|
||||
"versionCode" : 2,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
@ -194,7 +194,7 @@
|
||||
"disableHostCheck" : true,
|
||||
"proxy" : {
|
||||
"/api" : {
|
||||
"target" : "http://58.252.252.77:5000",
|
||||
"target" : "http://8.148.230.89:5000",
|
||||
"changeOrigin" : true,
|
||||
"pathRewrite" : {
|
||||
"^/api" : ""
|
||||
|
||||
22
pages.json
22
pages.json
@ -81,6 +81,9 @@
|
||||
{
|
||||
"path": "pages/putInProd/details"
|
||||
},
|
||||
{
|
||||
"path": "pages/putInProd/print"
|
||||
},
|
||||
{
|
||||
"path": "pages/productionStorage/index"
|
||||
},
|
||||
@ -102,6 +105,9 @@
|
||||
{
|
||||
"path": "pages/encasement/material"
|
||||
},
|
||||
{
|
||||
"path": "pages/encasement/print"
|
||||
},
|
||||
{
|
||||
"path": "pages/records/index"
|
||||
},
|
||||
@ -110,6 +116,22 @@
|
||||
},
|
||||
{
|
||||
"path": "pages/client/account/loginConfig"
|
||||
},
|
||||
{
|
||||
"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
|
||||
"style": {
|
||||
"disableScroll": true,
|
||||
"app-plus": {
|
||||
"backgroundColorTop": "transparent",
|
||||
"background": "transparent",
|
||||
"titleNView": false,
|
||||
"scrollIndicator": false,
|
||||
"popGesture": "none",
|
||||
"animationType": "fade-in",
|
||||
"animationDuration": 200
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"subPackages": [],
|
||||
|
||||
@ -65,6 +65,7 @@
|
||||
appLoginInfoObj:{}
|
||||
})
|
||||
onShow(() => {
|
||||
|
||||
if (uni.getStorageSync('locale') === 'en') {
|
||||
locale.value = 'en'
|
||||
} else {
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="生产装箱" sticky #right>
|
||||
<view style="margin-right: 32rpx;" @click="fnToUrl()">添加</view>
|
||||
<l-header :title="t('index.zxddh')" sticky #right>
|
||||
<view style="margin-right: 32rpx;" @click="fnToUrl()">{{ t('index.tj') }}</view>
|
||||
</l-header>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('receive.djbh')" border="none" clearable inputAlign="left"
|
||||
<up-input :placeholder="t('index.zxddh')" border="none" clearable inputAlign="left"
|
||||
v-model="state.queryString" @change="changeFun">
|
||||
<template #prefix>
|
||||
<up-icon name="search" color="#2979ff" size="24"></up-icon>
|
||||
@ -18,8 +18,8 @@
|
||||
<scroll-view id="scroll-box" class="scroll-box" scroll-y="true"
|
||||
:style="{'height':state.scrollHeight+'px'}" @scrolltolower="fnScrollBottom()">
|
||||
<view class="list-box-list" v-if="state.dataList.length > 0">
|
||||
<view class="data-item" v-for="(item, index) in state.dataList" :key="index">
|
||||
<view class="tit">装箱单单号:{{item.FBillNo}}</view>
|
||||
<view class="data-item" v-for="(item, index) in state.dataList" :key="index" @click="toPrintFun(item)">
|
||||
<view class="tit">{{ t('index.zxddh') }}:{{item.FBillNo}}</view>
|
||||
<view class="line-p"></view>
|
||||
<view class="b-font">{{ t('receive.rq') }}:{{item.FDateFormat}}</view>
|
||||
</view>
|
||||
@ -76,6 +76,10 @@
|
||||
const fnToUrl = () => {
|
||||
toPages('/pages/encasement/material')
|
||||
}
|
||||
const toPrintFun = (row:any) => {
|
||||
console.log(row);
|
||||
toPages('/pages/encasement/print',{...row})
|
||||
}
|
||||
const debounceTimer = ref()
|
||||
const changeFun = (e : any) => {
|
||||
if (debounceTimer.value !== null) clearTimeout(debounceTimer.value)
|
||||
|
||||
@ -1,15 +1,12 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="生成装箱" sticky #right>
|
||||
<l-header :title="t('index.sczx')" sticky #right>
|
||||
<view style="margin-right: 32rpx;" @click="dataPushNotification">{{ t('receive.tj') }}</view>
|
||||
</l-header>
|
||||
<view class="input-box">
|
||||
<up-tabs :scrollable="false" :list="state.tabsList"></up-tabs>
|
||||
</view>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input placeholder="生产订单编号" border="none" clearable inputAlign="left" v-model="state.queryString"
|
||||
<up-input :placeholder="t('receive.code')" border="none" clearable inputAlign="left" v-model="state.queryString"
|
||||
@change="changeFun" ref="inputRef">
|
||||
<template #prefix>
|
||||
<up-icon name="scan" color="#2979ff" size="24"></up-icon>
|
||||
@ -32,22 +29,22 @@
|
||||
<view>{{ item['FVHUBMaterial.FName'] }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>物料编码</view>
|
||||
<view>{{ t('receive.wlbm') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.FVHUBMaterialNumber }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>数量</view>
|
||||
<view>{{ t('public.qty') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.FVHUBScanQty }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>仓库</view>
|
||||
<view>{{ t('index.ck') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item['FVHUBStock.FName'] }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>批号</view>
|
||||
<view>{{ t('receive.ph') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.FVHUBFlot }}</view>
|
||||
</view>
|
||||
@ -88,8 +85,8 @@
|
||||
scanFrameDataFeedback: {}, //传回的扫描弹框数据
|
||||
shortcutDataFeedback: {}, //传回的默认值数据
|
||||
tabsList: [
|
||||
{ name: computed(() => '包装'), type: '1' },
|
||||
{ name: computed(() => '单独物料'), type: '2' },
|
||||
{ name: computed(() => t('index.bz')), type: '1' },
|
||||
{ name: computed(() => t('index.minbz')), type: '2' },
|
||||
],
|
||||
options: []
|
||||
})
|
||||
@ -131,7 +128,6 @@
|
||||
FBarCode: val,
|
||||
}).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
debugger
|
||||
postTemporaryScanDraftSaveFun(res.data.Entry[0])
|
||||
}
|
||||
})
|
||||
@ -164,12 +160,12 @@
|
||||
//删除数据
|
||||
const fStockFlexDetailDeleteFun = (item : any) => {
|
||||
uni.showModal({
|
||||
title: '提示', content: '确定要删除该条数据吗?', cancelText: '取消', confirmText: '确定',
|
||||
title: t('index.ts'), content: t('index.qdysc'), cancelText: t('index.qx'), confirmText: t('index.qd'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
fStockFlexDetailDelete({ Ids: item.FID + '' }).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
uni.$u.toast('已删除')
|
||||
uni.$u.toast(t('index.ysc'))
|
||||
fnDataList()
|
||||
}
|
||||
})
|
||||
|
||||
@ -29,10 +29,10 @@
|
||||
<view class="type-item-text">{{ t('home.scbl') }}</view>
|
||||
</view>
|
||||
<view class="type-item type-item-hl" @tap="toPages('/pages/ruleClaim/index')">
|
||||
<view class="type-item-text">成套领料</view>
|
||||
<view class="type-item-text">{{ t('index.ctll') }}</view>
|
||||
</view>
|
||||
<view class="type-item type-item-hl" @tap="toPages('/pages/ruleValidation/index')">
|
||||
<view class="type-item-text">成套验证</view>
|
||||
<view class="type-item-text">{{ t('index.ctllyz') }}</view>
|
||||
</view>
|
||||
<view class="type-item type-item-hl" @tap="toPages('/pages/putInProd/index')">
|
||||
<view class="type-item-text">{{ t('home.sctc') }}</view>
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="生产发料" sticky></l-header>
|
||||
<l-header :title="t('home.scfl')" sticky></l-header>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('receive.djbh')" border="none" clearable inputAlign="left"
|
||||
<up-input :placeholder="t('index.scdd')" border="none" clearable inputAlign="left"
|
||||
v-model="state.queryString" @change="changeFun">
|
||||
<template #prefix>
|
||||
<up-icon name="search" color="#2979ff" size="24"></up-icon>
|
||||
@ -18,7 +18,7 @@
|
||||
<view class="list-box-list" v-if="state.dataList.length > 0">
|
||||
<view class="data-item" @click.stop="fnToUrl(item)"
|
||||
v-for="(item, index) in state.dataList" :key="index">
|
||||
<view class="tit">生产用料清单单号:{{item.FBillNo}}</view>
|
||||
<view class="tit">{{ t('index.scdd') }}:{{item.FBillNo}}</view>
|
||||
<view class="line-p"></view>
|
||||
<view class="b-font">{{ t('receive.rq') }}:{{item.FDateFormat}}</view>
|
||||
</view>
|
||||
|
||||
@ -165,7 +165,7 @@
|
||||
scanFrameRef.value.stateShow(true)
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast('并没有该条数据')
|
||||
uni.$u.toast(t('index.bmygtsj'))
|
||||
state.queryString = ''
|
||||
}
|
||||
})
|
||||
@ -207,7 +207,7 @@
|
||||
state.queryString = ''
|
||||
if (res.data.IsSuccess) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('成功')
|
||||
uni.$u.toast(t('public.cg'))
|
||||
scanFrameRef.value.stateShow(false)
|
||||
}
|
||||
})
|
||||
@ -234,7 +234,7 @@
|
||||
|
||||
const dataPushNotification = () => {
|
||||
uni.showModal({
|
||||
title: '提示', content: '确定要推送此次数据吗', cancelText: '取消', confirmText: '确定',
|
||||
title: t('public.ts'), content: t('public.tjMessage'), cancelText: t('public.cancel'), confirmText: t('public.confirm'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
let EntryIds : any = []
|
||||
@ -275,14 +275,14 @@
|
||||
fStockFlexDetailDelete({ Ids: ids.toString() }).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('操作成功')
|
||||
uni.$u.toast(t('public.cg'))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
} else {
|
||||
uni.$u.toast('暂无扫描数据')
|
||||
uni.$u.toast(t('public.noDataMessage'))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,10 +1,8 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="销售出库" sticky></l-header>
|
||||
<view class="input-box">
|
||||
<up-tabs :scrollable="false" :list="state.tabsList"></up-tabs>
|
||||
</view>
|
||||
<l-header :title="t('home.xxck')" sticky></l-header>
|
||||
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('receive.djbh')" border="none" clearable inputAlign="left"
|
||||
@ -52,10 +50,7 @@
|
||||
pageSize: 200,
|
||||
totalCount: 0
|
||||
},
|
||||
tabsList: [
|
||||
{ name: computed(() => '包装'), type: '1' },
|
||||
{ name: computed(() => '单独物料'), type: '2' },
|
||||
]
|
||||
|
||||
})
|
||||
|
||||
onShow(() => {
|
||||
|
||||
@ -4,6 +4,9 @@
|
||||
<l-header :title="state.FBillNo" sticky #right>
|
||||
<view style="margin-right: 32rpx;" @click="dataPushNotification">{{ t('receive.tj') }}</view>
|
||||
</l-header>
|
||||
<view class="input-box">
|
||||
<up-tabs :scrollable="false" :list="state.tabsList" @click="upTabsItemFun"></up-tabs>
|
||||
</view>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('receive.code')" border="none" clearable inputAlign="left" inputmode="none"
|
||||
@ -18,7 +21,7 @@
|
||||
<scroll-view id="scroll-box" class="scroll-box" scroll-y="true"
|
||||
:style="{'height':state.scrollHeight+'px'}">
|
||||
<view class="list-box-list" v-if="state.dataList.length > 0">
|
||||
<view class="data-item" v-for="(item, index) in state.dataList" @click="toPrintFun(item)"
|
||||
<view class="data-item" v-for="(item, index) in state.dataList"
|
||||
:style="[{'background-color':interpolation(item)},{'margin-bottom':index + 1 === state.dataList.length ? '80px' : '20px'}]"
|
||||
:key="index">
|
||||
<view class="text" style="margin-bottom: 20px;display: flex;">
|
||||
@ -40,7 +43,7 @@
|
||||
<view>{{ item.Lot }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>仓库</view>
|
||||
<view>{{ t('index.ck') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.MultiLanguageText }}</view>
|
||||
</view>
|
||||
@ -69,11 +72,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<scanFrame ref="scanFrameRef" @confirmation="scanFrameCnfirmation"
|
||||
@scanFrameDataFeedback="(res:object)=>{state.scanFrameDataFeedback = res}"
|
||||
@fast="(row:any)=>{state.scanFrameDataFeedback = row}" @err="scanFrameErrFun" />
|
||||
<shortcut ref="shortcutRef" @dataToscanFrame="dataToscanFrameFun" />
|
||||
<tools ref="toolsRef" @defaultPopup="defaultPopupFun" @scanRecord="scanRecordFun" />
|
||||
<tools ref="toolsRef" :type="['scanRecord']" @scanRecord="scanRecordFun" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
@ -111,6 +110,11 @@
|
||||
inputFocus: true,
|
||||
scanFrameDataFeedback: {},
|
||||
shortcutDataFeedback: {},
|
||||
tabsIndex:'1',
|
||||
tabsList: [
|
||||
{ name: computed(() => t('index.bz')), type: '1' },
|
||||
{ name: computed(() => t('index.minbz')), type: '2' },
|
||||
]
|
||||
})
|
||||
onLoad((pageData : any) => {
|
||||
console.log(pageData);
|
||||
@ -131,7 +135,9 @@
|
||||
// scanFrameRef.value.stateShow(true)
|
||||
|
||||
})
|
||||
|
||||
const upTabsItemFun = (e:any) => {
|
||||
state.tabsIndex = e.type
|
||||
}
|
||||
const toPrintFun = (row:any) => {
|
||||
console.log(row);
|
||||
toPages('/pages/outOftock/print',{...row,FBillNo:state.FBillNo})
|
||||
@ -165,91 +171,25 @@
|
||||
SAL_DELIVERYNOTICEScanData({
|
||||
FBarCode: val,
|
||||
FBillNo: state.FBillNo,
|
||||
IsPack: state.tabsIndex === '1' ? 'true' : 'false'
|
||||
}).then((res : any) => {
|
||||
if (res.data !== null) {
|
||||
console.log(res);
|
||||
scanFrameRef.value.getreceiveBillScanData({ ...res.data, queryString: state.queryString, scanFrameShowSate: state.shortcutDataFeedback.scanFrameShowSate, stashVerify: true })
|
||||
if (Object.keys(state.shortcutDataFeedback).length) {
|
||||
if (state.shortcutDataFeedback.scanFrameShowSate) {
|
||||
scanFrameRef.value.stateShow(true)
|
||||
} else {
|
||||
postTemporaryScanDraftSaveFun(state.scanFrameDataFeedback)
|
||||
}
|
||||
} else {
|
||||
scanFrameRef.value.stateShow(true)
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast('并没有该条数据')
|
||||
if (res.code === 200) {
|
||||
fnDataList(state.materialId)
|
||||
state.queryString = ''
|
||||
} else {
|
||||
uni.$u.toast(t('verify.noDataMessage'))
|
||||
}
|
||||
})
|
||||
}
|
||||
//固定弹窗数据传输
|
||||
const scanFrameCnfirmation = (row : any) => {
|
||||
state.scanFrameDataFeedback = row
|
||||
postTemporaryScanDraftSaveFun(state.scanFrameDataFeedback)
|
||||
}
|
||||
const scanFrameErrFun = () => {
|
||||
//异常弹出
|
||||
scanFrameRef.value.stateShow(true)
|
||||
}
|
||||
//数据记录暂存
|
||||
const postTemporaryScanDraftSaveFun = (item : any) => {
|
||||
const obj = {};
|
||||
if (item.warehouseData.FIsOpenLocation) {
|
||||
const key = `FVHUBSTOCKFLEX__FF${item.warehouseData.FFlexId}`; //仓位Id
|
||||
obj[key] = { FNumber: item.locationData.FlexEntryId.Number }; //仓位编码
|
||||
}
|
||||
const str = JSON.stringify(obj);
|
||||
console.log(item);
|
||||
temporaryScanDraftSave({
|
||||
FVHUBFormId: "SAL_DELIVERYNOTICE", //数据类型
|
||||
FVHUBFBillNo: state.FBillNo, //单据编号
|
||||
FVHUBScanNumber: state.queryString, //条码
|
||||
FVHUBMaterialNumber: item.articlesStr, //物料编码
|
||||
FVHUBScanQty: item.quantityStr + '', //扫描数量
|
||||
FVHUBEntryId: scanFrameRef.value.state.receiveBillScanData.Id, //物料ID
|
||||
FVHUBFlot: item.batchNumberStr, //批号
|
||||
FVHUBStock: {
|
||||
FNUMBER: item.warehouseData.FNUMBER //仓库编号
|
||||
},
|
||||
FVHUBMaterial: {
|
||||
FNUMBER: item.articlesStr
|
||||
},
|
||||
...JSON.parse(str),
|
||||
}).then((res : any) => {
|
||||
console.log(res);
|
||||
state.queryString = ''
|
||||
if (res.data.IsSuccess) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('成功')
|
||||
scanFrameRef.value.stateShow(false)
|
||||
}
|
||||
})
|
||||
}
|
||||
//默认值传递
|
||||
const dataToscanFrameFun = (res : object) => {
|
||||
state.shortcutDataFeedback = res
|
||||
scanFrameRef.value.getComponentsData(res)
|
||||
shortcutRef.value.stateShow(false)
|
||||
}
|
||||
//唤起默认值弹窗
|
||||
const defaultPopupFun = () => {
|
||||
shortcutRef.value.stateShow(true)
|
||||
}
|
||||
const scanRecordFun = () => {
|
||||
toPages('/pages/records/index', {
|
||||
FormId: 'SAL_DELIVERYNOTICE',
|
||||
FbillNo: state.FBillNo
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 数据推送
|
||||
*/
|
||||
|
||||
const dataPushNotification = () => {
|
||||
uni.showModal({
|
||||
title: '提示', content: '确定要推送此次数据吗', cancelText: '取消', confirmText: '确定',
|
||||
title: t('public.ts'), content: t('public.tjMessage'), cancelText: t('public.cancel'), confirmText: t('public.confirm'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
let EntryIds : any = []
|
||||
@ -273,9 +213,11 @@
|
||||
Qty: item.FVHUBScanQty,
|
||||
Flot: item.FVHUBFlot,
|
||||
StockId: item.FVHUBStock,
|
||||
StockFlex: item.FVHUBStockFlex
|
||||
StockFlex: item.FVHUBStockFlex,
|
||||
Sno: item.FVHUBJSON
|
||||
})
|
||||
})
|
||||
|
||||
//推送数据
|
||||
SAL_DELIVERYNOTICEPush({
|
||||
EntryIds: EntryIds.toString(),
|
||||
@ -290,14 +232,14 @@
|
||||
fStockFlexDetailDelete({ Ids: ids.toString() }).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('操作成功')
|
||||
uni.$u.toast(t('public.cg'))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
} else {
|
||||
uni.$u.toast('暂无扫描数据')
|
||||
uni.$u.toast(t('index.zwsmsj'))
|
||||
}
|
||||
|
||||
}
|
||||
@ -309,10 +251,6 @@
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据请求
|
||||
*/
|
||||
const fnDataList = (FBillNo : any, statesItem : boolean = false) => {
|
||||
let param = {
|
||||
id: FBillNo,
|
||||
@ -329,11 +267,11 @@
|
||||
Id: p.Id,
|
||||
MaterialNo: p.MaterialNumber, //物料编码
|
||||
MaterialName: formatLangTextValue(p.MaterialName), //物料名称
|
||||
Lot: p.FLot_Text !== '' ? p.FLot_Text : '暂无批号', //批号
|
||||
Lot: p.FLot_Text !== '' ? p.FLot_Text : t('index.zwph'), //批号
|
||||
CheckQty: p.Qty, //应扫数量
|
||||
CheckJoinQty: p.ScanedQty, //已扫数量
|
||||
NoCheckQty: p.UnScanQty, //未扫数量
|
||||
MultiLanguageText: Object.keys(p.StockId).length ? formatLangTextValue(p.StockId.Name) : '暂无仓库'
|
||||
MultiLanguageText: Object.keys(p.StockId).length ? formatLangTextValue(p.StockId.Name) : t('index.zwck')
|
||||
};
|
||||
state.dataList.push(item);
|
||||
});
|
||||
|
||||
@ -1,9 +1,11 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<l-header :title="t('home.scrk')" sticky #right>
|
||||
<view style="margin-right: 32rpx;" v-if="state.tabsIndex === '1'" @click="submit()">{{ t('verify.tj') }}</view>
|
||||
</l-header>
|
||||
<view class="page">
|
||||
<l-header title="生产入库" sticky></l-header>
|
||||
<view class="input-box">
|
||||
<up-tabs :scrollable="false" :list="state.tabsList"></up-tabs>
|
||||
<up-tabs :scrollable="true" :list="state.tabsList" @click="upTabsItemFun"></up-tabs>
|
||||
</view>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
@ -15,22 +17,8 @@
|
||||
</up-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="receive-listBox" ref="listBoxRef">
|
||||
<scroll-view id="scroll-box" class="scroll-box" scroll-y="true"
|
||||
:style="{'height':state.scrollHeight+'px'}" @scrolltolower="fnScrollBottom()">
|
||||
<view class="list-box-list" v-if="state.dataList.length > 0">
|
||||
<view class="data-item" @click.stop="fnToUrl(item)"
|
||||
v-for="(item, index) in state.dataList" :key="index">
|
||||
<view class="tit">{{ t('receive.djbh') }}:{{item.FBillNo}}</view>
|
||||
<view class="line-p"></view>
|
||||
<view class="b-font">{{ t('receive.rq') }}:{{item.FDateFormat}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="state.dataList.length==0">
|
||||
<up-empty mode="list"></up-empty>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<packing ref="packingRef" v-if="state.tabsIndex === '1'" :queryString="state.queryString" @clearOut="clearOut()"/>
|
||||
<scattered v-if="state.tabsIndex === '2'" :queryString="state.queryString" @clearOut="clearOut()"/>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
@ -41,95 +29,30 @@
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { parseTime } from '../../utils/tools.js';
|
||||
import { PRD_MORPTList, receiveBillList } from '../../common/request/api/api';
|
||||
const listBoxRef = ref(null)
|
||||
import packing from './packing.vue'
|
||||
import scattered from './scattered.vue'
|
||||
const packingRef = ref()
|
||||
const getI18n = useI18n()
|
||||
const { t, locale } = getI18n
|
||||
const state = reactive({
|
||||
queryString: '',
|
||||
dataList: [],
|
||||
scrollHeight: 0,
|
||||
page: {
|
||||
pageIndex: 1,
|
||||
pageSize: 200,
|
||||
totalCount: 0
|
||||
},
|
||||
tabsList: [
|
||||
{ name: computed(() => '包装'), type: '1' },
|
||||
{ name: computed(() => '单独物料'), type: '2' },
|
||||
]
|
||||
tabsIndex:'1',
|
||||
tabsList: [
|
||||
{ name: computed(() => t('index.bz')), type: '1' },
|
||||
{ name: computed(() => t('index.minbz')), type: '2' },
|
||||
],
|
||||
})
|
||||
|
||||
onShow(() => {
|
||||
|
||||
})
|
||||
onMounted(() => {
|
||||
const query = uni.createSelectorQuery().in(this);
|
||||
query.select(".receive-listBox").boundingClientRect((data) => {
|
||||
state.scrollHeight = data.height
|
||||
}).exec();
|
||||
fnDataList()
|
||||
})
|
||||
const fnScrollBottom = () => {
|
||||
console.log(state.page.pageIndex * state.page.pageSize,state.page.totalCount);
|
||||
if (state.page.pageIndex * state.page.pageSize <= state.page.totalCount) {
|
||||
debugger
|
||||
state.page.pageIndex ++;
|
||||
uni.showLoading({ mask: true });
|
||||
setTimeout(() => {
|
||||
fnDataList();
|
||||
}, 500);
|
||||
}
|
||||
}
|
||||
const fnToUrl = (item : any) => {
|
||||
toPages('/pages/productionStorage/material',{id:item.FID,fBillNo:item.FBillNo})
|
||||
}
|
||||
const debounceTimer = ref()
|
||||
const changeFun = (e : any) => {
|
||||
if (debounceTimer.value !== null) clearTimeout(debounceTimer.value)
|
||||
debounceTimer.value = setTimeout(() => {
|
||||
state.queryString = e
|
||||
state.page.pageIndex = 1
|
||||
state.dataList = []
|
||||
fnDataList()
|
||||
}, 500)
|
||||
if(e != '' ) state.queryString = e
|
||||
}
|
||||
const fnDataList = () => {
|
||||
let param = {
|
||||
queryString: state.queryString,
|
||||
pageIndex: state.page.pageIndex,
|
||||
pageSize: state.page.pageSize,
|
||||
};
|
||||
if (state.page.pageIndex == 1) {
|
||||
uni.showLoading({ mask: true });
|
||||
}
|
||||
PRD_MORPTList(param).then(res => {
|
||||
uni.hideLoading();
|
||||
if (res.code == 200) {
|
||||
let result = res.data;
|
||||
let dataArray = result.list;
|
||||
dataArray.forEach(p => {
|
||||
p.FDateFormat = parseTime(p.FDate, '{y}-{m}-{d}');
|
||||
});
|
||||
|
||||
if (state.page.pageIndex == 1) {
|
||||
state.dataList = dataArray;
|
||||
}
|
||||
else {
|
||||
state.dataList = state.dataList.concat(dataArray);
|
||||
}
|
||||
state.page.totalCount = result.total;
|
||||
|
||||
if (state.dataList.length == state.page.totalCount) {
|
||||
// more_status.value = 'nomore';
|
||||
}
|
||||
}
|
||||
});
|
||||
const upTabsItemFun = (e:any) => {
|
||||
state.tabsIndex = e.type
|
||||
}
|
||||
const toPages = (url : string, data : any = {}) => {
|
||||
uni.$u.route({
|
||||
url: url,
|
||||
params: data
|
||||
})
|
||||
const clearOut = () => {
|
||||
state.queryString = ''
|
||||
}
|
||||
const submit = () => {
|
||||
packingRef.value.dataPushNotification()
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="material-listBox">
|
||||
<scroll-view id="scroll-box" class="scroll-box" scroll-y="true"
|
||||
<scroll-view id="scroll-box1" class="scroll-box" scroll-y="true"
|
||||
:style="{'height':state.scrollHeight+'px'}">
|
||||
<view class="list-box-list" v-if="state.dataList.length > 0">
|
||||
<view class="data-item" v-for="(item, index) in state.dataList"
|
||||
@ -39,11 +39,11 @@
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.Lot }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<!-- <view class="itemBox">
|
||||
<view>仓库</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.MultiLanguageText }}</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="itemBox">
|
||||
<view>{{t('receive.ys')}}</view>
|
||||
<view class="zongjian"></view>
|
||||
@ -73,7 +73,7 @@
|
||||
@scanFrameDataFeedback="(res:object)=>{state.scanFrameDataFeedback = res}"
|
||||
@fast="(row:any)=>{state.scanFrameDataFeedback = row}" @err="scanFrameErrFun" />
|
||||
<shortcut ref="shortcutRef" @dataToscanFrame="dataToscanFrameFun" />
|
||||
<tools ref="toolsRef" @defaultPopup="defaultPopupFun" @scanRecord="scanRecordFun" />
|
||||
<tools ref="toolsRef" :type="['scanRecord']" @defaultPopup="defaultPopupFun" @scanRecord="scanRecordFun" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
@ -101,6 +101,7 @@
|
||||
pageSize: 200,
|
||||
totalCount: 0
|
||||
},
|
||||
tabsIndex:'1',
|
||||
FBillNo: '',
|
||||
materialId: '',
|
||||
supplierName: '',
|
||||
@ -125,7 +126,6 @@
|
||||
state.scrollHeight = data.height
|
||||
}).exec();
|
||||
// scanFrameRef.value.stateShow(true)
|
||||
|
||||
})
|
||||
/**
|
||||
* 数据逻辑
|
||||
@ -155,22 +155,13 @@
|
||||
PRD_MORPTScanData({
|
||||
FBarCode: val,
|
||||
FBillNo: state.FBillNo,
|
||||
IsPack: 'false'
|
||||
}).then((res : any) => {
|
||||
if (res.data !== null) {
|
||||
console.log(res);
|
||||
scanFrameRef.value.getreceiveBillScanData({ ...res.data, queryString: state.queryString, scanFrameShowSate: state.shortcutDataFeedback.scanFrameShowSate,stashVerify:true })
|
||||
if (Object.keys(state.shortcutDataFeedback).length) {
|
||||
if (state.shortcutDataFeedback.scanFrameShowSate) {
|
||||
scanFrameRef.value.stateShow(true)
|
||||
} else {
|
||||
postTemporaryScanDraftSaveFun(state.scanFrameDataFeedback)
|
||||
}
|
||||
} else {
|
||||
scanFrameRef.value.stateShow(true)
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast('并没有该条数据')
|
||||
if (res.code === 200) {
|
||||
fnDataList(state.materialId)
|
||||
state.queryString = ''
|
||||
} else {
|
||||
uni.$u.toast(t('verify.noDataMessage'))
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -235,10 +226,9 @@
|
||||
/**
|
||||
* 数据推送
|
||||
*/
|
||||
|
||||
const dataPushNotification = () => {
|
||||
uni.showModal({
|
||||
title: '提示', content: '确定要推送此次数据吗', cancelText: '取消', confirmText: '确定',
|
||||
title: t('public.ts'), content: t('public.tjMessage'), cancelText: t('public.cancel'), confirmText: t('public.confirm'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
let EntryIds : any = []
|
||||
@ -262,7 +252,8 @@
|
||||
Qty: item.FVHUBScanQty,
|
||||
Flot: item.FVHUBFlot,
|
||||
StockId: item.FVHUBStock,
|
||||
StockFlex: item.FVHUBStockFlex
|
||||
StockFlex: item.FVHUBStockFlex,
|
||||
Sno: item.FVHUBJSON
|
||||
})
|
||||
})
|
||||
//推送数据
|
||||
@ -298,11 +289,10 @@
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据请求
|
||||
*/
|
||||
const fnDataList = (FBillNo : any, statesItem : boolean = false) => {
|
||||
const fnDataList = (FBillNo : any) => {
|
||||
let param = {
|
||||
id: FBillNo,
|
||||
};
|
||||
@ -316,12 +306,12 @@
|
||||
dataListArray.forEach((p : any) => {
|
||||
let item = {
|
||||
Id: p.Id,
|
||||
MaterialNo: p.MaterialNumber, //物料编码
|
||||
MaterialName: formatLangTextValue(p.MaterialName), //物料名称
|
||||
Lot: p.FLot_Text, //批号
|
||||
CheckQty: p.Qty, //应扫数量
|
||||
CheckJoinQty: p.ScanedQty, //已扫数量
|
||||
NoCheckQty: p.UnScanQty, //未扫数量
|
||||
MaterialNo: p.MaterialNumber,//物料编码
|
||||
MaterialName: formatLangTextValue(p.MaterialName),//物料名称
|
||||
Lot: p.FLot_Text,//批号
|
||||
CheckQty: p.Qty, //应扫数量
|
||||
CheckJoinQty: p.ScanedQty,//已扫数量
|
||||
NoCheckQty: p.UnScanQty,//未扫数量
|
||||
MultiLanguageText: Object.keys(p.StockId).length ? formatLangTextValue(p.StockId.Name) : '暂无仓库'
|
||||
};
|
||||
state.dataList.push(item);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="采购入库" sticky></l-header>
|
||||
<l-header :title="t('home.cgrk')" sticky></l-header>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('verify.grn')" border="none" clearable inputAlign="left"
|
||||
|
||||
@ -60,12 +60,12 @@
|
||||
<view>{{ item.CheckQty }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>让步</view>
|
||||
<view>{{ t('index.rb') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.CsnReceiveQty }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>合格</view>
|
||||
<view>{{ t('index.hg') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.ReceiveQty }}</view>
|
||||
</view>
|
||||
@ -181,7 +181,7 @@
|
||||
scanFrameRef.value.stateShow(true)
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast('并没有该条数据')
|
||||
uni.$u.toast(t('index.bmygtsj'))
|
||||
state.queryString = ''
|
||||
}
|
||||
})
|
||||
@ -228,7 +228,7 @@
|
||||
state.queryString = ''
|
||||
if (res.data.IsSuccess) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('成功')
|
||||
uni.$u.toast(t('public.cg'))
|
||||
scanFrameRef.value.stateShow(false)
|
||||
}
|
||||
})
|
||||
@ -255,7 +255,7 @@
|
||||
|
||||
const dataPushNotification = () => {
|
||||
uni.showModal({
|
||||
title: '提示', content: '确定要推送此次数据吗', cancelText: '取消', confirmText: '确定',
|
||||
title: t('public.ts'), content: t('public.tjMessage'), cancelText: t('public.cancel'), confirmText: t('public.confirm'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
let EntryIds : any = []
|
||||
@ -297,14 +297,14 @@
|
||||
fStockFlexDetailDelete({Ids:ids.toString()}).then((res:any) => {
|
||||
if(res.code === 200) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('操作成功')
|
||||
uni.$u.toast(t('public.cg'))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
} else {
|
||||
uni.$u.toast('暂无扫描数据')
|
||||
uni.$u.toast(t('verify.noDataMessage'))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -5,37 +5,38 @@
|
||||
<view class="data-item" :style="[{'background-color':'#ffffff'}]">
|
||||
<view class="dataText">
|
||||
<view class="itemBox">
|
||||
<view>生产订单</view>
|
||||
<view>{{ t('index.scdd') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ state.FBillNo }}</view>
|
||||
</view>
|
||||
<view class="timebox">
|
||||
<view>开始生产时间:</view>
|
||||
<uni-datetime-picker hasInput :show="state.FStartProTimeShow" v-model="state.FStartProTimes" :visibleItemCount="3" disabled
|
||||
mode="datetime"></uni-datetime-picker>
|
||||
<view>{{ t('index.ksscsj') }}:</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ state.FStartProTimes }}</view>
|
||||
</view>
|
||||
<view class="timebox">
|
||||
<view>开始测试时间:</view>
|
||||
<uni-datetime-picker hasInput :show="state.FProTestTimeShow" v-model="state.FProTestTimes" :visibleItemCount="3" disabled
|
||||
mode="datetime"></uni-datetime-picker>
|
||||
<view>{{ t('index.kscssj') }}:</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ state.FProTestTimes }}</view>
|
||||
</view>
|
||||
<view class="timebox">
|
||||
<view>开始汇报时间:</view>
|
||||
<uni-datetime-picker hasInput :show="state.FProReportTimeShow" v-model="state.FProReportTimes" :visibleItemCount="3" disabled
|
||||
mode="datetime"></uni-datetime-picker>
|
||||
<view>{{ t('index.kshbsj') }}:</view>
|
||||
<!-- <uni-datetime-picker hasInput :show="state.FProReportTimeShow" v-model="state.FProReportTimes"
|
||||
:visibleItemCount="3" disabled mode="datetime"></uni-datetime-picker> -->
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ state.FProReportTimes }}</view>
|
||||
</view>
|
||||
<view class="timebox" v-if="state.type === '1'">
|
||||
<view>开始投产个数:</view>
|
||||
<up-input placeholder="请输入开始投产个数" clearable inputmode="numeric" v-memo="state.qty"></up-input>
|
||||
<view class="timebox">
|
||||
<view>{{ t('index.scsl') }}:</view>
|
||||
<up-input :placeholder="t('index.scsl')" clearable inputmode="numeric" v-model="state.qty"
|
||||
:disabled="state.type !== '2'"></up-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btnList">
|
||||
<up-button v-show="state.type === '1'" class="btnItem" type="primary" shape="circle"
|
||||
@click="PRD_MOPushIntoProFun"
|
||||
text="确认"></up-button>
|
||||
@click="PRD_MOPushIntoProFun()" :text="t('public.confirm')"></up-button>
|
||||
<up-button v-show="state.type !== '1'" class="btnItem" type="primary" shape="circle"
|
||||
@click="PRD_MORPTSaveFun"
|
||||
text="确认"></up-button>
|
||||
@click="PRD_MORPTSaveFun()" :text="t('public.confirm')"></up-button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -48,6 +49,9 @@
|
||||
import { PRD_MOEnterIntoPro, PRD_MOPushIntoPro, PRD_MORPTSave, PRD_MOViewIntoPro } from '../../common/request/api/api';
|
||||
import { timeFormat } from '@/uni_modules/uview-plus';
|
||||
import { pageDataInfo } from '../../stores/info.js';
|
||||
import { useI18n } from 'vue-i18n'
|
||||
const getI18n = useI18n()
|
||||
const { t, locale } = getI18n
|
||||
const pageDataInfoCom = pageDataInfo()
|
||||
const state = reactive({
|
||||
id: '',
|
||||
@ -60,80 +64,101 @@
|
||||
FProReportTimes: '',//开始汇报时间
|
||||
EnterIntoProData: {},
|
||||
type: '',
|
||||
qty:''
|
||||
qty: ''
|
||||
})
|
||||
onShow(() => {
|
||||
let pageData = pageDataInfoCom.userInfos
|
||||
console.log(pageData);
|
||||
state.EnterIntoProData = pageData
|
||||
state.id = pageData.FID
|
||||
state.id = pageData.Entry[0].Id
|
||||
state.FBillNo = pageData.FBillNo
|
||||
state.type = pageData.type
|
||||
if (state.type === '1') state.qty = pageData.Entry[0].Qty
|
||||
if (state.type === '3') state.qty = pageData.Entry[0].TestQty
|
||||
if (state.type === '2') state.qty = pageData.Entry[0].ReportQty
|
||||
|
||||
if (state.type === '1' && state.FStartProTimes == '') {
|
||||
state.FStartProTimes = timeFormat(pageData.time, 'yyyy-mm-dd hh:MM:ss')
|
||||
}
|
||||
if(pageData.FStartProTimes !== ''){
|
||||
state.FStartProTimes = pageData.FStartProTimes
|
||||
if (pageData.FStartProTimes !== '') {
|
||||
state.FStartProTimes = pageData.FStartProTimes.replace("T", " ")
|
||||
}
|
||||
if (state.type === '2' && state.FProReportTimes == '') {
|
||||
state.FProReportTimes = timeFormat(pageData.time, 'yyyy-mm-dd hh:MM:ss')
|
||||
}
|
||||
if(pageData.FProReportTimes !== ''){
|
||||
state.FProReportTimes = pageData.FProReportTimes
|
||||
if (pageData.FProReportTimes !== '') {
|
||||
state.FProReportTimes = pageData.FProReportTimes.replace("T", " ")
|
||||
}
|
||||
if (state.type === '3' && state.FProTestTimes == '') {
|
||||
state.FProTestTimes = timeFormat(pageData.time, 'yyyy-mm-dd hh:MM:ss')
|
||||
}
|
||||
if(pageData.FProTestTimes !== ''){
|
||||
state.FProTestTimes = pageData.FProTestTimes
|
||||
if (pageData.FProTestTimes !== '') {
|
||||
state.FProTestTimes = pageData.FProTestTimes.replace("T", " ")
|
||||
}
|
||||
})
|
||||
const titleText = () => {
|
||||
if(state.type === '1') return '开始生产'
|
||||
if(state.type === '2') return '开始汇报'
|
||||
if(state.type === '3') return '开始测试'
|
||||
if (state.type === '1') return t('index.kssc')
|
||||
if (state.type === '3') return t('index.kscs')
|
||||
if (state.type === '2') return t('index.kshb')
|
||||
}
|
||||
const PRD_MORPTSaveFun = () => {
|
||||
PRD_MOViewIntoPro({
|
||||
Number:state.FBillNo
|
||||
}).then((res:any) => {
|
||||
if(res.code === 200){
|
||||
if(res.data.FRPFID !== ''){
|
||||
PRD_MORPTSave({
|
||||
Model:JSON.stringify({
|
||||
FID:res.data.FRPFID,
|
||||
FStartProTimes:state.FStartProTimes,
|
||||
FProTestTimes:state.FProTestTimes,
|
||||
FProReportTimes:state.FProReportTimes,
|
||||
Number: state.FBillNo
|
||||
}).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
if (res.data.FRPFID !== '') {
|
||||
let obj1 = {
|
||||
Model: JSON.stringify({
|
||||
FID: res.data.FRPFID,
|
||||
FStartProTimes: state.FStartProTimes,
|
||||
FProTestTimes: state.FProTestTimes,
|
||||
})
|
||||
}).then((resItem:any) => {
|
||||
if(resItem.code === 200){
|
||||
uni.$u.toast('操作成功')
|
||||
}
|
||||
let obj2 = {
|
||||
Model: JSON.stringify({
|
||||
FID: res.data.FRPFID,
|
||||
FStartProTimes: state.FStartProTimes,
|
||||
FProTestTimes: state.FProTestTimes,
|
||||
FProReportTimes: state.FProReportTimes,
|
||||
FEntity: [{ FEntryID: res.data.Entry[0].FRPFENTRYID, FQuaQty: Number(state.qty) }]
|
||||
})
|
||||
}
|
||||
PRD_MORPTSave(state.type === '3' ? obj1 : obj2).then((resItem : any) => {
|
||||
if (resItem.code === 200) {
|
||||
// uni.$u.toast(t('public.cg'))
|
||||
if(state.type === '2'){
|
||||
toPages('/pages/putInProd/print',state.EnterIntoProData)
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
uni.$u.toast('请先进行生产')
|
||||
uni.$u.toast(t('index.qxjxsc'))
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
const PRD_MOPushIntoProFun = () => {
|
||||
|
||||
if (state.qty === '' || Number(state.qty) === 0) {
|
||||
uni.$u.toast(t('index.slbnwk'))
|
||||
return
|
||||
}
|
||||
PRD_MOPushIntoPro({
|
||||
EntryIds: state.id + '',
|
||||
EntryIds: state.id,
|
||||
TargetFormId: "PRD_MORPT",
|
||||
IsEnableDefaultRule: "true",
|
||||
CustomParams: {
|
||||
ScanEntry: [
|
||||
{
|
||||
FStartProTimes: state.FStartProTimes,
|
||||
FENTRYID: state.id + '',
|
||||
FENTRYID: state.id,
|
||||
Qty: Number(state.qty)
|
||||
}
|
||||
]
|
||||
}
|
||||
}).then((res : any) => {
|
||||
if(res.code === 200){
|
||||
uni.$u.toast('操作成功')
|
||||
if (res.code === 200) {
|
||||
uni.$u.toast(t('public.cg'))
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -145,12 +170,19 @@
|
||||
}
|
||||
return val[0].Value;
|
||||
}
|
||||
const toPages = (url : string, data : any = {}) => {
|
||||
uni.$u.route({
|
||||
url: url,
|
||||
params: data
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
:deep(.uni-date__x-input){
|
||||
color: black !important;
|
||||
:deep(.uni-date__x-input) {
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
.app {
|
||||
background-color: #F5F5F5;
|
||||
|
||||
@ -192,6 +224,7 @@
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 32rpx;
|
||||
|
||||
.zongjian {
|
||||
height: 1px;
|
||||
flex: 1;
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="生产投产" sticky></l-header>
|
||||
<l-header :title="t('home.sctc')" sticky></l-header>
|
||||
<view class="input-box">
|
||||
<up-tabs :scrollable="state.scrollableTabState" :list="state.tabsList" @click="setScrollableTabStateFun"></up-tabs>
|
||||
</view>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input placeholder="生产订单编号" border="none" clearable inputAlign="left"
|
||||
<up-input :placeholder="t('index.scddbh')" border="none" clearable inputAlign="left"
|
||||
v-model="state.queryString" @change="changeFun" ref="inputRef">
|
||||
<template #prefix>
|
||||
<up-icon name="scan" color="#2979ff" size="24"></up-icon>
|
||||
@ -20,7 +20,7 @@
|
||||
:style="{'height':state.scrollHeight+'px'}" @scrolltolower="fnScrollBottom()">
|
||||
<view class="list-box-list" v-if="state.dataList.length > 0">
|
||||
<view class="data-item" v-for="(item, index) in state.dataList" :key="index">
|
||||
<view class="tit">生产订单编号:{{item.FBillNo}}</view>
|
||||
<view class="tit">{{ t('index.scddbh') }}:{{item.FBillNo}}</view>
|
||||
<view class="line-p"></view>
|
||||
<view class="b-font">{{ t('receive.rq') }}:{{item.FDateFormat}}</view>
|
||||
</view>
|
||||
@ -48,7 +48,7 @@
|
||||
const { t, locale } = getI18n
|
||||
const state = reactive({
|
||||
queryString: '',
|
||||
scrollableTabState: locale.value === 'en',
|
||||
scrollableTabState: false,
|
||||
dataList: [],
|
||||
inputFocus: true,
|
||||
scrollHeight: 0,
|
||||
|
||||
@ -28,17 +28,17 @@
|
||||
<view>{{ item.Lot }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>仓库</view>
|
||||
<view>{{ t('index.ck') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.MultiLanguageText }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>合格品入库数量</view>
|
||||
<view>{{ t('index.hgrksl') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.StockInQuaAuxQty }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>数量</view>
|
||||
<view>{{ t('pubilc.qty') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.CheckQty }}</view>
|
||||
</view>
|
||||
@ -128,7 +128,7 @@
|
||||
MaterialName: formatLangTextValue(p.MaterialName), //物料名称
|
||||
Lot: p.FLot_Text, //批号
|
||||
CheckQty: p.Qty, //应扫数量
|
||||
MultiLanguageText:Object.keys(p.StockId).length ? formatLangTextValue(p.StockId.Name) : '暂无仓库',
|
||||
MultiLanguageText:Object.keys(p.StockId).length ? formatLangTextValue(p.StockId.Name) : t('index.zwck'),
|
||||
StockInQuaAuxQty:p.StockInQuaAuxQty
|
||||
};
|
||||
state.dataList.push(item);
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="扫描记录" sticky #right>
|
||||
<view style="margin-right: 32rpx;" @click="fStockFlexDetailMultiDeleteFun()">全部删除</view>
|
||||
<l-header :title="t('public.smjl')" sticky #right>
|
||||
<view style="margin-right: 32rpx;" @click="fStockFlexDetailMultiDeleteFun()">{{ t('index.qbsc') }}</view>
|
||||
</l-header>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
@ -15,8 +15,8 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="records-listBox">
|
||||
<scroll-view id="scroll-box" class="scroll-box" scroll-y="true"
|
||||
:style="{'height':state.scrollHeight+'px'}" @scrolltolower="fnScrollBottom()">
|
||||
<scroll-view id="scroll-box" class="scroll-box" scroll-y="true" :style="{'height':state.scrollHeight+'px'}"
|
||||
@scrolltolower="fnScrollBottom()">
|
||||
<view class="list-box-list">
|
||||
<uni-swipe-action>
|
||||
<uni-swipe-action-item :right-options="state.options" @click="onClick"
|
||||
@ -26,39 +26,27 @@
|
||||
<up-icon name="trash" color="#ffffff" size="28"></up-icon>
|
||||
</view>
|
||||
</template>
|
||||
<view class="data-item"
|
||||
:style="[{'background-color':'#ffffff'}]"
|
||||
:key="index">
|
||||
<view class="data-item" :style="[{'background-color':'#ffffff'}]" :key="index">
|
||||
<view class="text" style="margin-bottom: 20px;display: flex;">
|
||||
<view>{{ item['FVHUBMaterial.FName'] }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>单据编号</view>
|
||||
<view>{{ t('receive.djbh') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.FVHUBFBillNo }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>物料编码</view>
|
||||
<view>{{ t('public.wlbm') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.FVHUBMaterialNumber }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>本次扫描数量</view>
|
||||
<view>{{ t('public.qty') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item.FVHUBScanQty }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>仓库</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item['FVHUBStock.FName'] }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>仓库编码</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ item['FVHUBStock.FNumber'] }}</view>
|
||||
</view>
|
||||
<view class="itemBox">
|
||||
<view>扫描时间</view>
|
||||
<view>{{ t('receive.rq') }}</view>
|
||||
<view class="zongjian"></view>
|
||||
<view>{{ parseTime(item.FVHUBCreateDate, '{y}-{m}-{d} {h}:{i}') }}</view>
|
||||
</view>
|
||||
@ -66,7 +54,7 @@
|
||||
</uni-swipe-action-item>
|
||||
</uni-swipe-action>
|
||||
</view>
|
||||
<view v-if="state.dataList.length==0">
|
||||
<view v-if="state.dataList.length==0">
|
||||
<up-empty mode="list"></up-empty>
|
||||
</view>
|
||||
</scroll-view>
|
||||
@ -78,15 +66,17 @@
|
||||
<script lang="ts" setup>
|
||||
import { reactive, nextTick, onMounted, ref, computed, watch } from 'vue';
|
||||
import { onLoad, onShow, onReachBottom, } from '@dcloudio/uni-app'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import { parseTime } from '../../utils/tools.js';
|
||||
// parseTime(p.FDate, '{y}-{m}-{d}');
|
||||
import { fStockFlexDetailDelete, fStockFlexDetailMultiDelete, receiveBillList, temporaryScanList } from '../../common/request/api/api';
|
||||
import { sqlite } from '../../stores/sqlite'
|
||||
const DB = sqlite()
|
||||
const inputRef = ref()
|
||||
import { useI18n } from 'vue-i18n'
|
||||
const getI18n = useI18n()
|
||||
const { t, locale } = getI18n
|
||||
const DB = sqlite()
|
||||
const inputRef = ref()
|
||||
|
||||
const state = reactive({
|
||||
queryString: '',
|
||||
dataList: [],
|
||||
@ -139,17 +129,17 @@
|
||||
|
||||
|
||||
const navClick = (index : any) => { state.navIndex = index }
|
||||
const onClick = (e : any) => {}
|
||||
const swipeChange = (e : any, index : any) => {}
|
||||
|
||||
const fStockFlexDetailDeleteFun = (item:any) => {
|
||||
const onClick = (e : any) => { }
|
||||
const swipeChange = (e : any, index : any) => { }
|
||||
|
||||
const fStockFlexDetailDeleteFun = (item : any) => {
|
||||
uni.showModal({
|
||||
title : '提示', content : '确定要删除该条数据吗?', cancelText : '取消', confirmText: '确定',
|
||||
success(res) {
|
||||
title: t('index.ts'), content: t('index.qdysc'), cancelText: t('public.cancel'), confirmText: t('public.confirm'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
fStockFlexDetailDelete({Ids:item.FID + ''}).then((res:any) => {
|
||||
if(res.code === 200) {
|
||||
uni.$u.toast('已删除')
|
||||
fStockFlexDetailDelete({ Ids: item.FID + '' }).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
uni.$u.toast(t('index.ysc'))
|
||||
state.page.pageIndex = 1
|
||||
fnDataList()
|
||||
}
|
||||
@ -162,12 +152,12 @@
|
||||
}
|
||||
const fStockFlexDetailMultiDeleteFun = () => {
|
||||
uni.showModal({
|
||||
title : '提示', content : '确定要删全部删除吗?', cancelText : '取消', confirmText: '确定',
|
||||
success(res) {
|
||||
title: t('index.ts'), content: t('index.qdyqbsc'), cancelText: t('public.cancel'), confirmText: t('public.confirm'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
fStockFlexDetailMultiDelete({FVHUBFormId:state.FormId}).then((res:any) => {
|
||||
if(res.code === 200) {
|
||||
uni.$u.toast('已全部删除')
|
||||
fStockFlexDetailMultiDelete({ FVHUBFormId: state.FormId }).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
uni.$u.toast(t('index.tqbsc'))
|
||||
state.page.pageIndex = 1
|
||||
fnDataList()
|
||||
}
|
||||
@ -238,6 +228,7 @@
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
flex: 1;
|
||||
|
||||
.input-box {
|
||||
background-color: white;
|
||||
box-sizing: border-box;
|
||||
@ -271,11 +262,13 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.records-listBox {
|
||||
flex: 1;
|
||||
|
||||
.list-box-list {
|
||||
width: 100%;
|
||||
|
||||
.itemRight {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<view class="app status-bar-gap">
|
||||
<view class="page">
|
||||
<l-header title="生产补料" sticky></l-header>
|
||||
<l-header :title="t('home.scbl')" sticky></l-header>
|
||||
<view class="input-box">
|
||||
<view class="input-item">
|
||||
<up-input :placeholder="t('receive.djbh')" border="none" clearable inputAlign="left"
|
||||
<up-input :placeholder="t('index.scdd')" border="none" clearable inputAlign="left"
|
||||
v-model="state.queryString" @change="changeFun">
|
||||
<template #prefix>
|
||||
<up-icon name="search" color="#2979ff" size="24"></up-icon>
|
||||
@ -18,7 +18,7 @@
|
||||
<view class="list-box-list" v-if="state.dataList.length > 0">
|
||||
<view class="data-item" @click.stop="fnToUrl(item)"
|
||||
v-for="(item, index) in state.dataList" :key="index">
|
||||
<view class="tit">生产用料清单单号:{{item.FBillNo}}</view>
|
||||
<view class="tit">{{ t('index.scylqddh') }}:{{item.FBillNo}}</view>
|
||||
<view class="line-p"></view>
|
||||
<view class="b-font">{{ t('receive.rq') }}:{{item.FDateFormat}}</view>
|
||||
</view>
|
||||
|
||||
@ -171,7 +171,7 @@
|
||||
scanFrameRef.value.stateShow(true)
|
||||
}
|
||||
} else {
|
||||
uni.$u.toast('并没有该条数据')
|
||||
uni.$u.toast(t('index.bmygtsj'))
|
||||
state.queryString = ''
|
||||
}
|
||||
})
|
||||
@ -213,7 +213,7 @@
|
||||
state.queryString = ''
|
||||
if (res.data.IsSuccess) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('成功')
|
||||
uni.$u.toast(t('public.cg'))
|
||||
scanFrameRef.value.stateShow(false)
|
||||
}
|
||||
})
|
||||
@ -240,7 +240,7 @@
|
||||
|
||||
const dataPushNotification = () => {
|
||||
uni.showModal({
|
||||
title: '提示', content: '确定要推送此次数据吗', cancelText: '取消', confirmText: '确定',
|
||||
title: t('public.ts'), content: t('public.tjMessage'), cancelText: t('public.cancel'), confirmText: t('public.confirm'),
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
let EntryIds : any = []
|
||||
@ -281,14 +281,13 @@
|
||||
fStockFlexDetailDelete({ Ids: ids.toString() }).then((res : any) => {
|
||||
if (res.code === 200) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast('操作成功')
|
||||
uni.$u.toast(t(''))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
})
|
||||
} else {
|
||||
uni.$u.toast('暂无扫描数据')
|
||||
uni.$u.toast(t('verify.noDataMessage'))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -225,7 +225,7 @@
|
||||
success(res) {
|
||||
if (res.confirm) {
|
||||
let ids : any = []
|
||||
// let checkIds : any = []
|
||||
let checkIds : any = []
|
||||
let param = {
|
||||
FormId: 'PUR_ReceiveBill',
|
||||
UserId: uni.getStorageSync('userInfo').Context.UserId,
|
||||
@ -238,6 +238,7 @@
|
||||
if (resScanList.data.list.length != 0) {
|
||||
resScanList.data.list.forEach((item : any) => {
|
||||
ids.push(item.FVHUBEntryId)
|
||||
checkIds.push(item.FID)
|
||||
})
|
||||
console.log(ids);
|
||||
// debugger
|
||||
@ -250,7 +251,7 @@
|
||||
Ids: state.materialId
|
||||
}).then((resCheck : any) => {
|
||||
if (resCheck.code === 200) {
|
||||
fStockFlexDetailDelete({ Ids: ids.toString() }).then((resDelete : any) => {
|
||||
fStockFlexDetailDelete({ Ids: checkIds.toString() }).then((resDelete : any) => {
|
||||
if (resDelete.code === 200) {
|
||||
fnDataList(state.materialId);
|
||||
uni.$u.toast(t('public.cg'))
|
||||
|
||||
@ -1,23 +1,3 @@
|
||||
## 0.9.5(2025-02-06)
|
||||
- 新增 完善下载失败时的处理逻辑
|
||||
## 0.9.4(2024-12-28)
|
||||
- 修复 腾讯云在使用扩展存储时报错的 Bug
|
||||
## 0.9.3(2024-12-23)
|
||||
- 修复 升级中心在大屏上的显示效果
|
||||
## 0.9.2(2024-11-06)
|
||||
- 更新 部分 ts 类型
|
||||
## 0.9.1(2024-11-01)
|
||||
- 更新 支持 HarmonyOS Next 设备整包更新、wgt 更新。需要 `HBuilderX 4.32+` [详情](https://doc.dcloud.net.cn/uniCloud/upgrade-center.html#uni-upgrade-center-app-harmonyos)
|
||||
## 0.9.0(2024-10-30)
|
||||
- **重要更新** 在 uni-app x 项目中弃用之前弹窗方案使用[dialogPage](https://doc.dcloud.net.cn/uni-app-x/api/dialog-page.html)实现,需要 `HBuilderX 4.31+`
|
||||
## 0.8.5(2024-10-26)
|
||||
- 优化 去除不必要代码
|
||||
## 0.8.4(2024-10-26)
|
||||
- 修复 uni-app x 项目升级到 4.31 alpha 后中间有空隙的Bug
|
||||
## 0.8.3(2024-07-31)
|
||||
- 修复 部分类型报错
|
||||
## 0.8.2(2024-07-15)
|
||||
- 更新 static 下的静态图片放入 static/app 目录下,防止编译除 app 平台以外的平台时带入
|
||||
## 0.8.1(2024-04-28)
|
||||
- 修复 在 HX 4.0.3+ uni-app x 项目运行到 Android 调不起安装的Bug
|
||||
## 0.8.0(2024-04-15)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "uni-upgrade-center-app",
|
||||
"displayName": "升级中心 uni-upgrade-center - App",
|
||||
"version": "0.9.5",
|
||||
"version": "0.8.1",
|
||||
"description": "uni升级中心 - 客户端检查更新",
|
||||
"keywords": [
|
||||
"uniCloud",
|
||||
@ -11,7 +11,7 @@
|
||||
],
|
||||
"repository": "https://gitee.com/dcloud/uni-upgrade-center/tree/master/uni_modules/uni-upgrade-center-app",
|
||||
"engines": {
|
||||
"HBuilderX": "^4.31"
|
||||
"HBuilderX": "^4.03"
|
||||
},
|
||||
"dcloudext": {
|
||||
"sale": {
|
||||
@ -35,6 +35,7 @@
|
||||
},
|
||||
"uni_modules": {
|
||||
"dependencies": [
|
||||
"uni-installApk",
|
||||
"uts-progressNotification",
|
||||
"uts-openSchema"
|
||||
],
|
||||
@ -47,35 +48,33 @@
|
||||
},
|
||||
"client": {
|
||||
"App": {
|
||||
"app-vue": "y",
|
||||
"app-nvue": "y",
|
||||
"app-harmony": "u",
|
||||
"app-uvue": "y"
|
||||
"app-vue": "y",
|
||||
"app-nvue": "u"
|
||||
},
|
||||
"H5-mobile": {
|
||||
"Safari": "n",
|
||||
"Android Browser": "n",
|
||||
"微信浏览器(Android)": "n",
|
||||
"QQ浏览器(Android)": "n"
|
||||
"Safari": "y",
|
||||
"Android Browser": "y",
|
||||
"微信浏览器(Android)": "y",
|
||||
"QQ浏览器(Android)": "y"
|
||||
},
|
||||
"H5-pc": {
|
||||
"Chrome": "n",
|
||||
"IE": "n",
|
||||
"Edge": "n",
|
||||
"Firefox": "n",
|
||||
"Safari": "n"
|
||||
"Chrome": "y",
|
||||
"IE": "y",
|
||||
"Edge": "y",
|
||||
"Firefox": "y",
|
||||
"Safari": "y"
|
||||
},
|
||||
"小程序": {
|
||||
"微信": "n",
|
||||
"阿里": "n",
|
||||
"百度": "n",
|
||||
"字节跳动": "n",
|
||||
"QQ": "n",
|
||||
"京东": "n"
|
||||
"微信": "u",
|
||||
"阿里": "u",
|
||||
"百度": "u",
|
||||
"字节跳动": "u",
|
||||
"QQ": "u",
|
||||
"京东": "u"
|
||||
},
|
||||
"快应用": {
|
||||
"华为": "n",
|
||||
"联盟": "n"
|
||||
"华为": "u",
|
||||
"联盟": "u"
|
||||
},
|
||||
"Vue": {
|
||||
"vue2": "y",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,15 +1,16 @@
|
||||
import callCheckVersion, { UniUpgradeCenterResult } from "./call-check-version"
|
||||
import { platform_iOS } from './utils'
|
||||
// #ifdef UNI-APP-X
|
||||
import { openSchema } from '@/uni_modules/uts-openSchema'
|
||||
// #endif
|
||||
|
||||
// 推荐再App.vue中使用
|
||||
const PACKAGE_INFO_KEY = '__package_info__'
|
||||
// #ifdef APP-HARMONY
|
||||
export default function (component?: any) : Promise<UniUpgradeCenterResult> {
|
||||
|
||||
// uni-app 项目无法从 vue 中导出 ComponentPublicInstance 类型,故使用条件编译
|
||||
// #ifdef UNI-APP-X
|
||||
export default function (component : ComponentPublicInstance | null = null) : Promise<UniUpgradeCenterResult> {
|
||||
// #endif
|
||||
// #ifndef APP-HARMONY
|
||||
// #ifndef UNI-APP-X
|
||||
export default function () : Promise<UniUpgradeCenterResult> {
|
||||
// #endif
|
||||
return new Promise<UniUpgradeCenterResult>((resolve, reject) => {
|
||||
@ -18,13 +19,12 @@ export default function () : Promise<UniUpgradeCenterResult> {
|
||||
const code = uniUpgradeCenterResult.code
|
||||
const message = uniUpgradeCenterResult.message
|
||||
const url = uniUpgradeCenterResult.url // 安装包下载地址
|
||||
|
||||
// 此处逻辑仅为示例,可自行编写
|
||||
if (code > 0) {
|
||||
// 腾讯云获取下载链接
|
||||
if (/^cloud:\/\//.test(url)) {
|
||||
const tcbRes = await uniCloud.getTempFileURL({ fileList: [url] });
|
||||
if (typeof tcbRes.fileList[0].tempFileURL !== 'undefined') uniUpgradeCenterResult.url = tcbRes.fileList[0].tempFileURL;
|
||||
}
|
||||
// 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回
|
||||
const tcbRes = await uniCloud.getTempFileURL({ fileList: [url] });
|
||||
if (typeof tcbRes.fileList[0].tempFileURL !== 'undefined') uniUpgradeCenterResult.url = tcbRes.fileList[0].tempFileURL;
|
||||
|
||||
/**
|
||||
* 提示升级一
|
||||
@ -55,7 +55,6 @@ export default function () : Promise<UniUpgradeCenterResult> {
|
||||
* 官方适配的升级弹窗,可自行替换资源适配UI风格
|
||||
*/
|
||||
// #ifndef UNI-APP-X
|
||||
// #ifdef APP-PLUS
|
||||
uni.setStorageSync(PACKAGE_INFO_KEY, uniUpgradeCenterResult)
|
||||
uni.navigateTo({
|
||||
url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
|
||||
@ -65,27 +64,8 @@ export default function () : Promise<UniUpgradeCenterResult> {
|
||||
}
|
||||
})
|
||||
// #endif
|
||||
// #ifdef APP-HARMONY
|
||||
if (component) {
|
||||
component.show(true, uniUpgradeCenterResult)
|
||||
} else {
|
||||
reject({
|
||||
code: -1,
|
||||
message: '在 HarmonyOS Next 平台请传递组件使用'
|
||||
})
|
||||
}
|
||||
// #endif
|
||||
// #endif
|
||||
// #ifdef UNI-APP-X
|
||||
uni.setStorageSync(PACKAGE_INFO_KEY, uniUpgradeCenterResult)
|
||||
uni.openDialogPage({
|
||||
url: `/uni_modules/uni-upgrade-center-app/pages/uni-app-x/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
|
||||
disableEscBack: true,
|
||||
fail: (err) => {
|
||||
console.error('更新弹框跳转失败', err)
|
||||
uni.removeStorageSync(PACKAGE_INFO_KEY)
|
||||
}
|
||||
})
|
||||
component?.$callMethod('show', true, uniUpgradeCenterResult)
|
||||
// #endif
|
||||
|
||||
return resolve(uniUpgradeCenterResult)
|
||||
@ -115,7 +95,7 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
|
||||
} = packageInfo;
|
||||
|
||||
let isWGT = type === 'wgt'
|
||||
let isiOS = !isWGT ? platform.includes(platform_iOS) : false;
|
||||
let isiOS = !isWGT ? platform.includes('iOS') : false;
|
||||
|
||||
// #ifndef UNI-APP-X
|
||||
let confirmText = isiOS ? '立即跳转更新' : '立即下载更新'
|
||||
@ -164,19 +144,7 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
|
||||
}, () => {
|
||||
if (is_mandatory) {
|
||||
//更新完重启app
|
||||
// #ifdef APP-PLUS
|
||||
plus.runtime.restart();
|
||||
// #endif
|
||||
// #ifdef APP-HARMONY
|
||||
uni.showModal({
|
||||
title: '安装成功',
|
||||
content: '请手动重启应用',
|
||||
showCancel: false,
|
||||
success: res => {
|
||||
plus.runtime.quit();
|
||||
}
|
||||
});
|
||||
// #endif
|
||||
return;
|
||||
}
|
||||
uni.showModal({
|
||||
@ -184,12 +152,7 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
|
||||
success: res => {
|
||||
if (res.confirm) {
|
||||
//更新完重启app
|
||||
// #ifdef APP-PLUS
|
||||
plus.runtime.restart();
|
||||
// #endif
|
||||
// #ifdef APP-HARMONY
|
||||
plus.runtime.quit();
|
||||
// #endif
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -214,7 +177,7 @@ function updateUseModal(packageInfo : UniUpgradeCenterResult) : void {
|
||||
fail: err => {
|
||||
uni.showModal({
|
||||
title: '更新失败',
|
||||
content: err.errMsg,
|
||||
content: err.message,
|
||||
showCancel: false
|
||||
});
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
14
unpackage/dist/build/app-plus/app-service.js
vendored
14
unpackage/dist/build/app-plus/app-service.js
vendored
File diff suppressed because one or more lines are too long
12
unpackage/dist/build/app-plus/manifest.json
vendored
12
unpackage/dist/build/app-plus/manifest.json
vendored
@ -5,10 +5,10 @@
|
||||
"iPad"
|
||||
],
|
||||
"id": "__UNI__901D257",
|
||||
"name": "美塞斯条码机",
|
||||
"name": "Maxcess Barcode",
|
||||
"version": {
|
||||
"name": "1.0.4",
|
||||
"code": 104
|
||||
"name": "0.0.2",
|
||||
"code": 2
|
||||
},
|
||||
"description": "",
|
||||
"developer": {
|
||||
@ -249,7 +249,11 @@
|
||||
],
|
||||
"backgroundColor": "#FFF",
|
||||
"selectedIndex": 0,
|
||||
"shown": true
|
||||
"shown": true,
|
||||
"child": [
|
||||
"lauchwebview"
|
||||
],
|
||||
"selected": 0
|
||||
}
|
||||
},
|
||||
"app-harmony": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
14540
unpackage/dist/dev/app-plus/app-service.js
vendored
14540
unpackage/dist/dev/app-plus/app-service.js
vendored
File diff suppressed because one or more lines are too long
4
unpackage/dist/dev/app-plus/manifest.json
vendored
4
unpackage/dist/dev/app-plus/manifest.json
vendored
@ -7,8 +7,8 @@
|
||||
"id": "__UNI__901D257",
|
||||
"name": "Maxcess Barcode",
|
||||
"version": {
|
||||
"name": "1.0.4",
|
||||
"code": 104
|
||||
"name": "0.0.2",
|
||||
"code": 2
|
||||
},
|
||||
"description": "",
|
||||
"developer": {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
1261
unpackage/dist/dev/app-plus/pages/outOftock/material.css
vendored
1261
unpackage/dist/dev/app-plus/pages/outOftock/material.css
vendored
File diff suppressed because it is too large
Load Diff
@ -163,6 +163,195 @@
|
||||
line-height: 1;
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit[data-v-06cca9b7] {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
/* 单行省略 */
|
||||
.one-line-omit[data-v-06cca9b7] {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.u-empty[data-v-06cca9b7],
|
||||
.u-empty__wrap[data-v-06cca9b7],
|
||||
.u-tabs[data-v-06cca9b7],
|
||||
.u-tabs__wrapper[data-v-06cca9b7],
|
||||
.u-tabs__wrapper__scroll-view-wrapper[data-v-06cca9b7],
|
||||
.u-tabs__wrapper__scroll-view[data-v-06cca9b7],
|
||||
.u-tabs__wrapper__nav[data-v-06cca9b7],
|
||||
.u-tabs__wrapper__nav__line[data-v-06cca9b7],
|
||||
.up-empty[data-v-06cca9b7],
|
||||
.up-empty__wrap[data-v-06cca9b7],
|
||||
.up-tabs[data-v-06cca9b7],
|
||||
.up-tabs__wrapper[data-v-06cca9b7],
|
||||
.up-tabs__wrapper__scroll-view-wrapper[data-v-06cca9b7],
|
||||
.up-tabs__wrapper__scroll-view[data-v-06cca9b7],
|
||||
.up-tabs__wrapper__nav[data-v-06cca9b7],
|
||||
.up-tabs__wrapper__nav__line[data-v-06cca9b7] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-shrink: 0;
|
||||
flex-grow: 0;
|
||||
flex-basis: auto;
|
||||
align-items: stretch;
|
||||
align-content: flex-start;
|
||||
}
|
||||
.u-badge[data-v-06cca9b7] {
|
||||
border-top-right-radius: 100px;
|
||||
border-top-left-radius: 100px;
|
||||
border-bottom-left-radius: 100px;
|
||||
border-bottom-right-radius: 100px;
|
||||
|
||||
display: flex;
|
||||
|
||||
flex-direction: row;
|
||||
line-height: 11px;
|
||||
text-align: center;
|
||||
font-size: 11px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.u-badge--dot[data-v-06cca9b7] {
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
}
|
||||
.u-badge--inverted[data-v-06cca9b7] {
|
||||
font-size: 13px;
|
||||
}
|
||||
.u-badge--not-dot[data-v-06cca9b7] {
|
||||
padding: 2px 5px;
|
||||
}
|
||||
.u-badge--horn[data-v-06cca9b7] {
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.u-badge--primary[data-v-06cca9b7] {
|
||||
background-color: #3c9cff;
|
||||
}
|
||||
.u-badge--primary--inverted[data-v-06cca9b7] {
|
||||
color: #3c9cff;
|
||||
}
|
||||
.u-badge--error[data-v-06cca9b7] {
|
||||
background-color: #f56c6c;
|
||||
}
|
||||
.u-badge--error--inverted[data-v-06cca9b7] {
|
||||
color: #f56c6c;
|
||||
}
|
||||
.u-badge--success[data-v-06cca9b7] {
|
||||
background-color: #5ac725;
|
||||
}
|
||||
.u-badge--success--inverted[data-v-06cca9b7] {
|
||||
color: #5ac725;
|
||||
}
|
||||
.u-badge--info[data-v-06cca9b7] {
|
||||
background-color: #909399;
|
||||
}
|
||||
.u-badge--info--inverted[data-v-06cca9b7] {
|
||||
color: #909399;
|
||||
}
|
||||
.u-badge--warning[data-v-06cca9b7] {
|
||||
background-color: #f9ae3d;
|
||||
}
|
||||
.u-badge--warning--inverted[data-v-06cca9b7] {
|
||||
color: #f9ae3d;
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit[data-v-02b0c54f] {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
/* 单行省略 */
|
||||
.one-line-omit[data-v-02b0c54f] {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.u-empty[data-v-02b0c54f],
|
||||
.u-empty__wrap[data-v-02b0c54f],
|
||||
.u-tabs[data-v-02b0c54f],
|
||||
.u-tabs__wrapper[data-v-02b0c54f],
|
||||
.u-tabs__wrapper__scroll-view-wrapper[data-v-02b0c54f],
|
||||
.u-tabs__wrapper__scroll-view[data-v-02b0c54f],
|
||||
.u-tabs__wrapper__nav[data-v-02b0c54f],
|
||||
.u-tabs__wrapper__nav__line[data-v-02b0c54f],
|
||||
.up-empty[data-v-02b0c54f],
|
||||
.up-empty__wrap[data-v-02b0c54f],
|
||||
.up-tabs[data-v-02b0c54f],
|
||||
.up-tabs__wrapper[data-v-02b0c54f],
|
||||
.up-tabs__wrapper__scroll-view-wrapper[data-v-02b0c54f],
|
||||
.up-tabs__wrapper__scroll-view[data-v-02b0c54f],
|
||||
.up-tabs__wrapper__nav[data-v-02b0c54f],
|
||||
.up-tabs__wrapper__nav__line[data-v-02b0c54f] {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-shrink: 0;
|
||||
flex-grow: 0;
|
||||
flex-basis: auto;
|
||||
align-items: stretch;
|
||||
align-content: flex-start;
|
||||
}
|
||||
.u-tabs__wrapper[data-v-02b0c54f] {
|
||||
|
||||
display: flex;
|
||||
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
.u-tabs__wrapper__scroll-view-wrapper[data-v-02b0c54f] {
|
||||
flex: 1;
|
||||
overflow: auto hidden;
|
||||
}
|
||||
.u-tabs__wrapper__scroll-view[data-v-02b0c54f] {
|
||||
|
||||
display: flex;
|
||||
|
||||
flex-direction: row;
|
||||
flex: 1;
|
||||
}
|
||||
.u-tabs__wrapper__nav[data-v-02b0c54f] {
|
||||
|
||||
display: flex;
|
||||
|
||||
flex-direction: row;
|
||||
position: relative;
|
||||
}
|
||||
.u-tabs__wrapper__nav__item[data-v-02b0c54f] {
|
||||
padding: 0 11px;
|
||||
|
||||
display: flex;
|
||||
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.u-tabs__wrapper__nav__item__text[data-v-02b0c54f] {
|
||||
font-size: 15px;
|
||||
color: #606266;
|
||||
white-space: nowrap !important;
|
||||
}
|
||||
.u-tabs__wrapper__nav__item__text--disabled[data-v-02b0c54f] {
|
||||
color: #c8c9cc !important;
|
||||
}
|
||||
.u-tabs__wrapper__nav__line[data-v-02b0c54f] {
|
||||
height: 3px;
|
||||
background: #3c9cff;
|
||||
width: 30px;
|
||||
position: absolute;
|
||||
bottom: 2px;
|
||||
border-radius: 100px;
|
||||
transition-property: transform;
|
||||
transition-duration: 300ms;
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit[data-v-df79975b] {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
@ -267,6 +456,68 @@
|
||||
margin-right: 4px;
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit[data-v-8ff2a577] {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
/* 单行省略 */
|
||||
.one-line-omit[data-v-8ff2a577] {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.uni-swipe[data-v-8ff2a577] {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
.uni-swipe_box[data-v-8ff2a577] {
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
}
|
||||
.uni-swipe_text--center[data-v-8ff2a577] {
|
||||
width: 100%;
|
||||
cursor: grab;
|
||||
}
|
||||
.uni-swipe_button-group[data-v-8ff2a577] {
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
.button-group--left[data-v-8ff2a577] {
|
||||
left: 0;
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
.button-group--right[data-v-8ff2a577] {
|
||||
right: 0;
|
||||
transform: translateX(100%);
|
||||
}
|
||||
.uni-swipe_button[data-v-8ff2a577] {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
}
|
||||
.uni-swipe_button-text[data-v-8ff2a577] {
|
||||
flex-shrink: 0;
|
||||
font-size: 14px;
|
||||
}
|
||||
.ani[data-v-8ff2a577] {
|
||||
transition-property: transform;
|
||||
transition-duration: 0.3s;
|
||||
transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit[data-v-8dd5928e] {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
@ -334,6 +585,92 @@
|
||||
margin-top: 0.625rem;
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit[data-v-6a6aa8f1] {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
/* 单行省略 */
|
||||
.one-line-omit[data-v-6a6aa8f1] {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.material-listBox1[data-v-6a6aa8f1] {
|
||||
flex: 1;
|
||||
}
|
||||
.material-listBox1 .list-box-list[data-v-6a6aa8f1] {
|
||||
width: 100%;
|
||||
}
|
||||
.material-listBox1 .list-box-list .data-item[data-v-6a6aa8f1] {
|
||||
border: 1px solid #efeaea;
|
||||
border-radius: 0.625rem;
|
||||
box-shadow: 0 0.46875rem 0.46875rem #efeaea;
|
||||
padding: 0.625rem 0.6875rem;
|
||||
margin-bottom: 0.5rem;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.material-listBox1 .list-box-list .data-item .itemBox[data-v-6a6aa8f1] {
|
||||
line-height: 1.5625rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.material-listBox1 .list-box-list .data-item .itemBox .zongjian[data-v-6a6aa8f1] {
|
||||
height: 1px;
|
||||
flex: 1;
|
||||
background-color: #f0f0f0;
|
||||
margin: 0 0.5rem;
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit[data-v-ef7f0ea3] {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
/* 单行省略 */
|
||||
.one-line-omit[data-v-ef7f0ea3] {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.receive-listBox[data-v-ef7f0ea3] {
|
||||
flex: 1;
|
||||
}
|
||||
.receive-listBox .list-box-list[data-v-ef7f0ea3] {
|
||||
width: 100%;
|
||||
}
|
||||
.receive-listBox .list-box-list .data-item[data-v-ef7f0ea3] {
|
||||
border: 1px solid #efeaea;
|
||||
border-radius: 0.625rem;
|
||||
box-shadow: 0 0.46875rem 0.46875rem #efeaea;
|
||||
padding: 0.625rem 0.625rem 0;
|
||||
margin-bottom: 0.625rem;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.receive-listBox .list-box-list .data-item .tit[data-v-ef7f0ea3] {
|
||||
font-size: 0.9375rem;
|
||||
font-weight: bold;
|
||||
padding: 0.625rem 0;
|
||||
}
|
||||
.receive-listBox .list-box-list .data-item .line-p[data-v-ef7f0ea3] {
|
||||
border: 1px solid #efeaea;
|
||||
}
|
||||
.receive-listBox .list-box-list .data-item .b-font[data-v-ef7f0ea3] {
|
||||
font-size: 0.78125rem;
|
||||
padding: 0.625rem 0;
|
||||
}
|
||||
/* 多行省略 */
|
||||
.multi-line-omit {
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
1365
unpackage/dist/dev/app-plus/pages/putInProd/details.css
vendored
1365
unpackage/dist/dev/app-plus/pages/putInProd/details.css
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user