From 7aaff69bb11a4d75882d25bd1bc8e9748c2bd609 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期四, 29 五月 2025 16:57:41 +0800 Subject: [PATCH] 完成报工前端页面,除库存接收外 --- pages/product/report/index0.vue | 489 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 489 insertions(+), 0 deletions(-) diff --git a/pages/product/report/index0.vue b/pages/product/report/index0.vue new file mode 100644 index 0000000..45e05be --- /dev/null +++ b/pages/product/report/index0.vue @@ -0,0 +1,489 @@ +<template> + <view class="body"> + <view class="top_code"> + <u-icon class="product-number-icon"></u-icon>缂栧彿锛� + <text selectable>{{ dutyNo }}</text> + <view class="top_code_edit"> + <u-icon class="product-edit-icon" @click="edit" v-show="true"></u-icon> + </view> + </view> + <view class="main_view"> + <h3 class="main_top_title">宸ヤ綔鍙�</h3> + <view class="main_item" @click="goPage(0)"> + <span style="color:#4F4F4F">宸ヤ綔绔�</span> + <view> + <span style="color:#333333;margin-right: 20rpx;">{{ query.workstationName }}</span> + <u-icon v-if="isShowButton" name="arrow-right" color="#687792" size="28"></u-icon> + </view> + </view> + <view class="main_item" @click="goPage(1)"> + <span style="color:#4F4F4F">宸ュ簭</span> + <view> + <span style="color:#333333;margin-right: 20rpx;">{{ query.operationName }}</span> + <u-icon v-if="isShowButton" name="arrow-right" color="#687792" size="28"></u-icon> + </view> + </view> + <view class="main_item" @click="goPage(2)"> + <span style="color:#4F4F4F">鏃ユ湡</span> + <view> + <span style="color:#333333;margin-right: 20rpx;">{{ query.updateTime }}</span> + <u-icon v-if="isShowButton" name="arrow-right" color="#687792" size="28"></u-icon> + </view> + </view> + <view class="main_item" @click="goPage(3)"> + <span style="color:#4F4F4F">鐝</span> + <view> + <span style="color:#333333;margin-right: 20rpx;">{{ query.clazzType }}</span> + <u-icon v-if="isShowButton" name="arrow-right" color="#687792" size="28"></u-icon> + </view> + </view> + <view class="main_item" @click="goPage(4)"> + <span style="color:#4F4F4F;width: 118rpx;">鐢熶骇浜哄憳</span> + <view class="value2"> + <span style="color:#333333;margin-right: 20rpx;">{{ staffNameJoin }}</span> + </view> + <u-icon v-if="isShowButton" name="arrow-right" color="#687792" size="28"></u-icon> + </view> + <view class="main_item"> + <span style="color:#4F4F4F">鍒涘缓浜�</span> + <view> + <span style="color:#333333;">{{ query.createUser }}</span> + </view> + </view> + <view class="btns"> + <u-button :custom-style="customStyle" @click="goPage(9)">鏉傚伐</u-button> + <u-button :custom-style="customStyle" style="width: 150rpx;" @click="goPage(6)"> + <u-icon class="icon_history" size="26rpx" /> + <span style="line-height: 40rpx;">鍘嗗彶</span> + </u-button> + <u-button v-if="isShowButton" @click="submit" :custom-style="customStyle" + style="background: #30AFFF;color: #fff;border: 0;width: 150rpx;"> + <u-icon class="icon_save" size="26rpx" /> + <span style="line-height: 40rpx;">淇濆瓨</span> + </u-button> + <u-button :custom-style="customStyle" style="background: #214DED;color: #fff;border: 0;width: 150rpx;" + @click="goPage(8)"> + <u-icon class="icon_right" size="26rpx" /> + <span style="line-height: 40rpx;">鎶ュ伐</span></u-button> + </view> + </view> + <u-calendar v-model="calendarShow" :mode="mode" @change="changeCalendar"></u-calendar> + <!--宸ュ簭涓嬫媺妗�--> + <u-select :default-value="[operationIndex]" v-model="selectShowOperation" :list="operationList" + @confirm="confirmOperation"></u-select> + <u-select v-model="selectShowClazzType" :list="clazzTypeList" @confirm="confirmClazzType"></u-select> + <u-toast ref="uToast" /> + </view> +</template> + +<script> +import { + dateFormat +} from "@/utils/date.js"; +import UIcon from "../../../uview-ui/components/u-icon/u-icon.vue"; +export default { + components: { + UIcon + }, + data() { + return { + customStyle: { + 'background': '#FFFFFF', + 'border-radius': '8rpx', + 'border': '1px solid #D2D2D2', + 'width': '121rpx', + 'height': '65rpx', + 'font-weight': 500, + 'font-size': '28rpx', + 'color': '#333333', + 'pading': '0 30rpx' + }, + calendarShow: false, + selectShowOperation: false, + selectShowClazzType: false, + mode: 'date', + id: '', + dutyNo: '', // 缂栧彿 + query: { + updateTime: dateFormat( + new Date(), 'yyyy-MM-dd'), + workstationName: '', // 宸ヤ綔绔欏悕绉� + workstationId: '', // 宸ヤ綔绔檌d + clazzType: '', // 鐝 + productionUser: '', + operationId: '', // 宸ュ簭id + operationName: '', // 宸ュ簭鍚嶇О + userList: [], + createUser: '' + }, + toId: '', + operationList: [], + clazzTypeList: [{ + label: '鐧界彮' + }, + { + label: '鏅氱彮' + }, + ], + workstation: '', + staffNameJoin: '', + operationIndex: '', + isEdit: false, // 鏄惁淇敼 + isShowButton: false, + workCenter: '', + addOrEdit: '', + info: {}, + firstOperationId: null, + lastOperationId: null, + } + }, + onShow() { + // this.getLastDutyRecordFun() + }, + onLoad() { + uni.$on('dailyListInfo', (info) => { + this.dutyNo = info.dutyNo + this.id = info.id + this.query.createUser = this.vuex_username + this.query.clazzType = info.clazzType + this.query.workstationId = info.workstationId + this.query.workstationName = info.workstationName + this.query.productionUser = info.productionUser.split(',').reverse() + this.query.userList = info.productionUserList.split(',') + this.query.operationId = info.operationId + this.getOperation() + }) + + uni.$on('returnData', (data) => { + // 涓存椂瀛樺偍宸ヤ綔绔欑殑鏁版嵁 + this.workstation = data + // 缁欓〉闈㈠伐浣滅珯璧嬪�� + this.query.workstationName = '(' + data.workCenter + ')' + data.name + this.query.workstationId = data.id + // 娓呯┖宸ュ簭閫夐」 + this.query.operationName = '' + this.query.operationId = '' + this.operationIndex = 0 + this.getOperationTaskFun(data.workCenter) + }) + uni.$on('checkedList', (data) => { + let staffNameList = [] + let staffNoList = [] + data.forEach(i => { + staffNameList.push(i.staffName) + staffNoList.push(i.staffNo) + }) + this.query.productionUser = staffNameList + this.query.userList = staffNoList + }); + }, + onReady() { + // 棣栨杩涘叆椤甸潰鑾峰彇褰撳墠鐧诲綍浜烘渶鍚庝竴娆℃彁浜ょ殑鏃ユ姤 + this.getLastDutyRecordFun() + }, + methods: { + isNotOperationName(workCenter, operationName, workCenterTwo) { + // 鍒ゆ柇鏄惁涓鸿宸ヤ綔绔� + if (workCenter.includes(workCenterTwo)) { + // 鍒ゆ柇鏄惁鍖呭惈宸ュ簭鍚嶇О + if (!operationName.includes(this.query.operationName)) { + return true + } else { + return false + } + } else { + return false + } + }, + // 鍒ゆ柇宸ュ崟鏄惁绛変簬,鍚屾椂鍒ゆ柇鏄惁涓虹涓�閬撳伐搴� + isFirstOperationId(workCenter, workCenterTwo) { + if (workCenter.includes(workCenterTwo)) { + // 鍒ゆ柇鏄惁涓嶄负绗竴閬撳伐搴� + if (this.query.operationId !== this.firstOperationId) { + return true + } else { + return false + } + } else { + return false + } + }, + // 棣栨杩涘叆椤甸潰鑾峰彇褰撳墠鐧诲綍浜烘渶鍚庝竴娆℃彁浜ょ殑鏃ユ姤 + getLastDutyRecordFun() { + this.$u.api.dailyPaper.getLastDutyRecord().then(res => { + if (res.code === 0) { + this.dutyNo = res.data.dutyNo + this.id = res.data.id + this.query.createUser = this.vuex_username + this.query.clazzType = res.data.clazzType + this.query.workstationId = res.data.workstationId + this.query.workstationName = res.data.workstationName + this.query.productionUser = res.data.productionUser.split(',').reverse() + this.query.userList = res.data.productionUserList.split(',') + this.query.operationId = res.data.operationId + this.getOperation() + } else { + this.$u.toast(res.msg) + } + }) + }, + // 娓呯┖閫昏緫 + onNavigationBarButtonTap(e) { + this.isEdit = true + this.isShowButton = true + this.addOrEdit = 'add' + this.query.productionUser = '' + this.query.productionUserList = [] + this.staffNameJoin = '' + this.query.updateTime = '' + }, + edit() { + this.isEdit = !this.isEdit + this.isShowButton = this.isEdit + this.addOrEdit = 'edit' + }, + goPage(index) { + switch (index) { + // 璺宠浆鍒板巻鍙查〉闈� + case 6: + uni.navigateTo({ + url: '/pages/daily/daily/daily-list' + }) + break; + // 璺宠浆鍒版姤宸ラ〉闈� + case 8: + if (this.isEdit) { + this.$refs.uToast.show({ + title: '璇峰厛淇濆瓨淇敼', + type: 'warning ' + }) + return + } + + let workCenter = this.query.workstationName.split(')')[0].substring(1) + let operation = this.query.workstationName.split(')')[1] + console.log(workCenter, operation, this.firstOperationId, this.query.operationId, this.query) + if (workCenter == "TM-01" || workCenter == "JG-01" || workCenter == "YB-04" || this.isFirstOperationId('DY-01,GY-01,YB-01,YB-02', workCenter) || this.isNotOperationName('ZZ-02', '浜岃,娉ㄦ补', workCenter)) { + let item = { + workstationId: this.query.workstationId, + clazzType: this.query.clazzType, + dutyNo: this.dutyNo, + userStaffNo: this.query.userList, + workstationName: this.query.workstationName, + staffNameJoin: this.staffNameJoin, + workCenter: workCenter, + operationId: this.query.operationId, + firstOperationId: this.firstOperationId, + lastOperationId: this.lastOperationId + } + uni.navigateTo({ + url: '/pages/daily/common/work-reporting?info=' + encodeURIComponent(JSON + .stringify(item)) + }) + } else if (this.query.workstationName.includes("TX-02") && !this.query.operationName.includes("鍙犺")) { + let item = { + workstationId: this.query.workstationId, + clazzType: this.query.clazzType, + dutyNo: this.dutyNo, + userStaffNo: this.query.userList, + workstationName: this.query.workstationName, + staffNameJoin: this.staffNameJoin, + workCenter: "TX-02", + operationId: this.query.operationId, + firstOperationId: this.firstOperationId, + lastOperationId: this.lastOperationId + } + uni.navigateTo({ + url: '/pages/daily/common/work-reporting?info=' + encodeURIComponent(JSON + .stringify(item)) + }) + } else { + uni.navigateTo({ + url: `/pages/daily/common/work-order-list?workstationId=${this.query.workstationId}&toId=${this.toId}&clazzType=${this.query.clazzType}&dutyNo=${this.dutyNo}&userStaffNo=${this.query.userList}&workstationName=${this.query.workstationName}&staffNameJoin=${this.staffNameJoin}` + }) + } + break; + // 璺宠浆鍒版潅宸ラ〉闈� + case 9: + if (this.isEdit) { + this.$refs.uToast.show({ + title: '璇峰厛淇濆瓨淇敼', + type: 'warning ' + }) + return + } + uni.navigateTo({ + url: `/pages/daily/handyman/handyman?dutyNo=${this.query.dutyNo}&updateTime=${this.query.updateTime}&userList=${this.query.productionUser}&staffList=${this.query.userList}` + }) + break; + } + if (!this.isEdit) { + return + } else { + switch (index) { + case 0: + uni.navigateTo({ + url: '/pages/daily/workstation/index' + }) + break; + case 1: + if (!this.query.workstationName) { + this.$refs.uToast.show({ + title: '璇峰厛閫夋嫨宸ヤ綔绔�', + type: 'warning ' + }) + } else { + this.selectShowOperation = true; + } + break; + case 2: + this.calendarShow = true; + break; + case 3: + this.selectShowClazzType = true; + break; + case 4: + let staffList = this.query.productionUser + let staffNoList = this.query.userList + const list = [] + for (const i in staffList) { + const obj = { + staffName: staffList[i], + staffNo: staffNoList[i] + } + list.push(obj) + } + uni.navigateTo({ + url: '/pages/daily/production-person/production-person?list=' + encodeURIComponent( + JSON.stringify(list)) + }) + break; + } + } + }, + // 鎻愪氦鏃ユ姤淇敼 + submit() { + if (!this.query.workstationId) { + this.$u.toast('璇烽�夋嫨宸ヤ綔绔�') + return + } else if (!this.query.operationId) { + this.$u.toast('璇烽�夋嫨宸ュ簭') + return + } else if (!this.query.clazzType) { + this.$u.toast('璇烽�夋嫨鐝') + return + } else if (!this.query.productionUser) { + this.$u.toast('璇烽�夋嫨鐢熶骇浜哄憳') + return + } else if (!this.query.updateTime) { + this.$u.toast('璇烽�夋嫨鏃堕棿') + return + } + + let params = JSON.parse(JSON.stringify(this.query)) + this.$delete(params, 'productionUser') + this.$delete(params, 'productionUserList') + params.updateTime = params.updateTime + ' 00:00:00' + params.id = null + if (this.addOrEdit === 'add') { + this.$u.api.dailyPaper.addDailyPaper(params).then(res => { + if (res.code === 0) { + // this.getLastDutyRecordFun() + this.query.createUser = this.vuex_username + this.$u.toast('淇濆瓨鎴愬姛') + this.isShowButton = false + this.getLastDutyRecordFun() + } + }) + } else { + params.id = this.id + this.$u.api.dailyPaper.editDailyPaper(params).then(res => { + if (res.code === 0) { + // this.getLastDutyRecordFun() + this.$u.toast('淇敼鎴愬姛') + this.isShowButton = false + } + }) + } + this.isEdit = false + }, + changeCalendar(e) { + this.query.updateTime = e.result; + }, + confirmOperation(e) { + this.query.operationName = e[0].label + this.query.operationId = e[0].value + const index = this.operationList.findIndex(item => item.value === this.query.operationId) + if (index > -1) { + this.operationIndex = index + this.toId = this.operationList[index].value + } + }, + confirmClazzType(e) { + this.query.clazzType = e[0].label + }, + // 鏌ヨ宸ヤ綔绔� + getOperation() { + this.$u.api.dailyPaper.getWorkstation().then(res => { + if (res.code === 0) { + const index = res.data.findIndex(item => item.name === this.query.workstationName) + if (index > -1) { + this.workCenter = res.data[index].workCenter + } + this.query.workstationName = '(' + this.workCenter + ')' + this.query.workstationName + this.getOperationTaskFun(this.workCenter, this.query.operationId) + } + }) + }, + getOperationTaskFun(id, operationId) { + this.operationList = [] + const params = { + workCenter: id, + current: 1, + size: -1 + } + // 鏌ヨ宸ュ簭鍒楄〃 + this.$u.api.dailyPaper.getOperation(params).then(res => { + if (res.code === 0) { + if (res.data.records.length > 0) { + res.data.records.forEach(i => { + const obj = Object.assign({ + label: i.name, + value: i.id, + }) + this.operationList.push(obj) + }) + if (operationId) { + const index = this.operationList.findIndex(item => item.value === operationId) + if (index > -1) { + this.operationIndex = index + this.query.operationName = this.operationList[index].label + this.toId = this.operationList[index].value + } + } + this.firstOperationId = this.operationList[0].value + this.lastOperationId = this.operationList[this.operationList.length - 1].value + } + } + }) + } + }, + watch: { + 'query.productionUser': { + handler(newName, oldName) { + if (this.query.productionUser.length > 0) { + this.staffNameJoin = this.query.productionUser.join() + } else { + this.staffNameJoin = '' + } + }, + immediate: true, + deep: true + } + } +} +</script> + +<style lang="scss"> +@import 'index0.scss'; +</style> \ No newline at end of file -- Gitblit v1.9.3