multiple/assets/favicon/DHHBico.ico
 multiple/assets/favicon/HCMYico.ico
 multiple/assets/favicon/HGJJico.ico
 multiple/assets/favicon/HSMYico.ico
 multiple/assets/favicon/LQMico.ico
 multiple/assets/favicon/MKZSico.ico
 multiple/assets/favicon/PHMKico.ico
 multiple/assets/favicon/QLMCico.ico
 multiple/assets/favicon/TYMKico.ico
 multiple/assets/favicon/ZYRQico.ico
 multiple/assets/logo/DHHBLogo.png
 multiple/assets/logo/HCMYLogo.png
 multiple/assets/logo/HGJJLogo.png
 multiple/assets/logo/HSMYLogo.png
 multiple/assets/logo/LQMLogo.png
 multiple/assets/logo/MKZSLogo.png
 multiple/assets/logo/PHMKLogo.png
 multiple/assets/logo/QLMCLogo.png
 multiple/assets/logo/TYMKLogo.png
 multiple/assets/logo/ZYRQLogo.png
 multiple/assets/screen/DHHBView.png
 multiple/assets/screen/HCMYView.png
 multiple/assets/screen/HGJJView.png
 multiple/assets/screen/HSMYView.png
 multiple/assets/screen/LQMView.png
 multiple/assets/screen/MKZSView.png
 multiple/assets/screen/PHMKView.png
 multiple/assets/screen/QLMCView.png
 multiple/assets/screen/TYMKView.png
 multiple/assets/screen/ZYRQView.png
 multiple/config.json
