子卷出入站

This commit is contained in:
2022-11-09 13:30:32 +08:00
parent 4d19700411
commit ed086b9bd5
13 changed files with 306 additions and 178 deletions

View File

@@ -260,21 +260,15 @@ uni-button:after {
left: 0; left: 0;
right: 0; right: 0;
text-align: center; text-align: center;
z-index: 100; z-index: 201;
} display: flex;
.msg_wrapper::after { justify-content: center;
content: ""; align-items: center;
display: inline-block;
height: 100%;
width: 0;
vertical-align: middle;
} }
.msg_box { .msg_box {
display: inline-block;
width: 90%; width: 90%;
max-width: 420px;
padding: 20rpx; padding: 20rpx;
vertical-align: middle;
background-color: #fff; background-color: #fff;
border-radius: 4px; border-radius: 4px;
border: 1px solid #ebeef5; border: 1px solid #ebeef5;
@@ -282,55 +276,19 @@ uni-button:after {
overflow: hidden; overflow: hidden;
backface-visibility: hidden; backface-visibility: hidden;
} }
.input_item { .msg_mask {
width: 100%;
height: 70rpx;
border-radius: 4px;
border: 1px solid #DCDFE6;
font-size: 28rpx;
line-height: 70rpx;
color: #606266;
padding: 0 10px;
}
.zd_mask {
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
opacity: .2; opacity: .7;
background: #000; background: #000;
z-index: 99; z-index: 200;
}
.msg_item {
display: flex;
justify-content: space-between;
align-items: center;
height: 70rpx;
line-height: 70rpx;
margin-bottom: 30rpx;
}
.msg_txt {
font-size: 32rpx;
line-height: 70rpx;
color: #333;
}
.label_item {
width: 150rpx;
font-size: 32rpx;
line-height: 70rpx;
color: #333;
}
.from_item {
width: calc(100% - 160rpx);
font-size: 28rpx;
line-height: 70rpx;
color: #606266;
} }
.msg_btns { .msg_btns {
height: 70rpx;
line-height: 70rpx;
width: 100%; width: 100%;
max-width: 300px; max-width: 300px;
margin: 40rpx auto 0; margin: 40rpx auto 0;
@@ -339,14 +297,7 @@ uni-button:after {
align-items: center; align-items: center;
} }
.msg_btn { .msg_btn {
width: 160rpx; border-radius: 10rpx;
height: 70rpx;
line-height: 70rpx;
font-size: 28rpx;
color: #fff;
background-color: #d7592f;
border-radius: 5px;
text-align: center;
} }
.msg_btn:disabled { .msg_btn:disabled {
background-color: #c9c9c9; background-color: #c9c9c9;

View File

@@ -2,8 +2,8 @@
"name" : "海亮铜箔", "name" : "海亮铜箔",
"appid" : "__UNI__22404A1", "appid" : "__UNI__22404A1",
"description" : "海亮铜箔手持系统", "description" : "海亮铜箔手持系统",
"versionName" : "1.0.1", "versionName" : "1.0.2",
"versionCode" : 101, "versionCode" : 102,
"transformPx" : false, "transformPx" : false,
/* 5+App */ /* 5+App */
"app-plus" : { "app-plus" : {

View File

@@ -88,6 +88,7 @@
<view class="submit-bar"> <view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !checkArr.length || checkArr.length > 1}" :disabled="disabled1" @tap="_needVehicle">呼叫载具</button> <button class="submit-button" :class="{'btn-disabled': !checkArr.length || checkArr.length > 1}" :disabled="disabled1" @tap="_needVehicle">呼叫载具</button>
<button class="submit-button" :class="{'btn-disabled': !checkArr.length}" :disabled="disabled2" @tap="_shippingConfirm">配送确认</button> <button class="submit-button" :class="{'btn-disabled': !checkArr.length}" :disabled="disabled2" @tap="_shippingConfirm">配送确认</button>
<button class="submit-button" :class="{'btn-disabled': !val3}" :disabled="disabled3" @tap="_returnVehicle">载具送回</button>
<button class="submit-button" @tap="_queryMaterialInfo">查询</button> <button class="submit-button" @tap="_queryMaterialInfo">查询</button>
</view> </view>
</view> </view>
@@ -96,7 +97,7 @@
<script> <script>
import NavBar from '@/components/NavBar.vue' import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue' import SearchBox from '@/components/SearchBox.vue'
import {queryProductArea, queryMaterialInfo3, needVehicle, shippingConfirm} from '@/utils/getData2.js' import {queryProductArea, queryMaterialInfo3, needVehicle, shippingConfirm, returnVehicle} from '@/utils/getData2.js'
export default { export default {
components: { components: {
NavBar, NavBar,
@@ -112,6 +113,7 @@
dataList: [], dataList: [],
disabled1: false, disabled1: false,
disabled2: false, disabled2: false,
disabled3: false,
checkArr: [] checkArr: []
}; };
}, },
@@ -142,6 +144,7 @@
}) })
} }
this.dataList = [...res.data] this.dataList = [...res.data]
this.checkArr = this.dataList.filter(i => { return i.checked === true })
}, },
/** 呼叫载具 */ /** 呼叫载具 */
async _needVehicle () { async _needVehicle () {
@@ -183,6 +186,28 @@
this.disabled2 = false this.disabled2 = false
} }
}, },
/** 载具送回 */
async _returnVehicle () {
this.disabled3 = true
if (!this.val3) {
uni.showToast({
title: '请输入起点',
icon: 'none'
})
this.disabled3 = false
return
}
try {
let res = await returnVehicle(this.val3)
uni.showToast({
title: res.message,
icon: 'none'
})
this.disabled3 = false
} catch (e) {
this.disabled3 = false
}
},
toCheck (e) { toCheck (e) {
e.checked = !e.checked e.checked = !e.checked
this.checkArr = this.dataList.filter(i => { return i.checked === true }) this.checkArr = this.dataList.filter(i => { return i.checked === true })

View File

@@ -42,7 +42,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.mfg_order_name === pkId}"> <tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.container_name === pkId}">
<td>{{Number(i) + 1}}</td> <td>{{Number(i) + 1}}</td>
<td>{{e.mfg_order_name}}</td> <td>{{e.mfg_order_name}}</td>
<td>{{e.container_name}}</td> <td>{{e.container_name}}</td>
@@ -59,7 +59,7 @@
</view> </view>
</view> </view>
<view class="submit-bar"> <view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled" @tap="_inConfirm">上空轴</button> <button class="submit-button" :class="{'btn-disabled': !index1 || !pkId}" :disabled="disabled" @tap="_inConfirm">上空轴</button>
<button class="submit-button" @tap="_queryMaterialInfo">查询</button> <button class="submit-button" @tap="_queryMaterialInfo">查询</button>
</view> </view>
</view> </view>
@@ -124,6 +124,14 @@
/** 确认 */ /** 确认 */
async _inConfirm () { async _inConfirm () {
this.disabled = true this.disabled = true
if (!this.index1) {
uni.showToast({
title: '点位不能为空',
icon: 'none'
})
this.disabled = false
return
}
if (!this.pkId) { if (!this.pkId) {
this.disabled = false this.disabled = false
return return
@@ -143,8 +151,8 @@
} }
}, },
toCheck (e) { toCheck (e) {
this.pkId = this.pkId === e.mfg_order_name ? '' : e.mfg_order_name this.pkId = this.pkId === e.container_name ? '' : e.container_name
this.pkObj = this.pkId === e.mfg_order_name ? e : {} this.pkObj = this.pkId === e.container_name ? e : {}
} }
} }
} }

