From f54d7fe89cf6b9143b468a7cc192f13a4c9cec22 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 03 二月 2026 10:42:21 +0800
Subject: [PATCH] 进销存升级 1.生产报工带出来的出厂检数据编辑时,规格型号回显还是有问题 2.用印管理分页数字展示有误
---
src/views/collaborativeApproval/rulesRegulationsManagement/index.vue | 111 ++++++++----------
src/views/qualityManagement/finalInspection/components/formDia.vue | 123 ++++++++++++--------
src/views/collaborativeApproval/sealManagement/index.vue | 100 +++++++++-------
3 files changed, 181 insertions(+), 153 deletions(-)
diff --git a/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue b/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
index 6c3004d..ba8e46d 100644
--- a/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
+++ b/src/views/collaborativeApproval/rulesRegulationsManagement/index.vue
@@ -42,68 +42,15 @@
</el-button>
</el-col>
</el-row>
- <el-table :data="regulations"
- border
- v-loading="tableLoading"
- style="width: 100%">
- <el-table-column prop="regulationNum"
- label="鍒跺害缂栧彿"
- width="120" />
- <el-table-column prop="title"
- label="鍒跺害鏍囬"
- min-width="150" />
- <el-table-column prop="category"
- label="鍒嗙被"
- width="120">
- <template #default="scope">
- <el-tag>{{ getCategoryText(scope.row.category) }}</el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="version"
- label="鐗堟湰"
- width="120" />
- <el-table-column prop="createUserName"
- label="鍙戝竷浜�"
- width="120" />
- <el-table-column prop="createTime"
- label="鍙戝竷鏃堕棿"
- width="180" />
- <el-table-column prop="status"
- label="鐘舵��"
- width="100">
- <template #default="scope">
- <el-tag :type="scope.row.status === 'active' ? 'success' : 'info'">
- {{ scope.row.status === 'active' ? '鐢熸晥涓�' : '宸插簾姝�' }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="readCount"
- label="宸茶浜烘暟"
- width="100" />
- <el-table-column label="鎿嶄綔"
- width="320"
- fixed="right">
- <template #default="scope">
- <el-button link
- @click="viewRegulation(scope.row)">鏌ョ湅</el-button>
- <el-button link
- type="primary"
- @click="handleEdit(scope.row)">缂栬緫</el-button>
- <el-button link
- type="danger"
- @click="repealEdit(scope.row)">搴熷純</el-button>
- <el-button link
- type="success"
- @click="viewVersionHistory(scope.row)">鐗堟湰鍘嗗彶</el-button>
- <!-- <el-button link type="warning" @click="viewReadStatus(scope.row)">闃呰鐘舵��</el-button> -->
- <el-button link
- type="primary"
- @click="openFileDialog(scope.row)">闄勪欢</el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination v-show="page.total > 0" :total="page.total" layout="total, sizes, prev, pager, next, jumper"
- :page="page.current" :limit="page.size" @pagination="paginationChange" />
+ <PIMTable
+ rowKey="id"
+ :column="regulationTableColumn"
+ :tableData="regulations"
+ :tableLoading="tableLoading"
+ :page="page"
+ :isShowPagination="true"
+ @pagination="paginationChange"
+ />
</div>
</el-card>
<!-- 鐢ㄥ嵃鐢宠瀵硅瘽妗嗭紙宸茬Щ闄わ級 -->
@@ -295,6 +242,7 @@
delRuleFile,
addRuleFile,
} from "@/api/collaborativeApproval/rulesRegulationsManagementFile.js";
+ import PIMTable from "@/components/PIMTable/PIMTable.vue";
// 鍝嶅簲寮忔暟鎹�
const operationType = ref("add");
@@ -363,6 +311,45 @@
const regulations = ref([]);
+ // 琛ㄦ牸鍒楅厤缃�
+ const regulationTableColumn = ref([
+ { label: "鍒跺害缂栧彿", prop: "regulationNum"},
+ { label: "鍒跺害鏍囬", prop: "title" },
+ {
+ label: "鍒嗙被",
+ prop: "category",
+ dataType: "tag",
+ formatData: (v) => getCategoryText(v),
+ formatType: () => "info",
+ },
+ { label: "鐗堟湰", prop: "version", width: 120 },
+ { label: "鍙戝竷浜�", prop: "createUserName", width: 120 },
+ { label: "鍙戝竷鏃堕棿", prop: "createTime", width: 180 },
+ {
+ label: "鐘舵��",
+ prop: "status",
+ width: 100,
+ dataType: "tag",
+ formatData: (v) => (v === "active" ? "鐢熸晥涓�" : "宸插簾姝�"),
+ formatType: (v) => (v === "active" ? "success" : "info"),
+ },
+ { label: "宸茶浜烘暟", prop: "readCount", width: 100 },
+ {
+ dataType: "action",
+ label: "鎿嶄綔",
+ width: 320,
+ fixed: "right",
+ align: "center",
+ operation: [
+ { name: "鏌ョ湅", clickFun: (row) => viewRegulation(row) },
+ { name: "缂栬緫", clickFun: (row) => handleEdit(row) },
+ { name: "搴熷純", clickFun: (row) => repealEdit(row) },
+ { name: "鐗堟湰鍘嗗彶", clickFun: (row) => viewVersionHistory(row) },
+ { name: "闄勪欢", clickFun: (row) => openFileDialog(row) },
+ ],
+ },
+ ]);
+
const versionHistory = ref([]);
const readStatusList = ref([]);
diff --git a/src/views/collaborativeApproval/sealManagement/index.vue b/src/views/collaborativeApproval/sealManagement/index.vue
index f3599f7..b4a1886 100644
--- a/src/views/collaborativeApproval/sealManagement/index.vue
+++ b/src/views/collaborativeApproval/sealManagement/index.vue
@@ -36,48 +36,15 @@
</el-col>
</el-row>
- <el-table :data="sealApplications" border v-loading="tableLoading" style="width: 100%">
- <el-table-column prop="applicationNum" label="鐢宠缂栧彿" width="120" />
- <el-table-column prop="title" label="鐢宠鏍囬" min-width="200" />
- <el-table-column prop="createUserName" label="鐢宠浜�" width="120" />
- <el-table-column prop="department" label="鎵�灞為儴闂�" width="150" />
- <el-table-column prop="sealType" label="鐢ㄥ嵃绫诲瀷" width="120">
- <template #default="scope">
- {{ getSealTypeText(scope.row.sealType) }}
- </template>
- </el-table-column>
- <el-table-column prop="createTime" label="鐢宠鏃堕棿" width="180" />
- <el-table-column prop="status" label="鐘舵��" width="100">
- <template #default="scope">
- <el-tag :type="getStatusType(scope.row.status)">
- {{ getStatusText(scope.row.status) }}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column label="鎿嶄綔" width="200" fixed="right">
- <template #default="scope">
- <el-button link @click="viewSealDetail(scope.row)">鏌ョ湅</el-button>
- <el-button
- v-if="scope.row.status === 'pending'"
- link
- type="primary"
- @click="approveSeal(scope.row)"
- >
- 瀹℃壒
- </el-button>
- <el-button
- v-if="scope.row.status === 'pending'"
- link
- type="danger"
- @click="rejectSeal(scope.row)"
- >
- 鎷掔粷
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- <pagination v-show="page.total > 0" :total="page.total" layout="total, sizes, prev, pager, next, jumper"
- :page="page.current" :limit="page.size" @pagination="paginationChange" />
+ <PIMTable
+ rowKey="id"
+ :column="sealTableColumn"
+ :tableData="sealApplications"
+ :tableLoading="tableLoading"
+ :page="page"
+ :isShowPagination="true"
+ @pagination="paginationChange"
+ />
</div>
</el-card>
@@ -294,6 +261,7 @@
import { userLoginFacotryList } from "@/api/system/user.js"
import {staffOnJobListPage} from "@/api/personnelManagement/staffOnJob.js"
import FormDialog from '@/components/Dialog/FormDialog.vue'
+import PIMTable from '@/components/PIMTable/PIMTable.vue'
// 鍝嶅簲寮忔暟鎹�
const currentUser = ref(null)
@@ -335,7 +303,7 @@
// 鍒嗛〉鍙傛暟
const page = reactive({
current: 1,
- size: 100,
+ size: 10,
total: 0
})
// 瑙勭珷鍒跺害鐩稿叧
@@ -418,10 +386,56 @@
official: '鍏珷',
contract: '鍚堝悓涓撶敤绔�',
finance: '璐㈠姟涓撶敤绔�',
+ legal: '娉曚汉绔�',
tegal: '鎶�鏈笓鐢ㄧ珷'
}
return sealTypeMap[sealType] || '鏈煡'
}
+
+// 鐢ㄥ嵃鐢宠琛ㄦ牸鍒楅厤缃紙闇�鍦� getStatusText/getSealTypeText 绛変箣鍚庡畾涔夛級
+const sealTableColumn = ref([
+ { label: '鐢宠缂栧彿', prop: 'applicationNum',},
+ { label: '鐢宠鏍囬', prop: 'title', showOverflowTooltip: true },
+ { label: '鐢宠浜�', prop: 'createUserName', },
+ { label: '鎵�灞為儴闂�', prop: 'department', width: 150 },
+ {
+ label: '鐢ㄥ嵃绫诲瀷',
+ prop: 'sealType',
+ dataType: 'tag',
+ formatData: (v) => getSealTypeText(v),
+ formatType: () => 'info'
+ },
+ { label: '鐢宠鏃堕棿', prop: 'createTime', width: 180 },
+ {
+ label: '鐘舵��',
+ prop: 'status',
+ width: 100,
+ dataType: 'tag',
+ formatData: (v) => getStatusText(v),
+ formatType: (v) => getStatusType(v)
+ },
+ {
+ dataType: 'action',
+ label: '鎿嶄綔',
+ width: 200,
+ fixed: 'right',
+ align: 'center',
+ operation: [
+ { name: '鏌ョ湅', clickFun: (row) => viewSealDetail(row) },
+ {
+ name: '瀹℃壒',
+ clickFun: (row) => approveSeal(row),
+ showHide: (row) => row.status === 'pending'
+ },
+ {
+ name: '鎷掔粷',
+ clickFun: (row) => rejectSeal(row),
+ showHide: (row) => row.status === 'pending'
+ }
+ ]
+ }
+])
+
// 鍒跺害鍒嗙被
const getCategoryText = (category) => {
const categoryMap = {
diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue
index 8dfd3ba..6a3e774 100644
--- a/src/views/qualityManagement/finalInspection/components/formDia.vue
+++ b/src/views/qualityManagement/finalInspection/components/formDia.vue
@@ -201,64 +201,91 @@
const openDialog = async (type, row) => {
operationType.value = type;
dialogFormVisible.value = true;
- getOptions().then((res) => {
- supplierList.value = res.data;
- });
- let userLists = await userListNoPage();
- userList.value = userLists.data;
- form.value = {}
+ // 鍏堟竻绌鸿〃鍗曢獙璇佺姸鎬侊紝閬垮厤闂儊
+ await nextTick();
+ proxy.$refs.formRef?.clearValidate();
+
+ // 骞惰鍔犺浇鍩虹鏁版嵁
+ const [userListsRes] = await Promise.all([
+ userListNoPage(),
+ getProductOptions(),
+ getOptions().then((res) => {
+ supplierList.value = res.data;
+ })
+ ]);
+ userList.value = userListsRes.data;
+
+ form.value = {}
testStandardOptions.value = [];
tableData.value = [];
- getProductOptions();
+
if (operationType.value === 'edit') {
// 鍏堜繚瀛� testStandardId锛岄伩鍏嶈娓呯┖
const savedTestStandardId = row.testStandardId;
// 鍏堣缃〃鍗曟暟鎹紝浣嗘殏鏃舵竻绌� testStandardId锛岀瓑閫夐」鍔犺浇瀹屾垚鍚庡啀璁剧疆
form.value = {...row, testStandardId: ''}
- currentProductId.value = row.productId || 0
- // 缂栬緫妯″紡涓嬶紝鍏堝姞杞芥寚鏍囬�夐」锛岀劧鍚庡姞杞藉弬鏁板垪琛�
- if (currentProductId.value) {
- // 鍏堝姞杞芥寚鏍囬�夐」
- let params = {
- productId: currentProductId.value,
- inspectType: 2
- }
- qualityInspectDetailByProductId(params).then(res => {
- testStandardOptions.value = res.data || [];
- // 浣跨敤 nextTick 鍜� setTimeout 纭繚閫夐」宸茬粡娓叉煋鍒� DOM
- nextTick(() => {
- setTimeout(() => {
- // 濡傛灉缂栬緫鏁版嵁涓湁 testStandardId锛屽垯璁剧疆骞跺姞杞藉搴旂殑鍙傛暟
- if (savedTestStandardId) {
- // 纭繚绫诲瀷鍖归厤锛坕tem.id 鍙兘鏄暟瀛楁垨瀛楃涓诧級
- const matchedOption = testStandardOptions.value.find(item =>
- item.id == savedTestStandardId || String(item.id) === String(savedTestStandardId)
- );
- if (matchedOption) {
- // 纭繚浣跨敤鍖归厤椤圭殑 id锛堜繚鎸佺被鍨嬩竴鑷达級
- form.value.testStandardId = matchedOption.id;
- // 缂栬緫鍦烘櫙淇濈暀宸叉湁妫�楠屽�硷紝鐩存帴鎷夊彇鍘熷弬鏁版暟鎹�
- getQualityInspectParamList(row.id);
- } else {
- // 濡傛灉鎵句笉鍒板尮閰嶉」锛屽皾璇曠洿鎺ヤ娇鐢ㄥ師鍊�
- console.warn('鏈壘鍒板尮閰嶇殑鎸囨爣閫夐」锛宼estStandardId:', savedTestStandardId, '鍙敤閫夐」:', testStandardOptions.value);
- form.value.testStandardId = savedTestStandardId;
- getQualityInspectParamList(row.id);
- }
- } else {
- // 鍚﹀垯浣跨敤鏃х殑閫昏緫
- getQualityInspectParamList(row.id);
- }
- }, 100);
- });
- });
- } else {
- getQualityInspectParamList(row.id);
- }
+ currentProductId.value = row.productId || 0
+ // 娓呯┖楠岃瘉鐘舵�侊紝閬垮厤鏁版嵁鍔犺浇杩囩▼涓殑鏍¢獙闂儊
+ nextTick(() => {
+ proxy.$refs.formRef?.clearValidate();
+ });
+
+ // 缂栬緫妯″紡涓嬶紝骞惰鍔犺浇瑙勬牸鍨嬪彿鍜屾寚鏍囬�夐」
+ if (currentProductId.value) {
+ // 璁剧疆浜у搧鍚嶇О
+ form.value.productName = findNodeById(productOptions.value, currentProductId.value);
+
+ // 骞惰鍔犺浇瑙勬牸鍨嬪彿鍜屾寚鏍囬�夐」
+ const params = {
+ productId: currentProductId.value,
+ inspectType: 2
+ };
+
+ Promise.all([
+ modelList({ id: currentProductId.value }),
+ qualityInspectDetailByProductId(params)
+ ]).then(([modelRes, testStandardRes]) => {
+ // 璁剧疆瑙勬牸鍨嬪彿閫夐」
+ modelOptions.value = modelRes || [];
+ // 濡傛灉琛ㄥ崟涓凡鏈� productModelId锛岃缃搴旂殑 model 鍜� unit
+ if (form.value.productModelId && modelOptions.value.length > 0) {
+ const selectedModel = modelOptions.value.find(item => item.id == form.value.productModelId);
+ if (selectedModel) {
+ form.value.model = selectedModel.model || '';
+ form.value.unit = selectedModel.unit || '';
+ }
+ }
+
+ // 璁剧疆鎸囨爣閫夐」
+ testStandardOptions.value = testStandardRes.data || [];
+
+ // 璁剧疆 testStandardId 骞跺姞杞藉弬鏁板垪琛�
+ nextTick(() => {
+ if (savedTestStandardId) {
+ // 纭繚绫诲瀷鍖归厤锛坕tem.id 鍙兘鏄暟瀛楁垨瀛楃涓诧級
+ const matchedOption = testStandardOptions.value.find(item =>
+ item.id == savedTestStandardId || String(item.id) === String(savedTestStandardId)
+ );
+ if (matchedOption) {
+ // 纭繚浣跨敤鍖归厤椤圭殑 id锛堜繚鎸佺被鍨嬩竴鑷达級
+ form.value.testStandardId = matchedOption.id;
+ } else {
+ // 濡傛灉鎵句笉鍒板尮閰嶉」锛屽皾璇曠洿鎺ヤ娇鐢ㄥ師鍊�
+ console.warn('鏈壘鍒板尮閰嶇殑鎸囨爣閫夐」锛宼estStandardId:', savedTestStandardId, '鍙敤閫夐」:', testStandardOptions.value);
+ form.value.testStandardId = savedTestStandardId;
+ }
+ }
+ // 缂栬緫鍦烘櫙淇濈暀宸叉湁妫�楠屽�硷紝鐩存帴鎷夊彇鍘熷弬鏁版暟鎹�
+ getQualityInspectParamList(row.id);
+ });
+ });
+ } else {
+ getQualityInspectParamList(row.id);
+ }
}
}
const getProductOptions = () => {
- productTreeList().then((res) => {
+ return productTreeList().then((res) => {
productOptions.value = convertIdToValue(res);
});
};
--
Gitblit v1.9.3