@@ -257,6 +257,106 @@ "logo": "logo/HXSJLogo.png", "favicon": "favicon/HXSJico.ico" }, "QLMC": { "env": { "VITE_APP_TITLE": "ç¥è¿ç§åºä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9036", "VITE_JAVA_API": "http://114.132.189.42:9037" }, "screen": "screen/QLMCView.png", "logo": "logo/QLMCLogo.png", "favicon": "favicon/QLMCico.ico" }, "HCMY": { "env": { "VITE_APP_TITLE": "浩æç ¤ä¸ä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9103", "VITE_JAVA_API": "http://114.132.189.42:9094" }, "screen": "screen/HCMYView.png", "logo": "logo/HCMYLogo.png", "favicon": "favicon/HCMYico.ico" }, "HGJJ": { "env": { "VITE_APP_TITLE": "æ±å½æ´ååç ¤ä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9107", "VITE_JAVA_API": "http://114.132.189.42:9090" }, "screen": "screen/HGJJView.png", "logo": "logo/HGJJLogo.png", "favicon": "favicon/HGJJico.ico" }, "MKZS": { "env": { "VITE_APP_TITLE": "模å¯åçä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9111", "VITE_JAVA_API": "http://114.132.189.42:9086" }, "screen": "screen/MKZSView.png", "logo": "logo/MKZSLogo.png", "favicon": "favicon/MKZSico.ico" }, "HSMY": { "env": { "VITE_APP_TITLE": "å顺éä¸ä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9115", "VITE_JAVA_API": "http://114.132.189.42:9082" }, "screen": "screen/HSMYView.png", "logo": "logo/HSMYLogo.png", "favicon": "favicon/HSMYico.ico" }, "DHHB": { "env": { "VITE_APP_TITLE": "丹海ç¯ä¿ä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9117", "VITE_JAVA_API": "http://114.132.189.42:9080" }, "screen": "screen/DHHBView.png", "logo": "logo/DHHBLogo.png", "favicon": "favicon/DHHBico.ico" }, "PHMK": { "env": { "VITE_APP_TITLE": "æ®ç¦¾ç ¤ç¿ä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9119", "VITE_JAVA_API": "http://114.132.189.42:9078" }, "screen": "screen/PHMKView.png", "logo": "logo/PHMKLogo.png", "favicon": "favicon/PHMKico.ico" }, "TYMK": { "env": { "VITE_APP_TITLE": "éæºç ¤ç¿ä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9121", "VITE_JAVA_API": "http://114.132.189.42:9076" }, "screen": "screen/TYMKView.png", "logo": "logo/TYMKLogo.png", "favicon": "favicon/TYMKico.ico" }, "LQM": { "env": { "VITE_APP_TITLE": "èçªéº¦é£åä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9123", "VITE_JAVA_API": "http://114.132.189.42:9074" }, "screen": "screen/LQMView.png", "logo": "logo/LQMLogo.png", "favicon": "favicon/LQMico.ico" }, "ZYRQ": { "env": { "VITE_APP_TITLE": "伿ºçæ°ä¿¡æ¯ç®¡çç³»ç»", "VITE_BASE_API": "http://114.132.189.42:9123", "VITE_JAVA_API": "http://114.132.189.42:9031" }, "screen": "screen/ZYRQView.png", "logo": "logo/ZYRQLogo.png", "favicon": "favicon/ZYRQico.ico" }, "screen": "/src/assets/images/login-background.png", "logo": "/src/assets/logo/logo.png", "favicon": "/public/favicon.ico" src/api/salesManagement/deliveryLedger.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,39 @@ // åè´§å°è´¦é¡µé¢æ¥å£ import request from "@/utils/request"; // å页æ¥è¯¢ export function deliveryLedgerListPage(query) { return request({ url: "/shippingInfo/listPage", method: "get", params: query, }); } // ä¿®æ¹åè´§å°è´¦ export function addOrUpdateDeliveryLedger(query) { return request({ url: "/shippingInfo/update", method: "post", data: query, }); } // å é¤åè´§å°è´¦ export function delDeliveryLedger(query) { return request({ url: "/shippingInfo/delete", method: "delete", data: query, }); } // æ°å¢åè´§ä¿¡æ¯ export function addShippingInfo(data) { return request({ url: "/shippingInfo/add", method: "post", data, }); }  src/views/equipmentManagement/ledger/Form.vue
@@ -174,7 +174,7 @@ unTaxIncludingPriceTotal: undefined, // ä¸å«ç¨æ»ä»· // createUser: useUserStore().nickName, // å½å ¥äºº createTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // å½å ¥æ¥æ planRuntimeTime: dayjs().format("YYYY-MM-DD HH:mm:ss"), // å½å ¥æ¥æ planRuntimeTime: dayjs().format("YYYY-MM-DD"), // å½å ¥æ¥æ }); const loadForm = async (id) => { src/views/inventoryManagement/stockManagement/index.vue
@@ -123,11 +123,11 @@ </el-select> </el-form-item> </el-col> <!-- <el-col :span="12"> <el-col :span="12"> <el-form-item label="æä½åºåï¼" prop="minStock"> <el-input v-model="form.minStock" placeholder="请è¾å ¥æä½åºå" clearable /> </el-form-item> </el-col> --> </el-col> </el-row> </el-form> <template #footer> @@ -203,6 +203,7 @@ stockQuantity: '', boundTime: '', minStock: '', // æ°å¢æä½åºååæ®µ salesLedgerProductId: null, }, rules: { supplierName: [{ required: true, message: '请è¾å ¥ä¾åºååç§°', trigger: 'blur' }], src/views/salesManagement/deliveryLedger/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,312 @@ <template> <div class="app-container"> <div class="search_form"> <el-form :model="searchForm" :inline="true"> <el-form-item label="éå®è®¢åå·ï¼"> <el-input v-model="searchForm.salesContractNo" placeholder="请è¾å ¥" clearable prefix-icon="Search" @change="handleQuery" /> </el-form-item> <el-form-item label="车çå·ï¼"> <el-input v-model="searchForm.shippingCarNumber" placeholder="请è¾å ¥" clearable prefix-icon="Search" @change="handleQuery" /> </el-form-item> <el-form-item> <el-button type="primary" @click="handleQuery"> æç´¢ </el-button> </el-form-item> </el-form> </div> <div class="table_list"> <div class="actions"> <div></div> <div> <el-button @click="handleOut">导åº</el-button> <el-button type="danger" plain @click="handleDelete">å é¤</el-button> </div> </div> <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange" :row-key="(row) => row.id" style="width: 100%" height="calc(100vh - 18.5em)"> <el-table-column align="center" type="selection" width="55" /> <el-table-column align="center" label="åºå·" type="index" width="60" /> <el-table-column label="éå®è®¢å" prop="salesContractNo" show-overflow-tooltip /> <el-table-column label="客æ·åç§°" prop="customerName" show-overflow-tooltip /> <el-table-column label="åè´§æ¶é´" prop="shippingDate" show-overflow-tooltip /> <el-table-column label="å货车çå·" prop="shippingCarNumber" show-overflow-tooltip /> <el-table-column fixed="right" label="æä½" width="150" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="openForm('edit', scope.row)">ç¼è¾</el-button> <el-button link type="danger" size="small" @click="handleDeleteSingle(scope.row)">å é¤</el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> <el-dialog v-model="dialogFormVisible" :title="operationType === 'add' ? 'æ°å¢åè´§å°è´¦' : 'ç¼è¾åè´§å°è´¦'" width="50%" @close="closeDia"> <el-form :model="form" label-width="120px" label-position="top" :rules="rules" ref="formRef"> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="éå®è®¢åï¼" prop="salesContractNo"> <el-select v-model="form.salesContractNo" placeholder="è¯·éæ©" clearable filterable @change="handleSalesOrderChange" style="width: 100%" :disabled="operationType === 'edit'"> <el-option v-for="item in salesOrderOptions" :key="item.salesContractNo" :label="item.salesContractNo" :value="item.salesContractNo"> {{ item.salesContractNo + ' - ' + item.customerName }} </el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="客æ·åç§°ï¼" prop="customerName"> <el-input v-model="form.customerName" placeholder="请è¾å ¥" clearable :disabled="operationType === 'edit'" /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="åè´§æ¶é´ï¼" prop="shippingDate"> <el-date-picker style="width: 100%" v-model="form.shippingDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="date" placeholder="è¯·éæ©" clearable /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="å货车çå·ï¼" prop="shippingCarNumber"> <el-input v-model="form.shippingCarNumber" placeholder="请è¾å ¥" clearable /> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitForm">确认</el-button> <el-button @click="closeDia">åæ¶</el-button> </div> </template> </el-dialog> </div> </template> <script setup> import pagination from "@/components/PIMTable/Pagination.vue"; import { onMounted, ref, reactive, toRefs, getCurrentInstance } from "vue"; import { ElMessageBox } from "element-plus"; import { deliveryLedgerListPage, addOrUpdateDeliveryLedger, delDeliveryLedger, } from "@/api/salesManagement/deliveryLedger.js"; const { proxy } = getCurrentInstance(); const tableData = ref([]); const selectedRows = ref([]); const tableLoading = ref(false); const salesOrderOptions = ref([]); const page = reactive({ current: 1, size: 100, }); const total = ref(0); // ç¨æ·ä¿¡æ¯è¡¨åå¼¹æ¡æ°æ® const operationType = ref(""); const dialogFormVisible = ref(false); const data = reactive({ searchForm: { salesContractNo: "", // éå®è®¢åå· shippingCarNumber: "", // 车çå· }, form: { id: null, salesContractNo: "", customerName: "", shippingDate: "", shippingCarNumber: "", }, rules: { salesContractNo: [{ required: true, message: "è¯·éæ©éå®è®¢å", trigger: "change" }], customerName: [{ required: true, message: "请è¾å ¥å®¢æ·åç§°", trigger: "blur" }], shippingDate: [{ required: true, message: "è¯·éæ©åè´§æ¶é´", trigger: "change" }], shippingCarNumber: [{ required: true, message: "请è¾å ¥å货车çå·", trigger: "blur" }], }, }); const { form, rules } = toRefs(data); const { searchForm } = toRefs(data); // æ¥è¯¢å表 const handleQuery = () => { page.current = 1; getList(); }; const paginationChange = (obj) => { page.current = obj.page; page.size = obj.limit; getList(); }; const getList = () => { tableLoading.value = true; deliveryLedgerListPage({ ...searchForm.value, ...page }) .then((res) => { tableLoading.value = false; tableData.value = res.data.records || []; total.value = res.data.total || 0; }) .catch(() => { tableLoading.value = false; }); }; // éå®è®¢åååæ¶èªå¨å¡«å 客æ·åç§° const handleSalesOrderChange = (value) => { const selectedOrder = salesOrderOptions.value.find(item => item.salesContractNo === value); if (selectedOrder) { form.value.customerName = selectedOrder.customerName; } }; // è¡¨æ ¼éæ©æ°æ® const handleSelectionChange = (selection) => { selectedRows.value = selection; }; // æå¼å¼¹æ¡ const openForm = async (type, row) => { operationType.value = type; if (type === 'edit' && row) { form.value = { id: row.id ?? null, salesContractNo: row.salesContractNo ?? "", customerName: row.customerName ?? "", shippingDate: row.shippingDate || getCurrentDate(), shippingCarNumber: row.shippingCarNumber ?? "", }; } else { form.value = { id: null, salesContractNo: "", customerName: "", shippingDate: getCurrentDate(), shippingCarNumber: "", }; } dialogFormVisible.value = true; }; // æäº¤è¡¨å const submitForm = () => { proxy.$refs["formRef"].validate((valid) => { if (valid) { const payload = { id: form.value.id, shippingDate: form.value.shippingDate, shippingCarNumber: form.value.shippingCarNumber, }; addOrUpdateDeliveryLedger(payload).then((res) => { proxy.$modal.msgSuccess("æä½æå"); closeDia(); getList(); }); } }); }; // å ³éå¼¹æ¡ const closeDia = () => { proxy.resetForm("formRef"); dialogFormVisible.value = false; }; // å¯¼åº const handleOut = () => { ElMessageBox.confirm("éä¸çå 容å°è¢«å¯¼åºï¼æ¯å¦ç¡®è®¤å¯¼åºï¼", "导åº", { confirmButtonText: "确认", cancelButtonText: "åæ¶", type: "warning", }) .then(() => { proxy.download("/shippingInfo/export", {}, "åè´§å°è´¦.xlsx"); }) .catch(() => { proxy.$modal.msg("已忶"); }); }; // æ¹éå é¤ const handleDelete = () => { let ids = []; if (selectedRows.value.length > 0) { ids = selectedRows.value.map((item) => item.id); } else { proxy.$modal.msgWarning("è¯·éæ©æ°æ®"); return; } ElMessageBox.confirm("éä¸çå 容å°è¢«å é¤ï¼æ¯å¦ç¡®è®¤å é¤ï¼", "å é¤", { confirmButtonText: "确认", cancelButtonText: "åæ¶", type: "warning", }) .then(() => { delDeliveryLedger(ids).then((res) => { proxy.$modal.msgSuccess("å 餿å"); getList(); }); }) .catch(() => { proxy.$modal.msg("已忶"); }); }; // å个å é¤ const handleDeleteSingle = (row) => { ElMessageBox.confirm("æ¤æä½å°å é¤è¯¥è®°å½ï¼æ¯å¦ç¡®è®¤ï¼", "å é¤", { confirmButtonText: "确认", cancelButtonText: "åæ¶", type: "warning", }) .then(() => { delDeliveryLedger([row.id]).then((res) => { proxy.$modal.msgSuccess("å 餿å"); getList(); }); }) .catch(() => { proxy.$modal.msg("已忶"); }); }; // è·åå½åæ¥æå¹¶æ ¼å¼å为 YYYY-MM-DD function getCurrentDate() { const today = new Date(); const year = today.getFullYear(); const month = String(today.getMonth() + 1).padStart(2, "0"); const day = String(today.getDate()).padStart(2, "0"); return `${year}-${month}-${day}`; } onMounted(() => { getList(); }); </script> <style scoped lang="scss"> .table_list { margin-top: unset; } .actions { display: flex; justify-content: space-between; margin-bottom: 10px; } </style>  src/views/salesManagement/salesLedger/index.vue
@@ -70,11 +70,12 @@ <el-table-column label="å½å ¥äºº" prop="entryPersonName" width="100" show-overflow-tooltip /> <el-table-column label="å½å ¥æ¥æ" prop="entryDate" width="120" show-overflow-tooltip /> <el-table-column label="ç¾è®¢æ¥æ" prop="executionDate" width="120" show-overflow-tooltip /> <el-table-column fixed="right" label="æä½" min-width="140" align="center"> <el-table-column fixed="right" label="æä½" min-width="200" align="center"> <template #default="scope"> <el-button link type="primary" size="small" :disabled="scope.row.invoiceTotal>0 || scope.row.entryPersonName !== userStore.nickName" @click="openForm('edit', scope.row)">ç¼è¾</el-button> <!-- <el-button link type="primary" size="small" @click="openForm('view', scope.row)">详æ </el-button>--> <el-button link type="primary" size="small" @click="downLoadFile(scope.row)">éä»¶</el-button> <el-button link type="primary" size="small" @click="openDeliveryForm(scope.row)">åè´§</el-button> </template> </el-table-column> </el-table> @@ -407,6 +408,48 @@ </div> </div> </el-dialog> <!-- åè´§å¼¹æ¡ --> <el-dialog v-model="deliveryFormVisible" title="åè´§ä¿¡æ¯" width="40%" @close="closeDeliveryDia" > <el-form :model="deliveryForm" label-width="120px" label-position="top" :rules="deliveryRules" ref="deliveryFormRef"> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="åè´§æ¥æï¼" prop="shippingDate"> <el-date-picker style="width: 100%" v-model="deliveryForm.shippingDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="date" placeholder="è¯·éæ©åè´§æ¥æ" clearable /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="24"> <el-form-item label="å货车çå·ï¼" prop="shippingCarNumber"> <el-input v-model="deliveryForm.shippingCarNumber" placeholder="请è¾å ¥å货车çå·" clearable /> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitDelivery">确认åè´§</el-button> <el-button @click="closeDeliveryDia">åæ¶</el-button> </div> </template> </el-dialog> <FileList ref="fileListRef" /> </div> </template> @@ -415,6 +458,7 @@ import { getToken } from "@/utils/auth"; import pagination from "@/components/PIMTable/Pagination.vue"; import {onMounted, ref} from "vue"; import { addShippingInfo } from "@/api/salesManagement/deliveryLedger.js"; import { ElMessageBox } from "element-plus"; import useUserStore from "@/store/modules/user"; import { userListNoPage } from "@/api/system/user.js"; @@ -544,6 +588,25 @@ // æå°ç¸å ³ const printPreviewVisible = ref(false); const printData = ref([]); // åè´§ç¸å ³ const deliveryFormVisible = ref(false); const currentDeliveryRow = ref(null); const deliveryFormData = reactive({ deliveryForm: { shippingDate: "", shippingCarNumber: "", }, deliveryRules: { shippingDate: [ { required: true, message: "è¯·éæ©åè´§æ¥æ", trigger: "change" } ], shippingCarNumber: [ { required: true, message: "请è¾å ¥å货车çå·", trigger: "blur" } ], }, }); const { deliveryForm, deliveryRules } = toRefs(deliveryFormData); const changeDaterange = (value) => { if (value) { @@ -1460,8 +1523,46 @@ getSalesLedgerWithProducts({ id: row.id, type: 1 }).then((res) => { fileListRef.value.open(res.salesLedgerFiles) }); } // æå¼åè´§å¼¹æ¡ const openDeliveryForm = (row) => { currentDeliveryRow.value = row; deliveryForm.value = { shippingDate: getCurrentDate(), shippingCarNumber: "", }; deliveryFormVisible.value = true; }; // æäº¤å货表å const submitDelivery = () => { proxy.$refs["deliveryFormRef"].validate((valid) => { if (valid) { addShippingInfo({ salesLedgerId: currentDeliveryRow.value.id, shippingDate: deliveryForm.value.shippingDate, shippingCarNumber: deliveryForm.value.shippingCarNumber, }) .then(() => { proxy.$modal.msgSuccess("åè´§æå"); closeDeliveryDia(); getList(); }) .catch(() => { proxy.$modal.msgError("å货失败ï¼è¯·éè¯"); }); } }); }; // å ³éåè´§å¼¹æ¡ const closeDeliveryDia = () => { proxy.resetForm("deliveryFormRef"); deliveryFormVisible.value = false; currentDeliveryRow.value = null; }; onMounted(() => { getList(); }); vite.config.js
@@ -8,7 +8,7 @@ const { VITE_APP_ENV } = env; const baseUrl = env.VITE_APP_ENV === "development" ? "http://114.132.189.42:9036" ? "http://192.168.1.147:9036" : env.VITE_BASE_API; const javaUrl = env.VITE_APP_ENV === "development"