From 0d72650b6efe87097b117d9eac9a340227b483ed Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期三, 04 六月 2025 16:58:51 +0800
Subject: [PATCH] 后端联调供应商模块 完善页面

---
 src/views/basicInformation/index.vue                        |  433 +++++++-----------------
 src/api/basicInformation/coalQualityMaintenance.js          |   20 +
 src/views/basicInformation/mould/coal.vue                   |   37 +-
 src/api/basicInformation/coal.js                            |   21 +
 src/components/Table/EtableModify.vue                       |  278 ++++++++++++++++
 src/views/basicInformation/mould/supplier.vue               |  118 +++---
 src/api/basicInformation/supplier.js                        |   28 +
 src/components/Table/ETable.vue                             |    2 
 src/views/basicInformation/mould/coalQualityMaintenance.vue |   82 ++--
 9 files changed, 583 insertions(+), 436 deletions(-)

diff --git a/src/api/basicInformation/coal.js b/src/api/basicInformation/coal.js
new file mode 100644
index 0000000..9a62ed6
--- /dev/null
+++ b/src/api/basicInformation/coal.js
@@ -0,0 +1,21 @@
+// 鐓よ川缁存姢
+import request from '@/utils/request'
+
+// 鏌ヨ鐓よ川缁存姢鍒楄〃
+export function getCoalInfo(query) {
+    return request({
+        url: '/coalInfo/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 鏂板鎴栫紪杈戠叅璐ㄧ淮鎶�
+export function addOrEditCoalInfo(query) {
+    return request({
+        url: '/coalInfo/addOrEditCoalInfo',
+        method: 'post',
+        data: query
+    })
+}
+
diff --git a/src/api/basicInformation/coalQualityMaintenance.js b/src/api/basicInformation/coalQualityMaintenance.js
new file mode 100644
index 0000000..4322044
--- /dev/null
+++ b/src/api/basicInformation/coalQualityMaintenance.js
@@ -0,0 +1,20 @@
+// 鐓よ川缁存姢
+import request from '@/utils/request'
+
+// 鏌ヨ鐓よ川缁存姢鏁版嵁鍒楄〃
+export function getCoalQuality(query) {
+    return request({
+        url: '/coalQuality/list',
+        method: 'get',
+        params: query
+    })
+}
+// 鏂板鎴栫紪杈戠叅璐ㄧ淮鎶�
+export function addOrEditCoalQuality(query){
+    return request({
+        url: '/coalQuality/addOrEditCoalQuality',
+        method: 'post',
+        data: query
+    })
+}
+
diff --git a/src/api/basicInformation/supplier.js b/src/api/basicInformation/supplier.js
new file mode 100644
index 0000000..91cd2be
--- /dev/null
+++ b/src/api/basicInformation/supplier.js
@@ -0,0 +1,28 @@
+// 渚涘簲鍟嗘暟鎹�
+import request from '@/utils/request'
+
+// 鏌ヨ渚涘簲鍟嗘暟鎹垪琛�
+export function getSupply(query) {
+    return request({
+        url: '/supply/list',
+        method: 'get',
+        params: query
+    })
+}
+// 澧炴敼渚涘簲鍟嗘暟鎹�
+export function addOrEditSupply(query){
+    return request({
+        url: '/supply/addOrEditSupply',
+        method: 'post',
+        data: query
+    })
+}
+// 鍒犻櫎渚涘簲鍟嗘暟鎹�
+export function delSupply(query){
+    return request({
+        url: '/supply/delSupply',
+        method: 'delete',
+        data: query
+    })
+}
+
diff --git a/src/components/Table/ETable.vue b/src/components/Table/ETable.vue
index 51859fa..b6bc89e 100644
--- a/src/components/Table/ETable.vue
+++ b/src/components/Table/ETable.vue
@@ -2,7 +2,6 @@
     <el-table
       v-loading="loading"
       :data="tableData"
-      style="width: 100%"
       :border="border"
       :show-selection="showSelection"
       :max-height="maxHeight"
@@ -21,6 +20,7 @@
           v-bind="col"
           :show-overflow-tooltip="shouldShowTooltip(col, tableData)"
           :formatter="(row, column, cellValue) => cellValue == null || cellValue === '' ? '--' : cellValue"
+          align="center"
         >
           <template v-if="col.slot" #default>
             <slot></slot>
diff --git a/src/components/Table/EtableModify.vue b/src/components/Table/EtableModify.vue
new file mode 100644
index 0000000..d4678c6
--- /dev/null
+++ b/src/components/Table/EtableModify.vue
@@ -0,0 +1,278 @@
+<template>
+  <el-table v-loading="loading" :data="tableData" :border="border" :show-selection="showSelection" :height="height" :max-height="maxHeight"
+    :header-cell-style="{ background: '#EBEEF5', color: '#3D3D3D' }" @selection-change="handleSelectionChange"
+    @row-click="handleRowClick" @row-dblclick="handleRowDblClick" :row-class-name="tableRowClassName" @cell-click="handleCellClick" :max-width="maxWidth"
+    @export="handleExport">
+    <el-table-column v-if="showSelection" type="selection" width="55" align="center" />
+    <el-table-column v-if="showIndex" label="搴忓彿" type="index" width="60" align="center" /> <template
+      v-for="col in columns" :key="col.prop">
+      <el-table-column v-bind="col" :show-overflow-tooltip="shouldShowTooltip(col, tableData)" align="center"> <template
+          #default="scope">
+          <template v-if="col.slot">
+            <slot></slot>
+          </template>
+          <template v-else>
+            <div class="cell-edit" @dblclick="handleCellEdit(scope.row, col.prop)"
+              :class="{'editable': isColumnEditable(col.prop)}"> <span
+                v-if="!scope.row.editing || !scope.row.editing[col.prop]" class="cell-text">
+                {{ scope.row[col.prop] == null || scope.row[col.prop] === '' ? '--' : scope.row[col.prop] }}
+              </span>
+              <el-input v-else v-model="scope.row[col.prop]" size="small"
+                @focus="handleCellFocus(scope.row, col.prop, $event)" @blur="handleCellSave(scope.row, col.prop)"
+                @keyup.enter="handleCellSave(scope.row, col.prop)" class="cell-input" />
+            </div>
+          </template>
+        </template>
+      </el-table-column>
+    </template>
+    <!-- 鎿嶄綔鍒� -->
+    <el-table-column v-if="showOperations" :label="operationsLabel" :width="operationsWidth" fixed="right" align="center">
+      <template #default="scope">
+        <slot name="operations" :row="scope.row">
+          <el-button v-if="operations.includes('edit')" link type="primary" size="small"
+            @click="handleEdit(scope.row)">缂栬緫</el-button>
+          <!--            <el-button-->
+          <!--              v-if="operations.includes('delete')"-->
+          <!--              link-->
+          <!--              type="danger"-->
+          <!--              size="small"-->
+          <!--              @click="handleDelete(scope.row)"-->
+          <!--            >鍒犻櫎</el-button>-->
+        </slot>
+      </template>
+    </el-table-column>
+  </el-table>
+</template>
+  
+  <script setup>
+import { defineEmits, nextTick } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+const props = defineProps({
+  // 鑾峰彇琛屾牱寮�
+  tableRowClassName: {
+    type: Function,
+    default: () => ''
+  },
+  // 鑾峰彇楂樺害
+  height: {
+    type: [String, Number],
+    default: 'auto'
+  },
+  // 鏄惁鍏佽缂栬緫鍗曞厓鏍�
+  editableCells: {
+    type: Boolean,
+    default: true
+  },
+  // 鎸囧畾鍙紪杈戠殑鍒楋紝濡傛灉涓虹┖鏁扮粍鍒欒〃绀烘墍鏈夊垪閮戒笉鍙紪杈�
+  editableColumns: {
+    type: Array,
+    default: () => []
+  },
+  // 鏈�澶у搴�
+  maxWidth: {
+    type: [String, Number],
+    default: 'auto'
+  },
+  handleCellClick: {
+    type: Function,
+    default: () => { }
+  },
+  handleRowClick: {
+    type: Function,
+    default: () => { }
+  },
+  handleExport: {
+    type: Function,
+    default: () => { }
+  },
+  handleRowDblClick: {
+    type: Function,
+    default: () => { }
+  },
+  // 楂樺害
+  maxHeight: {
+    type: [String, Number],
+    default: 'auto'
+  },
+  // 鍔犺浇鐘舵��
+  loading: {
+    type: Boolean,
+    default: false
+  },
+  //   border
+  border: {
+    type: Boolean,
+    default: false
+  },
+  // 琛ㄦ牸鏁版嵁
+  tableData: {
+    type: Array,
+    default: () => []
+  },
+  // 鏄惁鏄剧ず閫夋嫨鍒�
+  showSelection: {
+    type: Boolean,
+    default: false
+  },
+  // 鏄惁鏄剧ず搴忓彿鍒�
+  showIndex: {
+    type: Boolean,
+    default: true
+  },
+  // 鍒楅厤缃�
+  columns: {
+    type: Array,
+    default: () => []
+  },
+  // 鏄惁鏄剧ず鎿嶄綔鍒�
+  showOperations: {
+    type: Boolean,
+    default: true
+  },
+  // 鎿嶄綔鍒楁爣绛�
+  operationsLabel: {
+    type: String,
+    default: '鎿嶄綔'
+  },
+  // 鎿嶄綔鍒楀搴�
+  operationsWidth: {
+    type: [String, Number],
+    default: 100
+  },
+  // 鏄剧ず鍝簺鎿嶄綔鎸夐挳
+  operations: {
+    type: Array,
+    default: () => ['edit', 'delete', 'export']
+  },
+  // 鍒犻櫎纭淇℃伅
+  deleteConfirmText: {
+    type: String,
+    default: '纭鍒犻櫎璇ヨ褰曪紵'
+  }
+})
+// 妫�鏌ュ垪鏄惁闇�瑕佹樉绀簍ooltip
+const shouldShowTooltip = (col, data) => {
+  // 濡傛灉娌℃湁prop锛岀洿鎺ヨ繑鍥瀎alse
+  if (!col.prop) return false;
+  // 妫�鏌ヨ鍒楀湪鎵�鏈夋暟鎹腑鏄惁鏈夐潪绌哄��
+  return data.some(row => row[col.prop] != null && row[col.prop] !== '');
+};
+
+// 澶勭悊鍗曞厓鏍肩紪杈�
+const handleCellEdit = (row, prop) => {
+  // 濡傛灉涓嶅厑璁哥紪杈戝崟鍏冩牸锛岀洿鎺ヨ繑鍥�
+  if (!props.editableCells) return;
+
+  // 濡傛灉鎸囧畾浜嗗彲缂栬緫鍒楋紝涓斿綋鍓嶅垪涓嶅湪鍙紪杈戝垪涓紝鍒欎笉鍏佽缂栬緫
+  if (props.editableColumns.length > 0 && !props.editableColumns.includes(prop)) return;
+
+  // 鍒濆鍖杄diting瀵硅薄
+  if (!row.editing) {
+    row.editing = {};
+  }
+  // 璁剧疆褰撳墠鍗曞厓鏍间负缂栬緫鐘舵��
+  row.editing[prop] = true;
+
+  // 鍦ㄤ笅涓�涓狣OM鏇存柊鍛ㄦ湡锛岃杈撳叆妗嗚幏寰楃劍鐐瑰苟閫変腑鍐呭
+  setTimeout(() => {
+    const inputElement = document.querySelector('.cell-edit .el-input__inner');
+    if (inputElement) {
+      inputElement.focus();
+      inputElement.select();
+    }
+  }, 10);
+}
+
+// 澶勭悊鍗曞厓鏍间繚瀛�
+const handleCellSave = (row, prop) => {
+  // 鍏抽棴缂栬緫鐘舵��
+  row.editing[prop] = false;
+  // 瑙﹀彂鍗曞厓鏍肩紪杈戝畬鎴愪簨浠�
+  emit('cell-edit', row, prop, row[prop]);
+}
+// 澶勭悊鍗曞厓鏍艰仛鐒︿簨浠�
+const handleCellFocus = (row, prop, event) => {
+  // 濡傛灉涓嶅厑璁哥紪杈戝崟鍏冩牸锛岀洿鎺ヨ繑鍥�
+  if (!props.editableCells) return;
+
+  // 濡傛灉鎸囧畾浜嗗彲缂栬緫鍒楋紝涓斿綋鍓嶅垪涓嶅湪鍙紪杈戝垪涓紝鍒欎笉鍏佽缂栬緫
+  if (props.editableColumns.length > 0 && !props.editableColumns.includes(prop)) return;
+
+  // 鍒濆鍖杄diting瀵硅薄
+  if (!row.editing) {
+    row.editing = {};
+  }
+  // 璁剧疆褰撳墠鍗曞厓鏍间负缂栬緫鐘舵��
+  row.editing[prop] = true;
+
+  // 鑷姩鍏ㄩ�夎緭鍏ユ鍐呭
+  if (event && event.target) {
+    event.target.select();
+  }
+}
+// 鍒ゆ柇鍒楁槸鍚﹀彲缂栬緫
+const isColumnEditable = (prop) => {
+  if (props.editableColumns.length === 0) {
+    return props.editableCells;
+  }
+  return props.editableColumns.includes(prop);
+}
+
+// 澶勭悊閫夋嫨鍙樺寲銆佺紪杈戙�佸垹闄ゅ拰瀵煎嚭鎿嶄綔
+const emit = defineEmits(['selection-change', 'edit', 'delete', 'export', 'cell-edit'])
+const handleSelectionChange = (selection) => {
+  emit('selection-change', selection)
+}
+const handleEdit = (row) => {
+  emit('edit', row)
+}
+const handleExport = (row) => {
+  emit('export', row)
+}
+  </script>
+  <style scoped lang="scss">
+.el-table {
+    margin: 20px 0 !important;
+  }
+  
+  :deep(.el-table th) {
+    background-color: #f5f7fa;
+  }
+  
+  :deep(.cell-edit) {
+    width: 100%;
+    height: 100%;
+    position: relative;
+  }
+  
+  :deep(.cell-edit .cell-text) {
+    width: 100%;
+    display: block;
+  }
+  
+  :deep(.cell-edit.editable:hover .cell-text) {
+    color: #409EFF;
+    cursor: pointer;
+  }
+  
+  :deep(.cell-input) {
+    width: 80%;
+    max-width: 120px;
+    min-width: 60px;
+  }
+  
+  :deep(.cell-input .el-input__inner) {
+    border-radius: 4px;
+    text-align: center;
+    transition: all 0.2s;
+  }
+  
+  
+  /* 鍝嶅簲寮忔牱寮� */
+  @media screen and (max-width: 768px) {
+    :deep(.el-table) {
+      width: 100%;
+      overflow-x: auto;
+    }
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/basicInformation/index.vue b/src/views/basicInformation/index.vue
index 9a35c6a..e2007e9 100644
--- a/src/views/basicInformation/index.vue
+++ b/src/views/basicInformation/index.vue
@@ -1,119 +1,43 @@
 <template>
-  <div class="app-container">
-          <el-form :inline="true" :model="queryParams" class="search-form">
-        <el-form-item label="鎼滅储">
-          <el-input
-            v-model="queryParams.searchText"
-            placeholder="璇疯緭鍏ュ叧閿瘝"
-            clearable
-          />
-        </el-form-item>
-        <el-form-item label="渚涘簲鍟嗗悕绉�">
-          <el-input
-            v-model="queryParams.supplierName"
-            placeholder="璇疯緭鍏�"
-            clearable
-          />
-        </el-form-item>
-        <el-form-item label="缁熶竴浜鸿瘑鍒彿">
-          <el-input
-            v-model="queryParams.identifyNumber"
-            placeholder="璇疯緭鍏�"
-            clearable
-          />
-        </el-form-item>
-        <el-form-item label="缁忚惀鍦板潃">
-          <el-input
-            v-model="queryParams.address"
-            placeholder="璇疯緭鍏�"
-            clearable
-          />
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" @click="handleQuery">鏌ヨ</el-button>
-          <el-button @click="resetQuery">閲嶇疆</el-button>
-        </el-form-item>
-      </el-form>
+  <div>
+    <el-form :inline="true" :model="queryParams" class="search-form">
+      <el-form-item label="渚涘簲鍟嗗悕绉�">
+        <el-input v-model="queryParams.searchAll" placeholder="璇疯緭鍏ュ叧閿瘝" clearable />
+      </el-form-item>
+  
+      <el-form-item>
+        <el-button type="primary" @click="getList">鏌ヨ</el-button>
+        <el-button @click="resetQuery">閲嶇疆</el-button>
+      </el-form-item>
+    </el-form>
     <el-card>
       <!-- 鏍囩椤� -->
-      <el-tabs
-        v-model="activeTab"
-        class="info-tabs"
-        @tab-click="handleTabClick"
-      >
-        <el-tab-pane
-          v-for="tab in tabs"
-          :key="tab.name"
-          :label="tab.label"
-          :name="tab.name"
-        />
+      <el-tabs v-model="activeTab" class="info-tabs" @tab-click="handleTabClick">
+        <el-tab-pane v-for="tab in tabs" :key="tab.name" :label="tab.label" :name="tab.name" />
       </el-tabs>
-
+  
       <!-- 鎿嶄綔鎸夐挳鍖� -->
       <el-row :gutter="24" class="table-toolbar">
-        <el-button type="primary" :icon="Plus" @click="handleAdd"
-          >鏂板缓</el-button
-        >
+        <el-button type="primary" :icon="Plus" @click="handleAdd">鏂板缓</el-button>
         <el-button type="danger" :icon="Delete" @click="handleDelete">鍒犻櫎</el-button>
         <el-button type="info" :icon="Download" @click="handleExport">瀵煎嚭</el-button>
-      </el-row> 
+      </el-row>
       <!-- 琛ㄦ牸缁勪欢 -->
       <div>
-        <data-table
-          :loading="loading"
-          :table-data="tableData"
-          :columns="columns"
-          @selection-change="handleSelectionChange"
-          @edit="handleEdit"
-          @delete="handleDeleteSuccess"
-          :show-selection="true"
-          :border="true"
-          :maxHeight="480"
-        />
-      </div>
-      <pagination
-        v-if="total>0"
-        :page-num="pageNum"
-        :page-size="pageSize"
-        :total="total"
-        @pagination="handleQuery"
-        :layout="'total, prev, pager, next, jumper'"
-      />
-      <Supplier
-        v-if="tabName === 'supplier'"
-        v-model:supplierDialogFormVisible="dialogFormVisible"
-        :form="form"
-        :title="title"
-        @submit="handleSubmit"
-        @beforeClose="handleBeforeClose"
-        @update:dialogFormVisible="handleDialogFormVisible"
-        :addOrEdit="addOrEdit"
-      />
-      <Customer
-        v-if="tabName === 'customer'"
-        v-model:customerDialogFormVisible="dialogFormVisible"
-        :form="form"
-        :title="title"
-        @submit="handleSubmit"
-        :addOrEdit="addOrEdit"
-        @beforeClose="handleBeforeClose"
-      />
-      <Coal
-        v-if="tabName === 'coal'"
-        v-model:coalDialogFormVisible="dialogFormVisible"
-        :form="form"
-        :title="title"
-        :addOrEdit="addOrEdit"
-        @submit="handleSubmit"
-      />
-      <coalQualityMaintenance
-        v-if="tabName === 'coalQualityMaintenance'"
-        v-model:coalQualityMaintenanceDialogFormVisible="dialogFormVisible"
-        :form="form"
-        :title="title"
-        :addOrEdit="addOrEdit"
-        @submit="handleSubmit"
-      />
+        <data-table :loading="loading" :table-data="tableData" :columns="columns"
+          @selection-change="handleSelectionChange" @edit="handleEdit" :show-selection="true" :border="true" />
+      </div>      <pagination v-if="total>0" :page="pageNum" :limit="pageSizes" :total="total" @pagination="handPagination"
+        :layout="'total, prev, pager, next, jumper'" />
+      <Supplier v-if="tabName === 'supplier'" v-model:supplierDialogFormVisible="dialogFormVisible" :form="form"
+        :title="title" @submit="handleSubmit" @beforeClose="handleBeforeClose"
+        @update:dialogFormVisible="handleDialogFormVisible" :addOrEdit="addOrEdit" />
+      <Customer v-if="tabName === 'customer'" v-model:customerDialogFormVisible="dialogFormVisible" :form="form"
+        :title="title" @submit="handleSubmit" :addOrEdit="addOrEdit" @beforeClose="handleBeforeClose" />
+      <Coal v-if="tabName === 'coal'" v-model:coalDialogFormVisible="dialogFormVisible" :form="form" :title="title"
+        :addOrEdit="addOrEdit" @submit="handleSubmit" />
+      <coalQualityMaintenance v-if="tabName === 'coalQualityMaintenance'"
+        v-model:coalQualityMaintenanceDialogFormVisible="dialogFormVisible" :form="form" :title="title"
+        :addOrEdit="addOrEdit" @submit="handleSubmit" />
     </el-card>
   </div>
 </template>
@@ -129,6 +53,9 @@
 import Coal from "./mould/coal.vue";
 import coalQualityMaintenance from "./mould/coalQualityMaintenance.vue";
 const { proxy } = getCurrentInstance()
+import { getSupply, addOrEditSupply, delSupply } from "@/api/basicInformation/supplier.js";
+import { getCoalInfo, addOrEditCoalInfo } from "@/api/basicInformation/coal.js";
+import { getCoalQuality, addOrEditCoalQuality } from "@/api/basicInformation/coalQualityMaintenance.js";
 // 寮圭獥
 const coalQualityMaintenanceDialogFormVisible = ref(false);
 const customerDialogFormVisible = ref(false);
@@ -144,7 +71,7 @@
 const loading = ref(false);
 const total = ref(0);
 const pageNum = ref(1);
-const pageSize = ref(10);
+const pageSizes = ref(10);
 const activeTab = ref("supplier");
 const selectedRows = ref([]);
 // 鏌ヨ鍙傛暟
@@ -169,25 +96,22 @@
 const addOrEdit = ref("add");
 // 琛ㄦ牸鏁版嵁
 const tableData = ref([]);
-// 鏂规硶瀹氫箟
+// 鏌ヨ鏂规硶
 const handleQuery = () => {
-  loading.value = true;
-  setTimeout(() => {
-    loading.value = false;
-  }, 500);
+
 };
 // supplier 渚涘簲鍟嗘暟鎹�
 const supplierColumns = ref([
   { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 200 },
-  { prop: "identifyNumber", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 120 },
-  { prop: "address", label: "缁忚惀鍦板潃", minWidth: 150 },
-  { prop: "detailedaddress", label: "璇︾粏鍦板潃", minWidth: 150 },
-  { prop: "bank", label: "寮�鎴疯", minWidth: 120 },
-  { prop: "bankAccount", label: "閾惰璐﹀彿", minWidth: 150 },
-  { prop: "contacts", label: "鑱旂郴浜�", minWidth: 100 },
+  { prop: "taxpayerId", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 120 },
+  { prop: "businessAddress", label: "缁忚惀鍦板潃", minWidth: 150 },
+  { prop: "bids", label: "璇︾粏鍦板潃", minWidth: 150 },
+  { prop: "bankAccount", label: "寮�鎴疯", minWidth: 120 },
+  { prop: "bankName", label: "閾惰璐﹀彿", minWidth: 150 },
+  { prop: "contactPerson", label: "鑱旂郴浜�", minWidth: 100 },
   { prop: "contactAddress", label: "鑱旂郴鍦板潃", minWidth: 150 },
   { prop: "maintainer", label: "缁存姢浜�", minWidth: 100 },
-  { prop: "maintainDate", label: "缁存姢鏃ユ湡", minWidth: 100 },
+  { prop: "createTime", label: "缁存姢鏃ユ湡", minWidth: 100 },
 ]);
 // customer 瀹㈡埛鏁版嵁
 const customerColumns = ref([
@@ -205,7 +129,7 @@
 // coal 鐓ょ鏁版嵁
 const coalColumns = ref([
   { prop: "coalName", label: "鐓ょ鍚嶇О", minWidth: 200 },
-  { prop: "maintainer", label: "缁存姢浜�", minWidth: 120 },
+  { prop: "maintainerId", label: "缁存姢浜�", minWidth: 120 },
   { prop: "maintenanceDate", label: "缁存姢鏃ユ湡", minWidth: 150 },
 ]);
 // coalQualityMaintenance 鐓よ川缁存姢鏁版嵁
@@ -222,42 +146,41 @@
 // 鏍囩椤电偣鍑�
 const handleTabClick = (tab) => {
   form.value = {};
-  getList();
   addOrEdit.value = "add";
   loading.value = true;
   tabName.value = tab.props.name;
   tableData.value = [];
-  getList();
   switch (tabName.value) {
     case "supplier":
       columns.value = supplierColumns.value;
       dialogFormVisible.value = supplierDialogFormVisible.value;
+      getList("supplier");
       break;
     case "customer":
       columns.value = customerColumns.value;
       dialogFormVisible.value = customerDialogFormVisible.value;
+      getList("customer");
+
       break;
     case "coal":
       columns.value = coalColumns.value;
       dialogFormVisible.value = coalDialogFormVisible.value;
+      getList("coal");
       break;
     case "coalQualityMaintenance":
       columns.value = coalQualityMaintenanceColumns.value;
       dialogFormVisible.value = coalQualityMaintenanceDialogFormVisible.value;
+      getList("coalQualityMaintenance");
       break;
   }
-  setTimeout(() => {
-    loading.value = false;
-  }, 500);
 };
 // 閲嶇疆鏌ヨ
 const resetQuery = () => {
   Object.keys(queryParams).forEach((key) => {
-    if (key !== "pageNum" && key !== "pageSize") {
+    if (key !== "pageNum" && key !== "pageSizes") {
       queryParams[key] = "";
     }
   });
-  handleQuery();
 };
 // 鏂板
 const handleAdd = () => {
@@ -295,16 +218,22 @@
   form.value = {};
   dialogFormVisible.value = true;
 };
-// 鎻愪氦琛ㄥ崟
-const handleSubmit = () => {
-  // 鎷垮埌鎻愪氦鏁版嵁
-  dialogFormVisible.value = false;
-  if (addOrEdit.value === "add") {
-    ElMessage.success("鏂板鎴愬姛锛�" + copyForm.value.supplierName);
-  } else {
-    ElMessage.success("缂栬緫鎴愬姛锛�" + copyForm.value.supplierName);
-  }
+// 鍒嗛〉
+const handPagination = (val) => {
+  console.log("鍒嗛〉鍙傛暟锛�", val);
+  pageNum.value = val.page;
+  pageSizes.value = val.limit;
   getList();
+};
+// 鎻愪氦琛ㄥ崟
+const handleSubmit = async (val) => {
+  console.log(val)
+  if (val.code !== 200) {
+    ElMessage.error("鎿嶄綔澶辫触锛�" + result.msg);
+    return;
+  }
+  ElMessage.success("鏂板鎴愬姛锛�" + result.msg);
+  dialogFormVisible.value = false;
 };
 const handleDialogFormVisible = (value) => {
   dialogFormVisible.value = value;
@@ -315,9 +244,9 @@
 };
 // 缂栬緫
 const handleEdit = (row) => {
-    form.value = JSON.parse(JSON.stringify(row));
-    addOrEdit.value = "edit";
-    handleAddEdit(tabName.value);
+  form.value = JSON.parse(JSON.stringify(row));
+  addOrEdit.value = "edit";
+  handleAddEdit(tabName.value);
 };
 // 鎵归噺鍒犻櫎
 const handleDelete = () => {
@@ -325,29 +254,30 @@
     ElMessage.warning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
     return;
   }
+  let arr = reactive([]);
+  selectedRows.value.forEach(element => {
+    return arr.push(element.id);
+  });
+  console.log("閫変腑鐨勬暟鎹甀D锛�", arr);
   ElMessageBox.confirm("纭畾鍒犻櫎閫変腑鐨勬暟鎹悧锛�", "鎻愮ず", {
     confirmButtonText: "纭畾",
     cancelButtonText: "鍙栨秷",
     type: "warning",
   })
-    .then(() => {
-      ElMessage.success("鍒犻櫎鎴愬姛锛屽叡鍒犻櫎" + selectedRows.value.length + "鏉℃暟鎹�");
-      selectedRows.value.forEach((row) => {
-        tableData.value = tableData.value.filter(
-          (item) => item !== row
-        );
-      });
-      total.value = tableData.value.length;
-      // 娓呯┖閫変腑琛�
-      selectedRows.value = [];
-  }).catch(() => {
-    ElMessage.info("宸插彇娑堝垹闄ゆ搷浣�");
-  });
+    .then(async () => {
+      try {
+        let res = await delSupply(arr)
+        console.log(res)
+        selectedRows.value = [];
+        getlist()
+      } catch {
+        ElMessage.error("鍒犻櫎澶辫触锛岃绋嶅悗鍐嶈瘯");
+        return;
+      }
+    }).catch(() => {
+      ElMessage.info("宸插彇娑堝垹闄ゆ搷浣�");
+    });
 }
-// 琛ㄦ牸鍒犻櫎
-const handleDeleteSuccess = (row) => {
-  ElMessage.success("鍒犻櫎鎴愬姛锛�" + row.supplierName);
-};
 // 鍏抽棴寮圭獥
 const handleBeforeClose = () => {
   dialogFormVisible.value = false;
@@ -359,153 +289,39 @@
   }, `post_${new Date().getTime()}.xlsx`)
   ElMessage.success("瀵煎嚭鏁版嵁锛�" + row.supplierName);
 };
-const getList = () => {
+// 閫夋嫨鎺ュ彛
+const selectInterface = () => {
+  if (tabName.value === "supplier") {
+    return getSupply({
+      current: pageNum.value,
+      pageSize: pageSizes.value,
+      searchAll: queryParams.searchAll,
+    });
+  } else if (tabName.value === "customer") {
+    return getSupply({
+      current: pageNum.value,
+      pageSize: pageSizes.value,
+      ...queryParams
+    });
+  } else if (tabName.value === "coal") {
+    console.log(addOrEdit.value)
+    return getCoalInfo();
+  } else if (tabName.value === "coalQualityMaintenance") {
+    return getCoalQuality({
+      current: pageNum.value,
+      pageSize: pageSizes.value,
+      ...queryParams
+    });
+  }
+}
+const getList = async () => {
   loading.value = true;
-
-  setTimeout(() => {
-    // 鏆傛椂寮曞叆娴嬭瘯鏁版嵁
-    tableData.value = [
-      {
-        supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃",
-        identifyNumber: "123412123123123111",
-        address: "灞辫タ鐪�",
-        bank: "浜ら�氶摱琛�",
-        bankAccount: "901234567890123456",
-        contacts: "鏉庨洩鑺�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鏉庨洩鑺�",
-        maintainDate: "2022-09-26",
-        contactsPhone: "19345678901",
-      },
-      {
-        supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃",
-        identifyNumber: "123412123123123111",
-        address: "灞辫タ鐪�",
-        bank: "浜ら�氶摱琛�",
-        bankAccount: "901234567890123456",
-        contacts: "鏉庨洩鑺�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鏉庨洩鑺�",
-        maintainDate: "2022-09-26",
-        contactsPhone: "19345678901",
-      },
-      {
-        supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃",
-        identifyNumber: "123412123123123111",
-        address: "灞辫タ鐪�",
-        bank: "浜ら�氶摱琛�",
-        bankAccount: "901234567890123456",
-        contacts: "鏉庨洩鑺�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鏉庨洩鑺�",
-        maintainDate: "2022-09-26",
-        contactsPhone: "19345678901",
-      },
-      {
-        supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�",
-        identifyNumber: "042-26881314",
-        address: "姹熻タ鐪�",
-        bank: "骞冲畨閾惰",
-        bankAccount: "123456789012345678",
-        contacts: "鍛ㄧ櫧鐜�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鍛ㄧ櫧鐜�",
-        maintainDate: "2022-08-29",
-      },
-      {
-        supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃",
-        identifyNumber: "019-65851198",
-        address: "灞辫タ鐪�",
-        bank: "浜ら�氶摱琛�",
-        bankAccount: "901234567890123456",
-        contacts: "鏉庨洩鑺�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鏉庨洩鑺�",
-        maintainDate: "2022-09-26",
-      },
-      {
-        supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�",
-        identifyNumber: "042-26881314",
-        address: "姹熻タ鐪�",
-        bank: "骞冲畨閾惰",
-        bankAccount: "123456789012345678",
-        contacts: "鍛ㄧ櫧鐜�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鍛ㄧ櫧鐜�",
-        maintainDate: "2022-08-29",
-      },
-      {
-        supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃",
-        identifyNumber: "019-65851198",
-        address: "灞辫タ鐪�",
-        bank: "浜ら�氶摱琛�",
-        bankAccount: "901234567890123456",
-        contacts: "鏉庨洩鑺�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鏉庨洩鑺�",
-        maintainDate: "2022-09-26",
-      },
-      {
-        supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�",
-        identifyNumber: "042-26881314",
-        address: "姹熻タ鐪�",
-        bank: "骞冲畨閾惰",
-        bankAccount: "123456789012345678",
-        contacts: "鍛ㄧ櫧鐜�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鍛ㄧ櫧鐜�",
-        maintainDate: "2022-08-29",
-      },
-      {
-        supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃",
-        identifyNumber: "019-65851198",
-        address: "灞辫タ鐪�",
-        bank: "浜ら�氶摱琛�",
-        bankAccount: "901234567890123456",
-        contacts: "鏉庨洩鑺�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鏉庨洩鑺�",
-        maintainDate: "2022-09-26",
-      },
-      {
-        supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�",
-        identifyNumber: "042-26881314",
-        address: "姹熻タ鐪�",
-        bank: "骞冲畨閾惰",
-        bankAccount: "123456789012345678",
-        contacts: "鍛ㄧ櫧鐜�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鍛ㄧ櫧鐜�",
-        maintainDate: "2022-08-29",
-      },
-      {
-        supplierName: "涓浗鍐堕噾绉戝伐鑲′唤鏈夐檺鍏徃",
-        identifyNumber: "019-65851198",
-        address: "灞辫タ鐪�",
-        bank: "浜ら�氶摱琛�",
-        bankAccount: "901234567890123456",
-        contacts: "鏉庨洩鑺�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鏉庨洩鑺�",
-        maintainDate: "2022-09-26",
-      },
-      {
-        supplierName: "浜ら�氶摱琛岃偂浠芥湁闄愬叕鍙�",
-        identifyNumber: "042-26881314",
-        address: "姹熻タ鐪�",
-        bank: "骞冲畨閾惰",
-        bankAccount: "123456789012345678",
-        contacts: "鍛ㄧ櫧鐜�",
-        contactAddress: "XX鐪乆X甯俋X鍖篨X璺�",
-        maintainer: "鍛ㄧ櫧鐜�",
-        maintainDate: "2022-08-29",
-      },
-    ];
-    total.value = tableData.value.length;
-    loading.value = false;
-  }, 500);
+  let { data, code } = await selectInterface()
+  console.log(data)
+  tableData.value = data.records;
+  total.value = data.total;
+  loading.value = false;
 };
-getList();
 </script>
 
 <style scoped>
@@ -515,37 +331,46 @@
     width: 50%;
   }
 }
+
 @media screen and (min-width: 1200px) {
   .search-form :deep(.el-form-item) {
     width: 16%;
   }
 }
+
 .table-toolbar {
   margin-bottom: 20px;
   display: flex;
   flex-wrap: wrap;
   gap: 10px;
 }
+
 /* 鍝嶅簲寮忚〃鏍� */
 @media screen and (max-width: 768px) {
   .table-toolbar {
     flex-direction: column;
   }
+
   .table-toolbar .el-button {
     width: 100%;
   }
 }
+
 /* 琛ㄦ牸宸ュ叿鏍� */
-.table-toolbar, .table-toolbar > * {
+.table-toolbar,
+.table-toolbar>* {
   margin: 0 0 0 0 !important;
 }
-.table-toolbar{
+
+.table-toolbar {
   margin-bottom: 20px !important;
 }
+
 .el-form--inline .el-form-item {
   margin-right: 25px;
 }
-.main-container{
+
+.main-container {
   background: red !important;
 }
 </style>
\ No newline at end of file
diff --git a/src/views/basicInformation/mould/coal.vue b/src/views/basicInformation/mould/coal.vue
index 0694d23..b31e8bb 100644
--- a/src/views/basicInformation/mould/coal.vue
+++ b/src/views/basicInformation/mould/coal.vue
@@ -3,7 +3,7 @@
         <el-dialog
             v-model="dialogVisible"
             :title="title"
-            width="800"
+            width="500"
             :close-on-click-modal="false"
             :before-close="handleClose"
         >
@@ -14,26 +14,20 @@
                 :rules="rules"
                 label-width="auto"
             >
-                <el-form-item label="鍗¤儭" prop="supplierName">
+                <el-form-item label="鐓ょ鍚嶇О" prop="coal">
                     <el-input
-                        v-model="formData.supplierName"
-                        placeholder="璇疯緭鍏ヤ緵璐у晢鍚嶇О"
+                        v-model="formData.coal"
+                        placeholder="璇疯緭鍏ョ叅绉嶅悕绉�"
                     />
                 </el-form-item>
-                <el-form-item label="绾崇◣浜鸿瘑鍒彿" prop="identifyNumber">
+                <el-form-item label="缁存姢浜哄鍚�" prop="maintainerId">
                     <el-input
-                        v-model="formData.identifyNumber"
-                        placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�"
+                        v-model="formData.maintainerId"
+                        placeholder="璇疯緭鍏ョ淮鎶や汉濮撳悕"
                     />
                 </el-form-item>
-                <el-form-item label="缁忚惀鍦板潃" prop="address">
-                    <el-select v-model="formData.address" placeholder="璇烽�夋嫨缁忚惀鍦板潃">
-                        <el-option label="Zone one" value="shanghai" />
-                        <el-option label="Zone two" value="beijing" />
-                    </el-select>
-                </el-form-item>
-                <el-form-item label="閾惰璐︽埛" prop="bankAccount">
-                    <el-input v-model="formData.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" />
+                <el-form-item label="缁存姢鏃ユ湡" prop="maintenanceDate">
+                    <el-input v-model="formData.maintenanceDate" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" />
                 </el-form-item>
                 <el-form-item>
                     <el-button type="primary" @click="submitForm">
@@ -49,6 +43,7 @@
 
 <script setup>
 import { ref, watch ,defineProps } from 'vue'
+import { addOrEditCoalInfo } from '@/api/basicInformation/coal'
 
 const props = defineProps({
     beforeClose: {
@@ -91,9 +86,17 @@
 // 鎻愪氦琛ㄥ崟
 const submitForm = async () => {
     if (!formRef.value) return
-    await formRef.value.validate((valid, fields) => {
+    await formRef.value.validate(async (valid, fields) => {
         if (valid) {
-            emit('submit', formData.value)
+            formData.value.maintenanceDate = "2023-10-01" // 绀轰緥鏃ユ湡
+            let result = await addOrEditCoalInfo({
+                ...formData.value,
+            })
+            let obj = {
+                title: props.title,
+                result,
+            }
+            emit('submit', obj)
         }
     })
 }
diff --git a/src/views/basicInformation/mould/coalQualityMaintenance.vue b/src/views/basicInformation/mould/coalQualityMaintenance.vue
index e42754b..0b87d1d 100644
--- a/src/views/basicInformation/mould/coalQualityMaintenance.vue
+++ b/src/views/basicInformation/mould/coalQualityMaintenance.vue
@@ -14,49 +14,51 @@
         :rules="rules"
         label-width="auto"
       >
-        <el-form-item label="瀹㈡埛鍚嶇О" prop="supplierName">
+        <el-form-item label="鐓ょ绫诲瀷" prop="coal">
           <el-input
-            v-model="formData.supplierName"
+            v-model="formData.coal"
             placeholder="璇疯緭鍏ヤ緵璐у晢鍚嶇О"
           />
         </el-form-item>
-        <el-form-item label="绾崇◣浜鸿瘑鍒彿" prop="identifyNumber">
+        <el-form-item label="鍏ㄦ按鍚噺鐧惧垎姣� (%)" prop="totalMoisture">
           <el-input
-            v-model="formData.identifyNumber"
-            placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�"
+            v-model="formData.totalMoisture"
+            placeholder="璇疯緭鍏ュ叏姘村惈閲忕櫨鍒嗘瘮"
           />
         </el-form-item>
-        <el-form-item label="缁忚惀鍦板潃" prop="address">
-          <el-cascader
-            placeholder="璇烽�夋嫨缁忚惀鍦板潃"
-            size="default"
-            :options="addressSelectOptions"
-            v-model="formData.address"
-            @change="handleChange"
-          >
-          </el-cascader>
-        </el-form-item>
-        <el-form-item label="璇︾粏鍦板潃" prop="addressDetail">
+        <el-form-item label="鍏ㄦ按鍚噺鐧惧垎姣� (%)" prop="analysisMoisture">
           <el-input
-            v-model="formData.addressDetail"
+            v-model="formData.analysisMoisture"
+            placeholder="璇疯緭鍏ュ叏姘村惈閲忕櫨鍒嗘瘮"
+          />
+        </el-form-item>
+        <el-form-item label="鍏ㄦ按鍚噺鐧惧垎姣� (%)" prop="volatileMatter">
+          <el-input
+            v-model="formData.volatileMatter"
+            placeholder="璇疯緭鍏ュ叏姘村惈閲忕櫨鍒嗘瘮"
+          />
+        </el-form-item>
+        <el-form-item label="鍥哄畾纰崇櫨鍒嗘瘮 (%)" prop="fixedCarbon">
+          <el-input
+            v-model="formData.fixedCarbon"
             placeholder="璇疯緭鍏ュ鎴疯缁嗗湴鍧�"
           />
         </el-form-item>
-        <el-form-item label="閾惰璐︽埛" prop="bankAccount">
+        <el-form-item label="浣庝綅鍙戠儹閲忥紙鍗曚綅锛氬崈鍗�/鍗冨厠锛�" prop="lowerHeatValue">
           <el-input
-            v-model="formData.bankAccount"
+            v-model="formData.lowerHeatValue"
             placeholder="璇疯緭鍏ラ摱琛岃处鎴�"
           />
         </el-form-item>
-        <el-form-item label="寮�鎴疯" prop="bank">
-          <el-input v-model="formData.bank" placeholder="璇疯緭鍏ュ紑鎴疯" />
+        <el-form-item label="楂樹綅鍙戠儹閲忥紙鍗曚綅锛氬崈鍗�/鍗冨厠锛�" prop="higherHeatValue">
+          <el-input v-model="formData.higherHeatValue" placeholder="璇疯緭鍏ュ紑鎴疯" />
         </el-form-item>
-        <el-form-item label="鑱旂郴浜�" prop="contacts">
-          <el-input v-model="formData.contacts" placeholder="璇疯緭鍏ヨ仈绯讳汉" />
+        <el-form-item label="鐏板垎鐧惧垎姣� (%)" prop="ashContent">
+          <el-input v-model="formData.ashContent" placeholder="璇疯緭鍏ヨ仈绯讳汉" />
         </el-form-item>
-        <el-form-item label="鑱旂郴浜虹數璇�" prop="contactsPhone">
+        <el-form-item label="纭惈閲忕櫨鍒嗘瘮 (%)" prop="sulfurContent">
           <el-input
-            v-model="formData.contactsPhone"
+            v-model="formData.sulfurContent"
             placeholder="璇疯緭鍏ヨ仈绯讳汉鐢佃瘽"
           />
         </el-form-item>
@@ -77,6 +79,7 @@
 <script setup>
 import { ref, watch, defineProps, onMounted } from "vue";
 import addressList from "@/api/jsonApi/areaList.json";
+import { addOrEditCoalQuality } from "@/api/basicInformation/coalQualityMaintenance.js";
 const props = defineProps({
   beforeClose: {
     type: Function,
@@ -143,9 +146,12 @@
 // 鎻愪氦琛ㄥ崟
 const submitForm = async () => {
   if (!formRef.value) return;
-  await formRef.value.validate((valid, fields) => {
+  await formRef.value.validate(async (valid, fields) => {
     if (valid) {
-      emit("submit", formData.value);
+
+      let result = await addOrEditCoalQuality({...formData.value});
+      console.log(result);
+      // emit("submit", formData.value);
     }
   });
 };
@@ -166,26 +172,8 @@
   emit("update:coalQualityMaintenanceDialogFormVisible", false);
 };
 const rules = reactive({
-  supplierName: [
-    { required: true, message: "璇疯緭鍏ヤ緵璐у晢鍚嶇О", trigger: "blur" },
-  ],
-  identifyNumber: [
-    { required: true, message: "璇锋纭緭鍏ョ撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
-    { min: 17, max: 20, message: "璇疯緭鍏�17-20浣嶇撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
-  ],
-  address: [
-    {
-      required: true,
-      message: "璇烽�夋嫨缁忚惀鍦板潃",
-      trigger: "change",
-    },
-  ],
-  bankAccount: [{ required: true, message: "璇疯緭鍏ラ摱琛岃处鎴�", trigger: "blur" }],
-  bank: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
-  contacts: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
-  contactsPhone: [
-    { required: true, message: "璇疯緭鍏ヨ仈绯讳汉", trigger: "blur" },
-    { min: 11, max: 11, message: "璇疯緭鍏�11浣嶈仈绯讳汉鐢佃瘽", trigger: "blur" },
+  coal: [
+    { required: true, message: "璇疯緭鍏ョ叅绉嶅悕绉�", trigger: "blur" },
   ],
 });
 </script>
diff --git a/src/views/basicInformation/mould/supplier.vue b/src/views/basicInformation/mould/supplier.vue
index ae30965..5072173 100644
--- a/src/views/basicInformation/mould/supplier.vue
+++ b/src/views/basicInformation/mould/supplier.vue
@@ -1,73 +1,41 @@
 <template>
   <div>
-    <el-dialog
-      v-model="dialogVisible"
-      :title="title"
-      width="600"
-      :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-dialog v-model="dialogVisible" :title="title" width="600" :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="璇疯緭鍏ヤ緵璐у晢鍚嶇О"
-          />
+          <el-input v-model="formData.supplierName" placeholder="璇疯緭鍏ヤ緵璐у晢鍚嶇О" />
         </el-form-item>
-        <el-form-item label="绾崇◣浜鸿瘑鍒彿" prop="identifyNumber">
-          <el-input
-            v-model="formData.identifyNumber"
-            placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�"
-          />
+        <el-form-item label="绾崇◣浜鸿瘑鍒彿" prop="taxpayerId">
+          <el-input v-model="formData.taxpayerId" placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�" />
         </el-form-item>
-        <el-form-item label="缁忚惀鍦板潃" prop="address">
-          <el-cascader
-            placeholder="璇烽�夋嫨缁忚惀鍦板潃"
-            size="default"
-            :options="addressSelectOptions"
-            v-model="formData.address"
-            @change="handleChange"
-          >
+        <el-form-item label="缁忚惀鍦板潃" prop="bids">
+          <el-cascader placeholder="璇烽�夋嫨缁忚惀鍦板潃" size="default" :options="addressSelectOptions" v-model="formData.bids"
+            @change="handleChange">
           </el-cascader>
         </el-form-item>
-        <el-form-item label="璇︾粏鍦板潃" prop="addressDetail">
-          <el-input
-            v-model="formData.addressDetail"
-            placeholder="璇疯緭鍏ュ鎴疯缁嗗湴鍧�"
-          />
+        <el-form-item label="璇︾粏鍦板潃" prop="businessAddress">
+          <el-input v-model="formData.businessAddress" placeholder="璇疯緭鍏ュ鎴疯缁嗗湴鍧�" />
         </el-form-item>
-        <el-form-item label="閾惰璐︽埛" prop="bankAccount">
-          <el-input
-            v-model="formData.bankAccount"
-            placeholder="璇疯緭鍏ラ摱琛岃处鎴�"
-          />
+        <el-form-item label="寮�鎴疯" prop="bankAccount">
+          <el-input v-model="formData.bankAccount" placeholder="璇疯緭鍏ュ紑鎴疯" />
         </el-form-item>
-        <el-form-item label="寮�鎴疯" prop="bank">
-          <el-input v-model="formData.bank" placeholder="璇疯緭鍏ュ紑鎴疯" />
+        <el-form-item label="閾惰璐︽埛" prop="bankName">
+          <el-input v-model="formData.bankName" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" />
         </el-form-item>
-        <el-form-item label="鑱旂郴浜�" prop="contacts">
-          <el-input v-model="formData.contacts" placeholder="璇疯緭鍏ヨ仈绯讳汉" />
+        <el-form-item label="鑱旂郴浜�" prop="contactPerson">
+          <el-input v-model="formData.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉" />
         </el-form-item>
-        <el-form-item label="鑱旂郴浜虹數璇�" prop="contactsPhone">
-          <el-input
-            v-model="formData.contactsPhone"
-            placeholder="璇疯緭鍏ヨ仈绯讳汉鐢佃瘽"
-          />
+        <el-form-item label="鑱旂郴浜虹數璇�" prop="contactPhone">
+          <el-input v-model="formData.contactPhone" placeholder="璇疯緭鍏ヨ仈绯讳汉鐢佃瘽" />
+        </el-form-item>
+        <el-form-item label="鑱旂郴浜哄湴鍧�" prop="contactAddress">
+          <el-input v-model="formData.contactAddress" placeholder="璇疯緭鍏ヨ仈绯讳汉鍦板潃" />
         </el-form-item>
         <el-form-item>
           <el-button type="primary" @click="submitForm"> 纭畾 </el-button>
-          <el-button v-if="addOrEdit === 'edit'" @click="resetForm"
-            >閲嶇疆</el-button
-          >
-          <el-button v-if="addOrEdit === 'add'" @click="cancelForm"
-            >鍙栨秷</el-button
-          >
+          <el-button v-if="addOrEdit === 'edit'" @click="resetForm">閲嶇疆</el-button>
+          <el-button v-if="addOrEdit === 'add'" @click="cancelForm">鍙栨秷</el-button>
         </el-form-item>
       </el-form>
     </el-dialog>
@@ -77,11 +45,11 @@
 <script setup>
 import { ref, watch, defineProps, onMounted } from "vue";
 import addressList from "@/api/jsonApi/areaList.json";
-import imageUpload from "@/components/ImageUpload/index.vue";
+import { addOrEditSupply } from "@/api/basicInformation/supplier";
 const props = defineProps({
   beforeClose: {
     type: Function,
-    default: () => {},
+    default: () => { },
   },
   form: {
     type: Object,
@@ -99,7 +67,7 @@
 
 const emit = defineEmits(["submit", "handleBeforeClose"]);
 
-onMounted(()=>{
+onMounted(() => {
   addressSelectOptions.value = mapAddress(addressList);
 })
 // 鍦板潃閫夋嫨鏁版嵁
@@ -144,9 +112,25 @@
 // 鎻愪氦琛ㄥ崟
 const submitForm = async () => {
   if (!formRef.value) return;
-  await formRef.value.validate((valid, fields) => {
+  await formRef.value.validate(async (valid, fields) => {
     if (valid) {
-      emit("submit", formData.value);
+      if(props.title.includes('鏂板')){
+        let result = await addOrEditSupply({
+        ...formData.value,
+      })
+      let obj = {
+        ...formData.value,
+        result
+      };
+      }else{
+        delete formData.value.createTime
+        delete formData.value.updateTime
+        let result = await addOrEditSupply({
+        ...formData.value,
+      })
+      console.log(result)
+      }
+        emit("submit", obj);
     }
   });
 };
@@ -170,21 +154,21 @@
   supplierName: [
     { required: true, message: "璇疯緭鍏ヤ緵璐у晢鍚嶇О", trigger: "blur" },
   ],
-  identifyNumber: [
+  taxpayerId: [
     { required: true, message: "璇锋纭緭鍏ョ撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
     { min: 17, max: 20, message: "璇疯緭鍏�17-20浣嶇撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
   ],
-  address: [
+  bids: [
     {
       required: true,
       message: "璇烽�夋嫨缁忚惀鍦板潃",
       trigger: "change",
     },
   ],
-  bankAccount: [{ required: true, message: "璇疯緭鍏ラ摱琛岃处鎴�", trigger: "blur" }],
-  bank: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
-  contacts: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
-  contactsPhone: [
+  bankName: [{ required: true, message: "璇疯緭鍏ラ摱琛岃处鎴�", trigger: "blur" }],
+  bankAccount: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
+  contactPerson: [{ required: true, message: "鑱旂郴浜�", trigger: "blur" }],
+  contactPhone: [
     { required: true, message: "璇疯緭鍏ヨ仈绯讳汉", trigger: "blur" },
     { min: 11, max: 11, message: "璇疯緭鍏�11浣嶈仈绯讳汉鐢佃瘽", trigger: "blur" },
   ],

--
Gitblit v1.9.3