From 1a73c77e1d14205014f6a77a8954de480d436c0e Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期四, 05 六月 2025 16:05:31 +0800
Subject: [PATCH] 联调基础模块信息-》供应商-》客户信息-》煤种信息 采购信息 联调
---
src/views/basicInformation/index.vue | 355 +++++++++++++--
src/views/procureMent/index.vue | 113 ++--
src/api/basicInformation/coalQualityMaintenance.js | 9
src/api/procureMent/index.js | 29 +
src/views/procureMent/components/ProductionDialog.vue | 8
src/views/basicInformation/mould/coal.vue | 99 +++-
src/api/basicInformation/coal.js | 14
src/api/basicInformation/customer.js | 27 +
src/api/tool/publicInterface.js | 9
src/views/basicInformation/mould/supplier.vue | 102 ++--
src/components/Table/ETable.vue | 331 +++++++-------
src/views/basicInformation/mould/customer.vue | 182 ++++---
12 files changed, 845 insertions(+), 433 deletions(-)
diff --git a/src/api/basicInformation/coal.js b/src/api/basicInformation/coal.js
index 9a62ed6..f519cfc 100644
--- a/src/api/basicInformation/coal.js
+++ b/src/api/basicInformation/coal.js
@@ -1,7 +1,7 @@
-// 鐓よ川缁存姢
+// 鐓ょ淇℃伅
import request from '@/utils/request'
-// 鏌ヨ鐓よ川缁存姢鍒楄〃
+// 鏌ヨ鐓ょ淇℃伅鍒楄〃
export function getCoalInfo(query) {
return request({
url: '/coalInfo/list',
@@ -10,7 +10,7 @@
})
}
-// 鏂板鎴栫紪杈戠叅璐ㄧ淮鎶�
+// 鏂板鎴栫紪杈戠叅绉嶄俊鎭�
export function addOrEditCoalInfo(query) {
return request({
url: '/coalInfo/addOrEditCoalInfo',
@@ -18,4 +18,12 @@
data: query
})
}
+// 鍒犻櫎鐓ょ淇℃伅鏁版嵁
+export function delCoalInfo(query) {
+ return request({
+ url: '/coalInfo/delCoalInfo',
+ method: 'delete',
+ data: query
+ })
+}
diff --git a/src/api/basicInformation/coalQualityMaintenance.js b/src/api/basicInformation/coalQualityMaintenance.js
index 4322044..6fdca98 100644
--- a/src/api/basicInformation/coalQualityMaintenance.js
+++ b/src/api/basicInformation/coalQualityMaintenance.js
@@ -17,4 +17,11 @@
data: query
})
}
-
+// 鍒犻櫎鐓よ川缁存姢鏁版嵁
+export function delCoalQuality(query){
+ return request({
+ url: '/coalQuality/delCoalQuality',
+ method: 'delete',
+ data: query
+ })
+}
diff --git a/src/api/basicInformation/customer.js b/src/api/basicInformation/customer.js
new file mode 100644
index 0000000..968ae42
--- /dev/null
+++ b/src/api/basicInformation/customer.js
@@ -0,0 +1,27 @@
+// 瀹㈡埛淇℃伅
+import request from '@/utils/request'
+
+// 鑾峰彇瀹㈡埛淇℃伅鍒楄〃
+export function getCustomerList(query) {
+ return request({
+ url: '/customer/list',
+ method: 'get',
+ params: query
+ })
+}
+// 鏂板鎴栫紪杈戝鎴蜂俊鎭垪琛�
+export function addOrEditCustomer(query){
+ return request({
+ url: '/customer/addOrEditCustomer',
+ method: 'post',
+ data: query
+ })
+}
+// 鍒犻櫎瀹㈡埛淇℃伅鍒楄〃
+export function delCustomer(query){
+ return request({
+ url: '/customer/delCustomer',
+ method: 'delete',
+ data: query
+ })
+}
diff --git a/src/api/procureMent/index.js b/src/api/procureMent/index.js
new file mode 100644
index 0000000..effbecf
--- /dev/null
+++ b/src/api/procureMent/index.js
@@ -0,0 +1,29 @@
+// 閲囪喘绠$悊
+import request from '@/utils/request'
+
+// 鏌ヨ閲囪喘绠$悊鍒楄〃
+export function purchaseRegistration(query) {
+ return request({
+ url: '/purchaseRegistration/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏂板缂栬緫閲囪喘绠$悊
+export function addOrEditPR(query) {
+ return request({
+ url: '/purchaseRegistration/addOrEditPR',
+ method: 'post',
+ data: query
+ })
+}
+// 鍒犻櫎閲囪喘绠$悊
+export function delPR(query) {
+ return request({
+ url: '/purchaseRegistration/delPR',
+ method: 'delete',
+ data: query
+ })
+}
+
diff --git a/src/api/tool/publicInterface.js b/src/api/tool/publicInterface.js
new file mode 100644
index 0000000..0de140d
--- /dev/null
+++ b/src/api/tool/publicInterface.js
@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+
+// 鑾峰彇璺敱
+export const testUserList = () => {
+ return request({
+ url: '/test/user/list',
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/src/components/Table/ETable.vue b/src/components/Table/ETable.vue
index b6bc89e..6fc7f1d 100644
--- a/src/components/Table/ETable.vue
+++ b/src/components/Table/ETable.vue
@@ -1,178 +1,169 @@
<template>
- <el-table
- v-loading="loading"
- :data="tableData"
- :border="border"
- :show-selection="showSelection"
- :max-height="maxHeight"
- :header-cell-style="{ background: '#EBEEF5', color: '#3D3D3D' }"
- @selection-change="handleSelectionChange"
- @row-click="handleRowClick"
- @row-dblclick="handleRowDblClick"
- @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)"
- :formatter="(row, column, cellValue) => cellValue == null || cellValue === '' ? '--' : cellValue"
- align="center"
- >
- <template v-if="col.slot" #default>
- <slot></slot>
- </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>
+ <el-table v-loading="loading" :data="tableData" :border="border" :show-selection="showSelection" :max-height="maxHeight"
+ :header-cell-style="{ background: '#EBEEF5', color: '#3D3D3D' }" @selection-change="handleSelectionChange"
+ @row-click="handleRowClick" @row-dblclick="handleRowDblClick" @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)"
+ :formatter="col.formatter || defaultFormatter" align="center">
+ <template v-if="col.slot" #default>
+ <slot></slot>
</template>
</el-table-column>
- </el-table>
- </template>
+ </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 } from 'vue'
- import { ElMessage, ElMessageBox } from 'element-plus'
- const props = defineProps({
- // 鏈�澶у搴�
- 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: true
- },
- // 鏄惁鏄剧ず搴忓彿鍒�
- 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) => {
+import { defineEmits } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+const props = defineProps({
+ // 鏈�澶у搴�
+ 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: true
+ },
+ // 鏄惁鏄剧ず搴忓彿鍒�
+ 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) => {
+ // 濡傛灉鍒楅厤缃腑鏄庣‘璁剧疆浜唖howOverflowTooltip锛屼娇鐢ㄨ璁剧疆
+ if (col.hasOwnProperty('showOverflowTooltip')) {
+ return col.showOverflowTooltip;
+ }
// 濡傛灉娌℃湁prop锛岀洿鎺ヨ繑鍥瀎alse
if (!col.prop) return false;
- // 妫�鏌ヨ鍒楀湪鎵�鏈夋暟鎹腑鏄惁鏈夐潪绌哄��
+ // 妫�鏌ヨ鍒楀湪鎵�鏈夋暟鎹腑鏄惁鏈夐潪绌哄�硷紝榛樿鏄剧ずtooltip
return data.some(row => row[col.prop] != null && row[col.prop] !== '');
};
+
+// 榛樿鐨勬牸寮忓寲鍑芥暟
+const defaultFormatter = (row, column, cellValue) => {
+ return cellValue == null || cellValue === '' || cellValue === 0 ? '--' : cellValue;
+};
+
// 澶勭悊閫夋嫨鍙樺寲銆佺紪杈戙�佸垹闄ゅ拰瀵煎嚭鎿嶄綔
- const emit = defineEmits(['selection-change', 'edit', 'delete', 'export'])
- const handleSelectionChange = (selection) => {
- emit('selection-change', selection)
- }
- const handleEdit = (row) => {
- emit('edit', row)
- }
- const handleDelete = (row) => {
- ElMessageBox.confirm(
- props.deleteConfirmText,
- '璀﹀憡',
- {
- confirmButtonText: '纭畾',
- cancelButtonText: '鍙栨秷',
- type: 'warning'
- }
- ).then(() => {
- emit('delete', row)
- }).catch(() => {})
- }
-
- const handleExport = (row) => {
- emit('export', row)
- }
- </script>
+const emit = defineEmits(['selection-change', 'edit', 'delete', 'export'])
+const handleSelectionChange = (selection) => {
+ emit('selection-change', selection)
+}
+const handleEdit = (row) => {
+ emit('edit', row)
+}
+const handleDelete = (row) => {
+ ElMessageBox.confirm(
+ props.deleteConfirmText,
+ '璀﹀憡',
+ {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }
+ ).then(() => {
+ emit('delete', row)
+ }).catch(() => { })
+}
+
+const handleExport = (row) => {
+ emit('export', row)
+}
+</script>
<style scoped>
- .el-table {
+.el-table {
margin: 20px 0 !important;
}
@@ -187,4 +178,16 @@
overflow-x: auto;
}
}
- </style>
\ No newline at end of file
+
+ /* 鏀寔鍦板潃鍒楁崲琛屾樉绀� */
+ :deep(.el-table .cell) {
+ white-space: normal !important;
+ word-break: break-all;
+ line-height: 1.4;
+ }
+
+ /* 涓哄湴鍧�鍒楄缃渶灏忛珮搴︿互瀹圭撼澶氳鏂囨湰 */
+ :deep(.el-table td) {
+ padding: 8px 0;
+ }
+</style>
\ No newline at end of file
diff --git a/src/views/basicInformation/index.vue b/src/views/basicInformation/index.vue
index e2007e9..48dcbf6 100644
--- a/src/views/basicInformation/index.vue
+++ b/src/views/basicInformation/index.vue
@@ -1,12 +1,13 @@
<template>
- <div>
- <el-form :inline="true" :model="queryParams" class="search-form">
- <el-form-item label="渚涘簲鍟嗗悕绉�">
- <el-input v-model="queryParams.searchAll" placeholder="璇疯緭鍏ュ叧閿瘝" clearable />
+ <div> <el-form :inline="true" :model="queryParams" class="search-form" >
+ <el-form-item label="鎼滅储" v-if="tabName === 'supplier' || tabName === 'customer'">
+ <el-input v-model="queryParams.searchAll" placeholder="渚涘簲鍟�/璇嗗埆鐮�/璇︾粏鍦板潃" clearable />
</el-form-item>
-
+ <el-form-item label="鎼滅储" v-if="tabName === 'coal' || tabName === 'coalQualityMaintenance'">
+ <el-input v-model="queryParams.searchAll" placeholder="璇疯緭鍏ユ悳绱俊鎭�" clearable />
+ </el-form-item>
<el-form-item>
- <el-button type="primary" @click="getList">鏌ヨ</el-button>
+ <el-button type="primary" @click="search">鏌ヨ</el-button>
<el-button @click="resetQuery">閲嶇疆</el-button>
</el-form-item>
</el-form>
@@ -20,13 +21,14 @@
<el-row :gutter="24" class="table-toolbar">
<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-button type="info" :icon="Download" @click="handleExport" v-show="tabName === 'supplier' || tabName === 'customer'">瀵煎嚭</el-button>
</el-row>
<!-- 琛ㄦ牸缁勪欢 -->
<div>
<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"
+ </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"
@@ -43,7 +45,7 @@
</template>
<script setup>
-import { ref, reactive, onMounted } from "vue";
+import { ref, reactive, onMounted, computed } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import { Plus, Edit, Delete, Download } from "@element-plus/icons-vue";
import DataTable from "@/components/Table/ETable.vue";
@@ -54,8 +56,12 @@
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";
+import { getCoalInfo, delCoalInfo } from "@/api/basicInformation/coal.js";
+import { getCoalQuality, delCoalQuality } from "@/api/basicInformation/coalQualityMaintenance.js";
+import { testUserList } from "@/api/tool/publicInterface.js";
+import { getAreaOptions } from "@/api/system/area.js";
+import { getCustomerList, delCustomer } from "@/api/basicInformation/customer.js";
+
// 寮圭獥
const coalQualityMaintenanceDialogFormVisible = ref(false);
const customerDialogFormVisible = ref(false);
@@ -65,6 +71,12 @@
const form = ref({});
const title = ref("");
const copyForm = ref({});
+// 鐢ㄦ埛鍒楄〃鏁版嵁
+const userList = ref([]);
+// 鐢ㄦ埛鏄犲皠琛紝鐢ㄤ簬蹇�熸煡鎵�
+const userMap = ref({});
+// 鍦板潃鏄犲皠琛紝鐢ㄤ簬蹇�熸煡鎵惧湴鍧�鍚嶇О
+const addressMap = ref({});
// 褰撳墠鏍囩
const tabName = ref("supplier");
// 鐘舵�佸彉閲�
@@ -76,13 +88,73 @@
const selectedRows = ref([]);
// 鏌ヨ鍙傛暟
const queryParams = reactive({
- searchText: "",
- supplierName: "",
- identifyNumber: "",
- address: "",
});
-onMounted(() => {
- handleTabClick({ props: { name: "supplier" } });
+// 鍦板潃閫夋嫨鏁版嵁
+const addressSelectOptions = ref([]);
+const fetchAreaOptions = async () => {
+ addressSelectOptions.value = [];
+ const res = await getAreaOptions();
+ if (res.code === 200) {
+ addressSelectOptions.value = res.data;
+ buildAddressMap(res.data); // 鏋勫缓鍦板潃鏄犲皠琛�
+ }
+}
+
+// 鏋勫缓鍦板潃鏄犲皠琛紝鐢ㄤ簬蹇�熸煡鎵惧湴鍧�鍚嶇О
+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);
+};
+
+// 鍦板潃鏍煎紡鍖栧嚱鏁�
+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 => {
+ return addressMap.value[id]?.name || '--';
+ });
+
+ // 濡傛灉鎵�鏈夊湴鍧�鍚嶇О閮芥槸 '--'锛屽垯杩斿洖 '--'
+ if (addressNames.every(name => name === '--')) {
+ return '--';
+ }
+
+ return addressNames.filter(name => name !== '--').join(' / ');
+};
+// 鑾峰彇鐢ㄦ埛鍒楄〃鏁版嵁
+const getUserList = async () => {
+ try {
+ const res = await testUserList();
+ if (res && res.data) {
+ userList.value = res.data;
+ userList.value.forEach(user => {
+ userMap.value[user.userId] = user.username;
+ });
+ console.log('鐢ㄦ埛鏄犲皠琛�:', userMap.value);
+ }
+ } catch (error) {
+ console.error('鑾峰彇鐢ㄦ埛鍒楄〃澶辫触:', error);
+ }
+};
+
+onMounted(async () => {
+ await handleTabClick({ props: { name: "supplier" } });
+ await fetchAreaOptions(); // 鍏堣幏鍙栧湴鍧�閫夋嫨鏁版嵁骞舵瀯寤烘槧灏勮〃
+ await getUserList(); // 鑾峰彇鐢ㄦ埛鍒楄〃
});
const columns = ref();
// 鏍囩椤垫暟鎹�
@@ -96,40 +168,128 @@
const addOrEdit = ref("add");
// 琛ㄦ牸鏁版嵁
const tableData = ref([]);
-// 鏌ヨ鏂规硶
-const handleQuery = () => {
-
-};
// supplier 渚涘簲鍟嗘暟鎹�
const supplierColumns = ref([
- { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 200 },
- { prop: "taxpayerId", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 120 },
- { prop: "businessAddress", label: "缁忚惀鍦板潃", minWidth: 150 },
- { prop: "bids", label: "璇︾粏鍦板潃", minWidth: 150 },
+ { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 100 },
+ { prop: "taxpayerId", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 170 }, {
+ prop: "bids",
+ label: "缁忚惀鍦板潃",
+ minWidth: 150,
+ showOverflowTooltip: true,
+ formatter: (row, column, cellValue) => {
+ let arr = [
+ row.bprovinceId,
+ row.bcityId,
+ row.bdistrictId,
+ ]
+ return formatAddressArray(arr);
+ }
+ },
+ { prop: "businessAddress", 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: "createTime", label: "缁存姢鏃ユ湡", minWidth: 100 },
+ { prop: "contactPerson", label: "鑱旂郴浜�", minWidth: 100 },
+ {
+ prop: "cids",
+ label: "鑱旂郴浜哄湴鍧�",
+ minWidth: 150,
+ showOverflowTooltip: true,
+ formatter: (row, column, cellValue) => {
+ let arr = [
+ row.cprovinceId,
+ row.ccityId,
+ row.cdistrictId,
+ ]
+ return formatAddressArray(arr);
+ }
+ },{ prop: "contactAddress", label: "鑱旂郴浜鸿缁嗗湴鍧�", minWidth: 120 },
+ // {
+ // prop: "maintainerId",
+ // label: "缁存姢浜�",
+ // minWidth: 80,
+ // formatter: (row, column, cellValue) => {
+ // // 濡傛灉鐢ㄦ埛鏄犲皠琛ㄨ繕娌℃湁鍑嗗濂斤紝鏄剧ず --
+ // if (!userMap.value || Object.keys(userMap.value).length === 0) {
+ // return '--';
+ // }
+ // // 濡傛灉鍊间负绌烘垨null锛屾樉绀� --
+ // if (cellValue === null || cellValue === undefined || cellValue === '') {
+ // return '--';
+ // }
+ // // 濡傛灉鐢ㄦ埛鏄犲皠琛ㄤ腑鏈夊搴旂殑鐢ㄦ埛鍚嶏紝杩斿洖鐢ㄦ埛鍚�
+ // if (userMap.value[cellValue]) {
+ // return userMap.value[cellValue];
+ // }
+ // // 濡傛灉娌℃湁鍖归厤鐨勭敤鎴凤紝鏄剧ず --
+ // return '--';
+ // }
+ // },
+ { prop: "createTime", label: "缁存姢鏃ユ湡", minWidth: 120 },
]);
// customer 瀹㈡埛鏁版嵁
const customerColumns = ref([
- { prop: "customerName", 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: "contactAddress", label: "鑱旂郴鍦板潃", minWidth: 150 },
- { prop: "maintainer", label: "缁存姢浜�", minWidth: 100 },
- { prop: "maintainDate", label: "缁存姢鏃ユ湡", minWidth: 100 },
+ { prop: "customerName", label: "瀹㈡埛鍚嶇О", minWidth: 100 },
+ { prop: "taxpayerId", label: "缁熶竴浜鸿瘑鍒彿", minWidth: 120 },
+{
+ prop: "bids",
+ label: "缁忚惀鍦板潃",
+ minWidth: 150,
+ showOverflowTooltip: true,
+ formatter: (row, column, cellValue) => {
+ console.log(row, column, cellValue);
+ let arr = [
+ row.businessProvinceId,
+ row.businessCityId,
+ row.businessDistrictId,
+ ]
+ return formatAddressArray(arr);
+ }
+ },
+ { prop: "businessAddress", label: "璇︾粏鍦板潃", minWidth: 150 },
+ { prop: "bankName", label: "寮�鎴疯", minWidth: 120 },
+ { prop: "bankAccount", label: "閾惰璐﹀彿", minWidth: 150 },
+ { prop: "contactPerson", label: "鑱旂郴浜�", minWidth: 100 },
+ { prop: "contactPhone", label: "鑱旂郴浜虹數璇�", minWidth: 100 },
+{
+ prop: "cids",
+ label: "鑱旂郴浜哄湴鍧�",
+ minWidth: 150,
+ showOverflowTooltip: true,
+ formatter: (row, column, cellValue) => {
+ let arr = [
+ row.provinceId,
+ row.cityId,
+ row.districtId,
+ ]
+ return formatAddressArray(arr);
+ }
+ },
+ { prop: "contactAddress", label: "鑱旂郴浜鸿缁嗗湴鍧�", minWidth: 150 },
+ { prop: "updateTime", label: "缁存姢鏃ユ湡", minWidth: 100 },
]);
// coal 鐓ょ鏁版嵁
const coalColumns = ref([
- { prop: "coalName", label: "鐓ょ鍚嶇О", minWidth: 200 },
- { prop: "maintainerId", label: "缁存姢浜�", minWidth: 120 },
+ { prop: "coal", label: "鐓ょ鍚嶇О", minWidth: 200 }, {
+ prop: "maintainerId",
+ label: "缁存姢浜�",
+ minWidth: 120,
+ formatter: (row, column, cellValue) => {
+ // 濡傛灉鐢ㄦ埛鏄犲皠琛ㄨ繕娌℃湁鍑嗗濂斤紝鏄剧ず --
+ if (!userMap.value || Object.keys(userMap.value).length === 0) {
+ return '--';
+ }
+ // 濡傛灉鍊间负绌烘垨null锛屾樉绀� --
+ if (cellValue === null || cellValue === undefined || cellValue === '') {
+ return '--';
+ }
+ // 濡傛灉鐢ㄦ埛鏄犲皠琛ㄤ腑鏈夊搴旂殑鐢ㄦ埛鍚嶏紝杩斿洖鐢ㄦ埛鍚�
+ if (userMap.value[cellValue]) {
+ return userMap.value[cellValue];
+ }
+ // 濡傛灉娌℃湁鍖归厤鐨勭敤鎴凤紝鏄剧ず --
+ return '--';
+ }
+ },
{ prop: "maintenanceDate", label: "缁存姢鏃ユ湡", minWidth: 150 },
]);
// coalQualityMaintenance 鐓よ川缁存姢鏁版嵁
@@ -181,6 +341,7 @@
queryParams[key] = "";
}
});
+ getList()
};
// 鏂板
const handleAdd = () => {
@@ -220,20 +381,20 @@
};
// 鍒嗛〉
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);
+ console.log(val);
+ if (val.result.code !== 200) {
+ ElMessage.error("鎿嶄綔澶辫触锛�" + val.result.msg);
return;
}
- ElMessage.success("鏂板鎴愬姛锛�" + result.msg);
+ ElMessage.success(val.title + val.result.msg);
dialogFormVisible.value = false;
+ getList();
};
const handleDialogFormVisible = (value) => {
dialogFormVisible.value = value;
@@ -245,6 +406,34 @@
// 缂栬緫
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);
};
@@ -258,7 +447,6 @@
selectedRows.value.forEach(element => {
return arr.push(element.id);
});
- console.log("閫変腑鐨勬暟鎹甀D锛�", arr);
ElMessageBox.confirm("纭畾鍒犻櫎閫変腑鐨勬暟鎹悧锛�", "鎻愮ず", {
confirmButtonText: "纭畾",
cancelButtonText: "鍙栨秷",
@@ -266,13 +454,27 @@
})
.then(async () => {
try {
- let res = await delSupply(arr)
- console.log(res)
- selectedRows.value = [];
- getlist()
- } catch {
+ let res;
+ if( tabName.value === "supplier" ) {
+ res = await delSupply(arr);
+ } else if (tabName.value === "coal") {
+ res = await delCoalInfo(arr);
+ } else if (tabName.value === "coalQualityMaintenance") {
+ res = await delCoalQuality(arr);
+ } else if( tabName.value === "customer") {
+ res = await delCustomer(arr);
+ }
+ if(res.code !== 200 && res.meg == "鎿嶄綔鎴愬姛") {
+ ElMessage.error("鍒犻櫎澶辫触锛�" + res.msg);
+ return;
+ }
+ ElMessage.success("鍒犻櫎鎴愬姛");
+ await getList();
+ } catch (e) {
+ console.error(e);
ElMessage.error("鍒犻櫎澶辫触锛岃绋嶅悗鍐嶈瘯");
- return;
+ } finally {
+ selectedRows.value = [];
}
}).catch(() => {
ElMessage.info("宸插彇娑堝垹闄ゆ搷浣�");
@@ -283,11 +485,23 @@
dialogFormVisible.value = false;
form.value = {};
};
-const handleExport = (row) => {
- proxy.download("system/post/export", {
+const handleExport = () => {
+ if(tabName.value === "supplier") {
+ Export("/supply/export", "渚涘簲鍟嗕俊鎭�");
+ } else if (tabName.value === "customer") {
+ Export("/customer/export", "瀹㈡埛淇℃伅");
+ } else if (tabName.value === "coal") {
+ Export("/supply/export", "鐓ょ淇℃伅");
+ } else if (tabName.value === "coalQualityMaintenance") {
+ Export("/supply/export", "鐓よ川缁存姢淇℃伅");
+
+ }
+}
+const Export = (api,name) => {
+ proxy.download(api, {
...queryParams.value
- }, `post_${new Date().getTime()}.xlsx`)
- ElMessage.success("瀵煎嚭鏁版嵁锛�" + row.supplierName);
+ }, `${name}${new Date().getTime()}.xlsx`)
+ ElMessage.success("瀵煎嚭鏁版嵁锛�" + name);
};
// 閫夋嫨鎺ュ彛
const selectInterface = () => {
@@ -298,26 +512,41 @@
searchAll: queryParams.searchAll,
});
} else if (tabName.value === "customer") {
- return getSupply({
+ return getCustomerList({
current: pageNum.value,
pageSize: pageSizes.value,
- ...queryParams
+ searchAll: queryParams.searchAll,
});
} else if (tabName.value === "coal") {
- console.log(addOrEdit.value)
- return getCoalInfo();
+ return getCoalInfo({
+ current: pageNum.value,
+ pageSize: pageSizes.value,
+ searchAll: queryParams.searchAll,
+ });
} else if (tabName.value === "coalQualityMaintenance") {
return getCoalQuality({
current: pageNum.value,
pageSize: pageSizes.value,
- ...queryParams
+ searchAll: queryParams.searchAll,
});
}
}
+const search = () => {
+ pageNum.value = 1; // 閲嶇疆椤电爜
+ getList();
+};
+// 鑾峰彇鍒楄〃鏁版嵁
const getList = async () => {
loading.value = true;
+ /* if (Object.keys(addressMap.value).length === 0) {
+ await fetchAreaOptions();
+ } */
let { data, code } = await selectInterface()
- console.log(data)
+ if(code !== 200) {
+ ElMessage.error("鑾峰彇鏁版嵁澶辫触锛�" + data.msg);
+ loading.value = false;
+ return;
+ }
tableData.value = data.records;
total.value = data.total;
loading.value = false;
diff --git a/src/views/basicInformation/mould/coal.vue b/src/views/basicInformation/mould/coal.vue
index b31e8bb..59eafad 100644
--- a/src/views/basicInformation/mould/coal.vue
+++ b/src/views/basicInformation/mould/coal.vue
@@ -6,29 +6,32 @@
width="500"
:close-on-click-modal="false"
:before-close="handleClose"
- >
- <el-form
+ > <el-form
ref="formRef"
style="max-width: 600px; margin: 0 auto"
:model="formData"
:rules="rules"
- label-width="auto"
+ label-width="120px"
>
<el-form-item label="鐓ょ鍚嶇О" prop="coal">
<el-input
v-model="formData.coal"
placeholder="璇疯緭鍏ョ叅绉嶅悕绉�"
/>
- </el-form-item>
- <el-form-item label="缁存姢浜哄鍚�" prop="maintainerId">
+ </el-form-item> <el-form-item label="缁存姢浜哄鍚�" prop="maintainerId">
<el-input
- v-model="formData.maintainerId"
- placeholder="璇疯緭鍏ョ淮鎶や汉濮撳悕"
+ :value="userStore.name || ''"
+ placeholder="缁存姢浜哄鍚�"
+ disabled
+ />
+ </el-form-item> <el-form-item label="缁存姢鏃ユ湡" prop="maintenanceDate">
+ <el-input
+ :value="getCurrentDate()"
+ placeholder="缁存姢鏃ユ湡"
+ disabled
/>
</el-form-item>
- <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">
纭畾
@@ -42,8 +45,11 @@
</template>
<script setup>
-import { ref, watch ,defineProps } from 'vue'
+import { ref, watch, defineProps, reactive, onMounted } from 'vue'
import { addOrEditCoalInfo } from '@/api/basicInformation/coal'
+import useUserStore from '@/store/modules/user'
+
+const userStore = useUserStore()
const props = defineProps({
beforeClose: {
@@ -64,8 +70,38 @@
},
})
-const emit = defineEmits(['submit', 'handleBeforeClose','update:coalDialogFormVisible'])
+// 鍦ㄧ粍浠舵寕杞芥椂鑾峰彇鐢ㄦ埛淇℃伅
+onMounted(async () => {
+ // 濡傛灉store涓病鏈夌敤鎴蜂俊鎭紝鍒欒幏鍙栫敤鎴蜂俊鎭�
+ if (!userStore.name) {
+ try {
+ await userStore.getInfo()
+ console.log('鐢ㄦ埛淇℃伅:', {
+ id: userStore.id,
+ name: userStore.name,
+ nickName: userStore.nickName
+ })
+ // 鑷姩濉厖缁存姢浜篒D
+ if (props.addOrEdit === 'add') {
+ formData.value.maintainerId = userStore.id
+ }
+ } catch (error) {
+ console.error('鑾峰彇鐢ㄦ埛淇℃伅澶辫触:', error)
+ }
+ } else {
+ console.log('鐢ㄦ埛淇℃伅:', {
+ id: userStore.id,
+ name: userStore.name,
+ nickName: userStore.nickName
+ })
+ // 鑷姩濉厖缁存姢浜篒D
+ if (props.addOrEdit === 'add') {
+ formData.value.maintainerId = userStore.id
+ }
+ }
+})
+const emit = defineEmits(['submit', 'handleBeforeClose','update:coalDialogFormVisible'])
// 琛ㄥ崟寮曠敤
const formRef = ref(null)
// 琛ㄥ崟鏁版嵁
@@ -76,6 +112,10 @@
// 鐩戝惉澶栭儴浼犲叆鐨勮〃鍗曟暟鎹彉鍖�
watch(() => props.form, (newVal) => {
formData.value = { ...newVal }
+ // 濡傛灉鏄柊澧炴ā寮忥紝璁剧疆缁存姢浜�
+ if (props.addOrEdit === 'add' && userStore.id) {
+ formData.value.maintainerId = userStore.id
+ }
}, { deep: true })
// 鐩戝惉鍐呴儴寮圭獥鐘舵�佸彉鍖�
@@ -88,7 +128,18 @@
if (!formRef.value) return
await formRef.value.validate(async (valid, fields) => {
if (valid) {
- formData.value.maintenanceDate = "2023-10-01" // 绀轰緥鏃ユ湡
+ delete formData.value.createTime
+ delete formData.value.updateTime
+ delete formData.value.maintainerName // 鍒犻櫎鏄剧ず鐢ㄧ殑瀛楁锛屽彧淇濈暀ID
+
+ // 纭繚maintainerId鏈夊��
+ if (!formData.value.maintainerId) {
+ formData.value.maintainerId = userStore.id
+ }
+
+ // 璁剧疆缁存姢鏃ユ湡
+ formData.value.maintenanceDate = getCurrentDate()
+
let result = await addOrEditCoalInfo({
...formData.value,
})
@@ -124,21 +175,15 @@
{ 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" },
- ],
});
+// 鑾峰彇褰撳墠鏃ユ湡骞舵牸寮忓寲涓� YYYY-MM-DD
+function getCurrentDate() {
+ const today = new Date();
+ const year = today.getFullYear();
+ const month = String(today.getMonth() + 1).padStart(2, '0'); // 鏈堜唤浠�0寮�濮�
+ const day = String(today.getDate()).padStart(2, '0');
+ return `${year}-${month}-${day}`;
+}
</script>
<style lang="sass" scoped>
diff --git a/src/views/basicInformation/mould/customer.vue b/src/views/basicInformation/mould/customer.vue
index 5dbd82f..4053cd7 100644
--- a/src/views/basicInformation/mould/customer.vue
+++ b/src/views/basicInformation/mould/customer.vue
@@ -1,70 +1,65 @@
<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-form-item label="鍗¤儭" prop="supplierName">
- <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>
- <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-input
- v-model="formData.addressDetail"
- placeholder="璇疯緭鍏ュ鎴疯缁嗗湴鍧�"
- />
- </el-form-item>
- <el-form-item label="閾惰璐︽埛" prop="bankAccount">
- <el-input v-model="formData.bankAccount" 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-form-item>
- </el-form>
- </el-dialog>
- </div>
+ <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-form-item label="瀹㈡埛鍚嶇О" prop="customerName">
+ <el-input v-model="formData.customerName" placeholder="璇疯緭鍏ュ鎴峰悕绉�" />
+ </el-form-item>
+ <el-form-item label="绾崇◣浜鸿瘑鍒彿" prop="taxpayerId">
+ <el-input v-model="formData.taxpayerId" placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�" />
+ </el-form-item>
+ <el-form-item label="缁忚惀鍦板潃" prop="bids">
+ <el-cascader placeholder="璇烽�夋嫨缁忚惀鍦板潃" size="default" :options="addressSelectOptions" v-model="formData.bids"
+ :props="cascaderProps" @change="handleChange">
+ </el-cascader>
+ </el-form-item>
+ <el-form-item label="缁忚惀璇︾粏鍦板潃" prop="businessAddress">
+ <el-input v-model="formData.businessAddress" placeholder="璇疯緭鍏ョ粡钀ヨ缁嗗湴鍧�" />
+ </el-form-item>
+ <el-form-item label="寮�鎴疯" prop="bankName">
+ <el-input v-model="formData.bankName" placeholder="璇疯緭鍏ュ紑鎴疯" />
+ </el-form-item>
+ <el-form-item label="閾惰璐︽埛" prop="bankAccount">
+ <el-input v-model="formData.bankAccount" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" />
+ </el-form-item>
+ <el-form-item label="鑱旂郴浜�" prop="contactPerson">
+ <el-input v-model="formData.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉" />
+ </el-form-item>
+ <el-form-item label="鑱旂郴鐢佃瘽" prop="contactPhone">
+ <el-input v-model="formData.contactPhone" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" />
+ </el-form-item>
+
+ <el-form-item label="鑱旂郴浜哄湴鍧�" prop="cids">
+ <el-cascader placeholder="璇烽�夋嫨鑱旂郴浜哄湴鍧�" size="default" :options="addressSelectOptions" v-model="formData.cids"
+ :props="cascaderProps" @change="handleChange">
+ </el-cascader>
+ </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-form-item>
+ </el-form>
+ </el-dialog>
+ </div>
</template>
<script setup>
import { ref, watch, onMounted } from "vue";
+import { getAreaOptions } from "@/api/system/area.js";
import addressList from "@/api/jsonApi/areaList.json";
+import { addOrEditCustomer } from "@/api/basicInformation/customer";
const props = defineProps({
beforeClose: {
type: Function,
- default: () => {},
+ default: () => { },
},
form: {
type: Object,
@@ -79,6 +74,7 @@
default: "",
},
});
+
const handleChange = (value) => {
console.log(value);
};
@@ -88,17 +84,25 @@
"update:customerDialogFormVisible",
]);
onMounted(() => {
- addressSelectOptions.value = mapAddress(addressList);
-});
+ fetchAreaOptions()
+})
+
+// 淇敼鏍戝舰閫夋嫨鐨勬槧灏�
+const cascaderProps = ref({
+ value: 'id', // 鎸囧畾value瀛楁涓篿d
+ label: 'label', // 鎸囧畾label瀛楁
+ children: 'children' // 鎸囧畾瀛愯妭鐐瑰瓧娈�
+})
+
// 鍦板潃閫夋嫨鏁版嵁
const addressSelectOptions = ref([]);
-// 澶勭悊鍦板潃鏁版嵁杞崲
-function mapAddress(list) {
- return list.map((item) => ({
- value: item.no,
- label: item.name,
- children: item.children ? mapAddress(item.children) : undefined,
- }));
+const fetchAreaOptions = async () => {
+ addressSelectOptions.value = [];
+
+ const res = await getAreaOptions();
+ if (res.code === 200) {
+ addressSelectOptions.value = res.data;
+ }
}
// 琛ㄥ崟寮曠敤
const formRef = ref(null);
@@ -118,6 +122,13 @@
},
{ deep: true }
);
+watch(
+ () => props.form,
+ (newVal) => {
+ formData.value = { ...newVal };
+ },
+ { deep: true }
+);
// 鐩戝惉鍐呴儴寮圭獥鐘舵�佸彉鍖�
watch(
@@ -130,9 +141,32 @@
// 鎻愪氦琛ㄥ崟
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);
+ const obj = ref({});
+ if (props.title.includes('鏂板')) {
+ let result = await addOrEditCustomer({
+ ...formData.value,
+ })
+ obj.value = {
+ title: "鏂板",
+ ...formData.value,
+ result
+ };
+ } else {
+ delete formData.value.createTime
+ delete formData.value.updateTime
+ let result = await addOrEditCustomer({
+ ...formData.value,
+ })
+ console.log(result);
+ obj.value = {
+ title: "缂栬緫",
+ ...formData.value,
+ result
+ };
+ }
+ emit("submit", obj.value);
}
});
};
@@ -153,10 +187,10 @@
emit("update:customerDialogFormVisible", false);
};
const rules = reactive({
- supplierName: [
+ customerName: [
{ required: true, message: "璇疯緭鍏ヤ緵璐у晢鍚嶇О", trigger: "blur" },
],
- identifyNumber: [
+ taxpayerId: [
{ required: true, message: "璇锋纭緭鍏ョ撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
{ min: 17, max: 20, message: "璇疯緭鍏�17-20浣嶇撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
],
@@ -168,9 +202,11 @@
},
],
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" }],
+ contactPerson: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
+ cids: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
+ bids: [{ required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur" }],
+ contactPhone: [
{ required: true, message: "璇疯緭鍏ヨ仈绯讳汉", trigger: "blur" },
{ min: 11, max: 11, message: "璇疯緭鍏�11浣嶈仈绯讳汉鐢佃瘽", trigger: "blur" },
],
diff --git a/src/views/basicInformation/mould/supplier.vue b/src/views/basicInformation/mould/supplier.vue
index 9819f41..9580ea2 100644
--- a/src/views/basicInformation/mould/supplier.vue
+++ b/src/views/basicInformation/mould/supplier.vue
@@ -1,39 +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">
+ :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="taxpayerId">
- <el-input v-model="formData.taxpayerId" placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�"/>
+ <el-input v-model="formData.taxpayerId" placeholder="璇疯緭鍏ョ撼绋庝汉璇嗗埆鍙�" />
</el-form-item>
<el-form-item label="缁忚惀鍦板潃" prop="bids">
- <el-cascader placeholder="璇烽�夋嫨缁忚惀鍦板潃" size="default" :options="addressSelectOptions"
- v-model="formData.bids"
- :props="cascaderProps"
- @change="handleChange">
+ <el-cascader placeholder="璇烽�夋嫨缁忚惀鍦板潃" size="default" :options="addressSelectOptions" v-model="formData.bids"
+ :props="cascaderProps" @change="handleChange">
</el-cascader>
</el-form-item>
<el-form-item label="璇︾粏鍦板潃" prop="businessAddress">
- <el-input v-model="formData.businessAddress" placeholder="璇疯緭鍏ュ鎴疯缁嗗湴鍧�"/>
+ <el-input v-model="formData.businessAddress" placeholder="璇疯緭鍏ュ鎴疯缁嗗湴鍧�" />
</el-form-item>
<el-form-item label="寮�鎴疯" prop="bankAccount">
- <el-input v-model="formData.bankAccount" placeholder="璇疯緭鍏ュ紑鎴疯"/>
+ <el-input v-model="formData.bankAccount" placeholder="璇疯緭鍏ュ紑鎴疯" />
</el-form-item>
<el-form-item label="閾惰璐︽埛" prop="bankName">
- <el-input v-model="formData.bankName" placeholder="璇疯緭鍏ラ摱琛岃处鎴�"/>
+ <el-input v-model="formData.bankName" placeholder="璇疯緭鍏ラ摱琛岃处鎴�" />
</el-form-item>
<el-form-item label="鑱旂郴浜�" prop="contactPerson">
- <el-input v-model="formData.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉"/>
+ <el-input v-model="formData.contactPerson" placeholder="璇疯緭鍏ヨ仈绯讳汉" />
</el-form-item>
<el-form-item label="鑱旂郴浜虹數璇�" prop="contactPhone">
- <el-input v-model="formData.contactPhone" placeholder="璇疯緭鍏ヨ仈绯讳汉鐢佃瘽"/>
+ <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 label="鑱旂郴浜哄湴鍧�" prop="cids">
+ <el-cascader placeholder="璇烽�夋嫨鑱旂郴浜哄湴鍧�" size="default" :options="addressSelectOptions" v-model="formData.cids"
+ :props="cascaderProps" @change="handleChange">
+ </el-cascader>
+ </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>
@@ -46,9 +48,9 @@
</template>
<script setup>
-import {ref, watch, defineProps, onMounted} from "vue";
-import {addOrEditSupply} from "@/api/basicInformation/supplier";
-import {getAreaOptions} from "@/api/system/area.js";
+import { ref, watch, defineProps, onMounted } from "vue";
+import { addOrEditSupply } from "@/api/basicInformation/supplier";
+import { getAreaOptions } from "@/api/system/area.js";
const props = defineProps({
beforeClose: {
@@ -106,7 +108,7 @@
// 琛ㄥ崟寮曠敤
const formRef = ref(null);
// 琛ㄥ崟鏁版嵁
-const formData = ref({...props.form});
+const formData = ref({ ...props.form });
// 寮圭獥鍙鎬�
const dialogVisible = defineModel("supplierDialogFormVisible", {
required: true,
@@ -114,19 +116,19 @@
});
// 鐩戝惉澶栭儴浼犲叆鐨勮〃鍗曟暟鎹彉鍖�
watch(
- () => props.form,
- (newVal) => {
- formData.value = {...newVal};
- },
- {deep: true}
+ () => props.form,
+ (newVal) => {
+ formData.value = { ...newVal };
+ },
+ { deep: true }
);
// 鐩戝惉鍐呴儴寮圭獥鐘舵�佸彉鍖�
watch(
- () => dialogVisible.value,
- (newVal) => {
- emit("update:supplierDialogFormVisible", newVal);
- }
+ () => dialogVisible.value,
+ (newVal) => {
+ emit("update:supplierDialogFormVisible", newVal);
+ }
);
// 澶勭悊鍦板潃閫夋嫨鍙樺寲
const handleChange = (value) => {
@@ -137,11 +139,13 @@
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,
})
- let obj = {
+ obj.value = {
+ title: "鏂板",
...formData.value,
result
};
@@ -151,9 +155,13 @@
let result = await addOrEditSupply({
...formData.value,
})
- console.log(result)
+ obj.value = {
+ title: "缂栬緫",
+ ...formData.value,
+ result
+ };
}
- emit("submit", obj);
+ emit("submit", obj.value);
}
});
};
@@ -175,25 +183,25 @@
};
const rules = reactive({
supplierName: [
- {required: true, message: "璇疯緭鍏ヤ緵璐у晢鍚嶇О", trigger: "blur"},
+ { required: true, message: "璇疯緭鍏ヤ緵璐у晢鍚嶇О", trigger: "blur" },
],
taxpayerId: [
- {required: true, message: "璇锋纭緭鍏ョ撼绋庝汉璇嗗埆鍙�", trigger: "blur"},
- {min: 17, max: 20, message: "璇疯緭鍏�17-20浣嶇撼绋庝汉璇嗗埆鍙�", trigger: "blur"},
+ { required: true, message: "璇锋纭緭鍏ョ撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
+ { min: 17, max: 20, message: "璇疯緭鍏�17-20浣嶇撼绋庝汉璇嗗埆鍙�", trigger: "blur" },
],
- bids: [
- {
- required: true,
- message: "璇烽�夋嫨缁忚惀鍦板潃",
- trigger: "change",
- },
- ],
- bankName: [{required: true, message: "璇疯緭鍏ラ摱琛岃处鎴�", trigger: "blur"}],
- bankAccount: [{required: true, message: "璇疯緭鍏ュ紑鎴疯", trigger: "blur"}],
- contactPerson: [{required: true, message: "鑱旂郴浜�", trigger: "blur"}],
+ // bids: [
+ // {
+ // required: true,
+ // message: "璇烽�夋嫨缁忚惀鍦板潃",
+ // trigger: "change",
+ // },
+ // ],
+ 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"},
+ { required: true, message: "璇疯緭鍏ヨ仈绯讳汉", trigger: "blur" },
+ { min: 11, max: 11, message: "璇疯緭鍏�11浣嶈仈绯讳汉鐢佃瘽", trigger: "blur" },
],
});
</script>
diff --git a/src/views/procureMent/components/ProductionDialog.vue b/src/views/procureMent/components/ProductionDialog.vue
index 1de700b..547129c 100644
--- a/src/views/procureMent/components/ProductionDialog.vue
+++ b/src/views/procureMent/components/ProductionDialog.vue
@@ -1,7 +1,7 @@
<template>
<div>
<el-dialog
- v-model="dialogVisible"
+ v-model="dialogFormVisible"
:title="title"
width="600"
:close-on-click-modal="false"
@@ -81,8 +81,8 @@
default: "",
},
});
-const emit = defineEmits(["update:visible", "success"]);
-const dialogVisible = defineModel("dialogFormVisible", {
+const emit = defineEmits(["update:dialogFormVisible", "success"]);
+const dialogFormVisible = defineModel("dialogFormVisible", {
required: true,
type: Boolean,
});
@@ -109,7 +109,7 @@
};
// 鍏抽棴寮圭獥
const handleClose = () => {
- dialogVisible.value = false;
+ dialogFormVisible.value = false;
console.log(form.value);
};
const handleReset = () => {
diff --git a/src/views/procureMent/index.vue b/src/views/procureMent/index.vue
index 790146a..b04a0f1 100644
--- a/src/views/procureMent/index.vue
+++ b/src/views/procureMent/index.vue
@@ -58,18 +58,15 @@
:show-selection="true"
:border="true"
:maxHeight="440"
- />
- <pagination
+ /> <pagination
v-if="total>0"
- :page-num="pageNum"
- :page-size="pageSize"
+ :page="pageNum"
+ :limit="pageSize"
:total="total"
- @pagination="handleQuery"
+ @pagination="handlePagination"
:layout="'total, prev, pager, next, jumper'"
/>
- </el-card>
- <ProductionDialog
- v-if="total>0"
+ </el-card> <ProductionDialog
v-model:dialogFormVisible="dialogFormVisible"
:form="form"
:title="title"
@@ -80,14 +77,14 @@
</template>
<script setup>
-import { ref, reactive, onMounted } from "vue";
+import { ref, reactive, onMounted, getCurrentInstance } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import { Plus, Edit, Delete, Download } from "@element-plus/icons-vue";
import DataTable from "@/components/Table/ETable.vue";
import Pagination from "@/components/Pagination";
-import ProductionDialog from "./components/ProductionDialog.vue";
+import ProductionDialog from './components/ProductionDialog.vue';
+import { purchaseRegistration } from "@/api/procureMent";
const { proxy } = getCurrentInstance()
-
const dialogFormVisible = ref(false);
const form = ref({});
const title = ref("");
@@ -103,7 +100,8 @@
supplierName: "",
identifyNumber: "",
address: "",
-
+ pageNum: 1,
+ pageSize: 10
});
// 鏄惁缂栬緫
const addOrEdit = ref("add");
@@ -113,21 +111,30 @@
const handleQuery = () => {
loading.value = true;
// 杩欓噷娣诲姞瀹為檯鐨勬煡璇㈤�昏緫
- setTimeout(() => {
- loading.value = false;
- }, 500);
+ getList();
+};
+
+// 鍒嗛〉澶勭悊
+const handlePagination = (val) => {
+ console.log("鍒嗛〉鍙傛暟锛�", val);
+ pageNum.value = val.page;
+ pageSize.value = val.limit;
+ queryParams.pageNum = val.page;
+ queryParams.pageSize = val.limit;
+ getList();
};
// supplier 渚涘簲鍟嗘暟鎹�
const columns = ref([
{ prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 200 },
- { prop: "category", label: "鐓ょ", minWidth: 120 },
{ prop: "unit", label: "鍗曚綅", minWidth: 150 },
- { prop: "purchaseAmount", label: "閲囪喘鏁伴噺", minWidth: 120 },
- { prop: "priceBeforeTax", label: "鍗曚环(绋庡墠)", minWidth: 150 },
- { prop: "totalBeforeTax", label: "鎬讳环(绋庡墠)", minWidth: 100 },
- { prop: "calorificValue", label: "鐑��", minWidth: 150 },
- { prop: "registrant", label: "鐧昏浜�", minWidth: 100 },
+ { prop: "coal", label: "鐓ょ绫诲瀷", minWidth: 120 },
+ { prop: "purchaseQuantity", label: "閲囪喘鏁伴噺", minWidth: 100 },
+ { prop: "priceIncludingTax", label: "鍗曚环锛堝惈绋庯級", minWidth: 150 },
+ { prop: "totalPriceIncludingTax", label: "鎬讳环锛堝惈绋庯級", minWidth: 100 },
+ { prop: "taxRate", label: "绋庣巼", minWidth: 100 },
+ { prop: "priceExcludingTax", label: "涓嶅惈绋庡崟浠�", minWidth: 100 },
+ { prop: "registrantId", label: "鐧昏浜�", minWidth: 100 },
{ prop: "registrationDate", label: "鐧昏鏃ユ湡", minWidth: 100 },
]);
@@ -142,6 +149,7 @@
};
// 鏂板
const handleAdd = () => {
+ console.log("鐐瑰嚮鏂板鎸夐挳");
addOrEdit.value = "add";
handleAddEdit();
};
@@ -154,11 +162,24 @@
// 鎵撳紑寮圭獥
const openDialog = () => {
if (addOrEdit.value === "edit") {
+ // 纭繚澶嶅埗涓�浠芥暟鎹紝閬垮厤鐩存帴寮曠敤
+ form.value = JSON.parse(JSON.stringify(form.value));
dialogFormVisible.value = true;
return;
}
- form.value = {};
- dialogFormVisible.value = true;
+ // 鏂板缓鏃跺垵濮嬪寲琛ㄥ崟
+ form.value = {
+ supplierName: "",
+ category: "",
+ unit: "",
+ purchaseAmount: "",
+ priceBeforeTax: "",
+ totalBeforeTax: "",
+ calorificValue: "",
+ registrant: "",
+ registrationDate: new Date().toISOString().split('T')[0]
+ }; dialogFormVisible.value = true;
+ console.log("openDialog 璁剧疆 dialogFormVisible =", dialogFormVisible.value);
};
// 鎻愪氦琛ㄥ崟
@@ -221,36 +242,26 @@
total.value = tableData.value.length;
ElMessage.success("鎿嶄綔鎴愬姛");
};
-const getList = () => {
+const getList = async () => {
loading.value = true;
- setTimeout(() => {
- tableData.value = [
- {
- supplierName: "涓浗鐭虫补鍖栧伐鑲′唤鏈夐檺鍏徃",
- category: "鐓�",
- unit: "鍚�",
- purchaseAmount: "1000",
- priceBeforeTax: "100",
- totalBeforeTax: "100000",
- calorificValue: "5000",
- registrant: "寮犱笁",
- registrationDate: "2025-01-01",
- },
- {
- supplierName: "涓浗涓煶鍖�",
- category: "绮惧搧鐓�",
- unit: "鍗冨厠",
- purchaseAmount: "1000",
- priceBeforeTax: "100",
- totalBeforeTax: "100000",
- calorificValue: "5000",
- registrant: "鏉庡洓",
- registrationDate: "2025-01-01",
- }
- ]
- total.value = tableData.value.length;
+ try {
+ // 浼犻�掑垎椤靛弬鏁�
+ let res = await purchaseRegistration({
+ pageNum: pageNum.value,
+ pageSize: pageSize.value,
+ ...queryParams
+ });
+ console.log("API杩斿洖鏁版嵁:", res);
+ if (res && res.data) {
+ tableData.value = res.data.records || [];
+ total.value = res.data.total || 0;
+ }
+ } catch (error) {
+ console.error("鑾峰彇鏁版嵁澶辫触:", error);
+ ElMessage.error("鑾峰彇鏁版嵁澶辫触");
+ } finally {
loading.value = false;
- }, 500);
+ }
};
getList();
</script>
--
Gitblit v1.9.3