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/index.vue | 684 +++++++++++++++++--------------------------------------- 1 files changed, 206 insertions(+), 478 deletions(-) diff --git a/pages/product/report/index.vue b/pages/product/report/index.vue index e12c3ec..a31fa52 100644 --- a/pages/product/report/index.vue +++ b/pages/product/report/index.vue @@ -1,486 +1,214 @@ <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> + <!-- 鎶ュ伐 --> + <div class="page"> + <u-form :model="form" ref="uForm" :label-width="200" :rules="rules" :error-type="['toast']"> + <u-form-item label="杞﹂棿" :border-bottom="false" prop="value0"> + <u-radio-group v-model="form.value0"> + <u-radio name="瀵间綋">瀵间綋</u-radio> + <u-radio name="閾滄潌">閾滄潌</u-radio> + </u-radio-group> + </u-form-item> + <u-form-item label="鎶ュ伐鍗曞彿" :border-bottom="false" prop="value1"> + <u-input v-model="form.value1" type="select" placeholder="璇锋壂鎻忔姤宸ュ崟鍙�" @click="open" /> + </u-form-item> + <u-form-item label="宸ュ簭" :border-bottom="false" prop="value2"> + <u-input v-model="form.value2" type="select" placeholder="璇锋壂鎻忔姤宸ュ崟鍙�" /> + </u-form-item> + <u-form-item label="璁㈠崟鍙�" :border-bottom="false" prop="value3"> + <u-input v-model="form.value3" type="select" placeholder="鐐瑰嚮閫夋嫨" @click="openList" /> + </u-form-item> + <u-form-item label="闆朵欢鍙�" :border-bottom="false" prop="value4"> + <u-input v-model="form.value4" placeholder="" disabled /> + </u-form-item> + <u-form-item label="闆朵欢鎻忚堪" :border-bottom="false" prop="value5"> + <u-input v-model="form.value5" placeholder="" disabled /> + </u-form-item> + <u-form-item label="鎵归噺澶у皬" :border-bottom="false" prop="value6"> + <u-input v-model="form.value6" placeholder="" disabled /> + </u-form-item> + <u-form-item label="鍓╀綑鏁伴噺" :border-bottom="false" prop="value7"> + <u-input v-model="form.value7" placeholder="" disabled /> + </u-form-item> + <u-form-item label="搴撲綅" :border-bottom="false" prop="value8"> + <u-input v-model="form.value8" placeholder="" disabled /> + </u-form-item> + <u-form-item label="鎶ュ伐绫诲瀷" prop="value9"> + <u-radio-group v-model="form.value9"> + <u-radio name="涓嬫満鎶ュ伐">涓嬫満鎶ュ伐</u-radio> + <u-radio name="鏈笅鏈烘姤宸�">鏈笅鏈烘姤宸�</u-radio> + </u-radio-group> + </u-form-item> + <u-form-item label="鎺ユ敹闆朵欢" prop="value10"> + <u-radio-group v-model="form.value10"> + <u-radio name="杞﹂棿璁㈠崟">杞﹂棿璁㈠崟</u-radio> + <u-radio name="鏇夸唬闆朵欢">鏇夸唬闆朵欢</u-radio> + </u-radio-group> + </u-form-item> + <u-form-item label="鐗╂枡鍜屽伐搴�" prop="value11"> + <u-checkbox-group> + <u-checkbox :name="item.name" v-for="(item, index) in checkboxList" :key="index" v-model="item.value" + @change="changeCheckbox"> + {{ item.name }} + </u-checkbox> + </u-checkbox-group> + </u-form-item> + <u-form-item label="搴撳瓨鎺ユ敹" :border-bottom="false" prop="value12"></u-form-item> + </u-form> + <!-- 濉啓鎶ュ伐鍗� --> + <modalBg ref="modalBg" :confirm="confirm"> + <u-field v-model="form.value1" label="鎶ュ伐鍗曞彿" placeholder="璇疯緭鍏�" :border-bottom="false"> + </u-field> + </modalBg> + <saveForm ref="saveForm" /> + </div> </template> <script> -import { - dateFormat -} from "@/utils/date.js"; -import UIcon from "../../../uview-ui/components/u-icon/u-icon.vue"; +import modalBg from '@/components/modal/modal-bg.vue' +import saveForm from './components/saveForm.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 - } - } + components: { modalBg, saveForm }, + data() { + return { + checkboxList: [ + { + name: '鍊掑啿', + value: false + }, + { + name: '宸ュ簭鐨勮嚜鍔ㄦ姤鍛�', + value: false + }, + { + name: '绠�鍖栫墿鏂欐鏌�', + value: false + } + ], + form: { + value0: '', + value1: '', + value2: '', + value3: '', + value4: '', + value5: '', + value6: '', + value7: '', + value8: '', + value9: '涓嬫満鎶ュ伐', + value10: '杞﹂棿璁㈠崟', + value11: [], // 澶嶉�夋缁勭殑鍊� + value12: '' + }, + rules: { + value0: [ + { + required: true, + message: '璇烽�夋嫨杞﹂棿', + trigger: ['change'] + } + ], + value1: [ + { + required: true, + message: '璇烽�夋嫨鎶ュ伐鍗曞彿', + trigger: ['change', 'blur'] + } + ], + value2: [ + { + required: true, + message: '璇烽�夋嫨宸ュ簭', + trigger: ['change', 'blur'] + } + ], + value3: [ + { + required: true, + message: '璇烽�夋嫨璁㈠崟鍙�', + trigger: ['change', 'blur'] + } + ], + value9: [ + { + required: true, + message: '璇烽�夋嫨鎶ュ伐绫诲瀷', + trigger: ['change'] + } + ], + value10: [ + { + required: true, + message: '璇烽�夋嫨鎺ユ敹闆朵欢绫诲瀷', + trigger: ['change'] + } + ], + value11: [ + { + type: 'array', + required: true, + message: '璇疯嚦灏戦�夋嫨涓�涓墿鏂欏拰宸ュ簭閫夐」', + trigger: ['change'] + } + ] + }, + showSave: false, + } + }, + // 鐐瑰嚮鎻愪氦鎸夐挳鐨勪簨浠跺鐞嗗嚱鏁� + onNavigationBarButtonTap() { + this.form.value11 = this.checkboxList.filter(item => item.value).map(item => item.name); + this.$refs.uForm.validate(valid => { + if (valid) { + console.log('楠岃瘉閫氳繃'); + // 澶勭悊鎻愪氦閫昏緫 + this.$refs.saveForm.open(); + } else { + console.log('楠岃瘉澶辫触'); + // 鍙互鑾峰彇鍏蜂綋鐨勯敊璇俊鎭� + const errors = this.$refs.uForm.getError(); + console.log('閿欒淇℃伅:', errors); + } + }); + }, + onReady() { + this.$refs.uForm.setRules(this.rules); + }, + methods: { + // 澶氶�夊鐞� + changeCheckbox(val) { + if (val.name === '鍊掑啿') { + this.checkboxList[2].value = false + } + if (val.name === '绠�鍖栫墿鏂欐鏌�') { + this.checkboxList[0].value = false + } + }, + // 鎵撳紑寮规--鍚庨潰杩橀渶瑕佺洃鍚壂鐮佹灙鎵爜缁撴灉锛岃祴鍊肩粰鎶ュ伐鍗曞彿瀛楁锛岀劧鍚庢墦寮�寮规閫夋嫨璁㈠崟鍙风瓑鎿嶄綔 + open() { + this.$refs.modalBg.open(); + }, + // 寮规淇濆瓨 + confirm() { + console.log('淇濆瓨', this.form.value1); + // 璇锋眰鎺ュ彛锛屾牴鎹伐鍗曞彿鏌ヨ鍏朵粬淇℃伅骞惰祴鍊� + }, + // 閫夋嫨璁㈠崟鍙� + openList() { + if (this.form.value1 === '') { + uni.showToast({ + title: '璇峰厛鎵弿鎴栬緭鍏ユ姤宸ュ崟鍙�', + icon: 'none' + }) + return + } + uni.navigateTo({ + url: '/pages/product/report/orderList' + }) + }, + setNo(val) { + this.form.value3 = val + } + } } </script> -- Gitblit v1.9.3