From d07500fef337fc0366d5c51723ddb3ba2071f33d Mon Sep 17 00:00:00 2001
From: 小小儁爺 <1694218219@qq.com>
Date: 星期五, 01 八月 2025 10:33:37 +0800
Subject: [PATCH] 1.计时工资功能开发
---
pages/mjgl/mjrk.vue | 476 +++++++++++++++++++++++------------------------------------
1 files changed, 185 insertions(+), 291 deletions(-)
diff --git a/pages/mjgl/mjrk.vue b/pages/mjgl/mjrk.vue
index f16910d..3d32dd8 100644
--- a/pages/mjgl/mjrk.vue
+++ b/pages/mjgl/mjrk.vue
@@ -3,178 +3,79 @@
<page-nav title="妯″叿鍏ュ簱"></page-nav>
- <view v-show="topContent.length===0">
- <div class="sacnBody">
- <div class="scanImg" @click="topScanClick"></div>
- <div class="scanText">鎵弿妯″叿缂栫爜</div>
- </div>
- </view>
+ <!-- <view v-if="purchorderArrAll.length>0"> -->
- <view v-show="topContent.length!==0">
- <view class="mainContent">
- <view>
- <u-gap height="10" bgColor="#eff0f1"></u-gap>
- <view class="head" style="max-height: 410rpx;overflow:scroll;">
- <view class="head_block">
- <view class="head_left">
- <view class="head_bar"></view>
- <view class="head_title">
- 妯″叿淇℃伅
- </view>
- </view>
+ <u-input prefixIcon="search" prefixIconStyle="font-size: 22px;color: #909399" placeholder="鎵弿妯″叿缂栫爜/杈撳叆妯″叿淇℃伅"
+ clearable border="surround" @clear='inputBoxValueClear' v-model="inputBoxValue"
+ @change="changeInputBoxValue">
+ <template slot="suffix">
+ <u-icon name="scan" color="#909399" size="24" @click="topScanClick"></u-icon>
+ </template>
+ </u-input>
- <view class="marginRight20">
- <u-icon name="scan" @click="topScanClick" color="red" size="24"></u-icon>
- </view>
- </view>
- <view class="marginTop20 marginLeft20 marginRight20 flex_column">
- <view class="marginBottom20 flex_between" v-for="item in topContent" :key="item.code">
+ <u-alert :title="'妯″叿鏁帮紙鍏�'+title+'涓級'" type="primary"></u-alert>
+
+
+
+ <scroll-view class="container" scroll-y="true" @scroll="scroll">
+ <!-- 铏氭嫙鍒楄〃鎬婚珮搴� -->
+ <view :style="{'height': `${totalHeight}rpx`, 'position': 'relative'}">
+ <!-- 鍙娓叉煋鍖� -->
+ <view :style="{'top': `${top}px`}" style="width: 100%;position:absolute">
+ <!--鍦ㄨ繖閲岃嚜瀹氫箟浣犳暟鎹殑灞曠ず缁撴瀯鍜屾牱寮�,itemHeight涓鸿繖閲岀殑鎬婚珮搴�-->
+
+ <view class="radioGroupClass">
+ <view v-for="(item,index) in purchorderArr" :key="item.code" class="item">
+ <view @click="highlightClick(item.code)" :style="{color:selectedCode===item.code?'#fff':'#000',
+ background:selectedCode===item.code?'#3c9cff':'#fff'
+ }">
+
<view style="display: flex;">
- <view class="flex_column titleFont">
- <view>妯″叿缂栫爜锛�</view>
- <view>妯″叿鍚嶇О锛�</view>
- <view>瑙勬牸鍨嬪彿锛�</view>
- <view>棰勮瀵垮懡锛�</view>
- <view>鍓╀綑瀵垮懡锛�</view>
+ <view style="text-align: center;margin-right: 20rpx;">{{item.code}}
</view>
- <view class="flex_column contentFont">
- <view>{{item.code}}</view>
- <view>{{item.name}}</view>
- <view>{{item.spec?item.spec:'/'}}</view>
- <view>{{item.surp_life}}</view>
- <view>{{item.resi_life}}</view>
- </view>
+ <view style="">{{item.name}}</view>
+ <view style="margin-left: 20rpx;">{{item.spec}}</view>
+
</view>
+
</view>
-
</view>
-
</view>
- <u-gap height="10" bgColor="#eff0f1"></u-gap>
- <view class="head" style="padding-bottom: 10rpx;">
- <view class="head_block" style="margin-bottom: 10rpx;margin-top:20rpx;">
- <view class="head_left" style="align-items: center;">
- <view class="head_bar" style="margin-top: 0rpx;"></view>
- <view class="head_title">
- 搴撲綅淇℃伅
- </view>
-
-
-
- <view style="margin-left: 20rpx;">
- {{selectValue.name}}
- </view>
-
- </view>
-
-
-
- <view class="marginRight20" style="display: flex;">
- <u-button @click="show = true" type='primary' size="small" plain class="marginRight20"
- shape='circle'>璇烽�夋嫨</u-button>
- <u-icon name="scan" @click="centerScanClick" color="red" size="24"></u-icon>
- </view>
-
-
- <!-- <view class="marginRight20 marginBottom10">
- <u-button @click="show = true" type='primary' size="small" plain
- shape='circle'>璇烽�夋嫨</u-button>
- </view> -->
-
- <!-- <view class="marginRight20 marginBottom10" v-if='ckkwArr.length===0'>
- 鏆傛棤绌轰綑璁惧锛岃鍏堜笅鏈�
- </view> -->
-
-
- </view>
-
-
-
- <view class="head_block" style="margin-bottom: 10rpx;margin-top:20rpx;">
- <view class="head_left" style="align-items: center;">
- <view class="head_bar" style="margin-top: 0rpx;"></view>
- <view class="head_title">
- 鎵�灞炰粨搴�
- </view>
-
- <view style="margin-left: 20rpx;">
- {{belongCk.text}}
- </view>
-
- </view>
- </view>
-
-
-
- </view>
- <u-gap height="10" bgColor="#eff0f1"></u-gap>
-
- <view class="head" style="padding-bottom: 10rpx;">
- <view class="head_block" style="margin-bottom: 10rpx;margin-top:20rpx;">
- <view class="head_left">
- <view class="head_bar"></view>
- <view class="head_title">
- 鍏ュ簱鎻忚堪
- </view>
- </view>
- </view>
- <view class='inputClass contentFont' style="margin: 0 20rpx; width: 95%;">
- <u--textarea placeholder="璇疯緭鍏�" confirm-type="send" border="surround" height='80'
- v-model="descMessage">
- </u--textarea>
- </view>
-
-
-
-
-
-
-
-
- </view>
</view>
</view>
+ </scroll-view>
- <view class="footer">
- <u-button size="large" :loading="isDisabledSubmitButton" loadingText="姝e湪鎻愪氦,璇风◢绛�..." type="primary"
- :disabled="isDisabled" @click="submit" text="纭鎻愪氦">
- </u-button>
- </view>
+ <view class="footer" style="min-height:62rpx;">
+ <u-button type="primary" size='large' :hairline="true" @click="navigateTo" text="涓嬩竴姝�"></u-button>
</view>
+ <!-- </view> -->
-
- <u-action-sheet :actions="kwArr" @select="selectClick" round='20' :closeOnClickOverlay='true'
- @close="show=false" :closeOnClickAction="true" :safeAreaInsetBottom='true' :show="show"></u-action-sheet>
-
-
-
+ <!-- <view v-if="purchorderArrAll.length===0">
+ <div class="sacnBody">
+ <div class="boxImg"></div>
+ <div class="scanText">鏆傛棤妯″叿淇℃伅</div>
+ </div>
+ </view> -->
</view>
</template>
+
<script>
import {
- MouldInWareHouseQrCodeData,
- WareHouseLocation,
- MouldInWareHouseSave
- } from '../../config/api.js'
+ ScanMouldQrCodeMessageData,
+ ScanMouldQrCodeMessageSubData
+ } from '../../config/api.js';
export default {
- onLoad(option) {
- // const _this = this
- // uni.$off('scancodedate') // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒
- // uni.$on('scancodedate', function(content) {
- // console.log("鎵弿鍒扮殑鍐呭涓�:", content)
- // _this.getMouldInWareHouseQrCodeData(content)
- // })
- },
+
onPullDownRefresh() {
setTimeout(() => {
this.init(() => {
@@ -182,86 +83,96 @@
})
}, 1000);
},
+
data() {
return {
- topRightMessageCount: 0,
- isDisabledSubmitButton: false,
+ inputBoxValue: '', //杈撳叆妗嗗��
- topContent: [],
+ title: 0,
- scanContent: '',
+ purchorderArr: [],
+ purchorderArrAll: [],
- selectValue: '',
+ allList: [], //鍘熷鏁版嵁鍒楄〃
+ //铏氭嫙鍒楄〃
+ showList: [], //鍙鍖哄煙鏄剧ず鐨勬暟鎹�
+ itemHeight: 100, //姣忔潯鏁版嵁鎵�鍗犻珮搴�
+ showNum: 0, //鍙鍖哄煙鏄剧ず鐨勬渶澶ф潯鏁�
+ top: 0, //鍋忕Щ閲�
+ scrollTop: 0, //鍗疯捣鐨勯珮搴�
+ startIndex: 0, //鍙鍖哄煙绗竴鏉℃暟鎹殑绱㈠紩
+ endIndex: 0, //鍙鍖哄煙鏈�鍚庝竴鏉℃暟鎹殑绱㈠紩+1锛�
- descMessage: '',
-
- show: false,
- ckkwArr: [],
-
- kwArr: [],
-
- belongCk: '',
-
- isDisabled: true
-
+ selectedCode: ''
}
},
+
+ onShow() {
+ //绗竴娆℃椂璋冪敤涓�涓�,涓攗ni.createSelectorQuery()闇�瑕佸湪鐢熷懡鍛ㄦ湡mounted涔嬪悗浣跨敤
+ // this.scroll()
+ },
+ computed: {
+ totalHeight() {
+ return this.allList.length * this.itemHeight * 2 //鍥犱负rpx鍜宲x鐨勫叧绯�
+ }
+ },
created() {
- // this.getMouldInWareHouseQrCodeData('001')
},
mounted() {
this.init()
- this.getWareHouseLocation()
+ this.getScanMouldQrCodeMessageData()
},
methods: {
+ //铏氭嫙鍒楄〃
+ getShowList() {
+ //鍙鍖哄煙鑳藉嚭鐜扮殑鏁版嵁鏉℃暟
+ this.showNum = Math.ceil(this.contentHeight / this.itemHeight);
+ // console.log('鍙鏁伴噺', this.showNum)
+
+ //鍙鍖哄煙绗竴鏉℃暟鎹殑绱㈠紩
+ this.startIndex = Math.floor(this.scrollTop / this.itemHeight);
+ // console.log('鍒濆绱㈠紩',this.startIndex)
+
+ //鍙鍖哄煙鏈�鍚庝竴鏉℃暟鎹殑涓嬩竴鏉℃暟鎹�
+ this.endIndex = this.startIndex + this.showNum;
+
+ //鍙鍖烘暟鎹紝浼氭瘮瀹為檯鍙澶氭覆鏌撲竴鏉�
+ this.showList = this.allList.slice(this.startIndex, this.endIndex)
+ // console.log(this.showList)
+
+ //淇濊瘉婊戝姩鏃剁涓�鏉℃暟鎹畬鏁村睍绀�
+ let offsetY = this.scrollTop - (this.scrollTop % this.itemHeight);
+
+ this.top = offsetY;
+ },
+ scroll() {
+ // 鍒╃敤uniapp鎻愪緵鐨勬帴鍙h幏鍙栧彲瑙嗗尯鍩熺殑楂樺害鍜屾粴鍔ㄩ珮搴�
+ let query = uni.createSelectorQuery()
+ let container = query.select('.container');
+ container.fields({
+ // rect:true, //鏄惁杩斿洖鑺傜偣甯冨眬浣嶇疆淇℃伅{left,top,right,bottom}
+ size: true, //鏄惁杩斿洖鑺傜偣灏哄淇℃伅{width锛宧eight}
+ scrollOffset: true //鏄惁杩斿洖鑺傜偣婊氬姩淇℃伅{scrollLeft,scrollTop}
+ }, (res) => {
+ // console.log(res)
+ this.scrollTop = res.scrollTop
+ this.contentHeight = res.height
+ this.getShowList(); //鍥犱负鎵�鍦ㄥ嚱鏁版槸寮傛
+ }).exec()
+ },
+ highlightClick(code) {
+ this.selectedCode = code
+ },
+
+
init() {
uni.stopPullDownRefresh();
- },
-
- async getWareHouseLocation() {
- const {
- data: res
- } = await WareHouseLocation()
- this.ckkwArr = res
-
- this.kwArr = []
- this.ckkwArr.forEach(i => {
- if (i.children && i.children.length > 0) {
- i.children.forEach(j => {
- this.kwArr.push({
- code: j.value,
- name: j.text
- })
- })
- }
- })
- },
-
-
-
-
- selectClick(val) {
- this.selectValue = val
-
- this.belongCk = ''
- this.ckkwArr.forEach(i => {
- if (i.children && i.children.length > 0) {
- i.children.forEach(j => {
- if (j.value === val.code) {
- this.belongCk = i
- this.isDisabled = false
- }
- })
- }
- })
-
- // console.log(this.belongCk, 123)
},
// 鎵爜宸ヤ綅 鐨勬壂鐮佹鐐瑰嚮
topScanClick() {
@@ -278,57 +189,10 @@
console.log('鏉$爜绫诲瀷锛�' + res.scanType);
console.log('鏉$爜鍐呭锛�' + res.result);
that.scanContent = res.result;
- let flag = false
- that.topContent.forEach(item => {
- if (item.code === res.result) {
- flag = true
- }
- })
- if (flag) {
- that.$u.toast('姝ゆ潯鐮佸凡鎵弿锛屽凡鍦ㄥ垪琛ㄤ腑锛�')
- } else {
- //澶勭悊鎵爜浜嬩欢
- that.getMouldInWareHouseQrCodeData(that.scanContent);
- }
- },
- complete: function(res) {
+ that.inputBoxValue = res.result;
- },
- fail: function(res) {
- console.log('鏉$爜绫诲瀷锛�' + res.scanType);
- console.log('鏉$爜鍐呭锛�' + res.result);
- }
-
- });
- },
-
- centerScanClick() {
- let that = this;
- uni.scanCode({
- onlyFromCamera: true,
- // scanType: ['barCode', 'qrCode'],
- scanType: ['qrCode'],
- success: function(res) {
- console.log('鏉$爜绫诲瀷锛�' + res.scanType);
- console.log('鏉$爜鍐呭锛�' + res.result);
-
- that.ckkwArr.forEach(i => {
- if (i.children && i.children.length > 0) {
- i.children.forEach(j => {
- if (j.value === res.result) {
- that.belongCk = i
- console.log(j);
- that.selectValue = {
- code: j.value,
- name: j.text
- }
-
- that.isDisabled = false
-
- }
- })
- }
- })
+ //澶勭悊鎵爜浜嬩欢
+ that.changeInputBoxValue(that.scanContent);
},
complete: function(res) {
@@ -341,43 +205,34 @@
});
},
-
- // 鑾峰彇妯″叿淇℃伅
- async getMouldInWareHouseQrCodeData(val) {
- const data = {
- mouldcode: val
- }
-
- const res = await MouldInWareHouseQrCodeData(data)
- if (res.code === '200') {
- this.topContent = []
- this.topContent.unshift(res.data[0])
- }
+ changeInputBoxValue(val) {
+ this.purchorderArr = this.purchorderArrAll.filter((p) => {
+ return p.code.indexOf(val) !== -1 || p.name.indexOf(val) !== -1 || p.spec.indexOf(val) !== -1
+ })
+ this.selectedCode = this.purchorderArr[0].code
+ this.$forceUpdate()
+ },
+ inputBoxValueClear() {
+ this.inputBoxValue = ''
},
- // 纭鎻愪氦鎸夐挳
- async submit() {
- const data = {
- mouldcode: this.topContent[0].code,
- warehousecode: this.belongCk.value,
- locationcode: this.selectValue.code,
- description: this.descMessage
- }
-
- console.log(JSON.stringify(data))
-
- this.isDisabledSubmitButton = true
- const res = await MouldInWareHouseSave(data)
- if (res.code === '200') {
- uni.$u.toast('鎻愪氦鎴愬姛锛�')
- this.isDisabledSubmitButton = false
- this.topContent = []
- this.selectValue = ''
- this.belongCk = ''
- this.descMessage = ''
- }
-
+ navigateTo() {
+ uni.navigateTo({
+ url: './mjrk2?code=' + this.selectedCode
+ });
},
+ async getScanMouldQrCodeMessageData() {
+ const res = await ScanMouldQrCodeMessageData()
+
+ this.purchorderArrAll = res.data
+
+ this.purchorderArr = res.data
+
+ this.title = res.data.length
+
+ this.selectedCode = res.data[0].code
+
+ }
}
}
</script>
@@ -385,14 +240,53 @@
<style lang="scss" scoped>
@import url('@/style/global.css');
+ .container {
+ width: 100%;
+ height: 70vh;
+ /*鍘熺敓涓�瀹氬緱鏈夎繖涓猳verflow鐨刪idden鏁堟灉,姝ゅ鐢ㄤ簡scroll-view鎵�浠ヤ笉闇�瑕�*/
+ /*overflow:auto;*/
+ }
+
+ .item {
+ /* 鎸夌収瀹為檯闇�姹傚啓css */
+ width: 100%;
+ height: 200rpx;
+ line-height: 90rpx;
+ /* 瑕佸搴斾笂itemHeight */
+ border: 1px solid #c8c8c8;
+ }
+
::v-deep .uicon-arrow-left>span {
display: block;
}
-</style>
-<style scoped>
- /deep/.u-action-sheet__item-wrap {
- overflow: auto;
- max-height: 50vh;
+ .u-input--square {
+ margin: 20rpx 10rpx;
+ border-radius: 40rpx;
+ background-color: #fff;
+ border: 1px solid #c8c8c8;
+ }
+
+ ::v-deep .u-alert__text--primary--light {
+ margin-bottom: 0;
+ font-size: 32rpx !important;
+ }
+
+ .radioGroupClass {
+ display: flex;
+ flex-direction: column;
+ background-color: #fff;
+
+ overflow-y: auto;
+ max-height: 1100rpx;
+ margin-top: 20rpx;
+ }
+
+ ::v-deep .u-radio-label--right {
+ height: 90rpx;
+ line-height: 90rpx;
+ width: 92%;
+ margin-left: 4%;
+ // padding: 0 50rpx;
}
</style>
\ No newline at end of file
--
Gitblit v1.9.3