View File

@@ -78,16 +78,39 @@
</view> </view>
</view> </view>
<view class="submit-bar"> <view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !checkArr.length}" :disabled="disabled" @tap="_outConfirm">子卷出站</button> <button class="submit-button" :class="{'btn-disabled': !index1 || !checkArr.length}" :disabled="disabled1" @tap="_outConfirm">子卷出站</button>
<button class="submit-button" @tap="showModal">出站配送</button>
<button class="submit-button" @tap="_queryMaterialInfo">查询</button> <button class="submit-button" @tap="_queryMaterialInfo">查询</button>
</view> </view>
<view v-if="active" class="msg_wrapper">
<view class="msg_box">
<view class="filter_item">
<view class="filter_label">区域</view>
<view class="filter_input_wraper">
<uni-data-select v-model="index3" :localdata="options3" @change="selectChange3"></uni-data-select>
</view>
</view>
<view class="filter_item">
<view class="filter_label">缓存点位</view>
<view class="filter_input_wraper">
<uni-data-select v-model="index4" :localdata="options4" @change="selectChange4"></uni-data-select>
</view>
<view class="filter_search" @tap="_conveyPointQuery">查询</view>
</view>
<view class="msg_btns">
<button class="submit-button msg_btn" @tap="cancleModal">取消</button>
<button class="submit-button msg_btn" :class="{'btn-disabled': !index4}" :disabled="disabled2" @tap="_conveyConfirm">确认</button>
</view>
</view>
</view>
<view v-if="active" class="msg_mask"></view>
</view> </view>
</template> </template>
<script> <script>
import NavBar from '@/components/NavBar.vue' import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue' import SearchBox from '@/components/SearchBox.vue'
import {devicePointQuery, queryProductArea, queryMaterialInfo4, outConfirm} from '@/utils/getData2.js' import {devicePointQuery, queryProductArea, queryMaterialInfo4, outConfirm, conveyPointQuery, conveyConfirm} from '@/utils/getData2.js'
export default { export default {
components: { components: {
NavBar, NavBar,
@@ -100,10 +123,16 @@
index1: '', index1: '',
options2: [], options2: [],
index2: '', index2: '',
options3: [],
index3: '',
options4: [],
index4: '',
isV: '0', isV: '0',
dataList: [], dataList: [],
disabled: false, disabled1: false,
checkArr: [] disabled2: false,
checkArr: [],
active: false
}; };
}, },
created () { created () {
@@ -122,6 +151,12 @@
selectChange2(e) { selectChange2(e) {
this.index2 = e this.index2 = e
}, },
selectChange3(e) {
this.index3 = e
},
selectChange4(e) {
this.index4 = e
},
/** 点位下拉框查询 */ /** 点位下拉框查询 */
async _devicePointQuery () { async _devicePointQuery () {
if (!this.val1) { if (!this.val1) {
@@ -138,20 +173,29 @@
async _queryProductArea () { async _queryProductArea () {
let res = await queryProductArea() let res = await queryProductArea()
this.options2 = [...res.data] this.options2 = [...res.data]
this.options3 = [...res.data]
}, },
/** 初始化查询 */ /** 初始化查询 */
async _queryMaterialInfo () { async _queryMaterialInfo () {
let res = await queryMaterialInfo4(this.val1, this.index2) let res = await queryMaterialInfo4(this.index2)
res.data.map(el => { res.data.map(el => {
this.$set(el, 'checked', false) this.$set(el, 'checked', false)
}) })
this.dataList = [...res.data] this.dataList = [...res.data]
}, },
/** 确认 */ /** 子卷出站 */
async _outConfirm () { async _outConfirm () {
this.disabled = true this.disabled1 = true
if (!this.index1) {
uni.showToast({
title: '点位不能为空',
icon: 'none'
})
this.disabled1 = false
return
}
if (!this.checkArr.length) { if (!this.checkArr.length) {
this.disabled = false this.disabled1 = false
return return
} }
try { try {
@@ -160,17 +204,61 @@
title: res.message, title: res.message,
icon: 'none' icon: 'none'
}) })
this.disabled = false this.disabled1 = false
this.checkArr = [] this.checkArr = []
this.isV = '0' this.isV = '0'
this._queryMaterialInfo() this._queryMaterialInfo()
} catch (e) { } catch (e) {
this.disabled = false this.disabled1 = false
} }
}, },
toCheck (e) { toCheck (e) {
e.checked = !e.checked e.checked = !e.checked
this.checkArr = this.dataList.filter(i => { return i.checked === true }) this.checkArr = this.dataList.filter(i => { return i.checked === true })
},
/** 缓存点位查询 */
async _conveyPointQuery () {
let res = await conveyPointQuery(this.index3)
this.options4 = [...res.data]
},
/** 显示弹窗 */
showModal () {
this.active = true
this.index3 = this.index2
},
cancleModal () {
this.disabled2 = false
this.index3 = ''
this.index4 = ''
this.active = false
},
/** 出站配送接口 */
async _conveyConfirm () {
this.disabled2 = true
if (!this.index4) {
uni.showToast({
title: '请选择缓存点位',
icon: 'none'
})
this.disabled2 = false
return
}
try {
let res = await conveyConfirm(this.index4)
uni.showToast({
title: res.message,
icon: 'none'
})
this.disabled2 = false
this.index3 = ''
this.index4 = ''
this.active = false
} catch (e) {
this.disabled2 = false
this.index3 = ''
this.index4 = ''
this.active = false
}
} }
} }
} }

