This commit is contained in:
2022-11-16 17:11:24 +08:00
parent 7339ee7ce9
commit c58ebcba3e
5 changed files with 294 additions and 41 deletions

View File

@@ -304,4 +304,18 @@ uni-button:after {
} }
.uni-select__input-placeholder,.uni-select__selector-empty, .uni-select__selector-item { .uni-select__input-placeholder,.uni-select__selector-empty, .uni-select__selector-item {
font-size: 28rpx !important font-size: 28rpx !important
}
.sin_input {
width: 150rpx;
font-size: 28rpx;
line-height: 150rpx;
height: 68rpx;
color: #323232;
padding: 0 .1rem;
border: 1px solid #a1a1a1;
border-radius: 3px;
}
.layout-t tr.checked td .sin_input {
color: #8a8a8a;
border: 1px solid #ffffff;
} }

33
main.js
View File

@@ -1,13 +1,36 @@
import App from './App' import App from './App'
import Vue from 'vue' import Vue from 'vue'
Vue.config.productionTip = false Vue.config.productionTip = false
App.mpType = 'app' App.mpType = 'app'
Vue.directive('enterNumber', {
inserted: function (el) {
el.addEventListener("keypress",function(e){
e = e || window.event;
let charcode = typeof e.charCode == 'number' ? e.charCode : e.keyCode;
// if (parseInt(e.target.value) == 0) {
// e.preventDefault();
// }
parseInt(e.target.value) == 0 && e.preventDefault();
let re = /\d/;
if(!re.test(String.fromCharCode(charcode)) && charcode > 9 && !e.ctrlKey){
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue = false;
}
}
});
}
});
import store from '@/vuex/store.js' import store from '@/vuex/store.js'
const app = new Vue({ const app = new Vue({
...App, ...App,
store store
}) })
app.$mount() app.$mount()

View File

@@ -0,0 +1,117 @@
<template>
<view class="zd_container">
<nav-bar :inner2="true" @goIn="goIn" title="盘点明细"></nav-bar>
<view class="zd_content">
<view class="zd_wrapper grid-wraper">
<view class="slide_new">
<table>
<thead>
<tr>
<th>单据号</th>
<th>状态</th>
<th>盘点库区</th>
<th>盘点货位</th>
<th>数量</th>
<th>盘点数量</th>
<th>确认人</th>
<th>确认时间</th>
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i">
<td>{{e.check_code}}</td>
<td>{{e.status}}</td>
<td>{{e.sect_name}}</td>
<td>{{e.struct_name}}</td>
<td>{{e.base_qty}}</td>
<td><input type="number" class="sin_input" :min="0" v-model="value" @blur="e => {if (e.target.value === '') {value=0}}" v-enter-number></td>
<td>{{e.check_optname}}</td>
<td>{{e.check_time}}</td>
</tr>
</tbody>
</table>
</view>
</view>
</view>
<view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_saveCheck">保存</button>
<button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_confirmCheck">确认</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import {checkQueryDtl, saveCheck, confirmCheck} from '@/utils/getData1.js'
export default {
components: {
NavBar,
},
data() {
return {
value: '1',
checkCode: '',
dataList: [],
disabled1: false
};
},
created () {
},
onLoad (option) {
this.checkCode = option.check_code
this._checkQueryDtl()
},
methods: {
goIn () {
uni.navigateTo({
url: `/pages/WarehouseManage/CheckList`
})
},
handleChange (e) {
// console.log(e)
},
/** 初始化查询 */
async _checkQueryDtl () {
let res = await checkQueryDtl(this.checkCode)
this.dataList = [...res.data]
},
async _saveCheck () {
this.disabled1 = true
try {
let res = await saveCheck(this.dataList, this.checkCode)
this.disabled1 = false
this._checkQueryDtl()
uni.showToast({
title: res.message,
icon: 'none'
})
} catch (e) {
this.disabled1 = false
}
},
async _confirmCheck () {
this.disabled1 = true
try {
let res = await confirmCheck(this.dataList, this.checkCode)
this.disabled1 = false
this._checkQueryDtl()
uni.showToast({
title: res.message,
icon: 'none'
})
} catch (e) {
this.disabled1 = false
}
}
}
}
</script>
<style lang="stylus">
.zd_content
padding-bottom 77rpx
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
box-shadow 1px 0 2px rgba(0,0,0,.12)
.bgyellow td
background-color #E9B451
</style>

View File

@@ -0,0 +1,99 @@
<template>
<view class="zd_container">
<nav-bar title="盘点单"></nav-bar>
<view class="zd_content">
<view class="zd_wrapper">
<view class="filter_item">
<view class="filter_label">单据编码</view>
<view class="filter_input_wraper">
<input type="text" class="filter_input" v-model="val1">
</view>
</view>
</view>
<view class="zd_wrapper grid-wraper">
<view class="slide_new">
<table>
<thead>
<tr>
<th>单据号</th>
<th>单据类型</th>
<th>仓库名称</th>
<th>明细数</th>
<th>状态</th>
<th>创建人</th>
<th>创建时间</th>
<th>确认人</th>
<th>确认时间</th>
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.bill_code === pkId}">
<td>{{e.check_code}}</td>
<td>{{e.check_type}}</td>
<td>{{e.stor_name}}</td>
<td>{{e.dtl_num}}</td>
<td>{{e.status}}</td>
<td>{{e.input_optname}}</td>
<td>{{e.input_time}}</td>
<td>{{e.confirm_optname}}</td>
<td>{{e.confirm_time}}</td>
</tr>
</tbody>
</table>
</view>
</view>
</view>
<view class="submit-bar">
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled1" @tap="toPandian">盘点</button>
<button class="submit-button" @tap="_checkQuery">查询</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import {checkQuery} from '@/utils/getData1.js'
export default {
components: {
NavBar,
},
data() {
return {
val1: '',
dataList: [],
pkId: '',
pkObj: {},
disabled1: false
};
},
created () {
},
methods: {
/** 初始化查询 */
async _checkQuery () {
let res = await checkQuery(this.val1)
this.dataList = [...res.data]
},
toPandian () {
if (this.pkId) {
uni.navigateTo({
url: '/pages/WarehouseManage/CheckDtl?billcode=' + this.pkObj.check_code
})
}
},
toCheck (e) {
this.pkId = this.pkId === e.check_code ? '' : e.check_code
this.pkObj = this.pkId === e.check_code ? e : {}
}
}
}
</script>
<style lang="stylus">
.zd_content
padding-bottom 77rpx
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
box-shadow 1px 0 2px rgba(0,0,0,.12)
.bgyellow td
background-color #E9B451
</style>

