From 476a9ca89794a830b8a8279b80d9b446624a0641 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 02 六月 2026 17:50:39 +0800
Subject: [PATCH] refactor(equipment): 优化设备台账表单结构并更新质管检验选项
---
src/views/qualityManagement/processInspection/components/formDia.vue | 4
src/views/qualityManagement/rawMaterial/components/formDia.vue | 443 +++++++++------
src/views/equipmentManagement/repair/index.vue | 285 +++++-----
src/views/equipmentManagement/upkeep/Form/formDia.vue | 639 ++++++++++++----------
src/views/equipmentManagement/ledger/index.vue | 112 ++-
src/views/equipmentManagement/ledger/Form.vue | 142 -----
src/views/qualityManagement/processInspection/index.vue | 8
7 files changed, 813 insertions(+), 820 deletions(-)
diff --git a/src/views/equipmentManagement/ledger/Form.vue b/src/views/equipmentManagement/ledger/Form.vue
index 72d594e..436e30f 100644
--- a/src/views/equipmentManagement/ledger/Form.vue
+++ b/src/views/equipmentManagement/ledger/Form.vue
@@ -17,39 +17,8 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="璁惧绫诲瀷" prop="type">
- <el-select
- v-model="form.type"
- placeholder="璇烽�夋嫨鎴栬緭鍏ヨ澶囩被鍨�"
- clearable
- filterable
- allow-create
- default-first-option
- style="width: 100%"
- @change="handleDeviceTypeChange"
- >
- <el-option
- v-for="item in deviceTypeOptions"
- :key="item"
- :label="item"
- :value="item"
- />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="渚涘簲鍟�" prop="supplierName">
- <el-input v-model="form.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
<el-form-item label="瀛樻斁浣嶇疆" prop="storageLocation">
<el-input v-model="form.storageLocation" placeholder="璇疯緭鍏ュ瓨鏀句綅缃�" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍗曚綅" prop="unit">
- <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -74,58 +43,6 @@
v-model="form.number"
disabled
placeholder="璇疯緭鍏ユ暟閲�"
- @change="mathNum"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍚◣鍗曚环" prop="taxIncludingPriceUnit">
- <el-input-number :step="0.01" :min="0" style="width: 100%"
- v-model="form.taxIncludingPriceUnit"
- placeholder="璇疯緭鍏ュ惈绋庡崟浠�"
- maxlength="10"
- @change="mathNum"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鍚◣鎬讳环" prop="taxIncludingPriceTotal">
- <el-input
- v-model="form.taxIncludingPriceTotal"
- placeholder="鑷姩鐢熸垚"
- type="number"
- disabled
- />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="绋庣巼(%)" prop="taxRate">
- <!-- <el-input
- v-model="form.taxRate"
- placeholder="璇疯緭鍏ョ◣鐜�"
- type="number"
- >
- <template #append> % </template>
- </el-input> -->
- <el-select
- v-model="form.taxRate"
- placeholder="璇烽�夋嫨"
- clearable
- @change="mathNum"
- >
- <el-option label="1" :value="1" />
- <el-option label="6" :value="6" />
- <el-option label="13" :value="13" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="涓嶅惈绋庢�讳环" prop="unTaxIncludingPriceTotal">
- <el-input
- v-model="form.unTaxIncludingPriceTotal"
- placeholder="鑷姩鐢熸垚"
- type="number"
- disabled
/>
</el-form-item>
</el-col>
@@ -169,11 +86,6 @@
// import useUserStore from "@/store/modules/user";
import { getLedgerById } from "@/api/equipmentManagement/ledger";
import dayjs from "dayjs";
-import {
- calculateTaxIncludeTotalPrice,
- calculateTaxExclusiveTotalPrice,
-} from "@/utils/summarizeTable";
-import { ElMessage } from "element-plus";
import {ref} from "vue";
defineOptions({
@@ -181,23 +93,9 @@
});
const formRef = ref(null);
const operationType = ref('');
-// 璁惧绫诲瀷鍥哄畾閫夐」
-const deviceTypeOptions = ref([
- '鐢熶骇璁惧',
- '鍔炲叕璁惧',
- '妫�娴嬭澶�',
- '杩愯緭璁惧',
- '鍏朵粬璁惧'
-]);
const formRules = {
deviceName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
deviceModel: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
- type: [{ required: true, trigger: "change", message: "璇烽�夋嫨鎴栬緭鍏ヨ澶囩被鍨�" }],
- supplierName: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
- unit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
- number: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
- taxIncludingPriceUnit: [{ required: true, trigger: "blur", message: "璇疯緭鍏�" }],
- taxRate: [{ required: true, trigger: "change", message: "璇疯緭鍏�" }],
planRuntimeTime: [{ required: true, trigger: "change", message: "璇烽�夋嫨" }],
annualDepreciationAmount: [
{
@@ -217,17 +115,10 @@
deviceName: undefined, // 璁惧鍚嶇О
deviceModel: undefined, // 瑙勬牸鍨嬪彿
deviceBrand: undefined, // 璁惧鍝佺墝
- type: undefined, // 璁惧绫诲瀷
- supplierName: undefined, // 渚涘簲鍟�
storageLocation: undefined, // 瀛樻斁浣嶇疆
isDepr: 2, // 鏄惁鍚敤鎶樻棫 1-鏄� 2-鍚�
annualDepreciationAmount: undefined, // 姣忓勾鎶樻棫閲戦
- unit: undefined, // 鍗曚綅
number: 1, // 鏁伴噺
- taxIncludingPriceUnit: undefined, // 鍚◣鍗曚环
- taxIncludingPriceTotal: undefined, // 鍚◣鎬讳环
- taxRate: undefined, // 绋庣巼
- unTaxIncludingPriceTotal: undefined, // 涓嶅惈绋庢�讳环
// createUser: useUserStore().nickName, // 褰曞叆浜�
createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // 褰曞叆鏃ユ湡
planRuntimeTime: dayjs().format("YYYY-MM-DD"), // 褰曞叆鏃ユ湡
@@ -242,17 +133,10 @@
form.deviceName = data.deviceName;
form.deviceModel = data.deviceModel;
form.deviceBrand = data.deviceBrand;
- form.type = data.type;
- form.supplierName = data.supplierName;
form.storageLocation = data.storageLocation;
form.isDepr = data.isDepr;
form.annualDepreciationAmount = data.annualDepreciationAmount;
- form.unit = data.unit;
form.number = 1;
- form.taxIncludingPriceUnit = data.taxIncludingPriceUnit;
- form.taxIncludingPriceTotal = data.taxIncludingPriceTotal;
- form.taxRate = data.taxRate;
- form.unTaxIncludingPriceTotal = data.unTaxIncludingPriceTotal;
form.createTime = data.createTime;
// 棰勮杩愯鏃堕棿锛氬悗绔繑鍥炲悗杞负 YYYY-MM-DD 浠ヤ究鏃ユ湡閫夋嫨鍣ㄦ纭睍绀�
if (data.planRuntimeTime) {
@@ -260,30 +144,6 @@
} else {
form.planRuntimeTime = undefined;
}
- }
-};
-
-const handleDeviceTypeChange = (value) => {
- // 濡傛灉杈撳叆鐨勬柊鍊间笉鍦ㄥ浐瀹氶�夐」涓紝鍒欐坊鍔犲埌閫夐」鍒楄〃
- if (value && !deviceTypeOptions.value.includes(value)) {
- deviceTypeOptions.value.push(value);
- }
-};
-
-const mathNum = () => {
- if (!form.taxIncludingPriceUnit) {
- ElMessage.error("璇疯緭鍏ュ崟浠�");
- return;
- }
- form.taxIncludingPriceTotal = calculateTaxIncludeTotalPrice(
- form.taxIncludingPriceUnit,
- form.number
- );
- if (form.taxRate) {
- form.unTaxIncludingPriceTotal = calculateTaxExclusiveTotalPrice(
- form.taxIncludingPriceTotal,
- form.taxRate
- );
}
};
@@ -306,4 +166,4 @@
resetFormAndValidate,
formRef,
});
-</script>
+</script>
\ No newline at end of file
diff --git a/src/views/equipmentManagement/ledger/index.vue b/src/views/equipmentManagement/ledger/index.vue
index 62f0c6a..c7b4b52 100644
--- a/src/views/equipmentManagement/ledger/index.vue
+++ b/src/views/equipmentManagement/ledger/index.vue
@@ -12,25 +12,23 @@
</el-form-item>
<el-form-item label="瑙勬牸鍨嬪彿">
<el-input
- v-model="filters.deviceModel"
- style="width: 240px"
- placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
- clearable
- @change="getTableData"
- />
- </el-form-item>
- <el-form-item label="渚涘簲鍟�">
- <el-input
- v-model="filters.supplierName"
- style="width: 240px"
- placeholder="璇疯緭鍏ヤ緵搴斿晢"
- clearable
- @change="getTableData"
+ v-model="filters.deviceModel"
+ style="width: 240px"
+ placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ clearable
+ @change="getTableData"
/>
</el-form-item>
<el-form-item label="褰曞叆鏃ユ湡:">
- <el-date-picker v-model="filters.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
- placeholder="璇烽�夋嫨" clearable @change="changeDaterange" />
+ <el-date-picker
+ v-model="filters.entryDate"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ type="daterange"
+ placeholder="璇烽�夋嫨"
+ clearable
+ @change="changeDaterange"
+ />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="getTableData">鎼滅储</el-button>
@@ -70,10 +68,16 @@
</div>
<Modal ref="modalRef" @success="getTableData"></Modal>
<el-dialog v-model="qrDialogVisible" title="浜岀淮鐮�" width="300px" draggable>
- <div style="text-align:center;">
- <img :src="qrCodeUrl" alt="浜岀淮鐮�" style="width:200px;height:200px;" />
- <div style="margin:10px 0;">
- <el-button type="primary" @click="downloadQRCode">涓嬭浇浜岀淮鐮佸浘鐗�</el-button>
+ <div style="text-align: center">
+ <img
+ :src="qrCodeUrl"
+ alt="浜岀淮鐮�"
+ style="width: 200px; height: 200px"
+ />
+ <div style="margin: 10px 0">
+ <el-button type="primary" @click="downloadQRCode"
+ >涓嬭浇浜岀淮鐮佸浘鐗�</el-button
+ >
</div>
</div>
</el-dialog>
@@ -133,14 +137,14 @@
label: "璁惧鍝佺墝",
prop: "deviceBrand",
},
- {
- label: "璁惧绫诲瀷",
- prop: "type",
- },
- {
- label: "渚涘簲鍟�",
- prop: "supplierName",
- },
+ // {
+ // label: "璁惧绫诲瀷",
+ // prop: "type",
+ // },
+ // {
+ // label: "渚涘簲鍟�",
+ // prop: "supplierName",
+ // },
{
label: "瀛樻斁浣嶇疆",
prop: "storageLocation",
@@ -157,35 +161,35 @@
label: "褰曞叆鏃ユ湡",
prop: "createTime",
formatData: (v) => {
- if (!v) return '';
+ if (!v) return "";
// 濡傛灉鍖呭惈鏃跺垎绉掞紝鍙彇鏃ユ湡閮ㄥ垎
- if (v.includes(' ')) {
- return v.split(' ')[0];
+ if (v.includes(" ")) {
+ return v.split(" ")[0];
}
return v;
},
},
- {
- dataType: "action",
- label: "鎿嶄綔",
- align: "center",
- fixed: 'right',
- width: 150,
- operation: [
- {
- name: "缂栬緫",
- clickFun: (row) => {
- edit(row.id)
- },
- },
- {
- name: "鐢熸垚浜岀淮鐮�",
- clickFun: (row) => {
- showQRCode(row)
- },
- },
- ],
- },
+ {
+ dataType: "action",
+ label: "鎿嶄綔",
+ align: "center",
+ fixed: "right",
+ width: 150,
+ operation: [
+ {
+ name: "缂栬緫",
+ clickFun: (row) => {
+ edit(row.id);
+ },
+ },
+ {
+ name: "鐢熸垚浜岀淮鐮�",
+ clickFun: (row) => {
+ showQRCode(row);
+ },
+ },
+ ],
+ },
]
);
@@ -202,7 +206,7 @@
};
const changePage = ({ page, limit }) => {
pagination.currentPage = page;
- pagination.pageSize = limit;
+ pagination.pageSize = limit;
onCurrentChange(page);
};
const deleteRow = (id) => {
@@ -249,7 +253,7 @@
const showQRCode = async (row) => {
// 鐩存帴浣跨敤URL锛屼笉瑕佺敤JSON.stringify鍖呰
- const qrContent = proxy.javaApi + '/device-info?deviceId=' + row.id;
+ const qrContent = proxy.javaApi + "/device-info?deviceId=" + row.id;
qrCodeUrl.value = await QRCode.toDataURL(qrContent);
qrRowData.value = row;
qrDialogVisible.value = true;
diff --git a/src/views/equipmentManagement/repair/index.vue b/src/views/equipmentManagement/repair/index.vue
index a278a5c..ea18062 100644
--- a/src/views/equipmentManagement/repair/index.vue
+++ b/src/views/equipmentManagement/repair/index.vue
@@ -3,60 +3,60 @@
<el-form :model="filters" :inline="true">
<el-form-item label="璁惧鍚嶇О">
<el-input
- v-model="filters.deviceName"
- style="width: 240px"
- placeholder="璇疯緭鍏ヨ澶囧悕绉�"
- clearable
- :prefix-icon="Search"
- @change="getTableData"
+ v-model="filters.deviceName"
+ style="width: 240px"
+ placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+ clearable
+ :prefix-icon="Search"
+ @change="getTableData"
/>
</el-form-item>
<el-form-item label="瑙勬牸鍨嬪彿">
<el-input
- v-model="filters.deviceModel"
- style="width: 240px"
- placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
- clearable
- :prefix-icon="Search"
- @change="getTableData"
+ v-model="filters.deviceModel"
+ style="width: 240px"
+ placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"
+ clearable
+ :prefix-icon="Search"
+ @change="getTableData"
/>
</el-form-item>
<el-form-item label="鏁呴殰鐜拌薄">
<el-input
- v-model="filters.remark"
- style="width: 240px"
- placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
- clearable
- :prefix-icon="Search"
- @change="getTableData"
+ v-model="filters.remark"
+ style="width: 240px"
+ placeholder="璇疯緭鍏ユ晠闅滅幇璞�"
+ clearable
+ :prefix-icon="Search"
+ @change="getTableData"
/>
</el-form-item>
<el-form-item label="缁翠慨浜�">
<el-input
- v-model="filters.maintenanceName"
- style="width: 240px"
- placeholder="璇疯緭鍏ョ淮淇汉"
- clearable
- :prefix-icon="Search"
- @change="getTableData"
+ v-model="filters.maintenanceName"
+ style="width: 240px"
+ placeholder="璇疯緭鍏ョ淮淇汉"
+ clearable
+ :prefix-icon="Search"
+ @change="getTableData"
/>
</el-form-item>
<el-form-item label="鎶ヤ慨鏃ユ湡">
<el-date-picker
- v-model="filters.repairTimeStr"
- type="date"
- placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
- size="default"
- @change="(date) => handleDateChange(date,2)"
+ v-model="filters.repairTimeStr"
+ type="date"
+ placeholder="璇烽�夋嫨鎶ヤ慨鏃ユ湡"
+ size="default"
+ @change="(date) => handleDateChange(date, 2)"
/>
</el-form-item>
<el-form-item label="缁翠慨鏃ユ湡">
<el-date-picker
- v-model="filters.maintenanceTimeStr"
- type="date"
- placeholder="璇烽�夋嫨缁翠慨鏃ユ湡"
- size="default"
- @change="(date) => handleDateChange(date,1)"
+ v-model="filters.maintenanceTimeStr"
+ type="date"
+ placeholder="璇烽�夋嫨缁翠慨鏃ユ湡"
+ size="default"
+ @change="(date) => handleDateChange(date, 1)"
/>
</el-form-item>
<el-form-item>
@@ -71,9 +71,7 @@
<el-button type="success" icon="Van" @click="addRepair">
鏂板鎶ヤ慨
</el-button>
- <el-button @click="handleOut">
- 瀵煎嚭
- </el-button>
+ <el-button @click="handleOut"> 瀵煎嚭 </el-button>
<el-button
type="danger"
icon="Delete"
@@ -85,17 +83,17 @@
</div>
</div>
<PIMTable
- rowKey="id"
- isSelection
- :column="columns"
- :tableData="dataList"
- :page="{
+ rowKey="id"
+ isSelection
+ :column="columns"
+ :tableData="dataList"
+ :page="{
current: pagination.currentPage,
size: pagination.pageSize,
total: pagination.total,
}"
- @selection-change="handleSelectionChange"
- @pagination="changePage"
+ @selection-change="handleSelectionChange"
+ @pagination="changePage"
>
<template #statusRef="{ row }">
<el-tag v-if="row.status === 2" type="danger">澶辫触</el-tag>
@@ -111,11 +109,7 @@
>
缂栬緫
</el-button>
- <el-button
- type="info"
- link
- @click="viewAttachments(row)"
- >
+ <el-button type="info" link @click="viewAttachments(row)">
鏌ョ湅闄勪欢
</el-button>
<el-button
@@ -129,7 +123,7 @@
<el-button
type="danger"
link
- :disabled="row.status === 1"
+ :disabled="row.status === 1 && !isAdmin"
@click="delRepairByIds(row.id)"
>
鍒犻櫎
@@ -137,8 +131,8 @@
</template>
</PIMTable>
</div>
- <RepairModal ref="repairModalRef" @ok="getTableData"/>
- <MaintainModal ref="maintainModalRef" @ok="getTableData"/>
+ <RepairModal ref="repairModalRef" @ok="getTableData" />
+ <MaintainModal ref="maintainModalRef" @ok="getTableData" />
<FileListDialog
ref="fileListDialogRef"
v-model="fileDialogVisible"
@@ -152,19 +146,26 @@
<script setup>
import { onMounted, getCurrentInstance, computed } from "vue";
-import {usePaginationApi} from "@/hooks/usePaginationApi";
-import {getRepairPage, delRepair, getRepairById} from "@/api/equipmentManagement/repair";
+import { usePaginationApi } from "@/hooks/usePaginationApi";
+import {
+ getRepairPage,
+ delRepair,
+ getRepairById,
+} from "@/api/equipmentManagement/repair";
import RepairModal from "./Modal/RepairModal.vue";
-import {ElMessageBox, ElMessage} from "element-plus";
+import { ElMessageBox, ElMessage } from "element-plus";
import dayjs from "dayjs";
import MaintainModal from "./Modal/MaintainModal.vue";
import FileListDialog from "@/components/Dialog/FileListDialog.vue";
+import useUserStore from "@/store/modules/user";
+import auth from "@/plugins/auth";
defineOptions({
name: "璁惧鎶ヤ慨",
});
-const {proxy} = getCurrentInstance();
+const { proxy } = getCurrentInstance();
+const userStore = useUserStore();
// 妯℃�佹瀹炰緥
const repairModalRef = ref();
@@ -217,80 +218,80 @@
resetFilters,
onCurrentChange,
} = usePaginationApi(
- getRepairPage,
+ getRepairPage,
+ {
+ deviceName: undefined,
+ deviceModel: undefined,
+ remark: undefined,
+ maintenanceName: undefined,
+ repairTimeStr: undefined,
+ maintenanceTimeStr: undefined,
+ },
+ [
{
- deviceName: undefined,
- deviceModel: undefined,
- remark: undefined,
- maintenanceName: undefined,
- repairTimeStr: undefined,
- maintenanceTimeStr: undefined,
+ label: "璁惧鍚嶇О",
+ align: "center",
+ prop: "deviceName",
},
- [
- {
- label: "璁惧鍚嶇О",
- align: "center",
- prop: "deviceName",
- },
- {
- label: "瑙勬牸鍨嬪彿",
- align: "center",
- prop: "deviceModel",
- },
- {
- label: "鎶ヤ慨鏃ユ湡",
- align: "center",
- prop: "repairTime",
- formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
- },
- {
- label: "鎶ヤ慨浜�",
- align: "center",
- prop: "repairName",
- },
- {
- label: "鏁呴殰鐜拌薄",
- align: "center",
- prop: "remark",
- },
- {
- label: "缁翠慨浜�",
- align: "center",
- prop: "maintenanceName",
- },
- {
- label: "缁翠慨缁撴灉",
- align: "center",
- prop: "maintenanceResult",
- },
- {
- label: "缁翠慨鏃ユ湡",
- align: "center",
- prop: "maintenanceTime",
- formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
- },
- {
- label: "鐘舵��",
- align: "center",
- prop: "status",
- dataType: "slot",
- slot: "statusRef",
- },
- {
- fixed: "right",
- label: "鎿嶄綔",
- dataType: "slot",
- slot: "operation",
- align: "center",
- width: "360px",
- },
- ]
+ {
+ label: "瑙勬牸鍨嬪彿",
+ align: "center",
+ prop: "deviceModel",
+ },
+ {
+ label: "鎶ヤ慨鏃ユ湡",
+ align: "center",
+ prop: "repairTime",
+ formatData: (cell) => dayjs(cell).format("YYYY-MM-DD"),
+ },
+ {
+ label: "鎶ヤ慨浜�",
+ align: "center",
+ prop: "repairName",
+ },
+ {
+ label: "鏁呴殰鐜拌薄",
+ align: "center",
+ prop: "remark",
+ },
+ {
+ label: "缁翠慨浜�",
+ align: "center",
+ prop: "maintenanceName",
+ },
+ {
+ label: "缁翠慨缁撴灉",
+ align: "center",
+ prop: "maintenanceResult",
+ },
+ {
+ label: "缁翠慨鏃ユ湡",
+ align: "center",
+ prop: "maintenanceTime",
+ formatData: (cell) => (cell ? dayjs(cell).format("YYYY-MM-DD") : ""),
+ },
+ {
+ label: "鐘舵��",
+ align: "center",
+ prop: "status",
+ dataType: "slot",
+ slot: "statusRef",
+ },
+ {
+ fixed: "right",
+ label: "鎿嶄綔",
+ dataType: "slot",
+ slot: "operation",
+ align: "center",
+ width: "360px",
+ },
+ ]
);
// type === 1 缁翠慨 2鎶ヤ慨闂�
const handleDateChange = (value, type) => {
- filters.maintenanceTimeStr = null
- filters.c = null
+ filters.maintenanceTimeStr = null;
+ filters.c = null;
if (type === 1) {
if (value) {
filters.maintenanceTimeStr = dayjs(value).format("YYYY-MM-DD");
@@ -308,10 +309,14 @@
multipleList.value = selectionList;
};
-// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑
+// 鏄惁鏄鐞嗗憳
+const isAdmin = computed(() => auth.hasRole("admin"));
+
+// 妫�鏌ラ�変腑鐨勮褰曚腑鏄惁鏈夊畬缁撶姸鎬佺殑锛堢鐞嗗憳鍙互鍒犻櫎瀹岀粨鐘舵�佺殑璁板綍锛�
const hasFinishedStatus = computed(() => {
- return multipleList.value.some(item => item.status === 1)
-})
+ if (isAdmin.value) return false;
+ return multipleList.value.some((item) => item.status === 1);
+});
// 鏂板鎶ヤ慨
const addRepair = () => {
@@ -328,7 +333,7 @@
maintainModalRef.value.open(row.id, row);
};
-const changePage = ({page, limit}) => {
+const changePage = ({ page, limit }) => {
pagination.currentPage = page;
pagination.pageSize = limit;
onCurrentChange(page);
@@ -336,15 +341,15 @@
// 鍗曡鍒犻櫎
const delRepairByIds = async (ids) => {
- // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍
+ // 妫�鏌ユ槸鍚︽湁瀹岀粨鐘舵�佺殑璁板綍锛堢鐞嗗憳鍙互鍒犻櫎锛�
const idsArray = Array.isArray(ids) ? ids : [ids];
- const hasFinished = idsArray.some(id => {
- const record = dataList.value.find(item => item.id === id);
+ const hasFinished = idsArray.some((id) => {
+ const record = dataList.value.find((item) => item.id === id);
return record && record.status === 1;
});
- if (hasFinished) {
- ElMessage.warning('涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�');
+ if (hasFinished && !isAdmin.value) {
+ ElMessage.warning("涓嶈兘鍒犻櫎鐘舵�佷负瀹岀粨鐨勮褰�");
return;
}
@@ -353,7 +358,7 @@
cancelButtonText: "鍙栨秷",
type: "warning",
}).then(async () => {
- const {code} = await delRepair(ids);
+ const { code } = await delRepair(ids);
if (code === 200) {
ElMessage.success("鍒犻櫎鎴愬姛");
getTableData();
@@ -368,12 +373,12 @@
cancelButtonText: "鍙栨秷",
type: "warning",
})
- .then(() => {
- proxy.download("/device/repair/export", {}, "璁惧鎶ヤ慨.xlsx");
- })
- .catch(() => {
- ElMessage.info("宸插彇娑�");
- });
+ .then(() => {
+ proxy.download("/device/repair/export", {}, "璁惧鎶ヤ慨.xlsx");
+ })
+ .catch(() => {
+ ElMessage.info("宸插彇娑�");
+ });
};
onMounted(() => {
diff --git a/src/views/equipmentManagement/upkeep/Form/formDia.vue b/src/views/equipmentManagement/upkeep/Form/formDia.vue
index 8b30fb7..205b0f0 100644
--- a/src/views/equipmentManagement/upkeep/Form/formDia.vue
+++ b/src/views/equipmentManagement/upkeep/Form/formDia.vue
@@ -1,331 +1,382 @@
<template>
- <FormDialog
- v-model="dialogVisitable"
- :title="operationType === 'add' ? '鏂板淇濆吇浠诲姟' : '缂栬緫淇濆吇浠诲姟'"
- width="800px"
- :operation-type="operationType"
- @confirm="submitForm"
- @cancel="cancel"
- @close="cancel"
- >
- <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
- <el-row>
- <el-col :span="12">
- <el-form-item label="浠诲姟鍚嶇О" prop="taskName">
- <el-input v-model="form.taskName" placeholder="璇疯緭鍏ヤ换鍔″悕绉�" clearable />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="璁惧鍚嶇О" prop="deviceIds">
- <el-select
- v-model="form.deviceIds"
- multiple
- filterable
- placeholder="璇烽�夋嫨璁惧"
- @change="handleDeviceChange"
- >
- <el-option
- v-for="(item, index) in deviceOptions"
- :key="index"
- :label="item.deviceName"
- :value="item.id"
- ></el-option>
- </el-select>
- </el-form-item>
- </el-col>
-
- <el-col :span="12">
- <el-form-item label="褰曞叆浜�" prop="inspector">
- <el-select
- v-model="form.inspector"
- filterable
- default-first-option
- :reserve-keyword="false"
- placeholder="璇烽�夋嫨"
- clearable
- >
- <el-option
- v-for="item in userList"
- :label="item.nickName"
- :value="item.userId"
- :key="item.userId"
- />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鐧昏鏃堕棿" prop="registrationDate">
- <el-date-picker
- v-model="form.registrationDate"
- type="date"
- placeholder="閫夋嫨鐧昏鏃ユ湡"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD"
- style="width: 100%"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="12">
- <el-form-item label="浠诲姟棰戠巼" prop="frequencyType">
- <el-select v-model="form.frequencyType" placeholder="璇烽�夋嫨" clearable>
- <el-option label="姣忔棩" value="DAILY"/>
- <el-option label="姣忓懆" value="WEEKLY"/>
- <el-option label="姣忔湀" value="MONTHLY"/>
- <el-option label="瀛e害" value="QUARTERLY"/>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12" v-if="form.frequencyType === 'DAILY' && form.frequencyType">
- <el-form-item label="鏃ユ湡" prop="frequencyDetail">
- <el-time-picker v-model="form.frequencyDetail" placeholder="閫夋嫨鏃堕棿" format="HH:mm"
- value-format="HH:mm" />
- </el-form-item>
- </el-col>
- <el-col :span="12" v-if="form.frequencyType === 'WEEKLY' && form.frequencyType">
- <el-form-item label="鏃ユ湡" prop="frequencyDetail">
- <el-select v-model="form.week" placeholder="璇烽�夋嫨" clearable style="width: 50%">
- <el-option label="鍛ㄤ竴" value="MON"/>
- <el-option label="鍛ㄤ簩" value="TUE"/>
- <el-option label="鍛ㄤ笁" value="WED"/>
- <el-option label="鍛ㄥ洓" value="THU"/>
- <el-option label="鍛ㄤ簲" value="FRI"/>
- <el-option label="鍛ㄥ叚" value="SAT"/>
- <el-option label="鍛ㄦ棩" value="SUN"/>
- </el-select>
- <el-time-picker v-model="form.time" placeholder="閫夋嫨鏃堕棿" format="HH:mm"
- value-format="HH:mm" style="width: 50%"/>
- </el-form-item>
- </el-col>
- <el-col :span="12" v-if="form.frequencyType === 'MONTHLY' && form.frequencyType">
- <el-form-item label="鏃ユ湡" prop="frequencyDetail">
- <el-date-picker
- v-model="form.frequencyDetail"
- type="datetime"
- clearable
- placeholder="閫夋嫨寮�濮嬫棩鏈�"
- format="DD,HH:mm"
- value-format="DD,HH:mm"
- />
- </el-form-item>
- </el-col>
- <el-col :span="12" v-if="form.frequencyType === 'QUARTERLY' && form.frequencyType">
- <el-form-item label="鏃ユ湡" prop="frequencyDetail">
- <el-date-picker
- v-model="form.frequencyDetail"
- type="datetime"
- clearable
- placeholder="閫夋嫨寮�濮嬫棩鏈�"
- format="MM,DD,HH:mm"
- value-format="MM,DD,HH:mm"
- />
- </el-form-item>
- </el-col>
- </el-row>
- <el-row>
- <el-col :span="12">
- <el-form-item label="澶囨敞" prop="remarks">
- <el-input v-model="form.remarks" placeholder="璇疯緭鍏ュ娉�" type="textarea" />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- </FormDialog>
+ <FormDialog
+ v-model="dialogVisitable"
+ :title="operationType === 'add' ? '鏂板淇濆吇浠诲姟' : '缂栬緫淇濆吇浠诲姟'"
+ width="800px"
+ :operation-type="operationType"
+ @confirm="submitForm"
+ @cancel="cancel"
+ @close="cancel"
+ >
+ <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="浠诲姟鍚嶇О" prop="taskName">
+ <el-input
+ v-model="form.taskName"
+ placeholder="璇疯緭鍏ヤ换鍔″悕绉�"
+ clearable
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁惧鍚嶇О" prop="deviceIds">
+ <el-select
+ v-model="form.deviceIds"
+ multiple
+ filterable
+ placeholder="璇烽�夋嫨璁惧"
+ @change="handleDeviceChange"
+ >
+ <el-option
+ v-for="(item, index) in deviceOptions"
+ :key="index"
+ :label="item.deviceName"
+ :value="item.id"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+
+ <el-col :span="12">
+ <el-form-item label="褰曞叆浜�" prop="inspector">
+ <el-select
+ v-model="form.inspector"
+ filterable
+ default-first-option
+ :reserve-keyword="false"
+ placeholder="璇烽�夋嫨"
+ clearable
+ >
+ <el-option
+ v-for="item in userList"
+ :label="item.nickName"
+ :value="item.userId"
+ :key="item.userId"
+ />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鐧昏鏃堕棿" prop="registrationDate">
+ <el-date-picker
+ v-model="form.registrationDate"
+ type="date"
+ placeholder="閫夋嫨鐧昏鏃ユ湡"
+ format="YYYY-MM-DD"
+ value-format="YYYY-MM-DD"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="浠诲姟棰戠巼" prop="frequencyType">
+ <el-select
+ v-model="form.frequencyType"
+ placeholder="璇烽�夋嫨"
+ clearable
+ >
+ <el-option label="姣忔棩" value="DAILY" />
+ <el-option label="姣忓懆" value="WEEKLY" />
+ <el-option label="姣忔湀" value="MONTHLY" />
+ <el-option label="瀛e害" value="QUARTERLY" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col
+ :span="12"
+ v-if="form.frequencyType === 'DAILY' && form.frequencyType"
+ >
+ <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+ <el-time-picker
+ v-model="form.frequencyDetail"
+ placeholder="閫夋嫨鏃堕棿"
+ format="HH:mm"
+ value-format="HH:mm"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col
+ :span="12"
+ v-if="form.frequencyType === 'WEEKLY' && form.frequencyType"
+ >
+ <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+ <el-select
+ v-model="form.week"
+ placeholder="璇烽�夋嫨"
+ clearable
+ style="width: 50%"
+ >
+ <el-option label="鍛ㄤ竴" value="MON" />
+ <el-option label="鍛ㄤ簩" value="TUE" />
+ <el-option label="鍛ㄤ笁" value="WED" />
+ <el-option label="鍛ㄥ洓" value="THU" />
+ <el-option label="鍛ㄤ簲" value="FRI" />
+ <el-option label="鍛ㄥ叚" value="SAT" />
+ <el-option label="鍛ㄦ棩" value="SUN" />
+ </el-select>
+ <el-time-picker
+ v-model="form.time"
+ placeholder="閫夋嫨鏃堕棿"
+ format="HH:mm"
+ value-format="HH:mm"
+ style="width: 50%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col
+ :span="12"
+ v-if="form.frequencyType === 'MONTHLY' && form.frequencyType"
+ >
+ <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+ <el-date-picker
+ v-model="form.frequencyDetail"
+ type="datetime"
+ clearable
+ placeholder="閫夋嫨寮�濮嬫棩鏈�"
+ format="DD,HH:mm"
+ value-format="DD,HH:mm"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col
+ :span="12"
+ v-if="form.frequencyType === 'QUARTERLY' && form.frequencyType"
+ >
+ <el-form-item label="鏃ユ湡/鏃堕棿" prop="frequencyDetail">
+ <el-date-picker
+ v-model="form.frequencyDetail"
+ type="datetime"
+ clearable
+ placeholder="閫夋嫨寮�濮嬫棩鏈�"
+ format="MM,DD,HH:mm"
+ value-format="MM,DD,HH:mm"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="澶囨敞" prop="remarks">
+ <el-input
+ v-model="form.remarks"
+ placeholder="璇疯緭鍏ュ娉�"
+ type="textarea"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </FormDialog>
</template>
<script setup>
import FormDialog from "@/components/Dialog/FormDialog.vue";
import { reactive, ref, getCurrentInstance, toRefs } from "vue";
-import {userListNoPageByTenantId} from "@/api/system/user.js";
+import { userListNoPageByTenantId } from "@/api/system/user.js";
import { getDeviceLedger } from "@/api/equipmentManagement/ledger";
-import { deviceMaintenanceTaskAdd, deviceMaintenanceTaskEdit } from "@/api/equipmentManagement/upkeep";
+import {
+ deviceMaintenanceTaskAdd,
+ deviceMaintenanceTaskEdit,
+} from "@/api/equipmentManagement/upkeep";
import { getCurrentDate } from "@/utils/index.js";
import useUserStore from "@/store/modules/user.js";
-const { proxy } = getCurrentInstance()
-const emit = defineEmits()
+const { proxy } = getCurrentInstance();
+const emit = defineEmits();
const dialogVisitable = ref(false);
-const operationType = ref('add');
+const operationType = ref("add");
const deviceOptions = ref([]);
const userStore = useUserStore();
const data = reactive({
- form: {
- taskId: undefined,
- deviceIds: [],
- taskName: "",
- // 褰曞叆浜猴細鍗曢�変竴涓敤鎴� id
- inspector: undefined,
- remarks: '',
- frequencyType: '',
- frequencyDetail: '',
- week: '',
- time: '',
- deviceModel: undefined, // 瑙勬牸鍨嬪彿
- registrationDate: ''
- },
- rules: {
- deviceIds: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" }],
- taskName: [{ required: true, message: "璇疯緭鍏ヤ换鍔″悕绉�", trigger: "blur" }],
- inspector: [{ required: true, message: "璇烽�夋嫨褰曞叆浜�", trigger: "blur" },],
- registrationDate: [{ required: true, message: "璇烽�夋嫨鐧昏鏃堕棿", trigger: "change" }]
- }
-})
-const { form, rules } = toRefs(data)
-const userList = ref([])
+ form: {
+ taskId: undefined,
+ deviceIds: [],
+ taskName: "",
+ // 褰曞叆浜猴細鍗曢�変竴涓敤鎴� id
+ inspector: undefined,
+ remarks: "",
+ frequencyType: "",
+ frequencyDetail: "",
+ week: "",
+ time: "",
+ deviceModel: undefined, // 瑙勬牸鍨嬪彿
+ registrationDate: "",
+ },
+ rules: {
+ deviceIds: [{ required: true, message: "璇烽�夋嫨璁惧", trigger: "change" }],
+ taskName: [{ required: true, message: "璇疯緭鍏ヤ换鍔″悕绉�", trigger: "blur" }],
+ inspector: [{ required: true, message: "璇烽�夋嫨褰曞叆浜�", trigger: "blur" }],
+ registrationDate: [
+ { required: true, message: "璇烽�夋嫨鐧昏鏃堕棿", trigger: "change" },
+ ],
+ },
+});
+const { form, rules } = toRefs(data);
+const userList = ref([]);
const loadDeviceName = async () => {
- const { data } = await getDeviceLedger();
- deviceOptions.value = data;
+ const { data } = await getDeviceLedger();
+ deviceOptions.value = data;
};
const normalizeIdList = (val) => {
- if (!val) return []
- if (Array.isArray(val)) return val
- if (typeof val === 'string') {
- const s = val.trim()
- // JSON 瀛楃涓诧細"[1,2,3]"
- if (s.startsWith('[') && s.endsWith(']')) {
- try {
- const arr = JSON.parse(s)
- return Array.isArray(arr) ? arr : []
- } catch {
- return []
- }
- }
- // 閫楀彿鍒嗛殧锛�"1,2,3"
- return s.split(',').map(v => v.trim()).filter(Boolean)
- }
- return []
-}
+ if (!val) return [];
+ if (Array.isArray(val)) return val;
+ if (typeof val === "string") {
+ const s = val.trim();
+ // JSON 瀛楃涓诧細"[1,2,3]"
+ if (s.startsWith("[") && s.endsWith("]")) {
+ try {
+ const arr = JSON.parse(s);
+ return Array.isArray(arr) ? arr : [];
+ } catch {
+ return [];
+ }
+ }
+ // 閫楀彿鍒嗛殧锛�"1,2,3"
+ return s
+ .split(",")
+ .map((v) => v.trim())
+ .filter(Boolean);
+ }
+ return [];
+};
// 閫夋嫨璁惧鏃讹紝椤哄甫鍥炲~瑙勬牸鍨嬪彿锛堝閫夋椂鍙栫涓�涓澶囩殑瑙勬牸鍨嬪彿锛�
const handleDeviceChange = () => {
- const selectedIds = form.value.deviceIds || []
- const firstId = Array.isArray(selectedIds) ? selectedIds[0] : undefined
- const firstDevice = deviceOptions.value.find(d => String(d.id) === String(firstId))
- form.value.deviceModel = firstDevice?.deviceModel || firstDevice?.model || form.value.deviceModel
-}
+ const selectedIds = form.value.deviceIds || [];
+ const firstId = Array.isArray(selectedIds) ? selectedIds[0] : undefined;
+ const firstDevice = deviceOptions.value.find(
+ (d) => String(d.id) === String(firstId)
+ );
+ form.value.deviceModel =
+ firstDevice?.deviceModel || firstDevice?.model || form.value.deviceModel;
+};
// 鎵撳紑寮规
const openDialog = async (type, row) => {
- dialogVisitable.value = true
- operationType.value = type
-
- // 閲嶇疆琛ㄥ崟
- resetForm();
-
- // 鍔犺浇鐢ㄦ埛鍒楄〃
- userListNoPageByTenantId().then((res) => {
- userList.value = res.data;
- });
-
- // 鍔犺浇璁惧鍒楄〃
- await loadDeviceName();
-
- if (type === 'edit' && row) {
- form.value = { ...form.value, ...row }
- // 缂栬緫鏃剁敤鎺ュ彛杩斿洖鐨� registrantId 鍥炴樉褰曞叆浜�
- if (row.registrantId) {
- form.value.inspector = row.registrantId
- }
+ dialogVisitable.value = true;
+ operationType.value = type;
- // 缂栬緫鍥炴樉锛歞eviceIds 鍙兘鏄� JSON 瀛楃涓� / 閫楀彿鍒嗛殧 / 鏁扮粍
- const ids = normalizeIdList(row.deviceIds ?? row.taskIds)
- form.value.deviceIds = ids.map(v => {
- const n = Number(v)
- return Number.isNaN(n) ? v : n
- })
- handleDeviceChange()
- } else if (type === 'add') {
- // 鏂板鏃惰缃櫥璁版棩鏈熶负褰撳ぉ
- form.value.registrationDate = getCurrentDate();
- // 鏂板鏃惰缃綍鍏ヤ汉涓哄綋鍓嶇櫥褰曡处鎴�
- form.value.inspector = userStore.id;
- }
-}
+ // 閲嶇疆琛ㄥ崟
+ resetForm();
+
+ // 鍔犺浇鐢ㄦ埛鍒楄〃
+ userListNoPageByTenantId().then((res) => {
+ userList.value = res.data;
+ });
+
+ // 鍔犺浇璁惧鍒楄〃
+ await loadDeviceName();
+
+ if (type === "edit" && row) {
+ form.value = { ...form.value, ...row };
+ // 缂栬緫鏃剁敤鎺ュ彛杩斿洖鐨� registrantId 鍥炴樉褰曞叆浜�
+ if (row.registrantId) {
+ form.value.inspector = row.registrantId;
+ }
+
+ // 缂栬緫鍥炴樉锛歞eviceIds 鍙兘鏄� JSON 瀛楃涓� / 閫楀彿鍒嗛殧 / 鏁扮粍
+ const ids = normalizeIdList(row.deviceIds ?? row.taskIds);
+ form.value.deviceIds = ids.map((v) => {
+ const n = Number(v);
+ return Number.isNaN(n) ? v : n;
+ });
+ handleDeviceChange();
+ } else if (type === "add") {
+ // 鏂板鏃惰缃櫥璁版棩鏈熶负褰撳ぉ
+ form.value.registrationDate = getCurrentDate();
+ // 鏂板鏃惰缃綍鍏ヤ汉涓哄綋鍓嶇櫥褰曡处鎴�
+ form.value.inspector = userStore.id;
+ }
+};
// 鍏抽棴瀵硅瘽妗�
const cancel = () => {
- resetForm()
- dialogVisitable.value = false
- emit('closeDia')
-}
+ resetForm();
+ dialogVisitable.value = false;
+ emit("closeDia");
+};
// 閲嶇疆琛ㄥ崟鍑芥暟
const resetForm = () => {
- if (proxy.$refs.formRef) {
- proxy.$refs.formRef.resetFields()
- }
- // 閲嶇疆琛ㄥ崟鏁版嵁纭繚璁惧淇℃伅姝g‘閲嶇疆
- form.value = {
- taskId: undefined,
- deviceIds: [],
- taskName: "",
- inspector: undefined,
- remarks: '',
- frequencyType: '',
- frequencyDetail: '',
- week: '',
- time: '',
- deviceModel: undefined,
- registrationDate: ''
- }
-}
+ if (proxy.$refs.formRef) {
+ proxy.$refs.formRef.resetFields();
+ }
+ // 閲嶇疆琛ㄥ崟鏁版嵁纭繚璁惧淇℃伅姝g‘閲嶇疆
+ form.value = {
+ taskId: undefined,
+ deviceIds: [],
+ taskName: "",
+ inspector: undefined,
+ remarks: "",
+ frequencyType: "",
+ frequencyDetail: "",
+ week: "",
+ time: "",
+ deviceModel: undefined,
+ registrationDate: "",
+ };
+};
// 鎻愪氦琛ㄥ崟
const submitForm = () => {
- proxy.$refs["formRef"].validate(async valid => {
- if (valid) {
- try {
- const payload = { ...form.value }
- // 鍚庣瑕佹眰锛歞eviceIds 浠� JSON.stringify([1,2,3]) 褰㈠紡浼犲弬
- payload.deviceIds = JSON.stringify(form.value.deviceIds || [])
- // 涓嶅啀鍚戝悗绔紶淇濆吇浜哄瓧娈碉紝浠呬娇鐢ㄦ帴鍙h姹傜殑 registrant / registrantId
- // 鏍规嵁閫夋嫨鐨�"褰曞叆浜�"璁剧疆 registrant / registrantId
- if (payload.inspector) {
- const selectedUser = userList.value.find(
- (u) => String(u.userId) === String(payload.inspector)
- )
- if (selectedUser) {
- payload.registrantId = selectedUser.userId
- payload.registrant = selectedUser.nickName
- }
- }
- delete payload.inspector
- delete payload.inspectorIds
- delete payload.taskIds
-
- if (payload.frequencyType === 'WEEKLY') {
- let frequencyDetail = ''
- frequencyDetail = payload.week + ',' + payload.time
- payload.frequencyDetail = frequencyDetail
- }
-
- // 褰曞叆鏃ユ湡锛氱洿鎺ヤ娇鐢ㄨ〃鍗曢噷鐨� registrationDate 瀛楁
- // 涓�浜涢粯璁ょ姸鎬佸瓧娈�
- if (payload.status === undefined || payload.status === null || payload.status === '') {
- payload.status = '0' // 榛樿鐘舵�侊紝鍙寜瀹為檯鏋氫妇璋冩暣
- }
- payload.active = true
- payload.deleted = 0
-
- if (operationType.value === 'edit') {
- await deviceMaintenanceTaskEdit(payload)
- } else {
- await deviceMaintenanceTaskAdd(payload)
- }
- cancel()
- proxy.$modal.msgSuccess('鎻愪氦鎴愬姛')
- } catch (error) {
- proxy.$modal.msgError('鎻愪氦澶辫触锛岃閲嶈瘯')
- }
- }
- })
-}
-defineExpose({ openDialog })
+ proxy.$refs["formRef"].validate(async (valid) => {
+ if (valid) {
+ try {
+ const payload = { ...form.value };
+ // 鍚庣瑕佹眰锛歞eviceIds 浠� JSON.stringify([1,2,3]) 褰㈠紡浼犲弬
+ payload.deviceIds = JSON.stringify(form.value.deviceIds || []);
+ // 涓嶅啀鍚戝悗绔紶淇濆吇浜哄瓧娈碉紝浠呬娇鐢ㄦ帴鍙h姹傜殑 registrant / registrantId
+ // 鏍规嵁閫夋嫨鐨�"褰曞叆浜�"璁剧疆 registrant / registrantId
+ if (payload.inspector) {
+ const selectedUser = userList.value.find(
+ (u) => String(u.userId) === String(payload.inspector)
+ );
+ if (selectedUser) {
+ payload.registrantId = selectedUser.userId;
+ payload.registrant = selectedUser.nickName;
+ }
+ }
+ delete payload.inspector;
+ delete payload.inspectorIds;
+ delete payload.taskIds;
+
+ if (payload.frequencyType === "WEEKLY") {
+ let frequencyDetail = "";
+ frequencyDetail = payload.week + "," + payload.time;
+ payload.frequencyDetail = frequencyDetail;
+ }
+
+ // 褰曞叆鏃ユ湡锛氱洿鎺ヤ娇鐢ㄨ〃鍗曢噷鐨� registrationDate 瀛楁
+ // 涓�浜涢粯璁ょ姸鎬佸瓧娈�
+ if (
+ payload.status === undefined ||
+ payload.status === null ||
+ payload.status === ""
+ ) {
+ payload.status = "0"; // 榛樿鐘舵�侊紝鍙寜瀹為檯鏋氫妇璋冩暣
+ }
+ payload.active = true;
+ payload.deleted = 0;
+
+ if (operationType.value === "edit") {
+ await deviceMaintenanceTaskEdit(payload);
+ } else {
+ await deviceMaintenanceTaskAdd(payload);
+ }
+ cancel();
+ proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
+ } catch (error) {
+ proxy.$modal.msgError("鎻愪氦澶辫触锛岃閲嶈瘯");
+ }
+ }
+ });
+};
+defineExpose({ openDialog });
</script>
-<style scoped>
-
-</style>
+<style scoped></style>
diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue
index 9b2a7f4..c5ce2fc 100644
--- a/src/views/qualityManagement/processInspection/components/formDia.vue
+++ b/src/views/qualityManagement/processInspection/components/formDia.vue
@@ -81,8 +81,8 @@
<el-col :span="12">
<el-form-item label="妫�娴嬬粨鏋滐細" prop="checkResult">
<el-select v-model="form.checkResult">
- <el-option label="鍚堟牸" value="鍚堟牸" />
- <el-option label="涓嶅悎鏍�" value="涓嶅悎鏍�" />
+ <el-option label="宸叉" value="宸叉" />
+ <el-option label="鏈" value="鏈" />
</el-select>
</el-form-item>
</el-col>
diff --git a/src/views/qualityManagement/processInspection/index.vue b/src/views/qualityManagement/processInspection/index.vue
index cbeab71..bcdaea7 100644
--- a/src/views/qualityManagement/processInspection/index.vue
+++ b/src/views/qualityManagement/processInspection/index.vue
@@ -136,12 +136,12 @@
prop: "checkResult",
dataType: "tag",
formatType: (params) => {
- if (params == '涓嶅悎鏍�') {
+ if (params == '鏈') {
return "danger";
- } else if (params == '鍚堟牸') {
+ } else if (params == '宸叉') {
return "success";
} else {
- return null;
+ return "danger";
}
},
},
@@ -393,4 +393,4 @@
});
</script>
-<style scoped></style>
+<style scoped></style>
\ No newline at end of file
diff --git a/src/views/qualityManagement/rawMaterial/components/formDia.vue b/src/views/qualityManagement/rawMaterial/components/formDia.vue
index fdbc95c..076e918 100644
--- a/src/views/qualityManagement/rawMaterial/components/formDia.vue
+++ b/src/views/qualityManagement/rawMaterial/components/formDia.vue
@@ -1,41 +1,58 @@
<template>
<div>
<el-dialog
- v-model="dialogFormVisible"
- :title="operationType === 'add' ? '鏂板鍘熸枡' : operationType === 'view' ? '鍘熸枡璇︽儏' : '缂栬緫鍘熸枡'"
- width="70%"
- @close="closeDia"
+ v-model="dialogFormVisible"
+ :title="
+ operationType === 'add'
+ ? '鏂板鍘熸枡'
+ : operationType === 'view'
+ ? '鍘熸枡璇︽儏'
+ : '缂栬緫鍘熸枡'
+ "
+ width="70%"
+ @close="closeDia"
>
<el-form
- v-if="operationType !== 'view'"
- :model="form"
- label-width="140px"
- label-position="top"
- :rules="rules"
- ref="formRef"
+ v-if="operationType !== 'view'"
+ :model="form"
+ label-width="140px"
+ label-position="top"
+ :rules="rules"
+ ref="formRef"
>
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="浜у搧鍚嶇О锛�" prop="productId">
<el-tree-select
- v-model="form.productId"
- placeholder="璇烽�夋嫨"
- clearable
- check-strictly
- @change="getModels"
- :data="productOptions"
- :render-after-expand="false"
- :disabled="operationType === 'edit' || operationType === 'view'"
- style="width: 100%"
+ v-model="form.productId"
+ placeholder="璇烽�夋嫨"
+ clearable
+ check-strictly
+ @change="getModels"
+ :data="productOptions"
+ :render-after-expand="false"
+ :disabled="operationType === 'edit' || operationType === 'view'"
+ style="width: 100%"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId">
- <el-select v-model="form.productModelId" placeholder="璇烽�夋嫨" clearable
- :disabled="operationType === 'edit' || operationType === 'view'"
- filterable readonly @change="handleChangeModel">
- <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id"/>
+ <el-select
+ v-model="form.productModelId"
+ placeholder="璇烽�夋嫨"
+ clearable
+ :disabled="operationType === 'edit' || operationType === 'view'"
+ filterable
+ readonly
+ @change="handleChangeModel"
+ >
+ <el-option
+ v-for="item in modelOptions"
+ :key="item.id"
+ :label="item.model"
+ :value="item.id"
+ />
</el-select>
</el-form-item>
</el-col>
@@ -43,17 +60,17 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="鍗曚綅锛�" prop="unit">
- <el-input v-model="form.unit" disabled/>
+ <el-input v-model="form.unit" disabled />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="鎵瑰彿锛�" prop="batchNo">
<el-input
- style="width: 100%"
- v-model="form.batchNo"
- placeholder="璇疯緭鍏�"
- clearable
- :disabled="operationType === 'view'"
+ style="width: 100%"
+ v-model="form.batchNo"
+ placeholder="璇疯緭鍏�"
+ clearable
+ :disabled="operationType === 'view'"
/>
</el-form-item>
</el-col>
@@ -61,18 +78,24 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="妫�楠岀被鍨嬶細" prop="checkType">
- <el-select v-model="form.checkType" :disabled="operationType === 'view'">
- <el-option label="鍏ュ巶妫�" :value="0"/>
- <el-option label="杞﹂棿妫�" :value="1"/>
- <el-option label="鍑哄巶妫�" :value="2"/>
+ <el-select
+ v-model="form.checkType"
+ :disabled="operationType === 'view'"
+ >
+ <el-option label="鍏ュ巶妫�" :value="0" />
+ <el-option label="杞﹂棿妫�" :value="1" />
+ <el-option label="鍑哄巶妫�" :value="2" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="妫�娴嬬粨鏋滐細" prop="checkResult">
- <el-select v-model="form.checkResult" :disabled="operationType === 'view'">
- <el-option label="鍚堟牸" :value="1"/>
- <el-option label="涓嶅悎鏍�" :value="0"/>
+ <el-select
+ v-model="form.checkResult"
+ :disabled="operationType === 'view'"
+ >
+ <el-option label="宸叉" :value="1" />
+ <el-option label="鏈" :value="0" />
</el-select>
</el-form-item>
</el-col>
@@ -81,103 +104,139 @@
<el-col :span="12">
<el-form-item label="妫�楠屽憳锛�" prop="checkUserName">
<el-select
- v-model="form.checkUserName"
- placeholder="璇烽�夋嫨"
- clearable
- filterable
- style="width: 100%"
- :disabled="operationType === 'view'"
+ v-model="form.checkUserName"
+ placeholder="璇烽�夋嫨"
+ clearable
+ filterable
+ style="width: 100%"
+ :disabled="operationType === 'view'"
>
- <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
- :value="item.nickName"/>
+ <el-option
+ v-for="item in userList"
+ :key="item.nickName"
+ :label="item.nickName"
+ :value="item.nickName"
+ />
</el-select>
-
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="妫�娴嬫棩鏈燂細" prop="checkTime">
<el-date-picker
- v-model="form.checkTime"
- type="date"
- placeholder="璇烽�夋嫨鏃ユ湡"
- value-format="YYYY-MM-DD"
- format="YYYY-MM-DD"
- clearable
- style="width: 100%"
- :disabled="operationType === 'view'"
+ v-model="form.checkTime"
+ type="date"
+ placeholder="璇烽�夋嫨鏃ユ湡"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ clearable
+ style="width: 100%"
+ :disabled="operationType === 'view'"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-descriptions
- v-else
- :column="2"
- border
- size="small"
- style="margin-bottom: 12px;"
+ v-else
+ :column="2"
+ border
+ size="small"
+ style="margin-bottom: 12px"
>
- <el-descriptions-item label="浜у搧鍚嶇О">{{ viewProductName }}</el-descriptions-item>
- <el-descriptions-item label="瑙勬牸鍨嬪彿">{{ viewProductModel }}</el-descriptions-item>
- <el-descriptions-item label="鍗曚綅">{{ form.unit || '-' }}</el-descriptions-item>
- <el-descriptions-item label="鎵瑰彿">{{ form.batchNo || '-' }}</el-descriptions-item>
- <el-descriptions-item label="妫�楠岀被鍨�">{{ viewCheckType }}</el-descriptions-item>
- <el-descriptions-item label="妫�娴嬬粨鏋�">{{ viewCheckResult }}</el-descriptions-item>
- <el-descriptions-item label="妫�楠屽憳">{{ form.checkUserName || '-' }}</el-descriptions-item>
- <el-descriptions-item label="妫�娴嬫棩鏈�">{{ form.checkTime || '-' }}</el-descriptions-item>
+ <el-descriptions-item label="浜у搧鍚嶇О">{{
+ viewProductName
+ }}</el-descriptions-item>
+ <el-descriptions-item label="瑙勬牸鍨嬪彿">{{
+ viewProductModel
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鍗曚綅">{{
+ form.unit || "-"
+ }}</el-descriptions-item>
+ <el-descriptions-item label="鎵瑰彿">{{
+ form.batchNo || "-"
+ }}</el-descriptions-item>
+ <el-descriptions-item label="妫�楠岀被鍨�">{{
+ viewCheckType
+ }}</el-descriptions-item>
+ <el-descriptions-item label="妫�娴嬬粨鏋�">{{
+ viewCheckResult
+ }}</el-descriptions-item>
+ <el-descriptions-item label="妫�楠屽憳">{{
+ form.checkUserName || "-"
+ }}</el-descriptions-item>
+ <el-descriptions-item label="妫�娴嬫棩鏈�">{{
+ form.checkTime || "-"
+ }}</el-descriptions-item>
</el-descriptions>
<div style="margin-bottom: 10px">
<el-button
- v-if="operationType !== 'view'"
- type="primary"
- @click="isShowItems = true"
- >娣诲姞妫�娴嬮」鐩�</el-button>
+ v-if="operationType !== 'view'"
+ type="primary"
+ @click="isShowItems = true"
+ >娣诲姞妫�娴嬮」鐩�</el-button
+ >
</div>
<PIMTable
- rowKey="id"
- :column="tableColumn"
- :tableData="tableData"
- :tableLoading="tableLoading"
- :is-show-pagination="false"
- height="400"
+ rowKey="id"
+ :column="tableColumn"
+ :tableData="tableData"
+ :tableLoading="tableLoading"
+ :is-show-pagination="false"
+ height="400"
>
<template #slot="{ row }">
<span v-if="operationType === 'view'">{{ row.testValue }}</span>
- <el-input
- v-else
- v-model="row.testValue"
- clearable
- />
+ <el-input v-else v-model="row.testValue" clearable />
</template>
</PIMTable>
<template #footer>
<div class="dialog-footer">
- <el-button v-if="operationType !== 'view'" type="primary" @click="submitForm">纭</el-button>
- <el-button @click="closeDia">{{ operationType === 'view' ? '鍏抽棴' : '鍙栨秷' }}</el-button>
+ <el-button
+ v-if="operationType !== 'view'"
+ type="primary"
+ @click="submitForm"
+ >纭</el-button
+ >
+ <el-button @click="closeDia">{{
+ operationType === "view" ? "鍏抽棴" : "鍙栨秷"
+ }}</el-button>
</div>
</template>
</el-dialog>
- <item-select v-model="isShowItems" @confirm="handleItemSelect"/>
+ <item-select v-model="isShowItems" @confirm="handleItemSelect" />
</div>
</template>
<script setup>
-import {ref, reactive, toRefs, getCurrentInstance, nextTick, computed} from "vue";
-import {modelList, productTreeList} from "@/api/basicData/product.js";
-import {qualityInspectParamInfo} from "@/api/qualityManagement/qualityInspectParam.js";
-import {qualityInspectDetailByProductId} from "@/api/qualityManagement/metricMaintenance.js";
-import {userListNoPage} from "@/api/system/user.js";
-import {createRawMaterial, findRawMaterialDetail, updateRawMaterial} from "@/api/qualityManagement/rawMaterial.js";
+import {
+ ref,
+ reactive,
+ toRefs,
+ getCurrentInstance,
+ nextTick,
+ computed,
+} from "vue";
+import { modelList, productTreeList } from "@/api/basicData/product.js";
+import { qualityInspectParamInfo } from "@/api/qualityManagement/qualityInspectParam.js";
+import { qualityInspectDetailByProductId } from "@/api/qualityManagement/metricMaintenance.js";
+import { userListNoPage } from "@/api/system/user.js";
+import {
+ createRawMaterial,
+ findRawMaterialDetail,
+ updateRawMaterial,
+} from "@/api/qualityManagement/rawMaterial.js";
import ProductSelectDialog from "@/views/basicData/product/ProductSelectDialog.vue";
-const {proxy} = getCurrentInstance()
-const emit = defineEmits(['close'])
-const ItemSelect = defineAsyncComponent(() => import("@/views/qualityManagement/rawMaterial/components/itemSelect.vue"));
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["close"]);
+const ItemSelect = defineAsyncComponent(() =>
+ import("@/views/qualityManagement/rawMaterial/components/itemSelect.vue")
+);
const dialogFormVisible = ref(false);
-const operationType = ref('')
-const isShowItems = ref(false)
+const operationType = ref("");
+const isShowItems = ref(false);
const data = reactive({
form: {
checkTime: "",
@@ -193,13 +252,21 @@
checkUserName: "",
},
rules: {
- checkTime: [{required: true, message: "璇疯緭鍏�", trigger: "blur"},],
- checkUserName: [{required: false, message: "璇烽�夋嫨妫�楠屽憳", trigger: "blur"}],
- productId: [{required: true, message: "璇疯緭鍏�", trigger: "blur"}],
- productModelId: [{required: true, message: "璇烽�夋嫨浜у搧鍨嬪彿", trigger: "change"}],
- batchNo: [{required: true, message: "璇疯緭鍏ユ壒娆�", trigger: "blur"}],
- checkType: [{required: true, message: "璇烽�夋嫨妫�楠岀被鍨�", trigger: "change"}],
- checkResult: [{required: true, message: "璇烽�夋嫨妫�娴嬬粨鏋�", trigger: "change"}],
+ checkTime: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ checkUserName: [
+ { required: false, message: "璇烽�夋嫨妫�楠屽憳", trigger: "blur" },
+ ],
+ productId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
+ productModelId: [
+ { required: true, message: "璇烽�夋嫨浜у搧鍨嬪彿", trigger: "change" },
+ ],
+ batchNo: [{ required: true, message: "璇疯緭鍏ユ壒娆�", trigger: "blur" }],
+ checkType: [
+ { required: true, message: "璇烽�夋嫨妫�楠岀被鍨�", trigger: "change" },
+ ],
+ checkResult: [
+ { required: true, message: "璇烽�夋嫨妫�娴嬬粨鏋�", trigger: "change" },
+ ],
},
});
const tableColumn = ref([
@@ -222,29 +289,29 @@
{
label: "鍖栭獙鍊�",
prop: "testValue",
- dataType: 'slot',
- slot: 'slot',
+ dataType: "slot",
+ slot: "slot",
},
{
- dataType: 'action',
- label: '鎿嶄綔',
- align: 'center',
- fixed: 'right',
+ dataType: "action",
+ label: "鎿嶄綔",
+ align: "center",
+ fixed: "right",
width: 140,
operation: [
{
- name: '鍒犻櫎',
- type: 'text',
+ name: "鍒犻櫎",
+ type: "text",
clickFun: (row) => handleDelete(row.id),
- disabled: () => operationType.value === 'view',
- }
- ]
- }
+ disabled: () => operationType.value === "view",
+ },
+ ],
+ },
]);
const tableData = ref([]);
const tableLoading = ref(false);
-const {form, rules} = toRefs(data);
+const { form, rules } = toRefs(data);
const userList = ref([]);
const productOptions = ref([]);
const currentProductId = ref(0);
@@ -261,9 +328,9 @@
// 鎵撳紑寮规
const openDialog = async (type, row) => {
operationType.value = type;
- userListNoPage().then(res => {
+ userListNoPage().then((res) => {
userList.value = res.data || [];
- })
+ });
// 鍏堥噸缃〃鍗曟暟鎹紙淇濇寔瀛楁瀹屾暣锛岄伩鍏嶅脊绐楅娆℃覆鏌撴椂瑙﹀彂蹇呭~绾㈡鈥滈棯涓�涓嬧�濓級
form.value = {
checkTime: getTodayStr(),
@@ -277,17 +344,17 @@
checkResult: "",
unit: "",
checkUserName: "",
- }
+ };
tableData.value = [];
// 鍏堢‘淇濅骇鍝佹爲宸插姞杞斤紝鍚﹀垯缂栬緫鏃朵骇鍝�/瑙勬牸鍨嬪彿鏃犳硶鍙嶆樉
await getProductOptions();
- if (operationType.value === 'edit') {
+ if (operationType.value === "edit") {
await fetchData(row.id);
- currentProductId.value = row.productId || 0
+ currentProductId.value = row.productId || 0;
// 鍏抽敭锛氱紪杈戞椂鍔犺浇瑙勬牸鍨嬪彿涓嬫媺閫夐」锛屾墠鑳藉弽鏄� productModelId
if (currentProductId.value) {
try {
- const res = await modelList({id: currentProductId.value});
+ const res = await modelList({ id: currentProductId.value });
modelOptions.value = res || [];
// 鍚屾鍥炲~ model / unit锛堟湁浜涙帴鍙h繑鍥炵殑 row 閲屽彲鑳芥病甯﹀叏锛�
if (form.value.productModelId) {
@@ -300,17 +367,16 @@
}
// 缂栬緫妯″紡涓嬶紝鍏堝姞杞芥寚鏍囬�夐」锛岀劧鍚庡姞杞藉弬鏁板垪琛�
if (currentProductId.value) {
-
} else {
getQualityInspectParamList(row.id);
}
}
- if (operationType.value === 'view') {
+ if (operationType.value === "view") {
await fetchData(row.id);
- currentProductId.value = row.productId || 0
+ currentProductId.value = row.productId || 0;
if (currentProductId.value) {
try {
- const res = await modelList({id: currentProductId.value});
+ const res = await modelList({ id: currentProductId.value });
modelOptions.value = res || [];
if (form.value.productModelId) {
handleChangeModel(form.value.productModelId);
@@ -331,7 +397,7 @@
nextTick(() => {
proxy.$refs?.formRef?.clearValidate?.();
});
-}
+};
const getProductOptions = () => {
return productTreeList().then((res) => {
productOptions.value = convertIdToValue(res);
@@ -342,11 +408,11 @@
form.value.productModelId = undefined;
form.value.unit = undefined;
modelOptions.value = [];
- currentProductId.value = value
+ currentProductId.value = value;
form.value.productName = findNodeById(productOptions.value, value);
- modelList({id: value}).then((res) => {
+ modelList({ id: value }).then((res) => {
modelOptions.value = res;
- })
+ });
if (currentProductId.value) {
getList();
}
@@ -354,14 +420,19 @@
const handleItemSelect = (value) => {
// 杩囨护宸插瓨鍦ㄧ殑鎸囨爣
- value = value.filter(item => !tableData.value.some(existingItem => existingItem.id === item.id));
- tableData.value.push(...value)
-}
+ value = value.filter(
+ (item) =>
+ !tableData.value.some((existingItem) => existingItem.id === item.id)
+ );
+ tableData.value.push(...value);
+};
const handleChangeModel = (value) => {
- form.value.model = modelOptions.value.find(item => item.id == value)?.model || '';
- form.value.unit = modelOptions.value.find(item => item.id == value)?.unit || '';
-}
+ form.value.model =
+ modelOptions.value.find((item) => item.id == value)?.model || "";
+ form.value.unit =
+ modelOptions.value.find((item) => item.id == value)?.unit || "";
+};
const findNodeById = (nodes, productId) => {
for (let i = 0; i < nodes.length; i++) {
@@ -380,35 +451,37 @@
// 璇︽儏妯″紡灞曠ず瀛楁锛堜笉浣跨敤琛ㄥ崟鎺т欢锛�
const viewProductName = computed(() => {
- const id = form.value?.productId
- const label = id ? findNodeById(productOptions.value || [], id) : null
- return label || id || '-'
-})
+ const id = form.value?.productId;
+ const label = id ? findNodeById(productOptions.value || [], id) : null;
+ return label || id || "-";
+});
const viewProductModel = computed(() => {
- const modelId = form.value?.productModelId
- const matched = (modelOptions.value || []).find((x) => String(x.id) === String(modelId))
- return matched?.model || modelId || '-'
-})
+ const modelId = form.value?.productModelId;
+ const matched = (modelOptions.value || []).find(
+ (x) => String(x.id) === String(modelId)
+ );
+ return matched?.model || modelId || "-";
+});
const viewCheckType = computed(() => {
- const t = form.value?.checkType
- if (t === 0 || t === '0') return '鍏ュ巶妫�'
- if (t === 1 || t === '1') return '杞﹂棿妫�'
- if (t === 2 || t === '2') return '鍑哄巶妫�'
- return '-'
-})
+ const t = form.value?.checkType;
+ if (t === 0 || t === "0") return "鍏ュ巶妫�";
+ if (t === 1 || t === "1") return "杞﹂棿妫�";
+ if (t === 2 || t === "2") return "鍑哄巶妫�";
+ return "-";
+});
const viewCheckResult = computed(() => {
- const r = form.value?.checkResult
- if (r === 1 || r === '1') return '鍚堟牸'
- if (r === 0 || r === '0') return '涓嶅悎鏍�'
- return '-'
-})
+ const r = form.value?.checkResult;
+ if (r === 1 || r === "1") return "鍚堟牸";
+ if (r === 0 || r === "0") return "涓嶅悎鏍�";
+ return "-";
+});
function convertIdToValue(data) {
return data.map((item) => {
- const {id, children, ...rest} = item;
+ const { id, children, ...rest } = item;
const newItem = {
...rest,
value: id, // 灏� id 鏀逛负 value
@@ -423,24 +496,24 @@
// 鎻愪氦浜у搧琛ㄥ崟
const submitForm = () => {
- if (operationType.value === 'view') return;
- proxy.$refs.formRef.validate(valid => {
+ if (operationType.value === "view") return;
+ proxy.$refs.formRef.validate((valid) => {
if (valid) {
- const data = {...form.value, qualityInspectItem: tableData.value}
+ const data = { ...form.value, qualityInspectItem: tableData.value };
if (operationType.value === "add") {
- createRawMaterial(data).then(res => {
+ createRawMaterial(data).then((res) => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeDia();
- })
+ });
} else {
- updateRawMaterial(data).then(res => {
+ updateRawMaterial(data).then((res) => {
proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");
closeDia();
- })
+ });
}
}
- })
-}
+ });
+};
const getList = () => {
if (!currentProductId.value) {
@@ -449,45 +522,45 @@
}
let params = {
productId: currentProductId.value,
- }
- qualityInspectDetailByProductId(params).then(res => {
+ };
+ qualityInspectDetailByProductId(params).then((res) => {
// 娓呯┖琛ㄦ牸鏁版嵁锛岀瓑寰呯敤鎴烽�夋嫨鎸囨爣
tableData.value = [];
- })
-}
+ });
+};
const getQualityInspectParamList = (id) => {
- qualityInspectParamInfo(id).then(res => {
+ qualityInspectParamInfo(id).then((res) => {
tableData.value = res.data;
- })
-}
+ });
+};
// 鍏抽棴寮规
const closeDia = () => {
proxy.resetForm("formRef");
tableData.value = [];
dialogFormVisible.value = false;
- emit('close')
+ emit("close");
};
const handleDelete = (id) => {
- if (operationType.value === 'view') return;
- tableData.value = tableData.value.filter(item => item.id !== id);
-}
+ if (operationType.value === "view") return;
+ tableData.value = tableData.value.filter((item) => item.id !== id);
+};
const fetchData = (id) => {
tableLoading.value = true;
- findRawMaterialDetail(id).then(res => {
- form.value = res.data;
- tableData.value = res.data.qualityInspectItem;
- }).finally(() => {
- tableLoading.value = false;
- })
-}
+ findRawMaterialDetail(id)
+ .then((res) => {
+ form.value = res.data;
+ tableData.value = res.data.qualityInspectItem;
+ })
+ .finally(() => {
+ tableLoading.value = false;
+ });
+};
defineExpose({
openDialog,
});
</script>
-<style scoped>
-
-</style>
+<style scoped></style>
--
Gitblit v1.9.3