From 1a5d32ee47a086247dec5cd7f3fde28700c6b187 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期三, 02 七月 2025 20:39:41 +0800
Subject: [PATCH] 提交设备管理模块
---
src/views/basicInformation/index.vue | 4
src/views/equipment/management/index.vue | 548 ++++++---------------------------
src/views/equipment/management/mould/managementDialog.vue | 361 +++++++++------------
3 files changed, 263 insertions(+), 650 deletions(-)
diff --git a/src/views/basicInformation/index.vue b/src/views/basicInformation/index.vue
index 26dc9b9..7d25b6a 100644
--- a/src/views/basicInformation/index.vue
+++ b/src/views/basicInformation/index.vue
@@ -891,7 +891,9 @@
width: 16%;
}
}
-
+.app-container{
+ padding: 18px !important;
+}
.table-toolbar {
margin-bottom: 20px;
display: flex;
diff --git a/src/views/equipment/management/index.vue b/src/views/equipment/management/index.vue
index 3481d2f..2ceb04b 100644
--- a/src/views/equipment/management/index.vue
+++ b/src/views/equipment/management/index.vue
@@ -36,13 +36,6 @@
<el-button :icon="Delete" type="danger" @click="handleDelete"
>鍒犻櫎</el-button
>
- <!-- <el-button
- v-show="canExport"
- :icon="Download"
- type="info"
- @click="handleExport"
- >瀵煎嚭</el-button
- > -->
</el-row>
<!-- 琛ㄦ牸缁勪欢 -->
<div>
@@ -61,7 +54,7 @@
>
<!-- 瀛楁鍚嶇О鍒楃殑鑷畾涔夋彃妲� - 鏄剧ず涓烘爣绛� -->
<template
- v-if="tabName === 'coalQualityMaintenance'"
+ v-if="activeTab === 'coalQualityMaintenance'"
#fieldIds="{ row }"
>
<template
@@ -76,12 +69,10 @@
style="margin-right: 4px; margin-bottom: 2px"
type="primary"
>
- {{ getFieldDisplayName(field.trim()) }}
</el-tag>
</template>
<template v-else>
<el-tag size="small" type="primary">
- {{ getFieldDisplayName(row.fieldIds) || "--" }}
</el-tag>
</template>
</template>
@@ -96,465 +87,180 @@
@pagination="handPagination"
/>
<managementDialog
-
+ v-model:copyForm="copyForm"
+ v-model:managementFormDialog="manaDialog"
+ :addOrEdit="addOrEdit"
+ :form="form"
+ @submit="getList"
></managementDialog>
</el-card>
</div>
</template>
<script setup>
-import {
- computed,
- getCurrentInstance,
- onMounted,
- reactive,
- ref,
- nextTick,
-} from "vue";
-import { ElMessage, ElMessageBox } from "element-plus";
-import { Delete, Download, Plus } from "@element-plus/icons-vue";
+import { computed, onMounted, reactive, ref } from "vue";
+import { ElMessage } from "element-plus";
+import { Delete, Plus } from "@element-plus/icons-vue";
-// ===== 缁勪欢瀵煎叆 =====
+// 缁勪欢瀵煎叆
import DataTable from "@/components/Table/ETable.vue";
import Pagination from "@/components/Pagination";
import managementDialog from "./mould/managementDialog.vue";
-// ===== API 鏈嶅姟瀵煎叆 =====
-import { delSupply, getSupply } from "@/api/basicInformation/supplier.js";
-import { useDelete } from "@/hooks/useDelete.js";
-import { testUserList } from "@/api/tool/publicInterface.js";
-const { proxy } = getCurrentInstance();
-// ===== 鍝嶅簲寮忕姸鎬佺鐞� =====
-const dialogFormVisible = ref(false);
+// API 鏈嶅姟瀵煎叆
+import { useDelete } from "@/hooks/useDelete.js";
+import { getManagementList, delEquipment } from "@/api/equipment/management/index.js";
+
+// 鍝嶅簲寮忕姸鎬佺鐞�
const form = ref({});
const title = ref("");
const copyForm = ref({});
const addOrEdit = ref("add");
-
-// 鏁版嵁缂撳瓨鏄犲皠
-const userList = ref([]);
-const userMap = ref({}); // 鐢ㄦ埛ID -> 鐢ㄦ埛鍚嶆槧灏勮〃
-const addressMap = ref({}); // 鍦板潃ID -> 鍦板潃淇℃伅鏄犲皠琛�
-const coalFieldList = ref([]); // 鐓よ川瀛楁鍒楄〃
-
-// 椤甸潰鐘舵�佹帶鍒�
-const tabName = ref("management");
+const manaDialog = ref(false);
const loading = ref(false);
const activeTab = ref("management");
+const selectedRows = ref([]);
+const tableData = ref([]);
-// 鍒嗛〉鐘舵�佺鐞�
+// 鍒嗛〉鐘舵��
const pageNum = ref(1);
const pageSizes = ref(10);
const total = ref(0);
-// 琛ㄦ牸鐘舵�佺鐞�
-const selectedRows = ref([]);
-const tableData = ref([]);
-const columns = ref();
-
// 鏌ヨ鍙傛暟
-const queryParams = reactive({});
-
-// 鍦板潃閫夋嫨鏁版嵁
-const addressSelectOptions = ref([]);
-
-// ===== 閰嶇疆甯搁噺 =====
-
-// 鏍囩椤甸厤缃�
-const tabs = reactive([
- { name: "management", label: "渚涘簲鍟嗕俊鎭�" },
- { name: "customer", label: "瀹㈡埛淇℃伅" },
-]);
-
-// ===== 宸ュ叿鍑芥暟 =====
-
-
-/**
- * 鏋勫缓鍦板潃鏄犲皠琛�
- * @param {Array} areaData - 鍦板潃鏁版嵁
- * @description 閫掑綊鏋勫缓鍦板潃鏄犲皠琛紝鏀寔澶氱骇鍦板潃鏌ユ壘
- */
-const buildAddressMap = (areaData) => {
- const buildMap = (list, pathList = []) => {
- list.forEach((item) => {
- const currentPath = [...pathList, item.label];
- addressMap.value[item.id] = {
- name: item.label,
- fullPath: currentPath.join(" / "),
- };
- if (item.children && item.children.length > 0) {
- buildMap(item.children, currentPath);
- }
- });
- };
- buildMap(areaData);
-};
-
-/**
- * 鏍煎紡鍖栧湴鍧�鏁扮粍涓烘樉绀哄瓧绗︿覆
- * @param {Array} addressIds - 鍦板潃ID鏁扮粍
- * @returns {string} 鏍煎紡鍖栧悗鐨勫湴鍧�瀛楃涓�
- * @description 灏嗗湴鍧�ID鏁扮粍杞崲涓哄彲璇荤殑鍦板潃瀛楃涓�
- */
-const formatAddressArray = (addressIds) => {
- if (
- !addressMap.value ||
- Object.keys(addressMap.value).length === 0 ||
- !addressIds ||
- !Array.isArray(addressIds) ||
- addressIds.length === 0 ||
- addressIds.every((id) => !id)
- ) {
- return "--";
- }
-
- const addressNames = addressIds.map(
- (id) => addressMap.value[id]?.name || "--"
- );
-
- if (addressNames.every((name) => name === "--")) {
- return "--";
- }
-
- return addressNames.filter((name) => name !== "--").join(" / ");
-};
-
-/**
- * 鑾峰彇鐢ㄦ埛鍒楄〃鏁版嵁骞舵瀯寤烘槧灏勮〃
- * @description 鑾峰彇鐢ㄦ埛鏁版嵁骞舵瀯寤篒D鍒扮敤鎴峰悕鐨勬槧灏勫叧绯�
- */
-const getUserList = async () => {
- try {
- const res = await testUserList();
- console.log("鑾峰彇鐢ㄦ埛鍒楄〃鏁版嵁:", res);
- console.log("userMap:", userMap.value);
- if (res && res.data) {
- userList.value = res.data;
- userList.value.forEach((user) => {
- userMap.value[user.userId] = user.nickName;
- });
- }
- } catch (error) {
- console.error("鑾峰彇鐢ㄦ埛鍒楄〃澶辫触:", error);
- }
-};
-
-/**
- * 鏍规嵁瀛楁ID鑾峰彇瀛楁鏄剧ず鍚嶇О
- * @param {string|number} fieldId - 瀛楁ID
- * @returns {string} 瀛楁鏄剧ず鍚嶇О
- * @description 閫氳繃瀛楁ID鍖归厤瀵瑰簲鐨勫瓧娈靛悕绉�
- */
-const getFieldDisplayName = (fieldId) => {
- if (!fieldId) return "--";
-
- const numId = parseInt(fieldId);
- const matchedField = coalFieldList.value.find((item) => item.id === numId);
-
- return matchedField ? matchedField.fieldName : numId;
-};
-
-/**
- * 褰撳墠鏍囩椤垫槸鍚︽敮鎸佸鍑哄姛鑳�
- */
-const canExport = computed(() => {
- return ["management"].includes(tabName.value);
+const queryParams = reactive({
+ searchAll: ""
});
-/**
- * 鎼滅储妗嗗崰浣嶇鏂囨湰
- */
-const searchPlaceholder = computed(() => {
- const placeholderMap = {
- management: "渚涘簲鍟�/缁熶竴璇嗗埆鐮�/璇︾粏鍦板潃",
- };
- return placeholderMap[tabName.value] || "璇疯緭鍏ユ悳绱俊鎭�";
-});
+// 鏍囩椤甸厤缃� - 渚夸簬鍚庣画鎵╁睍
+const tabsConfig = {
+ management: {
+ label: "璁惧鍒楄〃",
+ searchPlaceholder: "璁惧缂栧彿/璁惧鍚嶇О/瑙勬牸鍨嬪彿",
+ showSearch: true,
+ api: getManagementList,
+ deleteApi: delEquipment,
+ columns: [
+ { prop: "equipmentId", label: "璁惧缂栧彿", minWidth: 100 },
+ { prop: "equipmentName", label: "璁惧鍚嶇О", minWidth: 100 },
+ { prop: "quantity", label: "鏁伴噺", minWidth: 100 },
+ { prop: "specification", label: "瑙勬牸鍨嬪彿", minWidth: 100 },
+ {
+ prop: "usageStatus",
+ label: "浣跨敤鐘舵��",
+ minWidth: 100,
+ formatter: (row) => row.usageStatus == 1 ? "鍚敤" : "绂佺敤"
+ },
+ { prop: "usingDepartment", label: "浣跨敤閮ㄩ棬", minWidth: 100 },
+ { prop: "purchaseDate", label: "閲囪喘鏃ユ湡", minWidth: 100 },
+ { prop: "purchasePrice", label: "閲囪喘浠锋牸", minWidth: 100 },
+ ]
+ }
+ // 鍚庣画鍙互鍦ㄨ繖閲屾坊鍔犳柊鐨勬爣绛鹃〉閰嶇疆
+};
-/**
- * 鏄惁鏄剧ず鎼滅储妗�
- */
-const shouldShowSearch = computed(() => {
- return [
- "management",
- ].includes(tabName.value);
-});
+// 鏍囩椤垫暟鎹�
+const tabs = reactive(
+ Object.entries(tabsConfig).map(([name, config]) => ({
+ name,
+ label: config.label
+ }))
+);
-/**
- * 褰撳墠閫変腑琛屾暟閲�
- */
+// 褰撳墠鏍囩椤甸厤缃�
+const currentTabConfig = computed(() => tabsConfig[activeTab.value]);
+
+// 璁$畻灞炴��
+const searchPlaceholder = computed(() => currentTabConfig.value?.searchPlaceholder || "璇疯緭鍏ユ悳绱俊鎭�");
+const shouldShowSearch = computed(() => currentTabConfig.value?.showSearch || false);
+const columns = computed(() => currentTabConfig.value?.columns || []);
const selectedCount = computed(() => selectedRows.value.length);
-// ===== 琛ㄦ牸鍒楅厤缃� =====
-
-/**
- * 渚涘簲鍟嗚〃鏍煎垪閰嶇疆
- */
-const management = ref([
- { prop: "equipmentId", label: "璁惧缂栧彿", minWidth: 100 },
- { prop: "equipmentName", label: "璁惧鍚嶇О", minWidth: 100 },
- { prop: "quantity", label: "鏁伴噺", minWidth: 100 },
- { prop: "specification", label: "瑙勬牸鍨嬪彿", minWidth: 100 },
- { prop: "usageStatus", label: "浣跨敤鐘舵��", minWidth: 100 },
- { prop: "usingDepartment", label: "浣跨敤閮ㄩ棬", minWidth: 100 },
- { prop: "userId", label: "浣跨敤浜�", minWidth: 100 },
- { prop: "purchaseDate", label: "閲囪喘鏃ユ湡", minWidth: 100 },
- { prop: "purchasePrice", label: "閲囪喘浠锋牸", minWidth: 100 },
-]);
-
-
-// ===== 浜嬩欢澶勭悊鍑芥暟 =====
-
-/**
- * 鏍囩椤靛垏鎹簨浠跺鐞�
- * @param {Object} tab - 鏍囩椤靛璞�
- * @description 澶勭悊鏍囩椤靛垏鎹紝閲嶇疆琛ㄥ崟鍜岀姸鎬侊紝鍔犺浇瀵瑰簲鏁版嵁
- */
+// 浜嬩欢澶勭悊鍑芥暟
const handleTabClick = (tab) => {
- // 閲嶇疆琛ㄥ崟鍜岀姸鎬�
+ activeTab.value = tab.props.name;
+ resetState();
+ getList();
+};
+
+const resetState = () => {
form.value = {};
addOrEdit.value = "add";
loading.value = true;
- tabName.value = tab.props.name;
tableData.value = [];
pageNum.value = 1;
pageSizes.value = 10;
total.value = 0;
queryParams.searchAll = "";
- // 鏍规嵁鏍囩椤电被鍨嬭缃搴旂殑鍒楅厤缃�
- const tabConfig = {
- management: () => {
- columns.value = management.value;
- getList();
- },
- };
-
- // 鎵ц瀵瑰簲鐨勯厤缃嚱鏁�
- const configFn = tabConfig[tabName.value];
- if (configFn) {
- configFn();
- }
};
-/**
- * 閲嶇疆鏌ヨ鏉′欢
- * @description 閲嶇疆鏌ヨ鍙傛暟骞堕噸鏂板姞杞芥暟鎹�
- */
const resetQuery = () => {
- Object.keys(queryParams).forEach((key) => {
- if (key !== "pageNum" && key !== "pageSizes") {
- queryParams[key] = "";
- }
- });
+ queryParams.searchAll = "";
+ pageNum.value = 1;
getList();
};
-/**
- * 鎼滅储鍔熻兘
- * @description 閲嶇疆椤电爜骞舵墽琛屾悳绱�
- */
const search = () => {
pageNum.value = 1;
getList();
};
-/**
- * 鏂板鎸夐挳鐐瑰嚮澶勭悊
- */
const handleAdd = () => {
addOrEdit.value = "add";
- handleAddEdit(tabName.value);
+ form.value = {};
+ title.value = `鏂板${currentTabConfig.value.label}`;
+ manaDialog.value = true;
};
-/**
- * 鏂板/缂栬緫寮圭獥澶勭悊
- * @param {string} currentTabName - 褰撳墠鏍囩椤靛悕绉�
- * @description 鏍规嵁鏍囩椤电被鍨嬭缃脊绐楁爣棰樺苟鎵撳紑寮圭獥
- */
-const handleAddEdit = (currentTabName) => {
- const actionText =
- addOrEdit.value === "add"
- ? "鏂板"
- : addOrEdit.value === "edit"
- ? "缂栬緫"
- : "鏌ョ湅";
-
- const tabTitleMap = {
- supplier: "渚涘簲鍟嗕俊鎭�",
- customer: "瀹㈡埛淇℃伅",
- };
-
- title.value = `${actionText}${tabTitleMap[currentTabName] || ""}`;
- openDialog();
+const handleEdit = (row) => {
+ form.value = { ...row };
+ addOrEdit.value = "edit";
+ title.value = `缂栬緫${currentTabConfig.value.label}`;
+ copyForm.value = { ...row };
+ manaDialog.value = true;
};
-/**
- * 鎵撳紑寮圭獥
- * @description 鏍规嵁缂栬緫鐘舵�佸喅瀹氭槸鍚﹀鍒惰〃鍗曟暟鎹�
- */
-const openDialog = () => {
- if (addOrEdit.value === "edit" || addOrEdit.value === "viewRow") {
- copyForm.value = JSON.parse(JSON.stringify(form.value));
- } else {
- form.value = {};
- }
- dialogFormVisible.value = true;
+const handleView = (row) => {
+ form.value = { ...row };
+ addOrEdit.value = "viewRow";
+ title.value = `鏌ョ湅${currentTabConfig.value.label}`;
+ copyForm.value = { ...row };
+ manaDialog.value = true;
};
-/**
- * 鍒嗛〉澶勭悊
- * @param {Object} val - 鍒嗛〉鍙傛暟瀵硅薄
- */
const handPagination = (val) => {
pageNum.value = val.page;
pageSizes.value = val.limit;
getList();
};
-/**
- * 琛ㄥ崟鎻愪氦澶勭悊
- * @param {Object} val - 鎻愪氦缁撴灉瀵硅薄
- */
-const handleSubmit = async (val) => {
- if (val.result.code !== 200) {
- ElMessage.error("鎿嶄綔澶辫触锛�" + val.result.msg);
- return;
- }
- ElMessage.success(val.title + val.result.msg);
- dialogFormVisible.value = false;
- getList();
-};
-
-/**
- * 寮圭獥鏄剧ず鐘舵�佸鐞�
- * @param {boolean} value - 鏄剧ず鐘舵��
- */
-const handleDialogFormVisible = (value) => {
- dialogFormVisible.value = value;
-};
-
-/**
- * 琛ㄦ牸琛岄�夋嫨澶勭悊
- * @param {Array} selection - 閫変腑鐨勮鏁版嵁
- */
const handleSelectionChange = (selection) => {
selectedRows.value = selection;
};
-/**
- * 缂栬緫鎸夐挳鐐瑰嚮澶勭悊
- * @param {Object} row - 琛屾暟鎹�
- * @description 澶勭悊缂栬緫鎿嶄綔锛屾瀯寤哄湴鍧�鏁扮粍骞舵墦寮�缂栬緫寮圭獥
- */
-const handleEdit = (row) => {
- form.value = JSON.parse(JSON.stringify(row));
-
- // 鏋勫缓渚涘簲鍟嗕笟鍔″湴鍧�鏁扮粍
- if (form.value.bprovinceId && form.value.bdistrictId && form.value.bcityId) {
- form.value.bids = [row.bprovinceId, row.bcityId, row.bdistrictId];
- }
-
- // 鏋勫缓渚涘簲鍟嗚仈绯诲湴鍧�鏁扮粍
- if (form.value.cprovinceId && form.value.cdistrictId && form.value.ccityId) {
- form.value.cids = [row.cprovinceId, row.ccityId, row.cdistrictId];
- }
-
- // 鏋勫缓瀹㈡埛涓氬姟鍦板潃鏁扮粍
- if (
- form.value.businessCityId &&
- form.value.businessDistrictId &&
- form.value.businessProvinceId
- ) {
- form.value.bids = [
- row.businessProvinceId,
- row.businessCityId,
- row.businessDistrictId,
- ];
- }
-
- // 鏋勫缓瀹㈡埛鑱旂郴鍦板潃鏁扮粍
- if (form.value.cityId && form.value.districtId && form.value.provinceId) {
- form.value.cids = [row.provinceId, row.cityId, row.districtId];
- }
-
- addOrEdit.value = "edit";
- handleAddEdit(tabName.value);
-};
-/**
- * 鎵归噺鍒犻櫎澶勭悊
- * @description 鎵归噺鍒犻櫎閫変腑鐨勮褰�
- */
- const deleteApiMap = {
- management: delSupply,
- };
-const {handleDeleteBatch :handleDelete} = useDelete({
- deleteApi: () => deleteApiMap[tabName.value],
+// 鍒犻櫎澶勭悊
+const { handleDeleteBatch: handleDelete } = useDelete({
+ deleteApi: () => currentTabConfig.value.deleteApi,
selectedRows: selectedRows,
- getList: () => getList,
+ getList: () => getList(),
tableData: tableData,
total: total,
confirmText: "纭鍒犻櫎閫変腑鐨勬暟鎹悧锛�",
successText: "鍒犻櫎鎴愬姛",
-})
+});
-/**
- * 鍏抽棴寮圭獥澶勭悊
- */
-const handleBeforeClose = () => {
- dialogFormVisible.value = false;
- form.value = {};
-};
-
-/**
- * 瀵煎嚭鏁版嵁
- * @param {string} api - 瀵煎嚭鎺ュ彛璺緞
- * @param {string} name - 瀵煎嚭鏂囦欢鍚嶅墠缂�
- */
-const exportData = (api, name) => {
- proxy.download(
- api,
- { ...queryParams },
- `${name}${new Date().getTime()}.xlsx`
- );
- ElMessage.success("瀵煎嚭鏁版嵁锛�" + name);
-};
-// ===== 鏁版嵁鑾峰彇鍑芥暟 =====
-
-/**
- * 鏍规嵁褰撳墠鏍囩椤甸�夋嫨瀵瑰簲鐨凙PI鎺ュ彛
- * @returns {Promise} API璋冪敤Promise
- * @description 缁熶竴鐨勬帴鍙i�夋嫨鍑芥暟锛屾牴鎹爣绛鹃〉绫诲瀷璋冪敤瀵瑰簲鐨凙PI
- */
-const selectInterface = () => {
- const apiParams = {
- current: pageNum.value,
- pageSize: pageSizes.value,
- searchAll: queryParams.searchAll,
- };
-
- const apiMap = {
- management: () => getSupply(apiParams),
- customer: () => getCustomerList(apiParams),
- coal: () => getCoalInfo(apiParams),
- coalQualityMaintenance: () => getCoalPlanList(apiParams),
- coalMeiZhiZiDuanWeiHu: () => coalField(apiParams),
- };
-
- const apiFunction = apiMap[tabName.value];
- return apiFunction
- ? apiFunction()
- : Promise.reject(new Error("鏈壘鍒板搴旂殑API鎺ュ彛"));
-};
-
-/**
- * 鑾峰彇鍒楄〃鏁版嵁
- * @description 缁熶竴鐨勬暟鎹幏鍙栧嚱鏁帮紝澶勭悊鍔犺浇鐘舵�佸拰閿欒澶勭悊
- */
+// 鏁版嵁鑾峰彇
const getList = async () => {
try {
loading.value = true;
- const { data, code } = await selectInterface();
+ const apiParams = {
+ current: pageNum.value,
+ pageSize: pageSizes.value,
+ searchAll: queryParams.searchAll,
+ };
+
+ const { data, code } = await currentTabConfig.value.api(apiParams);
if (code !== 200) {
ElMessage.error("鑾峰彇鏁版嵁澶辫触锛�" + (data?.msg || "鏈煡閿欒"));
@@ -564,63 +270,15 @@
tableData.value = data.records || [];
total.value = data.total || 0;
} catch (error) {
- console.error("鑾峰彇鍒楄〃鏁版嵁澶辫触:", error);
ElMessage.error("鑾峰彇鏁版嵁澶辫触锛岃绋嶅悗鍐嶈瘯");
} finally {
loading.value = false;
}
};
-const handleView = (row) => {
- form.value = JSON.parse(JSON.stringify(row));
- // 鏋勫缓渚涘簲鍟嗕笟鍔″湴鍧�鏁扮粍
- if (form.value.bprovinceId && form.value.bdistrictId && form.value.bcityId) {
- form.value.bids = [row.bprovinceId, row.bcityId, row.bdistrictId];
- }
-
- // 鏋勫缓渚涘簲鍟嗚仈绯诲湴鍧�鏁扮粍
- if (form.value.cprovinceId && form.value.cdistrictId && form.value.ccityId) {
- form.value.cids = [row.cprovinceId, row.ccityId, row.cdistrictId];
- }
-
- // 鏋勫缓瀹㈡埛涓氬姟鍦板潃鏁扮粍
- if (
- form.value.businessCityId &&
- form.value.businessDistrictId &&
- form.value.businessProvinceId
- ) {
- form.value.bids = [
- row.businessProvinceId,
- row.businessCityId,
- row.businessDistrictId,
- ];
- }
-
- // 鏋勫缓瀹㈡埛鑱旂郴鍦板潃鏁扮粍
- if (form.value.cityId && form.value.districtId && form.value.provinceId) {
- form.value.cids = [row.provinceId, row.cityId, row.districtId];
- }
- addOrEdit.value = "viewRow";
- handleAddEdit(tabName.value);
-};
-
-
-// ===== 鐢熷懡鍛ㄦ湡閽╁瓙 =====
-
-/**
- * 缁勪欢鎸傝浇鍚庣殑鍒濆鍖栨搷浣�
- */
-onMounted(async () => {
- try {
- // 骞惰鎵ц鍒濆鍖栨搷浣�
- await Promise.all([
- handleTabClick({ props: { name: "management" } }),
- getUserList(),
- ]);
- } catch (error) {
- console.error("缁勪欢鍒濆鍖栧け璐�:", error);
- ElMessage.error("椤甸潰鍒濆鍖栧け璐ワ紝璇峰埛鏂伴噸璇�");
- }
+// 缁勪欢鎸傝浇
+onMounted(() => {
+ handleTabClick({ props: { name: "management" } });
});
</script>
@@ -644,7 +302,9 @@
flex-wrap: wrap;
gap: 10px;
}
-
+.app-container{
+ padding: 18px !important;
+}
/* 鍝嶅簲寮忚〃鏍� */
@media screen and (max-width: 768px) {
.table-toolbar {
diff --git a/src/views/equipment/management/mould/managementDialog.vue b/src/views/equipment/management/mould/managementDialog.vue
index f245902..b092d33 100644
--- a/src/views/equipment/management/mould/managementDialog.vue
+++ b/src/views/equipment/management/mould/managementDialog.vue
@@ -2,135 +2,118 @@
<div>
<el-dialog
v-model="dialogVisible"
- :title="title"
- width="600"
+ :title="addOrEdit === 'edit' ? '缂栬緫' : '鏂板' + '璁惧'"
+ width="800"
+ :title-style="{ textAlign: 'center' }"
:close-on-click-modal="false"
:before-close="handleClose"
>
<el-form
ref="formRef"
- style="max-width: 400px; margin: 0 auto"
:model="formData"
:rules="rules"
label-width="auto"
- > <el-form-item
- label="渚涘簲鍟嗗悕绉�"
- prop="supplierName"
- >
- <el-input
- v-model="formData.supplierName"
- placeholder="璇疯緭鍏ヤ緵璐у晢鍚嶇О"
- :disabled="isViewMode"
- />
- </el-form-item>
- <el-form-item
- label="绾崇◣浜鸿瘑鍒彿"
- prop="taxpayerId"
- >
- <el-input
- v-model="formData.taxpayerId"
- placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�"
- :disabled="isViewMode"
- />
- </el-form-item>
- <el-form-item
- label="缁忚惀鍦板潃"
- prop="bids"
- >
- <el-cascader
- placeholder="璇烽�夋嫨缁忚惀鍦板潃"
- size="default"
- :options="addressSelectOptions"
- v-model="formData.bids"
- :props="cascaderProps"
- @change="handleChange"
- :disabled="isViewMode"
- >
- </el-cascader>
- </el-form-item>
- <el-form-item
- label="璇︾粏鍦板潃"
- prop="businessAddress"
- >
- <el-input
- v-model="formData.businessAddress"
- placeholder="璇疯緭鍏ュ鎴疯缁嗗湴鍧�"
- :disabled="isViewMode"
- />
- </el-form-item>
- <el-form-item
- label="寮�鎴疯"
- prop="bankAccount"
- >
- <el-input
- v-model="formData.bankAccount"
- placeholder="璇疯緭鍏ュ紑鎴疯"
- :disabled="isViewMode"
- />
- </el-form-item>
- <el-form-item
- label="閾惰璐︽埛"
- prop="bankName"
- >
- <el-input
- v-model="formData.bankName"
- placeholder="璇疯緭鍏ラ摱琛岃处鎴�"
- :disabled="isViewMode"
- />
- </el-form-item>
- <el-form-item
- label="鑱旂郴浜�"
- prop="contactPerson"
- >
- <el-input
- v-model="formData.contactPerson"
- placeholder="璇疯緭鍏ヨ仈绯讳汉"
- :disabled="isViewMode"
- />
- </el-form-item>
- <el-form-item
- label="鑱旂郴浜虹數璇�"
- prop="contactPhone"
- >
- <el-input
- v-model="formData.contactPhone"
- placeholder="璇疯緭鍏ヨ仈绯讳汉鐢佃瘽"
- :disabled="isViewMode"
- />
- </el-form-item>
- <el-form-item
- label="鑱旂郴浜哄湴鍧�"
- prop="cids"
- >
- <el-cascader
- placeholder="璇烽�夋嫨鑱旂郴浜哄湴鍧�"
- size="default"
- :options="addressSelectOptions"
- v-model="formData.cids"
- :props="cascaderProps"
- @change="handleChange"
- :disabled="isViewMode"
- >
- </el-cascader>
- </el-form-item>
- <el-form-item
- label="鑱旂郴浜鸿缁嗗湴鍧�"
- prop="contactAddress"
- >
- <el-input
- v-model="formData.contactAddress"
- placeholder="璇疯緭鍏ヨ仈绯讳汉鍦板潃"
- :disabled="isViewMode"
- />
- </el-form-item>
+ >
+ <el-row :gutter="20">
+ <el-col :span="11">
+ <el-form-item label="璁惧缂栧彿" prop="equipmentId">
+ <el-input
+ v-model="formData.equipmentId"
+ placeholder="璇疯緭鍏ヨ澶囩紪鍙�"
+ :disabled="isViewMode"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="璁惧鍚嶇О" prop="equipmentName">
+ <el-input
+ v-model="formData.equipmentName"
+ placeholder="璇疯緭鍏ヨ澶囧悕绉�"
+ :disabled="isViewMode"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="鏁伴噺" prop="quantity">
+ <el-input
+ v-model="formData.quantity"
+ placeholder="璇疯緭鍏ユ暟閲�"
+ :disabled="isViewMode"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="瑙勬牸鍨嬪彿" prop="specification">
+ <el-input
+ v-model="formData.specification"
+ placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�"
+ :disabled="isViewMode"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="浣跨敤鐘舵��" prop="usageStatus">
+ <el-select
+ v-model="formData.usageStatus"
+ placeholder="璇烽�夋嫨浣跨敤鐘舵��"
+ :disabled="isViewMode"
+ >
+ <el-option label="鍚敤" value="1" />
+ <el-option label="绂佺敤" value="0" />
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="浣跨敤閮ㄩ棬" prop="usingDepartment">
+ <el-input
+ v-model="formData.usingDepartment"
+ placeholder="璇疯緭鍏ヤ娇鐢ㄩ儴闂�"
+ :disabled="isViewMode"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="瀛樻斁浣嶇疆" prop="storageLocation">
+ <el-input
+ v-model="formData.storageLocation"
+ placeholder="璇疯緭鍏ュ瓨鏀句綅缃�"
+ :disabled="isViewMode"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="閲囪喘浠锋牸" prop="purchasePrice">
+ <el-input
+ v-model="formData.purchasePrice"
+ placeholder="璇疯緭鍏ラ噰璐环鏍�"
+ :disabled="isViewMode"
+ style="width: 100%"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="11">
+ <el-form-item label="閲囪喘鏃ユ湡" prop="purchaseDate">
+ <el-date-picker
+ v-model="formData.purchaseDate"
+ type="date"
+ placeholder="璇烽�夋嫨閲囪喘鏃ユ湡"
+ size="default"
+ :value-format="'YYYY-MM-DD'"
+ style="width: 100%;"
+ :disabled="isViewMode"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
<el-form-item class="dialog-footer">
- <el-button v-if="addOrEdit === 'edit'" @click="resetForm"
- >閲嶇疆</el-button
- >
- <el-button v-if="addOrEdit !== 'edit'||addOrEdit.includes('viewRow')" @click="cancelForm"
- >鍙栨秷</el-button
- >
- <el-button type="primary" @click="submitForm" v-if="!isViewMode"> 纭畾</el-button>
+ <el-button v-if="!isViewMode" @click="cancelForm">鍙栨秷</el-button>
+ <el-button v-if="!isViewMode" type="primary" @click="submitForm">纭畾</el-button>
</el-form-item>
</el-form>
</el-dialog>
@@ -138,9 +121,8 @@
</template>
<script setup>
-import { ref, watch, defineProps, onMounted, computed, reactive } from "vue";
-import { addOrEditSupply } from "@/api/basicInformation/supplier";
-import { getAreaOptions } from "@/api/system/area.js";
+import { ref, watch, computed, reactive } from "vue";
+import { addOrEditEquipment } from "@/api/equipment/management/index.js";
const props = defineProps({
beforeClose: {
@@ -161,121 +143,83 @@
},
});
-// 璁$畻灞炴�э細缁熶竴鎺у埗鏄惁绂佺敤
-const isViewMode = computed(() => props.addOrEdit === 'viewRow');
-
const emit = defineEmits(["submit", "handleBeforeClose"]);
+
+// 璁$畻灞炴�э細缁熶竴鎺у埗鏄惁绂佺敤
+const isViewMode = computed(() => props.addOrEdit === "viewRow");
+
+// 琛ㄥ崟寮曠敤鍜屾暟鎹�
+const formRef = ref(null);
+const formData = ref({});
const copyForm = defineModel("copyForm", {
required: true,
type: Object,
-});
-onMounted(() => {
- fetchAreaOptions();
+ default: () => ({}),
});
-// 淇敼鏍戝舰閫夋嫨鐨勬槧灏�
-const cascaderProps = ref({
- value: "id", // 鎸囧畾value瀛楁涓篿d
- label: "label", // 鎸囧畾label瀛楁
- children: "children", // 鎸囧畾瀛愯妭鐐瑰瓧娈�
-});
-
-// 鍦板潃閫夋嫨鏁版嵁
-const addressSelectOptions = ref([]);
-const fetchAreaOptions = async () => {
- addressSelectOptions.value = [];
-
- const res = await getAreaOptions();
- if (res.code === 200) {
- addressSelectOptions.value = res.data;
- }
-};
-
-// 澶勭悊鍦板潃鏁版嵁杞崲
-function mapAddress(list) {
- return list.map((item) => ({
- value: item.id,
- label: item.name,
- children: item.children ? mapAddress(item.children) : undefined,
- }));
-}
-
-// 琛ㄥ崟寮曠敤
-const formRef = ref(null);
-// 琛ㄥ崟鏁版嵁
-const formData = ref({ ...props.form });
// 寮圭獥鍙鎬�
-const dialogVisible = defineModel("supplierDialogFormVisible", {
+const dialogVisible = defineModel("managementFormDialog", {
required: true,
type: Boolean,
});
-// 鐩戝惉澶栭儴浼犲叆鐨勮〃鍗曟暟鎹彉鍖�
-watch(
- () => props.form,
- (newVal) => {
- formData.value = { ...newVal };
- },
- { deep: true }
-);
-// 鐩戝惉鍐呴儴寮圭獥鐘舵�佸彉鍖�
+// 鐩戝惉澶栭儴浼犲叆鐨勮〃鍗曟暟鎹彉鍖栵紝鍚堝苟鐩戝惉閫昏緫
watch(
- () => dialogVisible.value,
- (newVal) => {
- emit("update:supplierDialogFormVisible", newVal);
- }
+ [() => props.form, () => props.addOrEdit],
+ ([newForm, newAddOrEdit]) => {
+ formData.value = { ...newForm };
+ },
+ { deep: true, immediate: true }
);
-// 澶勭悊鍦板潃閫夋嫨鍙樺寲
-const handleChange = (value) => {
- console.log(value);
-};
// 鎻愪氦琛ㄥ崟
const submitForm = async () => {
if (!formRef.value) return;
- await formRef.value.validate(async (valid, fields) => {
- if (valid) {
- const obj = ref({});
- if (props.title.includes("鏂板")) {
- let result = await addOrEditSupply({
- ...formData.value,
- });
- obj.value = {
- title: "鏂板",
- ...formData.value,
- result,
- };
+
+ await formRef.value.validate(async (valid) => {
+ if (!valid) return;
+
+ try {
+ const result = await addOrEditEquipment({ ...formData.value });
+ const title = props.title.includes("鏂板") ? "鏂板" : "缂栬緫";
+
+ if (result.code === 200 && result.msg) {
+ ElMessage.success(`${title}鎴愬姛锛�${result.msg}`);
+ emit("submit", { title, ...formData.value, result });
+ closeDialog();
} else {
- let result = await addOrEditSupply({
- ...formData.value,
- });
- obj.value = {
- title: "缂栬緫",
- ...formData.value,
- result,
- };
+ ElMessage.error(`${title}澶辫触锛�${result.msg}`);
}
- emit("submit", obj.value);
+ } catch (error) {
+ console.error("鎻愪氦澶辫触:", error);
+ ElMessage.error("鎻愪氦澶辫触锛岃閲嶈瘯");
}
});
};
-// 鍙栨秷琛ㄥ崟
-const cancelForm = () => {
- emit("update:supplierDialogFormVisible", false);
+
+// 鍏抽棴寮圭獥鐨勭粺涓�鏂规硶
+const closeDialog = () => {
+ emit("update:managementFormDialog", false);
formData.value = {};
};
+
+// 鍙栨秷琛ㄥ崟
+const cancelForm = () => {
+ closeDialog();
+};
+
// 閲嶇疆琛ㄥ崟
const resetForm = () => {
if (!formRef.value) return;
formData.value = JSON.parse(JSON.stringify(copyForm.value));
};
+
// 鍏抽棴寮圭獥
const handleClose = () => {
- // 瑙﹀彂鐖剁粍浠剁殑鍏抽棴鍑芥暟
emit("handleBeforeClose");
- emit("update:supplierDialogFormVisible", false);
+ closeDialog();
};
const rules = reactive({
- supplierName: [
+ equipmentId: [
{ required: true, message: "璇疯緭鍏ヤ緵璐у晢鍚嶇О", trigger: "blur" },
],
});
@@ -287,4 +231,11 @@
margin-top: 20px;
flex-direction: column;
}
+
+// 鍙负dialog澶撮儴鍔犱笅鍒掔嚎
+:deep(.el-dialog__header) {
+ border-bottom: 1px solid #e8eaec;
+ padding: 0 20px 10px 0;
+ margin-bottom: 14px;
+}
</style>
--
Gitblit v1.9.3