From 09c5667700fb6da21d29c41e51fa5482a4b40bc9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 24 十月 2025 11:22:22 +0800
Subject: [PATCH] 新公司部署相关配置修改
---
src/views/procureMent/index.vue | 258 ++++++++++++++++++++++++++++++++++----------------
1 files changed, 174 insertions(+), 84 deletions(-)
diff --git a/src/views/procureMent/index.vue b/src/views/procureMent/index.vue
index ba02734..28883ed 100644
--- a/src/views/procureMent/index.vue
+++ b/src/views/procureMent/index.vue
@@ -3,32 +3,8 @@
<el-form :inline="true" :model="queryParams" class="search-form">
<el-form-item label="鎼滅储">
<el-input
- v-model="queryParams.searchText"
- placeholder="璇疯緭鍏ュ叧閿瘝"
- clearable
- :style="{ width: '100%' }"
- />
- </el-form-item>
- <el-form-item label="渚涘簲鍟嗗悕绉�">
- <el-input
- v-model="queryParams.supplierName"
- placeholder="璇疯緭鍏�"
- clearable
- :style="{ width: '100%' }"
- />
- </el-form-item>
- <el-form-item label="缁熶竴浜鸿瘑鍒彿">
- <el-input
- v-model="queryParams.identifyNumber"
- placeholder="璇疯緭鍏�"
- clearable
- :style="{ width: '100%' }"
- />
- </el-form-item>
- <el-form-item label="缁忚惀鍦板潃">
- <el-input
- v-model="queryParams.address"
- placeholder="璇疯緭鍏�"
+ v-model="queryParams.searchAll"
+ placeholder="璇疯緭鍏ヤ緵搴斿晢/鐓ょ"
clearable
:style="{ width: '100%' }"
/>
@@ -40,14 +16,16 @@
</el-form>
<el-card>
<!-- 鎿嶄綔鎸夐挳鍖� -->
- <el-row :gutter="24" class="table-toolbar">
+ <el-row :gutter="24" class="table-toolbar" justify="space-between">
<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>
+ <el-button type="primary" :icon="Plus" @click="handleAddPayable">
+ 娣诲姞搴斾粯娆�
+ </el-button>
+ <!-- <el-button type="danger" :icon="Delete" @click="handleDelete"
+ >鍒犻櫎
+ </el-button> -->
</el-row>
<!-- 琛ㄦ牸缁勪欢 -->
<data-table
@@ -56,10 +34,15 @@
:columns="columns"
@selection-change="handleSelectionChange"
@edit="handleEdit"
+ :showOverflowTooltip="false"
@delete="handleDeleteSuccess"
:show-selection="true"
:border="true"
- :maxHeight="440"
+ style="width: 100%; height: calc(100vh - 26em)"
+ @viewRow="handleView"
+ :operations="['edit', 'viewRow']"
+ :operationsWidth="200"
+ :show-overflow-tooltip="false"
/>
<pagination
v-if="total > 0"
@@ -79,6 +62,14 @@
@success="handleSuccess"
ref="productionDialogs"
/>
+ <PayableDialog
+ v-model:dialogPayableFormVisible="dialogPayableFormVisible"
+ v-model:form="formPayable"
+ :title="title"
+ @submit="handleSubmit"
+ @success="payableHandleSuccess"
+ ref="productionDialogs">
+ </PayableDialog>>
</div>
</template>
@@ -89,12 +80,34 @@
import DataTable from "@/components/Table/ETable.vue";
import Pagination from "@/components/Pagination";
import ProductionDialog from "./components/ProductionDialog.vue";
-import { purchaseRegistration } from "@/api/procureMent";
+import PayableDialog from "../payable/components/PayableDialog.vue";
+
+import {
+ purchaseRegistration,
+ getSupplyList,
+ getCoalInfoList,
+ delPR
+} from "@/api/procureMent";
+import { useDelete } from "@/hooks/useDelete";
+const userStore = useUserStore();
+const dictStore = useDictStore()
import useUserStore from "@/store/modules/user";
+import useDictStore from "@/store/modules/dict"
+
+let userList = ref([]);
+userStore.getUserList().then((res) => {
+ userList.value = res;
+});
+
// 寮曞叆瀛楀吀鏁版嵁
+
const { proxy } = getCurrentInstance();
const dialogFormVisible = ref(false);
-const form = ref({});
+const dialogPayableFormVisible = ref(false);
+const form = ref({
+ taxRate: 13,
+ freight: 20,
+});
const title = ref("");
// 鐘舵�佸彉閲�
const loading = ref(false);
@@ -103,9 +116,10 @@
const pageSize = ref(10);
const selectedRows = ref([]);
const copyForm = ref({});
+const formPayable = ref({});
// 鏌ヨ鍙傛暟
const queryParams = reactive({
- searchText: "",
+ searchAll: "",
supplierName: "",
identifyNumber: "",
address: "",
@@ -119,10 +133,12 @@
// 鏂规硶瀹氫箟
const handleQuery = () => {
loading.value = true;
+ current.value = 1;
+ pageSize.value = 10;
// 杩欓噷娣诲姞瀹為檯鐨勬煡璇㈤�昏緫
getList();
};
-const userStore = useUserStore();
+
// 鑾峰彇鐢ㄦ埛淇℃伅
const userInfo = ref({});
onMounted(async () => {
@@ -140,42 +156,115 @@
// supplier 渚涘簲鍟嗘暟鎹�
const columns = ref([
- { prop: "supplierName", label: "渚涘簲鍟嗗悕绉�", minWidth: 200 },
- { prop: "coal", label: "鐓ょ绫诲瀷", minWidth: 120 },
- { prop: "unit", label: "鍗曚綅", minWidth: 150 },
+ {
+ prop: "supplierId",
+ label: "渚涘簲鍟嗗悕绉�",
+ minWidth: 200,
+ formatter: (row) => {
+ return MatchQuery(row.supplierId, "supplyRes") || "鏈煡渚涘簲鍟�";
+ },
+ },
+ {
+ prop: "type",
+ label: "鐓ゆ枡绫诲瀷",
+ minWidth: 120,
+ formatter: (row) => {
+ return row.type === 1 ? "鎴愬搧" : "鍘熸枡";
+ },
+ },
+ {
+ prop: "coalId",
+ label: "鐓ょ绫诲瀷",
+ minWidth: 120,
+ formatter: (row) => {
+ return MatchQuery(row.coalId, "coalRes") || "鏈煡鐓ょ";
+ },
+ },
{ prop: "purchaseQuantity", label: "閲囪喘鏁伴噺", minWidth: 100 },
{ prop: "priceIncludingTax", label: "鍗曚环锛堝惈绋庯級", minWidth: 150 },
{ prop: "totalPriceIncludingTax", label: "鎬讳环锛堝惈绋庯級", minWidth: 100 },
+ { prop: "licensePlate", label: "杞︾墝鍙�", minWidth: 100 },
+ { prop: "freight", label: "杩愯垂", minWidth: 100 },
{ prop: "taxRate", label: "绋庣巼", minWidth: 100 },
{ prop: "priceExcludingTax", label: "涓嶅惈绋庡崟浠�", minWidth: 100 },
- { prop: "registrantId", label: "鐧昏浜�", minWidth: 100 },
+ { prop: "registrantId", label: "鐧昏浜�", minWidth: 100,
+ formatter: (row) => {
+ // 鍖归厤鐢ㄦ埛淇℃伅
+ const user = userList.value.find((user) => user.userId === row.registrantId);
+ return user ? user.nickName : "鏈煡鐢ㄦ埛";
+ },
+ },
+ { prop: "purchaseType", label: "绫诲瀷", minWidth: 100 ,
+ formatter: (row) => {
+ if (row.purchaseType == null) {
+ return ""
+ }
+ const dictItem = dictStore.getDictDataByTypeAndValue("purchase_type", row.purchaseType);
+ return dictItem ? dictItem.label : ""; }
+ },
{ prop: "registrationDate", label: "鐧昏鏃ユ湡", minWidth: 100 },
]);
+// 鍖归厤鏌ヨ瀛楁
+const MatchQuery = (data, name) => {
+ const list = name === "supplyRes" ? supplyRes.value.data : coalRes.value.data;
+ const item = list.find((items) => items.id == data);
+ return item ? item.coal || item.supplierName : "";
+};
+// 鑾峰彇渚涘簲鍟嗗垪琛�
+const supplyRes = ref([]);
+const coalRes = ref([]);
+
// 閲嶇疆鏌ヨ
const resetQuery = () => {
- Object.keys(queryParams).forEach((key) => {
- if (key !== "current" && key !== "pageSize") {
- queryParams[key] = "";
- }
- });
+ queryParams.searchAll = "";
+ queryParams.supplierName = "";
+ queryParams.identifyNumber = "";
+ queryParams.address = "";
+ current.value = 1;
+ pageSize.value = 10;
+ queryParams.current = current.value;
+ queryParams.pageSize = pageSize.value;
+ getList();
};
// 鏂板
const handleAdd = () => {
addOrEdit.value = "add";
handleAddEdit();
};
+const handleAddPayable = () => {
+ // 鍙湁閫夋嫨涓�琛岀殑鏃跺�欒繘琛屾搷浣�
+
+ if (selectedRows.value.length !== 1) {
+ ElMessage.error("璇烽�変腑涓�琛岃繘琛屽~鍐�")
+ return
+ }
+
+ formPayable.value = {
+ purchaseRegistrationId: selectedRows.value[0].id,
+ registrantId: userInfo.value.userId,
+ ticketNo:"",
+ paymentAmount:"",
+ payableType:"",
+ attachUpload:"",
+ registrationDate: new Date().toISOString().split("T")[0],
+ fileList:[]
+ }
+ dialogPayableFormVisible.value = true
+
+};
+
// 鏂板缂栬緫
const productionDialogs = ref(null); // 娣诲姞ref澹版槑
const handleAddEdit = () => {
- addOrEdit.value == "add" ? (title.value = "鏂板") : (title.value = "缂栬緫");
+ addOrEdit.value == "add" ? (title.value = "鏂板") : addOrEdit.value == "viewRow" ? (title.value = "鏌ョ湅") : (title.value = "缂栬緫");
title.value = title.value + "閲囪喘淇℃伅";
openDialog();
};
// 鎵撳紑寮圭獥
const openDialog = () => {
- if (addOrEdit.value === "edit") {
+ if (addOrEdit.value === "edit" || addOrEdit.value === "viewRow") {
// 纭繚澶嶅埗涓�浠芥暟鎹紝閬垮厤鐩存帴寮曠敤
copyForm.value = JSON.parse(JSON.stringify(form.value));
dialogFormVisible.value = true;
@@ -186,15 +275,17 @@
form.value = {
supplierName: "",
coal: "",
- unit: "",
+ unit: "鍚�",
purchaseQuantity: "",
priceExcludingTax: "",
totalPriceExcludingTax: "",
priceIncludingTax: "",
totalPriceIncludingTax: "",
- taxRate: "",
- registrantId: userInfo.value.userName,
+ taxRate: 13,
+ freight:20,
+ registrantId: userInfo.value.userId,
registrationDate: new Date().toISOString().split("T")[0],
+ purchaseType: ""
};
// 鏂板缓鏃朵篃闇�瑕佽缃� copyForm 鐢ㄤ簬閲嶇疆鍔熻兘
copyForm.value = JSON.parse(JSON.stringify(form.value));
@@ -221,41 +312,23 @@
addOrEdit.value = "edit";
handleAddEdit();
};
-const handleDelete = () => {
- if (selectedRows.value.length === 0) {
- ElMessage.warning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
- return;
- }
- ElMessageBox.confirm(`纭畾鍒犻櫎閫変腑鐨勬暟鎹悧锛焋, "鎻愮ず", {
- confirmButtonText: "纭畾",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- })
- .then(() => {
- // 妯℃嫙鍒犻櫎鎿嶄綔
- tableData.value = tableData.value.filter(
- (item) => !selectedRows.value.includes(item)
- );
- total.value = tableData.value.length;
- ElMessage.success("鍒犻櫎鎴愬姛");
- })
- .catch(() => {
- ElMessage.info("宸插彇娑堝垹闄�");
- });
+const handleView = (row) => {
+ form.value = JSON.parse(JSON.stringify(row));
+ addOrEdit.value = "viewRow";
+ handleAddEdit();
};
+// 浣跨敤鍒犻櫎缁勫悎寮忓嚱鏁� - 绠�鍖栫増鏈�
+const { handleDeleteBatch: handleDelete } = useDelete({
+ deleteApi: delPR,
+ selectedRows,
+ tableData,
+ total,
+ confirmText: "纭畾鍒犻櫎閫変腑鐨勯噰璐褰曞悧锛�",
+ useLocalUpdate: true
+});
const handleDeleteSuccess = (row) => {
ElMessage.success("鍒犻櫎鎴愬姛锛�" + row.supplierName);
-};
-// 瀵煎嚭
-const handleExport = (row) => {
- proxy.download(
- "system/post/export",
- {
- ...queryParams.value,
- },
- `post_${new Date().getTime()}.xlsx`
- );
- ElMessage.success("瀵煎嚭鏁版嵁锛�" + row.supplierName);
+ handleQuery()
};
// 鎴愬姛
const handleSuccess = (val) => {
@@ -264,9 +337,19 @@
total.value = tableData.value.length;
ElMessage.success("鎿嶄綔鎴愬姛");
};
+
+const payableHandleSuccess = (val) => {
+ ElMessage.success("鎿嶄綔鎴愬姛");
+ dialogPayableFormVisible.value = false;
+}
+
const getList = async () => {
loading.value = true;
try {
+ [supplyRes.value, coalRes.value] = await Promise.all([
+ getSupplyList(),
+ getCoalInfoList(),
+ ]);
// 浼犻�掑垎椤靛弬鏁�
let res = await purchaseRegistration({
current: current.value,
@@ -290,6 +373,7 @@
.app-container {
box-sizing: border-box;
}
+
.search-form {
background-color: #fff;
padding: 20px 20px 0 20px;
@@ -297,6 +381,7 @@
border-radius: 4px;
box-shadow: var(--el-box-shadow-light);
}
+
.search-form :deep(.el-form-item) {
margin-bottom: 16px;
width: 100%;
@@ -308,11 +393,13 @@
width: 50%;
}
}
+
@media screen and (min-width: 1200px) {
.search-form :deep(.el-form-item) {
width: 18%;
}
}
+
.table-toolbar {
margin-bottom: 20px;
display: flex;
@@ -325,15 +412,18 @@
.table-toolbar {
flex-direction: column;
}
+
.table-toolbar .el-button {
width: 100%;
}
}
+
/* 琛ㄦ牸宸ュ叿鏍� */
.table-toolbar,
.table-toolbar > * {
margin: 0 0 0 0 !important;
}
+
.table-toolbar {
margin-bottom: 20px !important;
}
--
Gitblit v1.9.3