View File

@@ -62,6 +62,7 @@
<view class="submit-bar"> <view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled" @tap="_stConfirm">入库确认</button> <button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled" @tap="_stConfirm">入库确认</button>
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled1" @tap="_stPrint">补码</button> <button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled1" @tap="_stPrint">补码</button>
<button class="submit-button" @tap="_boxQuery(val1)">查询</button>
</view> </view>
</view> </view>
</template> </template>
@@ -96,7 +97,7 @@
this._boxQuery(e) this._boxQuery(e)
}, },
/** 初始化查询 */ /** 初始化查询 */
async _boxQuery () { async _boxQuery (e) {
let res = await boxQuery(e, '2') let res = await boxQuery(e, '2')
this.dataList = [...res.data] this.dataList = [...res.data]
}, },

View File

@@ -67,6 +67,7 @@
</view> </view>
<view class="submit-bar"> <view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled" @tap="_stConfirm">入库确认</button> <button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled" @tap="_stConfirm">入库确认</button>
<button class="submit-button" @tap="_boxQuery(val1)">查询</button>
</view> </view>
</view> </view>
</template> </template>

View File

@@ -61,6 +61,7 @@
</view> </view>
<view class="submit-bar"> <view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled" @tap="_stConfirm">入库确认</button> <button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled" @tap="_stConfirm">入库确认</button>
<button class="submit-button" @tap="_boxQuery(val1)">查询</button>
</view> </view>
</view> </view>
</template> </template>

