From c7262ac9c1ac9f844f79b9193734c96644e3a165 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期二, 22 七月 2025 15:45:53 +0800
Subject: [PATCH] 报工增加按人员或按组报工
---
pages/product/report/components/saveForm.vue | 4 +
pages/product/outputRegister/addProductOut.vue | 2
pages/product/report/index.vue | 155 ++++++++++++++++++++++++++++++++++----
common/http.api.js | 3
pages/product/report/index.scss | 31 +++++++
5 files changed, 177 insertions(+), 18 deletions(-)
diff --git a/common/http.api.js b/common/http.api.js
index 38a0be5..b1c614b 100644
--- a/common/http.api.js
+++ b/common/http.api.js
@@ -489,6 +489,7 @@
//鑾峰彇浠诲姟绫诲瀷
getAssemblyProcessType:(params = {}) => vm.$u.get('/admin/dict/type/assembly_process_type')
},
+ // jdhj-mes
// 鎶ュ伐
workReporting: {
// 鑾峰彇杞﹂棿璁㈠崟鍒楄〃
@@ -499,6 +500,8 @@
operationTask: (params = {}) => vm.$u.get('/mes/operationTask/'+ params.id),
// 鎻愪氦
submitPDA: (params = {}) => vm.$u.post('/mes/product/submitPDA', params),
+ // 鑾峰彇浜哄憳
+ getPersonByDutyRecordId: (params = {}) => vm.$u.get('/mes/dutyRecord/getPersonByDutyRecordId/'+ params.id),
},
// 鎶ュ伐
cancelReporting: {
diff --git a/pages/product/outputRegister/addProductOut.vue b/pages/product/outputRegister/addProductOut.vue
index dd7401f..c6e8647 100644
--- a/pages/product/outputRegister/addProductOut.vue
+++ b/pages/product/outputRegister/addProductOut.vue
@@ -503,4 +503,4 @@
.uni-input-placeholder{font-size: 12px;color: rgb(192, 196, 204);}
>>>.uni-input-input{font-size: 12px;}
-</style>
+</style>
\ No newline at end of file
diff --git a/pages/product/report/components/saveForm.vue b/pages/product/report/components/saveForm.vue
index 22841b1..b8b2169 100644
--- a/pages/product/report/components/saveForm.vue
+++ b/pages/product/report/components/saveForm.vue
@@ -167,6 +167,10 @@
}
this.operationTaskList.operationTaskId = this.operationTaskList.id;
this.form.operationTaskId = this.operationTaskList.id;
+ this.form.status = this.operationTaskList.status;
+ this.form.Persons = this.operationTaskList.Persons;
+ this.form.productStaffIds = this.operationTaskList.productStaffIds;
+ this.form.productStaffs = this.operationTaskList.productStaffs;
this.operationTaskList.productOutputList = []; // 鍒涘缓涓�涓┖鏁扮粍
this.operationTaskList.productOutputList.push(this.form); // 鍚戞暟缁勪腑娣诲姞鍏冪礌
console.log("this.operationTaskList", this.operationTaskList);
diff --git a/pages/product/report/index.scss b/pages/product/report/index.scss
index 8a12a47..14d2df6 100644
--- a/pages/product/report/index.scss
+++ b/pages/product/report/index.scss
@@ -1,4 +1,33 @@
- .packing-registration-param {
+ /* 寮圭獥鏍峰紡 */
+ /* 澶嶉�夋鏍峰紡 */
+ .checkbox-item {
+ width: 230px;
+ display: flex;
+ align-items: center;
+ padding: 20rpx 0;
+ border-bottom: 1rpx solid #f5f5f5;
+ background-color: #f8f9fa;
+
+ .label {
+ position: relative;
+ left: 130px;
+ }
+ }
+ .popup-content {
+ padding: 30rpx;
+ max-height: 70vh;
+ overflow-y: auto;
+ }
+
+ .popup-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding-bottom: 20rpx;
+ border-bottom: 1rpx solid #eee;
+ margin-bottom: 20rpx;
+ }
+ .packing-registration-param {
padding: 40rpx 30rpx 10rpx 30rpx;
height: 350px;
overflow: hidden;
diff --git a/pages/product/report/index.vue b/pages/product/report/index.vue
index fa65a7f..6b92297 100644
--- a/pages/product/report/index.vue
+++ b/pages/product/report/index.vue
@@ -80,20 +80,16 @@
<u-radio name="false">鍚�</u-radio>
</u-radio-group>
</u-form-item>
-<!-- <u-form-item label="宸ュ簭">
- <u-checkbox-group>
- <u-checkbox
- :name="item.name"
- v-for="(item, index) in checkboxList"
- :key="index"
- v-model="item.value"
- @change="changeCheckbox"
- :disabled="subdisabled || item.disabled"
- >
- {{ item.name }}
- </u-checkbox>
- </u-checkbox-group>
- </u-form-item> -->
+ <u-form-item label="鎶ュ伐鏂瑰紡" prop="status">
+ <u-radio-group v-model="form.status" :disabled="subdisabled" @change="handleReportTypeChange">
+ <u-radio name="false">鎸夌彮缁勬姤宸�</u-radio>
+ <u-radio name="true">鎸変汉鍛樻姤宸�</u-radio>
+ </u-radio-group>
+ </u-form-item>
+ <u-form-item label="浜哄憳鍚嶇О" :border-bottom="false" prop="Persons">
+ <u-input v-model="form.Persons" type="select" placeholder="璇烽�夋嫨"
+ @click="openselectedPersons" :disabled="!canSelectPerson || subdisabled"/>
+ </u-form-item>
<u-form-item label="浜у嚭鍒楄〃" :border-bottom="false"></u-form-item>
</u-form>
<view class="wrap">
@@ -205,6 +201,19 @@
</view>
</view>
</u-modal>
+ <u-modal v-model="personShowModal" title="" :show-cancel-button="true" :show-confirm-button="true"
+ @confirm="confirmSelection" @cancel="cancelSelection">
+ <view class="popup-content">
+ <view class="popup-header">
+ <checkbox-group @change="checkboxChange">
+ <label class="checkbox-item" v-for="(item, index) in selectedPersons" :key="index">
+ <checkbox :value="item.staffId" :checked="item.checked" />
+ <text class="label">{{ item.staffName }}</text>
+ </label>
+ </checkbox-group>
+ </view>
+ </view>
+ </u-modal>
<scan></scan>
</div>
</template>
@@ -235,6 +244,7 @@
// },
// ],
InventoryReceiptList: [],
+ selectedPersons: [],
form: {
workstationId: "",
work: "",
@@ -251,7 +261,13 @@
materialCost: "",
// autoReport: false,
simplifyMaterials: 'false',
+ status: 'false',
+ Persons: '',
+ productStaffIds: [],
+ productStaffs:[]
},
+ personList: [],
+ canSelectPerson: false,
rules: {
work: [
{
@@ -295,6 +311,20 @@
trigger: ["change"],
},
],
+ status: [
+ {
+ required: true,
+ message: "璇烽�夋嫨鎶ュ伐鏂瑰紡",
+ trigger: ["change"],
+ },
+ ],
+ Persons: [
+ {
+ required: true,
+ message: "璇烽�夋嫨浜哄憳",
+ trigger: ["change"],
+ },
+ ],
},
showSave: false,
operationTaskId: "",
@@ -302,6 +332,8 @@
codeInfoId: "",
detailedList: {},
showModal: false,
+ personShowModal: false,
+ checkboxList: [],
};
},
// 鐐瑰嚮鎻愪氦鎸夐挳鐨勪簨浠跺鐞嗗嚱鏁�
@@ -355,8 +387,71 @@
"form.taskNo": function (newVal, oldVal) {
this.subdisabled = false;
},
+ 'form.status'(newVal) {
+ this.selectedPersons = this.selectedPersons.map(item => ({
+ ...item,
+ checked: newVal === 'false'
+ }));
+ }
},
methods: {
+ // 澶勭悊鎶ュ伐鏂瑰紡鍙樻洿
+ handleReportTypeChange() {
+ // 鍒囨崲鎶ュ伐鏂瑰紡鏃舵竻绌轰汉鍛樺悕绉�
+ this.form.Persons = '';
+ this.form.productStaffs = [];
+ this.form.productStaffIds = [];
+ },
+ // 浜哄憳鍚嶇О
+ openselectedPersons() {
+ this.personShowModal = true;
+ },
+ // 澶嶉�夋鍙樺寲浜嬩欢
+ checkboxChange(e) {
+ console.log('e',e)
+ const values = e.target.value || [];
+ if (this.form.status === 'true') {
+ // 鍗曢�夋ā寮忥紝鍙厑璁搁�夋嫨涓�涓汉
+ const previouslySelected = this.selectedPersons.find(item => item.checked);
+ const newlySelected = values.length > 0 ? values[values.length - 1] : null;
+ if (previouslySelected && newlySelected && previouslySelected.staffId !== newlySelected) {
+ // 宸叉湁閫変腑椤逛笖閫夋嫨浜嗘柊鐨勯」锛屾彁绀哄彧鑳介�夋嫨涓�涓汉
+ this.$u.toast('鎸変汉鍛樻姤宸ユ椂鍙兘閫夋嫨涓�浣嶄汉鍛�');
+ // 淇濇寔鍘熼�夋嫨
+ this.selectedPersons = this.selectedPersons.map(item => ({
+ ...item,
+ checked: item.staffId === previouslySelected.staffId
+ }));
+
+ } else {
+ // 棣栨閫夋嫨鎴栧彇娑堥�夋嫨
+ this.selectedPersons = this.selectedPersons.map(item => ({
+ ...item,
+ checked: newlySelected ? item.staffId === newlySelected : false
+ }));
+
+ }
+ } else {
+ // 澶氶�夋ā寮�
+ this.selectedPersons = this.selectedPersons.map(item => ({
+ ...item,
+ checked: values.includes(item.staffId)
+ }));
+ }
+ },
+ // 纭閫夋嫨
+ confirmSelection() {
+ const selected = this.selectedPersons.filter(item => item.checked);
+ // 鏍规嵁鎶ュ伐鏂瑰紡璁剧疆浜哄憳鍚嶇О
+ if (this.form.status === 'true' && selected.length > 0) {
+ this.form.Persons = selected[0].staffName;
+ } else {
+ this.form.Persons = selected.map(item => item.staffName).join(',');
+ }
+ this.form.productStaffs = selected.map(item => item.staffNo);
+ this.form.productStaffIds = selected.map(item => item.staffId);
+ },
+ cancelSelection(){},
// 閾滄潌鎶ュ伐
CopperReportingWork(val) {
const copperList = {};
@@ -368,6 +463,10 @@
copperList.specificationType = val.ST
copperList.grossWeight = val.TR
copperList.operationTaskId = this.form.id
+ copperList.status = this.form.status;
+ copperList.Persons = this.form.Persons;
+ copperList.productStaffIds = this.form.productStaffIds;
+ copperList.productStaffs = this.form.productStaffs;
this.form.productOutputList = [];
this.form.operationTaskId = this.form.id;
this.form.productOutputList.push(copperList);
@@ -382,6 +481,26 @@
radioChange() {
// 澶勭悊鍗曢�夋鍙樺寲浜嬩欢
},
+ // 鑾峰彇浜哄憳鍒楄〃
+ getPersonList(dutyId) {
+ console.log('111111')
+ try {
+ this.$u.api.workReporting.getPersonByDutyRecordId({ id: dutyId }).then((res) => {
+ this.selectedPersons = res.data.map(item => ({
+ ...item,
+ checked: this.form.status === 'false'
+ }));
+ })
+ .catch(err => {
+ console.log(err)
+ })
+ } catch (err) {
+ console.log(err)
+
+ }
+
+ },
+
confirmModle() {
console.log("鐐瑰嚮纭鍚庤幏鍙栧彇娑堟姤宸ヨ褰�");
// 澶勭悊纭閫昏緫
@@ -481,12 +600,16 @@
materialCost: val.materialCost,
// autoReport: false,
simplifyMaterials: 'false',
+ status: 'false',
+ Persons:'',
};
- this.checkboxList[1].value = false;
- this.checkboxList[0].value = false;
if (this.form.materialCost == "鍊掑啿") {
this.simplifyDisabled = true;
}
+ // 濡傛灉鏈塪utyNo锛岃幏鍙栦汉鍛樺垪琛�
+ if (val.dutyId) {
+ this.getPersonList(val.dutyId);
+ }
},
},
};
--
Gitblit v1.9.3