View File

@@ -1,13 +1,13 @@
<template> <template>
<view class="zd_content bg"> <view class="zd_content bg">
<view class="p1">欢迎来到</view> <view class="p1">欢迎来到</view>
<view class="p2">海亮铜箔手持系统</view> <view class="p2">海亮铜箔手持系统</view>
<view class="input-box"> <view class="input-box">
<input class="large-input" type="text" placeholder="请输入用户名" v-model="user"> <input class="large-input" type="text" placeholder="请输入用户名" v-model="user">
</view> </view>
<div class="input-box"> <div class="input-box">
<input class="large-input" :password="!showPassword" placeholder="请输入密码" v-model="password"> <input class="large-input" :password="!showPassword" placeholder="请输入密码" v-model="password">
<span class="iconfont icon_eye_close" :class="[showPassword ? 'icon_eye_active' : '']" @tap="changePassword">&#xe6a0;</span> <span class="iconfont icon_eye_close" :class="[showPassword ? 'icon_eye_active' : '']" @tap="changePassword">&#xe6a0;</span>
</div> </div>
<view class="radio-box"> <view class="radio-box">
<view class="radio-wrap"> <view class="radio-wrap">
@@ -18,26 +18,26 @@
<text class="setup-text" @tap="isUpdate">升级版本</text> <text class="setup-text" @tap="isUpdate">升级版本</text>
</view> </view>
<button class="login-btn" :disabled="disabled" @tap="toLogin">确认登录</button> <button class="login-btn" :disabled="disabled" @tap="toLogin">确认登录</button>
<!-- <button class="login-btn" @tap="test">打印</button> --> <!-- <button class="login-btn" @tap="test">打印</button> -->
</view> </view>
</template> </template>
<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/getData2.js' import {handLogin} from '@/utils/getData2.js'
export default { export default {
data() { data() {
return { return {
user: this.$store.getters.loginName ? this.$store.getters.loginName : '', user: this.$store.getters.loginName ? this.$store.getters.loginName : '',
password: '', password: '',
showPassword: false, showPassword: false,
saveUser: this.$store.getters.loginName ? true : false, saveUser: this.$store.getters.loginName ? true : false,
disabled: false disabled: false
} }
}, },
created () { created () {
}, },
methods: { methods: {
isUpdate () { isUpdate () {
uni.navigateTo({ uni.navigateTo({
@@ -55,7 +55,7 @@
// 根据需求插入打印代码 // 根据需求插入打印代码
LODOP.PRINT(); // 打印 LODOP.PRINT(); // 打印
// LODOP.PREVIEW() // LODOP.PREVIEW()
}, },
toSaveUser() { toSaveUser() {
this.saveUser = !this.saveUser this.saveUser = !this.saveUser
}, },
@@ -104,27 +104,27 @@
} catch (e) { } catch (e) {
this.disabled = false this.disabled = false
} }
} }
} }
} }
</script> </script>
<style lang="stylus" scoped> <style lang="stylus" scoped>
@import '../../common/style/mixin.styl'; @import '../../common/style/mixin.styl';
.p1 .p1
_font(60rpx,75rpx,#444) _font(60rpx,75rpx,#444)
padding-top: 90rpx padding-top: 90rpx
.p2 .p2
_font(50rpx,1,#444) _font(50rpx,1,#444)
padding: 40rpx 0 25rpx padding: 40rpx 0 25rpx
.input-box .input-box
_fj() _fj()
margin-top 68rpx margin-top 68rpx
height 75rpx height 75rpx
border-bottom 1rpx solid #e2e2e2 border-bottom 1rpx solid #e2e2e2
.large-input .large-input
_wh(calc(100% - 40rpx), 74rpx) _wh(calc(100% - 40rpx), 74rpx)
_font(32rpx,74rpx,#999) _font(32rpx,74rpx,#999)
padding-left 10rpx padding-left 10rpx
.radio-box .radio-box
_fj() _fj()
@@ -143,11 +143,11 @@
.bg .bg
background-color: #fff; background-color: #fff;
_bis('../../static/image/login_bg.png', 100%,,bottom) _bis('../../static/image/login_bg.png', 100%,,bottom)
.login-btn .login-btn
width 100% width 100%
border-radius 46rpx border-radius 46rpx
_font(36rpx,92rpx,#fff,,center) _font(36rpx,92rpx,#fff,,center)
background-color $red background-color $red
.zd_content .zd_content
height: 100% height: 100%
</style> </style>