View File

@@ -20,7 +20,7 @@
</template> </template>
<script> <script>
import {handRequest} from '@/utils/api.js' // import {handRequest} from '@/utils/getData2.js'
export default { export default {
data() { data() {
return { return {

View File

@@ -24,7 +24,7 @@
<script> <script>
import {getCLodop, getPrinterList} from "@/utils/CLodopfuncs.js" import {getCLodop, getPrinterList} from "@/utils/CLodopfuncs.js"
import { RSAencrypt } from '@/utils/jsencrypt.js' import { RSAencrypt } from '@/utils/jsencrypt.js'
import {handLogin} from '@/utils/api.js' import {handLogin} from '@/utils/getData2.js'
import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update' import checkUpdate from '@/uni_modules/uni-upgrade-center-app/utils/check-update'
export default { export default {
data() { data() {
@@ -44,13 +44,114 @@
plus.runtime.getProperty(plus.runtime.appid, (info) => { plus.runtime.getProperty(plus.runtime.appid, (info) => {
this.version = info.version; this.version = info.version;
this.versionCode = info.versionCode ; this.versionCode = info.versionCode ;
if (Number(this.versionCode) < 102) { if (Number(this.versionCode) < 103) {
checkUpdate(); checkUpdate();
} }
}) })
//#endif //#endif
}, },
methods: { methods: {
// 检测版本更新
async checkUpdates() {
// #ifdef APP-PLUS
//调用接口获取后台版本信息,检查是否需要更新
let versionInfo = await this.$api.login.getAppInfo();
console.log('获取后台版本信息', versionInfo);
// 待更新版本
const currentVersion = versionInfo.versionName;
console.log('后台需要更新版本', currentVersion);
// 更新地址
let androidUrl = versionInfo.url;
// 是否强制更新 isMust 0.否 1.强制更新
let showCancel = versionInfo.isMust ? true : false;
// 比较版本是否不同 当前版本plus.runtime.version
const localVersion = plus.runtime.version.split('.');
let current = currentVersion.split('.');
// 默认是同一个版本,不需要更新
let flag = false;
current.forEach((item, i) => {
if (item !== localVersion[i]) {
// 检测到版本不同,需要更新
flag = true;
}
});
if (flag) {
uni.showModal({
// 更新提醒
title: '发现新版本,是否更新',
content: '待更新版本号:' + currentVersion ,
// showCancel: showCancel,
success: res => {
if (res.confirm) {
this.doUpData(androidUrl);
this.showdownLine = true;
// plus.runtime.openURL(androidUrl)
} else if (res.cancel) {
// 不更新强制退出app
if (showCancel) {
console.log('不更新强制退出app');
plus.runtime.quit();
}
}
}
});
} else {
this.$myToast('无更新', 'none');
}
// #endif
},
doUpData(Url) {
uni.showLoading({
title: '更新中……'
});
const downloadTask = uni.downloadFile({
//执行下载
url: Url, //下载地址
timeout: 1000 * 30, //30秒超时时间
success: downloadResult => {
//下载成功
console.log(downloadResult);
this.showdownLine = false;
uni.hideLoading();
if (downloadResult.statusCode == 200) {
plus.runtime.install(
//安装软件
downloadResult.tempFilePath,
{
force: true
},
function(res) {
plus.runtime.restart();
}
);
}
},
fail: err => {
uni.hideLoading();
this.showdownLine = false;
this.$u.toast(err.errMsg);
console.log(err);
},
complete: com => {
console.log(com);
}
});
// 下载进度
downloadTask.onProgressUpdate(res => {
// this.$u.toast(res.progress)
this.downloadNum = res.progress;
// console.log('下载进度' + res.progress);
// console.log('已经下载的数据长度' + res.totalBytesWritten);
// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
// 满足测试条件,取消下载任务。
// if (res.progress > 50) {
// downloadTask.abort();
// }
});
},
test() { test() {
let LODOP = getCLodop(); let LODOP = getCLodop();
// 更换为打印服务器ip 不需要加前缀 // 更换为打印服务器ip 不需要加前缀

View File

@@ -14,92 +14,3 @@ export const handRequest = () => request({
data: {} data: {}
}) })
// 任务下发
// 1.1查询所有区域信息
export const handArea = (type) => request({
url: 'api/aja/hand/area',
data: {
area_flag: type
}
})
// 1.2根据区域查询设备编号及状态
export const handPoint = (reg) => request({
url: 'api/aja/hand/point',
data: {
region: reg
}
})
// 喷漆任务
export const handTask = (scode, ncode, type, batch) => request({
url: 'api/aja/hand/task',
data: {
start_devicecode: scode,
next_devicecode: ncode,
material_type: type,
batch: batch
}
})
/** 站点管理 */
// 1查询物料下拉框
export const handMatrial = () => request({
url: 'api/aja/hand/matrial'
})
// 1.2修改设备状态
export const handDeviceStatus = (code, mtype, type, no, batch) => request({
url: 'api/aja/hand/deviceStatus',
data: {
device_code: code,
material_type: mtype,
type: type,
status: no,
batch: batch
}
})
/** 点位取放货确认 */
export const handpointPut = (code, type) => request({
url: 'api/aja/hand/pointPut',
data: {
device_code: code,
status_type: type
}
})
/** 任务管理 */
// 1.1 查询未完成指令
export const queryTask = (keyword, scode, ncode) => request({
url: 'api/aja/hand/tasks',
data: {
keyword: keyword,
start_devicecode: scode,
next_devicecode: ncode
}
})
// 1.2 指令操作
export const taskOperation = (uuid, type) => request({
url: 'api/aja/hand/taskoperation',
data: {
inst_uuid: uuid,
type: type
}
})
/** 指令管理 */
// 1.1 查询未完成指令
export const queryInstraction = (keyword, scode, ncode) => request({
url: 'api/aja/hand/insts',
data: {
keyword: keyword,
start_devicecode: scode,
next_devicecode: ncode
}
})
// 1.2 指令操作
export const instOperation = (uuid, type) => request({
url: 'api/aja/hand/inst',
data: {
inst_uuid: uuid,
type: type
}
})

View File

@@ -1,13 +1,34 @@
import request from './request.js' import request from './request.js'
// 登录
export const handLogin = (user, password) => request({
url:'mobile/auth/login',
data: {
username: user,
password: password
}
})
// 测试状态码报错接口
export const handRequest = () => request({
url:'getInfo/4',
data: {}
})
/** /**
* 空管入库 * 空管入库
*/ */
// 1.1生产区域下拉框查询 // 1.1生产区域下拉框查询
export const queryProductArea = () => request({ // export const queryProductArea = () => request({
url:'api/pda/raw/queryProductArea', // url:'api/pda/raw/queryProductArea',
data: {} // data: {}
}) // })
export const queryProductArea = () => {
let res = {
data: [{value: '1', text: 'a'}]
}
return res
}
// 1.2空纸管库设备物料初始化查询 // 1.2空纸管库设备物料初始化查询
export const queryMaterialInfo1 = (code, mcode, area, option) => request({ export const queryMaterialInfo1 = (code, mcode, area, option) => request({
url:'api/pda/empty/queryMaterialInfo', url:'api/pda/empty/queryMaterialInfo',
@@ -78,6 +99,13 @@ export const shippingConfirm = (rows, code) => request({
point_code: code point_code: code
} }
}) })
// 1.4载具送回
export const returnVehicle = (rows, code) => request({
url:'api/pda/shipping/returnVehicle',
data: {
point_code: code
}
})
/** /**
* 子卷进站 * 子卷进站
@@ -113,7 +141,6 @@ export const devicePointQuery = (code) => request({
export const queryMaterialInfo4 = (code, area) => request({ export const queryMaterialInfo4 = (code, area) => request({
url:'api/pda/out/queryMaterialInfo', url:'api/pda/out/queryMaterialInfo',
data: { data: {
device_code: code,
product_area: area product_area: area
} }
}) })
@@ -126,6 +153,20 @@ export const outConfirm = (code, rows, is) => request({
is_last: is is_last: is
} }
}) })
// 1.3缓存点位查询
export const conveyPointQuery = (area) => request({
url:'api/pda/in/conveyPointQuery',
data: {
product_area: area
}
})
// 1.4出站配送
export const conveyConfirm = (code) => request({
url:'api/pda/in/conveyConfirm',
data: {
point_code: code
}
})
/** /**
* 半成品入库 * 半成品入库

View File

@@ -65,9 +65,9 @@ const request = (params) => {
showCancel: false showCancel: false
}) })
store.dispatch('delUserInfo') store.dispatch('delUserInfo')
uni.redirectTo({ // uni.redirectTo({
url: '/pages/login/login' // url: '/pages/login/login'
}) // })
} else if (res[1] && res[1].statusCode === 200) { } else if (res[1] && res[1].statusCode === 200) {
let { let {
data: dataType data: dataType