From cf344c633ef8d85faba0c37e86d4373ed586f9e1 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期五, 15 八月 2025 13:24:39 +0800
Subject: [PATCH] 增加待入账业务
---
ui/admin-ui3/src/api/cwgl/estimatedReceivableBill.ts | 47 +
ui/admin-ui3/src/api/cwgl/pendingSettlementBusiness.ts | 42
ui/admin-ui3/src/api/cwgl/estimatedReceivable.ts | 28
ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue | 117 +-
ui/admin-ui3/src/main.ts | 4
ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue | 746 +++++++++++-----
ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue | 692 ++++++++++++---
ui/admin-ui3/src/components/flowLog/index.vue | 177 ++++
ui/admin-ui3/src/views/cwgl/estimatedReceivableBill/index.vue | 671 ++++++++++++---
9 files changed, 1,905 insertions(+), 619 deletions(-)
diff --git a/ui/admin-ui3/src/api/cwgl/estimatedReceivable.ts b/ui/admin-ui3/src/api/cwgl/estimatedReceivable.ts
index f5949d4..27a5b5f 100644
--- a/ui/admin-ui3/src/api/cwgl/estimatedReceivable.ts
+++ b/ui/admin-ui3/src/api/cwgl/estimatedReceivable.ts
@@ -65,3 +65,31 @@
download('/cwgl/estimatedReceivable/export',query);
})
}
+
+/**
+ * 纭
+ */
+export const getEstimatedReceivableConfirm:requestType = (id) => {
+ return request({
+ url: '/cwgl/estimatedReceivable/confirm/' + id,
+ method:'get'
+ })
+}
+/**
+ * 鍙栨秷
+ */
+export const getCwglEstimatedReceivableCancel:requestType = (id) => {
+ return request({
+ url: '/cwgl/estimatedReceivable/cancel/' + id,
+ method:'get'
+ })
+}
+/**
+ * 浣滃簾
+ */
+export const getEstimatedReceivableInvalid:requestType = (id) => {
+ return request({
+ url: '/cwgl/estimatedReceivable/invalid/' + id,
+ method:'get'
+ })
+}
\ No newline at end of file
diff --git a/ui/admin-ui3/src/api/cwgl/estimatedReceivableBill.ts b/ui/admin-ui3/src/api/cwgl/estimatedReceivableBill.ts
index f2129b7..e49d553 100644
--- a/ui/admin-ui3/src/api/cwgl/estimatedReceivableBill.ts
+++ b/ui/admin-ui3/src/api/cwgl/estimatedReceivableBill.ts
@@ -45,6 +45,13 @@
data
})
}
+export const updateEstimatedReceivableBillNmae:requestType = (data) => {
+ return request({
+ url: '/cwgl/estimatedReceivableBill/name',
+ method: 'put',
+ data
+ })
+}
/**
* 鍒犻櫎棰勪及搴旀敹璐﹀崟
@@ -55,7 +62,13 @@
method: 'delete'
})
}
-
+/* 鍙栨秷鍏宠仈 */
+export const cancelRelevancy:requestType = (id) => {
+ return request({
+ url: '/cwgl/estimatedReceivableBill/cancel/relevancy/' + id,
+ method: 'get'
+ })
+}
/**
* 瀵煎嚭棰勪及搴旀敹璐﹀崟
@@ -65,3 +78,35 @@
download('/cwgl/estimatedReceivableBill/export',query);
})
}
+
+
+/**
+ *
+ */
+export const estimatedReceivableBillSettlement:requestType = (data) => {
+ return request({
+ url: '/cwgl/estimatedReceivableBill/settlement',
+ method: 'post',
+ data
+ })
+}
+/**
+ * 鏂板棰勪及搴旀敹绠$悊鏃ュ織
+ */
+export const addEstimatedReceivableLog:requestType = (data) => {
+ return request({
+ url: '/cwgl/estimatedReceivableLog',
+ method: 'post',
+ data
+ })
+}
+/**
+ * 鏌ヨ棰勪及搴旀敹璐﹀崟鏃ュ織鍒楄〃
+ */
+export const listEstimatedReceivableBillLog:requestType = (query) => {
+ return request({
+ url: '/cwgl/estimatedReceivableBillLog/list',
+ method:'get',
+ params:query
+ })
+}
\ No newline at end of file
diff --git a/ui/admin-ui3/src/api/cwgl/pendingSettlementBusiness.ts b/ui/admin-ui3/src/api/cwgl/pendingSettlementBusiness.ts
index 4942d23..6c1ae6c 100644
--- a/ui/admin-ui3/src/api/cwgl/pendingSettlementBusiness.ts
+++ b/ui/admin-ui3/src/api/cwgl/pendingSettlementBusiness.ts
@@ -23,7 +23,49 @@
method:'get'
})
}
+/* 寰呭叆璐︿笟鍔¤处鍗� */
+export const getCwglPendingSettlementBusinessBillList:requestType = (query) => {
+ return request({
+ url: '/cwgl/pendingSettlementBusiness/bill/list',
+ method:'get',
+ params:query
+ })
+}
+/* 纭鏈嬀閫夎处鍗� */
+export const pendingSettlementBusinessCreateBillList:requestType = (query) => {
+ return request({
+ url: '/cwgl/pendingSettlementBusiness/create/bill/list',
+ method:'get',
+ params:query
+ })
+}
+/* 纭鍕鹃�夎处鍗� */
+export const cwglPendingSettlementBusinessCreateBill:requestType = (data,id) => {
+ return request({
+ url: '/cwgl/pendingSettlementBusiness/create/bill/'+ id,
+ method: 'post',
+ data
+ })
+}
+
+/* 瀹㈡埛鍚嶇О */
+export const getSelectCustomNam:requestType = () => {
+ return request({
+ url: '/cwgl/pendingSettlementBusiness/select/customName',
+ method:'get'
+ })
+}
+
+/**
+ * 鑾峰彇鐢熸垚璐﹀崟
+ */
+export const getPendingSettlementBusinessBill:requestType = (id) => {
+ return request({
+ url: '/cwgl/pendingSettlementBusiness/bill/' + id,
+ method:'get'
+ })
+}
/**
* 鏂板寰呭叆璐︿笟鍔�
*/
diff --git a/ui/admin-ui3/src/components/flowLog/index.vue b/ui/admin-ui3/src/components/flowLog/index.vue
new file mode 100644
index 0000000..d345756
--- /dev/null
+++ b/ui/admin-ui3/src/components/flowLog/index.vue
@@ -0,0 +1,177 @@
+<script lang="ts" setup>
+import { reactive, ref, toRefs, watch, nextTick } from "vue";
+import { BaseEntityInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { getToken } from "@/utils/auth";
+
+// import { listDzInoutOrder } from "@/api/dz/dzInoutOrder";
+import useCurrentInstance from "@/utils/useCurrentInstance"; import { ElTable, ElTableColumn } from 'element-plus'
+const { proxy } = useCurrentInstance();
+
+interface DzInoutOrderI extends BaseEntityInterface {
+ id?: number,
+ no?: string,
+ sasStockNo?: string,
+ entryNo?: string,
+ bondInvtId?: number,
+ bondInvtNo?: string,
+ releaseId?: number,
+ releaseNo?: string,
+ areainOriactNo?: string,
+ areainEtpsNo?: string,
+ areainEtpsNm?: string,
+ areainEtpsSccd?: string,
+ masterCuscd?: string,
+ stockTypecd?: string,
+ businessTypecd?: string,
+ rltSasStockNo?: string,
+ dclEr?: string,
+ dclEtpsNo?: string,
+ dclEtpsNm?: string,
+ dclEtpsSccd?: string,
+ inputCode?: string,
+ inputSccd?: string,
+ inputName?: string,
+ etpsPreentNo?: string,
+ packageQty?: string,
+ grossWt?: string,
+ netWt?: string,
+ packType?: string,
+ eportReplaceMark?: number,
+ mtpckEndprdType?: string,
+ enterpriseName?: string,
+ stockDate?: string,
+ tradeType?: number,
+ conveyanceId?: number,
+ conveyanceNo?: string,
+ conveyanceName?: string,
+ enterId?: number,
+ deleted?: number,
+}
+const props = defineProps({
+ flowParams: Array,
+ flowParamsShow: {
+ type: Boolean,
+ default: false
+ },
+ fileNameIshow: {
+ type: Boolean,
+ default: false
+ },
+})
+console.log(props);
+
+const { } =
+ proxy.useDict();
+
+
+const stockTypecdFormat = (row: any) => {
+ return proxy.selectDictLabel(sy_dz_account_book_status.value, row.stockTypecd);
+}
+
+const data = reactive({
+ orderSelection: <DzInoutOrderI[]>[],
+ queryParams: <DzInoutOrderI & PageQueryInterface>{ pageNum: 1, pageSize: 10 },
+ rules: {},
+})
+const { queryParams, rules, orderSelection } = toRefs(data);
+const currentRow = ref()
+const emit = defineEmits(['affirm'])
+const {
+ pageF, tableData, getList,
+ handleQuery, resetQuery,
+} = usePagePlus({
+ title: '娴佺▼鏃ュ織',
+ queryParams: queryParams.value,
+ // getListApi: listDzInoutOrder,
+ resetQueryFunc: () => {
+ },
+
+})
+
+
+const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+/**
+ * 纭畾
+ */
+const affirmQuery = () => {
+
+}
+let newArray = ref<any>()
+const openModel = () => {
+ pageF.drawerOpen = true;
+}
+
+
+const closeModel = () => {
+ pageF.drawerOpen = false;
+}
+
+
+// getList()
+const download_qr_code = (row: string) => {
+ downloadFile(row.fileName);
+}
+const baseURL = import.meta.env.VITE_APP_BASE_API
+
+// 鍒涘缓涓�涓偣鍑讳簨浠惰Е鍙戜笅杞�
+function downloadFile(row: any) {
+ // 鏂囦欢涓嬭浇鍦板潃
+ const fileUrl = baseURL + "/common/download/resource?resource=" + encodeURI(row);
+ // 璁剧疆璇锋眰澶�
+ const headers = new Headers();
+ headers.append('Authorization', 'Bearer ' + getToken()); // 璁剧疆鎺堟潈澶达紝鏇挎崲YourAccessToken涓哄疄闄呯殑璁块棶浠ょ墝
+ // 鍙戣捣 Fetch 璇锋眰
+ fetch(fileUrl, {
+ method: 'GET',
+ headers: headers,
+ })
+ .then(response => response.blob())
+ .then(blob => {
+ // 鍒涘缓涓�涓櫄鎷熺殑閾炬帴鍏冪礌锛屾ā鎷熺偣鍑讳笅杞�
+ const link = document.createElement('a');
+ link.href = window.URL.createObjectURL(blob);
+ link.download = row; // 璁剧疆涓嬭浇鏂囦欢鍚嶏紝鏇挎崲filename.ext涓哄疄闄呯殑鏂囦欢鍚嶅拰鎵╁睍鍚�
+ document.body.appendChild(link);
+ // 妯℃嫙鐐瑰嚮
+ link.click();
+
+ // 绉婚櫎铏氭嫙閾炬帴鍏冪礌
+ document.body.removeChild(link);
+ })
+ .catch(error => console.error('涓嬭浇澶辫触锛�', error));
+}
+defineExpose({
+ openModel,
+})
+</script>
+<template>
+ <el-dialog v-model="pageF.drawerOpen" title="娴佺▼鏃ュ織" append-to-body width="1000px">
+ <div class="app-container" style="padding-top: 0;">
+ <el-table ref="multipleTableRef" :data="props.flowParams">
+ <el-table-column align="center" label="澶勭悊鏃堕棿" prop="createTime" />
+ <el-table-column align="center" label="澶勭悊浜哄憳" prop="createBy" />
+ <el-table-column align="center" label="闄勪欢涓嬭浇" prop="fileName">
+ <template #default="scope">
+ <el-link v-if="scope.row.fileName" type="primary" :underline="false"
+ @click="download_qr_code(scope.row)">
+ {{scope.row.fileName}}
+ </el-link>
+ <span v-else>鏃犻檮浠�</span>
+ </template>
+ </el-table-column>
+ <el-table-column align="center" label="鑺傜偣鎻忚堪" prop="operation" show-overflow-tooltip="true" />
+ </el-table>
+ <!-- <pagination style="position: relative;" v-show="pageF.total > 0" v-model:limit="queryParams.pageSize"
+ v-model:page="queryParams.pageNum" :total="pageF.total" @pagination="getList" /> -->
+ </div>
+
+ <div class="dialog-footer" style="text-align: right">
+ <el-button @click="closeModel">鍏抽棴</el-button>
+ </div>
+ </el-dialog>
+</template>
+
+
+
+<style scoped></style>
diff --git a/ui/admin-ui3/src/main.ts b/ui/admin-ui3/src/main.ts
index 24cd8eb..1fe33ee 100644
--- a/ui/admin-ui3/src/main.ts
+++ b/ui/admin-ui3/src/main.ts
@@ -27,11 +27,15 @@
import DictTag from "/src/components/DictTag/index.vue";
import FileUpload from "/src/components/FileUpload/index.vue";
import basicContainer from '/src/components/basic-container/main.vue';
+import flowLog from './components/flowLog/index.vue';
+
import SvgIcon from "/src/components/SvgIcon/index.vue";
app.component("DictTag", DictTag);
app.component('FileUpload', FileUpload);
app.component('basicContainer', basicContainer)
+app.component('flowLog', flowLog)
+
app.component('svg-icon', SvgIcon)
diff --git a/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue b/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue
index 3c62f0a..4e4b111 100644
--- a/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/dispatchOrder/index.vue
@@ -111,6 +111,8 @@
delBtn: false,
viewBtn: false,
selection: false,
+ searchSpan: 5,
+ searchLabelWidth: 100,
column: {
dispatchNo: {
fixed: 'left',
@@ -146,63 +148,63 @@
vehiclePlateId: {
label: '杞︽澘鍙�', width: 120,
},
- mainDriverName: {
- label: '涓婚┚椹跺憳', width: 120,
- },
- assistantDriverName: {
- label: '鍓┚椹跺憳', width: 120,
- },
- pointNum: {
- label: '鎻愰�佽揣鐐规暟', width: 120,
- },
- quantity: {
- label: '浠舵暟', width: 120,
- },
- actualDepartureTime: {
- label: '瀹為檯鍑哄彂鏃堕棿', width: 180,
- },
- actualDepartureTimeRange: {
- label: '瀹為檯鍑哄彂鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 6, searchLabelWidth: 110,
- valueFormat: 'YYYY-MM-DD',
- },
- requiredArrivalTime: {
- label: '瑕佹眰鍒拌揪鏃堕棿', width: 180,
- },
- requiredArrivalTimeRange: {
- label: '瑕佹眰鍒拌揪鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 6, searchLabelWidth: 110,
- valueFormat: 'YYYY-MM-DD',
- },
- actualArrivalTime: {
- label: '瀹為檯鍒拌揪鏃堕棿', width: 180,
- },
- actualArrivalTimeRange: {
- label: '瑕佹眰鍒拌揪鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
- format: 'YYYY-MM-DD', hide: true, searchSpan: 6, searchLabelWidth: 110,
- valueFormat: 'YYYY-MM-DD',
- },
- beReturn: {
- label: '鏄惁鍥炵▼', dataType: 'string', width: 100,
- type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
- },
- dispatchQuantity: {
- label: '瀹炲彂浠舵暟', width: 100,
- },
- dispatchWeight: {
- label: '瀹炲彂閲嶉噺', width: 100,
- },
- dispatchVolume: {
- label: '瀹炲彂浣撶Н(绔嬫柟锛�', width: 160,
- },
- status: {
- label: '鐘舵��', search: true, dataType: 'string', width: 100,
- type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
- },
- remark: {
- label: '澶囨敞', width: 120,
- type: 'textarea', minRows: 3, maxRows: 5,
- },
+ // mainDriverName: {
+ // label: '涓婚┚椹跺憳', width: 120,
+ // },
+ // assistantDriverName: {
+ // label: '鍓┚椹跺憳', width: 120,
+ // },
+ // pointNum: {
+ // label: '鎻愰�佽揣鐐规暟', width: 120,
+ // },
+ // quantity: {
+ // label: '浠舵暟', width: 120,
+ // },
+ // actualDepartureTime: {
+ // label: '瀹為檯鍑哄彂鏃堕棿', width: 180,
+ // },
+ // actualDepartureTimeRange: {
+ // label: '瀹為檯鍑哄彂鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 5, searchLabelWidth: 120,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
+ // requiredArrivalTime: {
+ // label: '瑕佹眰鍒拌揪鏃堕棿', width: 180,
+ // },
+ // requiredArrivalTimeRange: {
+ // label: '瑕佹眰鍒拌揪鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 5, searchLabelWidth: 120,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
+ // actualArrivalTime: {
+ // label: '瀹為檯鍒拌揪鏃堕棿', width: 180,
+ // },
+ // actualArrivalTimeRange: {
+ // label: '瑕佹眰鍒拌揪鏃堕棿', display: false, search: true, searchRange: true, type: 'date',
+ // format: 'YYYY-MM-DD', hide: true, searchSpan: 5, searchLabelWidth: 120,
+ // valueFormat: 'YYYY-MM-DD',
+ // },
+ // beReturn: {
+ // label: '鏄惁鍥炵▼', dataType: 'string', width: 100,
+ // type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
+ // },
+ // dispatchQuantity: {
+ // label: '瀹炲彂浠舵暟', width: 100,
+ // },
+ // dispatchWeight: {
+ // label: '瀹炲彂閲嶉噺', width: 100,
+ // },
+ // dispatchVolume: {
+ // label: '瀹炲彂浣撶Н(绔嬫柟锛�', width: 160,
+ // },
+ // status: {
+ // label: '鐘舵��', search: true, dataType: 'string', width: 100,
+ // type: 'select', dicUrl: '/system/dict/data/type/dispatch_order_status',
+ // },
+ // remark: {
+ // label: '澶囨敞', width: 120,
+ // type: 'textarea', minRows: 3, maxRows: 5,
+ // },
// createBy: {
// label: '鍒涘缓浜�',
// },
@@ -288,6 +290,7 @@
type: 'select',
dicUrl: '/system/dict/data/type/sys_whether_type',
},
+
}
})
diff --git a/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue b/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue
index dee3b92..e910b87 100644
--- a/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/estimatedReceivable/index.vue
@@ -1,189 +1,551 @@
<template>
- <basicContainer >
- <avue-crud
- :option="option"
- :table-loading="pageF.loading"
- :data="tableData"
- :page="page"
- :permission="permissionList"
- :before-open="beforeOpen"
- v-model="form"
- ref="crudRef"
- @row-update="rowUpdate"
- @row-save="rowSave"
- @refresh-change="refreshChange"
- @row-del="rowDel"
- @search-change="searchChange"
- @search-reset="searchReset"
- @selection-change="selectionChange"
- @current-change="currentChange"
- @size-change="sizeChange"
- @on-load="onLoad"
- >
+ <basicContainer>
+ <avue-crud :option="option" v-model:search="queryParams" :table-loading="pageF.loading" :data="tableData"
+ :page="page" :permission="permissionList" :before-open="beforeOpen" v-model="form" ref="crudRef"
+ @row-update="rowUpdate" @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel"
+ @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+ @current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
+
+ <template #dispatchNo-form="{ row, size, }">
+ <div style="cursor: pointer;">
+ <el-input v-model="form.dispatchNo" @click="handleFormSearch" readonly placeholder="璇疯緭鍏ヨ皟搴﹀崟鍙�">
+ <template #append>
+ <el-button icon="Search" style="cursor: pointer;" @click="handleFormSearch"></el-button>
+ </template>
+ </el-input>
+ </div>
+ </template>
+
+
+
<template #menu-left>
- <el-button
- type="success"
- icon="Edit"
- :disabled="pageF.single"
- v-hasPermi="['cwgl:estimatedReceivable:edit']"
- @click="handleUpdate">淇敼
+ <el-button type="success" icon="Edit" :disabled="pageF.single" v-hasPermi="['cwgl:estimatedReceivable:edit']"
+ @click="handleUpdate">淇敼
</el-button>
- <el-button
- type="danger"
- icon="Delete"
- :disabled="pageF.multiple"
- @click="handleDelete"
- v-hasPermi="['cwgl:estimatedReceivable:remove']"
- >鍒犻櫎
+ <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+ v-hasPermi="['cwgl:estimatedReceivable:remove']">鍒犻櫎
</el-button>
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['cwgl:estimatedReceivable:export']"
- >瀵煎嚭
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['cwgl:estimatedReceivable:export']">瀵煎嚭
</el-button>
+ </template>
+
+
+ <template #menu="{ size, row, index }">
+ <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 1" :underline="false" plain :size="size"
+ @click="handleCancel(row)" v-hasPermi="['cwgl:estimatedReceivable:cancel']"> 鍙栨秷纭
+ </el-link>
+ <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 0" :underline="false" plain
+ @click="handleAffirm(row)" v-hasPermi="['cwgl:estimatedReceivable:confirm']"> 纭
+ </el-link>
+ <el-link class="link-btn" type="primary" v-if="row.isConfirmed == 1" :underline="false" plain
+ @click="handleInvalid(row)" v-hasPermi="['cwgl:estimatedReceivable:invalid']"> 浣滃簾
+ </el-link>
+ <el-link class="link-btn" type="primary" :underline="false" plain @click="handleFlow(row)"
+ v-hasPermi="['cwgl:estimatedReceivable:flog']"> 鏃ュ織
+ </el-link>
</template>
</avue-crud>
</basicContainer>
+
+ <el-dialog v-model="dialog.visible" :title="dialog.title" width="1200px">
+ <!-- <el-form ref="storagesTransferRef" :model="newForm" :rules="rules" label-width="120px">
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <el-form-item label="璋冨害鍗曞彿" prop="dispatchNo">
+ <el-input v-model="newForm.dispatchNo" placeholder="璇疯緭鍏ヨ皟搴﹀崟鍙�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="瀹㈡埛鍚嶇О" prop="customerName">
+ <el-input v-model="newForm.customerName" placeholder="璇疯緭鍏ュ鎴峰悕绉�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="椤圭洰鍚嶇О" prop="projectName">
+ <el-input v-model="newForm.projectName" placeholder="璇疯緭鍏ラ」鐩悕绉�" />
+
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item label="涓嬪崟鏃ユ湡" prop="createdTime">
+ <el-date-picker v-model="newForm.createdTime" type="date" valueFormat="YYYY-MM-DD" placeholder="璇烽�夋嫨涓嬪崟鏃ユ湡"/>
+ </el-form-item>
+ </el-col>
+ <el-col :span="8">
+ <el-form-item>
+ <el-button type="primary" icon="Search" @click="newGetList">鎼滅储</el-button>
+ <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item>
+ </el-col>
+
+ </el-row>
+
+ </el-form>
+
+ <el-table :data="newTableData" @selection-change="handleSelectionChange" border ref="newTableRef"
+ @row-click="handleRowClick">
+ <el-table-column type="selection" width="55" align="center" />
+ <el-table-column fixed label="璋冨害鍗曞彿" align="center" prop="dispatchNo" show-overflow-tooltip />
+ <el-table-column label="瀹㈡埛鍚嶇О" align="center" prop="customerName" show-overflow-tooltip />
+ <el-table-column label="椤圭洰鍚嶇О" align="center" prop="projectName" show-overflow-tooltip />
+ <el-table-column label="涓嬪崟鏃ユ湡" align="center" prop="createdTime" show-overflow-tooltip />
+ </el-table> -->
+
+ <avue-crud :option="newOption" :data="newTableData" v-model:search="newForm" :page="newPageF"
+ :table-loading="itemTableLoading2" @search-change="newSearchChange" ref="newTableRef"
+ @selection-change="newSelectionChange" @search-reset="newRsetChange"
+ @current-change="handleAttachmentCurrentChange" @size-change="handleAttachmentSizeChange" @on-load="newOnLoad">
+ </avue-crud>
+
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </template>
+
+ </el-dialog>
+
+ <flowLog ref="flowLogIshow" :flowParams="flowParams" ></flowLog>
</template>
<script setup name="estimatedReceivable" lang="ts">
- import {EstimatedReceivableI,addEstimatedReceivable, delEstimatedReceivable, exportEstimatedReceivable, getEstimatedReceivable, listEstimatedReceivable, updateEstimatedReceivable} from "@/api/cwgl/estimatedReceivable";
- import useCurrentInstance from "@/utils/useCurrentInstance";
- import {computed,reactive, ref, toRefs} from "vue";
- import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
- import {usePagePlus} from "@/hooks/usePagePlus";
- import {hasPermission} from "@/utils/permissionUtils";
+import {
+ EstimatedReceivableI, addEstimatedReceivable, delEstimatedReceivable, exportEstimatedReceivable, getEstimatedReceivable, listEstimatedReceivable, updateEstimatedReceivable,
+ getEstimatedReceivableConfirm, getCwglEstimatedReceivableCancel, getEstimatedReceivableInvalid
+} from "@/api/cwgl/estimatedReceivable";
+ import { listEstimatedReceivableLog} from "@/api/cwgl/estimatedReceivableLog";
+ import {listEstimatedReceivableBillLog} from "@/api/cwgl/estimatedReceivableBillLog";
+import {
+ listPendingSettlementBusiness,
+} from "@/api/cwgl/pendingSettlementBusiness";
+import useCurrentInstance from "@/utils/useCurrentInstance";
+import { computed, reactive, ref, toRefs } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+import { ElMessage, ElMessageBox } from "element-plus";
- const { proxy } = useCurrentInstance();
- const crudRef = ref();
+const { proxy } = useCurrentInstance();
+const crudRef = ref();
- const permissionList = computed(()=>{
- return {
- addBtn: hasPermission(["cwgl:estimatedReceivable:add"]),
- delBtn: hasPermission(["cwgl:estimatedReceivable:remove"]),
- editBtn: hasPermission(["cwgl:estimatedReceivable:edit"]),
- viewBtn: hasPermission(["cwgl:estimatedReceivable:query"]),
- }
- })
+const permissionList = computed(() => {
+ return {
+ addBtn: hasPermission(["cwgl:estimatedReceivable:add"]),
+ delBtn: hasPermission(["cwgl:estimatedReceivable:remove"]),
+ editBtn: hasPermission(["cwgl:estimatedReceivable:edit"]),
+ viewBtn: hasPermission(["cwgl:estimatedReceivable:query"]),
+ }
+})
- const data = reactive({
- form:<EstimatedReceivableI>{},
- queryParams:<EstimatedReceivableI&PageQueryInterface>{},
- page: <PagesInterface>{
- pageSize: 10,
- total: 0,
- currentPage: 1,
+const data = reactive({
+ form: <EstimatedReceivableI>{},
+ newTableData: [],
+ newForm: <EstimatedReceivableI>{
+ pageNum: 1,
+ pageSize: 10
+ },
+ queryParams: <EstimatedReceivableI & PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList: [],
+ newSelectionList: [],
+ itemTableLoading1: false,
+ itemTableLoading2: false,
+})
+const { queryParams, form, page, selectionList, newForm, newTableData, newSelectionList, itemTableLoading1, itemTableLoading2 } = toRefs(data);
+const option = ref({
+ pageKey: 'EstimatedReceivable',
+ rowKey: 'id',
+ searchSpan: 5,
+ editDisplay: false,
+
+ addBtn: true,
+ editBtn: true,
+ delBtn: false,
+ viewBtn: false,
+
+ searchLabelWidth: 100,
+ labelWidth: 120,
+ column: {
+ // id: {
+ // label: 'ID',
+ // },
+ feeSystemNo: {
+ label: '璐圭敤绯荤粺缂栧彿',
+ rules: [
+ {
+ required: true,
+ message: "璐圭敤绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ search: true,
+ addDisplay: false,
+ editDisplay: false,
},
- selectionList:[],
- })
- const {queryParams,form,page,selectionList} = toRefs(data);
- const option = ref({
- pageKey: 'EstimatedReceivable',
- rowKey: 'id',
- column: {
- id: {
- label: 'ID',
- },
- feeSystemNo: {
- label: '璐圭敤绯荤粺缂栧彿',
- rules: [
- {
- required: true,
- message: "璐圭敤绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- dispatchNo: {
- label: '璋冨害鍗曞彿',
- rules: [
- {
- required: true,
- message: "璋冨害鍗曞彿涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- customerName: {
- label: '瀹㈡埛鍚嶇О',
- rules: [
- {
- required: true,
- message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- projectName: {
- label: '椤圭洰鍚嶇О',
- },
- orderDate: {
- label: '涓嬪崟鏃ユ湡',
- },
- feeName: {
- label: '璐圭敤鍚嶇О',
- rules: [
- {
- required: true,
- message: "璐圭敤鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- estimatedAmount: {
- label: '棰勪及璐圭敤閲戦',
- },
- currency: {
- label: '甯佸埗',
- },
- relatedBillName: {
- label: '鍏宠仈璐﹀崟鍚嶇О',
- },
- relatedBillStatus: {
- label: '鍏宠仈璐﹀崟鐘舵��',
- },
- isConfirmed: {
- label: '鏄惁纭(0:鏈‘璁�;1:宸茬‘璁�)',
- },
- confirmBy: {
- label: '纭浜�',
- },
- confirmTime: {
- label: '纭鏃堕棿',
- },
- remark: {
- label: '澶囨敞',
- type: 'textarea', minRows: 3, maxRows: 5,
- },
- createBy: {
- label: '鍒涘缓浜�',
- },
- updateBy: {
- label: '鏇存柊浜�',
- },
- createTime: {
- label: '鍒涘缓鏃堕棿',
- },
- updateTime: {
- label: '鏇存柊鏃堕棿',
- },
- deleted: {
- label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
- },
- }
- })
+ dispatchNo: {
+ label: '璋冨害鍗曞彿',
+ rules: [
+ {
+ required: true,
+ message: "璋冨害鍗曞彿涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ search: true,
+ },
+ customerName: {
+ label: '瀹㈡埛鍚嶇О',
+ rules: [
+ {
+ required: true,
+ message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ search: true,
+ disabled: true,
+ },
+ projectName: {
+ label: '椤圭洰鍚嶇О',
+ search: true,
+ disabled: true,
+ },
+ orderDate: {
+ label: '涓嬪崟鏃ユ湡',
+ search: true,
+ type: 'datetime', // 鏀逛负 datetime 绫诲瀷
+ format: 'YYYY-MM-DD HH:mm:ss',
+ valueFormat: 'YYYY-MM-DD HH:mm:ss',
+ },
+ feeName: {
+ label: '璐圭敤鍚嶇О',
+ rules: [
+ {
+ required: true,
+ message: "璐圭敤鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ search: true,
+ },
- const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
- searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
- form:form,
- option:option,
- queryParams:queryParams,
- idKey:'id',
- page:page.value,
- getListApi:listEstimatedReceivable,
- getDetailApi:getEstimatedReceivable,
- exportApi:exportEstimatedReceivable,
- deleteApi:delEstimatedReceivable,
- addApi:addEstimatedReceivable,
- updateApi:updateEstimatedReceivable,
- handleUpdateFunc:()=>{
+ estimatedAmount: {
+ label: '璐圭敤閲戦',
+ rules: [
+ {
+ required: true,
+ message: "璐圭敤閲戦涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+ currency: {
+ label: '甯佸埗',
+ disabled: true,
+ },
+ relatedBillName: {
+ label: '鍏宠仈璐﹀崟鍚嶇О',
+ },
+ relatedBillStatus: {
+ label: '鍏宠仈璐﹀崟鐘舵��',
+ search: true,
+ dataType: 'string',
+ type: 'select',
+
+ dicUrl: '/system/dict/data/type/sys_related_status',
+ // formatter: (row, value) => {
+ // // 鑷畾涔夋牸寮忓寲閫昏緫锛堝鏋滈渶瑕侊級
+ // return value;
+ // }
+ },
+ isConfirmed: {
+ label: '鏄惁纭',
+ dataType: 'string',
+
+ search: true,
+ type: 'select',
+ dicUrl: '/system/dict/data/type/sys_affirm_status',
+ },
+ remark: {
+ label: '澶囨敞',
+ type: 'textarea', minRows: 3, maxRows: 5,
+ },
+
+
+
+ // confirmBy: {
+ // label: '纭浜�',
+ // },
+ // confirmTime: {
+ // label: '纭鏃堕棿',
+ // },
+
+ // createBy: {
+ // label: '鍒涘缓浜�',
+ // },
+ // updateBy: {
+ // label: '鏇存柊浜�',
+ // },
+ // createTime: {
+ // label: '鍒涘缓鏃堕棿',
+ // },
+ // updateTime: {
+ // label: '鏇存柊鏃堕棿',
+ // },
+ // deleted: {
+ // label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
+ // },
+ }
+})
+
+const newOption = ref({
+ pageKey: 'PendingSettlementBusiness',
+ rowKey: 'id',
+ searchSpan: 5,
+ selectionType: 'single',
+ selectType: 'radio',
+ editDisplay: false,
+ addBtn: false,
+ editBtn: false,
+ menu: false,
+ delBtn: false,
+ viewBtn: false,
+ searchLabelWidth: 100,
+ labelWidth: 120,
+ indexLabel: '搴忓彿',
+ column: {
+ dispatchNo: {
+ label: '璋冨害鍗曞彿',
+ search: true,
+ },
+ customerName: {
+ label: '瀹㈡埛鍚嶇О',
+ search: true,
+ },
+ projectName: {
+ label: '椤圭洰鍚嶇О',
+ search: true,
+ },
+ createdTime: {
+ label: '涓嬪崟鏃ユ湡',
+ search: true,
+ type: 'date',
+ format: 'YYYY-MM-DD',
+ valueFormat: 'YYYY-MM-DD',
+ }
+ }
+})
+const { tableData, pageF, rowSave, rowUpdate, rowDel, beforeOpen, searchChange,
+ searchReset, selectionChange, onLoad, currentChange, sizeChange, handleDelete, handleExport, handleUpdate, refreshChange } = usePagePlus({
+ form: form,
+ option: option,
+ queryParams: queryParams,
+ idKey: 'id',
+ page: page.value,
+ getListApi: listEstimatedReceivable,
+ getDetailApi: getEstimatedReceivable,
+ exportApi: exportEstimatedReceivable,
+ deleteApi: delEstimatedReceivable,
+ addApi: addEstimatedReceivable,
+ updateApi: updateEstimatedReceivable,
+ handleUpdateFunc: () => {
crudRef.value.rowEdit(selectionList.value[0]);
},
- handleSelectionChangeFunc:(selection:any)=>{
+ handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
}
})
+const dialog = reactive({
+ visible: false,
+ title: '',
+})
+const newPageF = ref<PagesInterface>({
+ total: 0,
+ pageSize: 10
+})
+const storagesTransferRef = ref<FormInstance>()
+const handleFormSearch = () => {
+ listPendingSettlementBusiness(newForm.value).then((res) => {
+ if (res.code === 200) {
+ dialog.visible = true;
+ dialog.title = '閫夋嫨璋冨害鍗曞彿';
+ newTableData.value = res.rows || [];
+ newPageF.value.total = res.total || 0;
+ console.log(newPageF.value.totale);
+
+ }
+ })
+}
+const newGetList = () => {
+ console.log(newForm.value);
+
+ listPendingSettlementBusiness(newForm.value).then((res) => {
+ if (res.code === 200) {
+ newTableData.value = res.rows || [];
+ newPageF.value.total = res.total || 0;
+ }
+ })
+}
+
+const newTableRef = ref();
+const newSelectionChange = (selection: any) => {
+
+ // 鍙繚鐣欐渶鍚庝竴涓�変腑鐨勯」
+ if (selection.length > 1) {
+ const nowVal = selection.shift();
+ // newTableRef.value.clearSelection([]);
+ newTableRef.value.toggleRowSelection(nowVal, false);
+
+ } else {
+ console.log("newSelectionChange", selection);
+
+ newSelectionList.value = selection
+ }
+}
+
+const resetQuery = () => {
+ newForm.value = {
+ pageNum: 1,
+ pageSize: 10
+ }
+ listPendingSettlementBusiness(newForm.value).then((res) => {
+ if (res.code === 200) {
+ newTableData.value = res.rows || [];
+ newPageF.value.total = res.total || 0;
+ }
+ })
+}
+const submitForm = () => {
+ if (newSelectionList.value.length === 0) {
+ proxy.$modal.msgWarning("璇烽�夋嫨璋冨害鍗曞彿");
+ return;
+ }
+ const selectedDispatchNo = newSelectionList.value[0]
+ // option.value.column = selectedDispatchNo;
+ // 灏嗛�変腑琛岀殑鏁版嵁璧嬪�肩粰琛ㄥ崟
+ form.value.dispatchNo = selectedDispatchNo.dispatchNo;
+ form.value.customerName = selectedDispatchNo.customerName;
+ form.value.projectName = selectedDispatchNo.projectName;
+ form.value.currency = '浜烘皯甯�';
+ dialog.visible = false;
+}
+
+/* */
+// 澶勭悊闄勪欢鍒嗛〉椤电爜鍙樺寲
+const handleAttachmentCurrentChange = (currentPage: number) => {
+ newForm.value.pageNum = currentPage;
+ getEstimatedReceivableCancel();
+}
+// 澶勭悊闄勪欢鍒嗛〉澶у皬鍙樺寲
+const handleAttachmentSizeChange = (pageSize: number) => {
+ newForm.value.pageSize = pageSize;
+ getEstimatedReceivableCancel();
+}
+const newOnLoad = () => {
+ getEstimatedReceivableCancel()
+}
+// 鍔犺浇闄勪欢鏁版嵁鐨勫嚱鏁�
+const loadAttachmentData = () => {
+ itemTableLoading2.value = true;
+ listPendingSettlementBusiness(newForm.value).then((res) => {
+ if (res.code === 200) {
+ dialog.visible = true;
+ dialog.title = '閫夋嫨璋冨害鍗曞彿';
+ newTableData.value = res.rows || [];
+ newPageF.value.total = res.total || 0;
+ }
+ itemTableLoading2.value = false;
+ })
+
+}
+const getEstimatedReceivableCancel = () => {
+ itemTableLoading2.value = true;
+ listPendingSettlementBusiness(newForm.value).then((res) => {
+ if (res.code === 200) {
+ newTableData.value = res.rows || [];
+ newPageF.value.total = res.total || 0;
+ }
+ itemTableLoading2.value = false;
+ })
+}
+const newSearchChange = (params, done) => {
+ itemTableLoading2.value = true;
+ listPendingSettlementBusiness(newForm.value).then((res) => {
+ if (res.code === 200) {
+ done()
+ newTableData.value = res.rows || [];
+ newPageF.value.total = res.total || 0;
+ }
+ itemTableLoading2.value = false;
+ })
+}
+const newRsetChange = (done) => {
+ getEstimatedReceivableCancel()
+}
+// 闄勪欢琛ㄦ牸鍔犺浇浜嬩欢
+const attachmentChange = () => {
+ // loadAttachmentData();
+}
+/* */
+const cancel = () => {
+ dialog.visible = false;
+ newForm.value = {
+ pageNum: 1,
+ pageSize: 10
+ }
+ newTableData.value = [];
+}
+const handleCancel = (row: any) => {
+
+ proxy.$modal.confirm(`鏄惁鍙栨秷纭璇ヨ皟搴﹀崟鍙� 锛�${row.dispatchNo}?`).then(function () {
+ return getCwglEstimatedReceivableCancel(row.id);
+ }).then((res) => {
+ if (res.code == 200) {
+ console.log(res);
+
+ onLoad(page.value);
+ proxy.$modal.msgSuccess(res.msg);
+ }
+ })
+}
+const handleAffirm = (row: any) => {
+ proxy.$modal.confirm(`鏄惁纭璇ヨ皟搴﹀崟鍙� 锛�${row.dispatchNo}?`).then(function () {
+ return getEstimatedReceivableConfirm(row.id);
+ }).then((res) => {
+ onLoad(page.value);
+
+ proxy.$modal.msgSuccess(res.msg);
+ })
+
+}
+
+const handleInvalid = (row: any) => {
+ proxy.$modal.confirm(`鏄惁浣滃簾璇ヨ皟搴﹀崟鍙� 锛�${row.dispatchNo}?`).then(function () {
+ return getEstimatedReceivableInvalid(row.id);
+ }).then((res) => {
+ onLoad(page.value);
+
+ proxy.$modal.msgSuccess(res.msg);
+ })
+
+}
+
+
+
+const flowLogIshow = ref()
+const flowParams = ref([])
+
+const handleFlow = (row: string) => {
+ let data = {
+ estimatedId: row.id,
+ }
+ listEstimatedReceivableLog(data).then((res) => {
+ flowParams.value = res.rows
+ flowLogIshow.value.openModel()
+
+ })
+}
</script>
diff --git a/ui/admin-ui3/src/views/cwgl/estimatedReceivableBill/index.vue b/ui/admin-ui3/src/views/cwgl/estimatedReceivableBill/index.vue
index 3fd7356..50225bc 100644
--- a/ui/admin-ui3/src/views/cwgl/estimatedReceivableBill/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/estimatedReceivableBill/index.vue
@@ -1,174 +1,541 @@
<template>
- <basicContainer >
- <avue-crud
- :option="option"
- :table-loading="pageF.loading"
- :data="tableData"
- :page="page"
- :permission="permissionList"
- :before-open="beforeOpen"
- v-model="form"
- ref="crudRef"
- @row-update="rowUpdate"
- @row-save="rowSave"
- @refresh-change="refreshChange"
- @row-del="rowDel"
- @search-change="searchChange"
- @search-reset="searchReset"
- @selection-change="selectionChange"
- @current-change="currentChange"
- @size-change="sizeChange"
- @on-load="onLoad"
- >
+ <basicContainer>
+ <avue-crud :option="option" :table-loading="pageF.loading" :data="tableData" :page="page"
+ :permission="permissionList" :before-open="beforeOpen" v-model="form" ref="crudRef" @row-update="rowUpdate"
+ @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel" @search-change="searchChange"
+ @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+ @size-change="sizeChange" @on-load="onLoad">
<template #menu-left>
- <el-button
- type="success"
- icon="Edit"
- :disabled="pageF.single"
- v-hasPermi="['cwgl:estimatedReceivableBill:edit']"
- @click="handleUpdate">淇敼
+ <!-- <el-button type="success" icon="Edit" :disabled="pageF.single"
+ v-hasPermi="['cwgl:estimatedReceivableBill:edit']" @click="handleUpdate">淇敼
+ </el-button> -->
+ <!-- <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+ v-hasPermi="['cwgl:estimatedReceivableBill:remove']">鍒犻櫎
</el-button>
- <el-button
- type="danger"
- icon="Delete"
- :disabled="pageF.multiple"
- @click="handleDelete"
- v-hasPermi="['cwgl:estimatedReceivableBill:remove']"
- >鍒犻櫎
- </el-button>
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['cwgl:estimatedReceivableBill:export']"
- >瀵煎嚭
- </el-button>
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['cwgl:estimatedReceivableBill:export']">瀵煎嚭
+ </el-button> -->
+ </template>
+ <template #billSystemNo="{ size, row, index }">
+
+ <el-link class="link-btn" type="primary" :underline="false" plain @click="handleBillSystemNo(row)">
+ {{ row.billSystemNo }}
+ </el-link>
+ </template>
+
+
+ <template #menu="{ size, row, index }">
+
+ <el-link class="link-btn" type="primary" v-if="[0, 1].includes(row.status)" :underline="false" plain
+ @click="handleclose(row)" v-hasPermi="['cwgl:estimatedReceivableBill:confirm']"> 缁撶畻
+ </el-link>
+ <el-link class="link-btn" type="primary" v-if="[0].includes(row.status)" :underline="false" plain
+ @click="handleAmend(row)" v-hasPermi="['cwgl:estimatedReceivableBill:invalid']"> 淇敼
+ </el-link>
+ <el-link class="link-btn" type="primary" :underline="false" plain @click="handleFlow(row)"
+ v-hasPermi="['cwgl:estimatedReceivableBill:flog']"> 鏃ュ織
+ </el-link>
</template>
</avue-crud>
</basicContainer>
+
+
+ <el-dialog v-model="dialog.visible" :title="dialog.title" width="1200px">
+ <el-form ref="newFormRef" v-if="!dispIshow && noIshow" :model="newForm" :rules="rules" label-width="120px">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鏈缁撶畻閲戦" prop="settlementAmount">
+ <el-input v-model="newForm.settlementAmount" placeholder="璇疯緭鍏ユ湰娆$粨绠楅噾棰�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="澶囨敞" prop="remark">
+ <el-input v-model="newForm.remark" :rows="2" type="textarea" placeholder="璇疯緭鍏ュ娉�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="闄勪欢" prop="attachment">
+ <FileUpload v-model="newForm.attachment" :isShowTip="false"
+ :fileType="['pdf', 'bmp', 'gif', 'jpg', 'jpeg', 'png']"></FileUpload>
+ 鏀寔鏂囦欢绫诲瀷锛� pdf锛宐mp锛実if锛宩pg锛宩peg锛宲ng'
+ </el-form-item>
+ </el-col>
+
+ </el-row>
+
+ </el-form>
+
+ <div v-if="!dispIshow && noIshow" style="text-align: center;margin-top: 20px;">
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ </div>
+
+
+ <h2 style="margin: 15px;font-size: 15px;">
+ 璐﹀崟鍩烘湰淇℃伅
+ </h2>
+ <el-form ref="storagesTransferRef" :model="newObjForm" label-width="120px">
+ <el-descriptions class="margin-top" title="" :column="3" border>
+ <el-descriptions-item label="璐﹀崟绯荤粺缂栧彿" align="center">
+ {{ importForm.billSystemNo }}
+ </el-descriptions-item>
+ <el-descriptions-item label="璐﹀崟鍚嶇О" align="center">
+ <el-input v-if="dispIshow" v-model="importForm.billName" placeholder="璇疯緭鍏ヨ处鍗曞悕绉�" />
+ <span v-if="!dispIshow"> {{ importForm.billName }}</span>
+ </el-descriptions-item>
+ <el-descriptions-item label="瀹㈡埛鍚嶇О" align="center">
+ {{ importForm.customerName }}
+ </el-descriptions-item>
+
+ <el-descriptions-item label="搴旂粨绠楅噾棰�" align="center">
+ {{ importForm.totalAmount }}
+ </el-descriptions-item>
+
+ <el-descriptions-item v-if="!dispIshow" label="宸茬粨绠楅噾棰�" align="center">
+ {{ importForm.settledAmount }}
+ </el-descriptions-item>
+
+ <el-descriptions-item v-if="!dispIshow" label="寰呯粨绠楅噾棰�" align="center">
+ <span v-if="importForm.totalAmount == 0">0</span>
+ <span v-else>{{ (importForm.totalAmount - importForm.settledAmount).toFixed(2) }}</span>
+ </el-descriptions-item>
+
+ <el-descriptions-item v-if="dispIshow" label="" align="center">
+ </el-descriptions-item>
+
+ <el-descriptions-item v-if="dispIshow" label="" align="center">
+ </el-descriptions-item>
+
+ </el-descriptions>
+ </el-form>
+
+ <div v-if="dispIshow" style="text-align: center;margin-top: 20px;">
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitFormTow">纭� 瀹�</el-button>
+ </div>
+ <h2 style="margin: 15px;font-size: 15px;">
+ 鍏宠仈鏄庣粏
+ </h2>
+ <avue-crud :option="newOption" :data="newTableData" v-model:search="newFormData" :page="newPageF"
+ :table-loading="itemTableLoading2" @search-change="newSearchChange" ref="newTableRef"
+ @search-reset="newRsetChange" @current-change="handleAttachmentCurrentChange"
+ @size-change="handleAttachmentSizeChange" @on-load="newOnLoad">
+
+ <template #menu="{ size, row, index }">
+ <el-link class="link-btn" type="primary" :underline="false" plain @click="handleRelevance(row)"
+ v-hasPermi="['cwgl:estimatedReceivableBill:relevancy']"> 鍙栨秷鍏宠仈
+ </el-link>
+ </template>
+
+ </avue-crud>
+
+
+ <div v-if="!noIshow" style="text-align: right;margin-top: 20px;">
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+
+ </el-dialog>
+
+ <flowLog ref="flowLogIshow" :fileNameIshow="true" :flowParams="flowParams"></flowLog>
+
+
</template>
<script setup name="estimatedReceivableBill" lang="ts">
- import {EstimatedReceivableBillI,addEstimatedReceivableBill, delEstimatedReceivableBill, exportEstimatedReceivableBill, getEstimatedReceivableBill, listEstimatedReceivableBill, updateEstimatedReceivableBill} from "@/api/cwgl/estimatedReceivableBill";
- import useCurrentInstance from "@/utils/useCurrentInstance";
- import {computed,reactive, ref, toRefs} from "vue";
- import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
- import {usePagePlus} from "@/hooks/usePagePlus";
- import {hasPermission} from "@/utils/permissionUtils";
+import {
+ EstimatedReceivableBillI, addEstimatedReceivableBill, delEstimatedReceivableBill, exportEstimatedReceivableBill, getEstimatedReceivableBill, listEstimatedReceivableBill, updateEstimatedReceivableBill,
+ estimatedReceivableBillSettlement, addEstimatedReceivableLog, cancelRelevancy, listEstimatedReceivableBillLog, updateEstimatedReceivableBillNmae
+} from "@/api/cwgl/estimatedReceivableBill";
+import useCurrentInstance from "@/utils/useCurrentInstance";
+import { computed, reactive, ref, toRefs } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+import {
+ getPendingSettlementBusiness, listPendingSettlementBusiness
+} from "@/api/cwgl/pendingSettlementBusiness";
+const { proxy } = useCurrentInstance();
+const crudRef = ref();
- const { proxy } = useCurrentInstance();
- const crudRef = ref();
+const permissionList = computed(() => {
+ return {
+ addBtn: hasPermission(["cwgl:estimatedReceivableBill:add"]),
+ delBtn: hasPermission(["cwgl:estimatedReceivableBill:remove"]),
+ editBtn: hasPermission(["cwgl:estimatedReceivableBill:edit"]),
+ viewBtn: hasPermission(["cwgl:estimatedReceivableBill:query"]),
+ }
+})
+const dispIshow = ref(false)
+const data = reactive({
+ form: <EstimatedReceivableBillI>{},
+ queryParams: <EstimatedReceivableBillI & PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList: [],
+ newForm: <EstimatedReceivableI>{
+ pageNum: 1,
+ pageSize: 10
+ },
+ importForm: {},
+ newTableData: [],
+ newFormData: {
+ pageNum: 1,
+ pageSize: 10
+ },
+ itemTableLoading2: false,
+ rules: {
+ settlementAmount: [
+ { required: true, message: '璇疯緭鍏ユ湰娆$粨绠楅噾棰�', trigger: 'blur' }
+ ],
- const permissionList = computed(()=>{
- return {
- addBtn: hasPermission(["cwgl:estimatedReceivableBill:add"]),
- delBtn: hasPermission(["cwgl:estimatedReceivableBill:remove"]),
- editBtn: hasPermission(["cwgl:estimatedReceivableBill:edit"]),
- viewBtn: hasPermission(["cwgl:estimatedReceivableBill:query"]),
- }
- })
+ },
+})
+const { queryParams, form, page, selectionList, newForm, importForm, newTableData, itemTableLoading2, newFormData, rules } = toRefs(data);
+const option = ref({
+ pageKey: 'EstimatedReceivableBill',
+ rowKey: 'id',
- const data = reactive({
- form:<EstimatedReceivableBillI>{},
- queryParams:<EstimatedReceivableBillI&PageQueryInterface>{},
- page: <PagesInterface>{
- pageSize: 10,
- total: 0,
- currentPage: 1,
+ searchSpan: 5,
+ editDisplay: false,
+
+ addBtn: false,
+ editBtn: false,
+ delBtn: false,
+ viewBtn: false,
+
+ searchLabelWidth: 100,
+ labelWidth: 120,
+
+ column: {
+ // id: {
+ // label: 'ID',
+ // },
+ billSystemNo: {
+ label: '璐﹀崟绯荤粺缂栧彿',
+ search: true,
+ rules: [
+ {
+ required: true,
+ message: "璐﹀崟绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
},
- selectionList:[],
- })
- const {queryParams,form,page,selectionList} = toRefs(data);
- const option = ref({
- pageKey: 'EstimatedReceivableBill',
- rowKey: 'id',
- column: {
- id: {
- label: 'ID',
- },
- billSystemNo: {
- label: '璐﹀崟绯荤粺缂栧彿',
- rules: [
- {
- required: true,
- message: "璐﹀崟绯荤粺缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- billName: {
- label: '璐﹀崟鍚嶇О',
- rules: [
- {
- required: true,
- message: "璐﹀崟鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- customerName: {
- label: '瀹㈡埛鍚嶇О',
- rules: [
- {
- required: true,
- message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- dispatchCount: {
- label: '璋冨害鍗曟暟閲�',
- },
- totalAmount: {
- label: '搴旂粨绠楅噾棰�',
- },
- settledAmount: {
- label: '宸茬粨绠楅噾棰�',
- },
- invoiceStatus: {
- label: '寮�绁ㄧ姸鎬�',
- },
- attachment: {
- label: '闄勪欢鍦板潃',
- type: 'textarea', minRows: 3, maxRows: 5,
- },
- status: {
- label: '鐘舵��',
- },
- remark: {
- label: '澶囨敞',
- type: 'textarea', minRows: 3, maxRows: 5,
- },
- createBy: {
- label: '鍒涘缓浜�',
- },
- confirmTime: {
- label: '纭鏃堕棿',
- },
- createTime: {
- label: '鍒涘缓鏃堕棿',
- },
- updateTime: {
- label: '鏇存柊鏃堕棿',
- },
- deleted: {
- label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
- },
- }
- })
+ billName: {
+ label: '璐﹀崟鍚嶇О',
+ rules: [
+ {
+ required: true,
+ message: "璐﹀崟鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+ customerName: {
+ label: '瀹㈡埛鍚嶇О',
+ rules: [
+ {
+ required: true,
+ message: "瀹㈡埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ search: true,
+ },
- const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
- searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
- form:form,
- option:option,
- queryParams:queryParams,
- idKey:'id',
- page:page.value,
- getListApi:listEstimatedReceivableBill,
- getDetailApi:getEstimatedReceivableBill,
- exportApi:exportEstimatedReceivableBill,
- deleteApi:delEstimatedReceivableBill,
- addApi:addEstimatedReceivableBill,
- updateApi:updateEstimatedReceivableBill,
- handleUpdateFunc:()=>{
+ dispatchCount: {
+ label: '璋冨害鍗曟暟閲�',
+ },
+ totalAmount: {
+ label: '搴旂粨绠楅噾棰�',
+ },
+ settledAmount: {
+ label: '宸茬粨绠楅噾棰�',
+ },
+ invoiceStatus: {
+ label: '寮�绁ㄧ姸鎬�',
+ search: true,
+ dataType: 'string',
+ type: 'select',
+ dicUrl: '/system/dict/data/type/sys_ticket_status',
+ },
+ // attachment: {
+ // label: '闄勪欢鍦板潃',
+ // type: 'textarea', minRows: 3, maxRows: 5,
+ // },
+ status: {
+ label: '鐘舵��',
+ search: true,
+ dataType: 'string',
+ type: 'select',
+ dicUrl: '/system/dict/data/type/sys_final_statement_status',
+ },
+ // remark: {
+ // label: '澶囨敞',
+ // type: 'textarea', minRows: 3, maxRows: 5,
+ // },
+ // createBy: {
+ // label: '鍒涘缓浜�',
+ // },
+ // confirmTime: {
+ // label: '纭鏃堕棿',
+ // },
+ // createTime: {
+ // label: '鍒涘缓鏃堕棿',
+ // },
+ // updateTime: {
+ // label: '鏇存柊鏃堕棿',
+ // },
+ // deleted: {
+ // label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
+ // },
+ }
+})
+
+const newOption = ref({
+ pageKey: 'PendingSettlementBusiness',
+ rowKey: 'id',
+ searchSpan: 5,
+ selectionType: 'single',
+ selectType: 'radio',
+ editDisplay: false,
+ addBtn: false,
+ editBtn: false,
+ selection: false,
+ delBtn: false,
+ menu: false,
+ viewBtn: false,
+ header: false,
+ // searchLabelWidth: 100,
+ // labelWidth: 120,
+ column: {
+ projectName: {
+ label: '椤圭洰鍚嶇О1',
+ },
+ dispatchNo: {
+ label: '璋冨害鍗曞彿',
+ },
+ createdTime: {
+ label: '涓嬪崟鏃堕棿',
+ },
+ estimatedTotalIncome: {
+ label: '棰勪及搴旀敹閲戦',
+ },
+ currency: {
+ label: '甯佸埗',
+ },
+ // customerName: {
+ // label: '瀹㈡埛鍚嶇О',
+ // search: true,
+ // },
+
+
+ }
+})
+const { tableData, pageF, rowSave, rowUpdate, rowDel, beforeOpen, searchChange,
+ searchReset, selectionChange, onLoad, currentChange, sizeChange, handleDelete, handleExport, handleUpdate, refreshChange } = usePagePlus({
+ form: form,
+ option: option,
+ queryParams: queryParams,
+ idKey: 'id',
+ page: page.value,
+ getListApi: listEstimatedReceivableBill,
+ getDetailApi: getEstimatedReceivableBill,
+ exportApi: exportEstimatedReceivableBill,
+ deleteApi: delEstimatedReceivableBill,
+ addApi: addEstimatedReceivableBill,
+ updateApi: updateEstimatedReceivableBill,
+ handleUpdateFunc: () => {
crudRef.value.rowEdit(selectionList.value[0]);
},
- handleSelectionChangeFunc:(selection:any)=>{
+ handleSelectionChangeFunc: (selection: any) => {
selectionList.value = selection;
}
})
+const dialog = reactive({
+ visible: false,
+ title: '',
+})
+const newTableRef = ref();
+const handleclose = (row) => {
+ newFormData.value.billId = row.id;
+ dispIshow.value = false;
+ newOption.value.menu = false;
+ noIshow.value = true;
+ listPendingSettlementBusiness({ billId: row.id }).then((res) => {
+ if (res.code === 200) {
+ newForm.value.id = row.id;
+ importForm.value = row;
+ dialog.visible = true;
+ newPageF.value.total = res.total || 0;
+ newTableData.value = res.rows || [];
+ newTableData.value.map(item => {
+ item.currency = '浜烘皯甯�';
+ });
+ newTableRef.value.refreshTable();
+ dialog.title = '搴旀敹璐﹀崟缁撶畻';
+ }
+ })
+
+ // crudRef.value.close();
+}
+
+const handleAmend = (row) => {
+ newFormData.value.billId = row.id;
+ dispIshow.value = true;
+ newOption.value.menu = true;
+ listPendingSettlementBusiness({ billId: row.id }).then((res) => {
+ if (res.code === 200) {
+ newForm.value.id = row.id;
+ importForm.value = row;
+ dialog.visible = true;
+ newPageF.value.total = res.total || 0;
+ newTableData.value = res.rows || [];
+ newTableData.value.map(item => {
+ item.currency = '浜烘皯甯�';
+ });
+ newTableRef.value.refreshTable();
+ dialog.title = '搴旀敹璐﹀崟淇敼';
+ }
+ })
+}
+const noIshow = ref(false)
+const handleBillSystemNo = (row) => {
+ newFormData.value.billId = row.id;
+ dispIshow.value = false;
+ noIshow.value = false;
+ newOption.value.menu = false;
+ listPendingSettlementBusiness({ billId: row.id }).then((res) => {
+ if (res.code === 200) {
+ importForm.value = row;
+ dialog.visible = true;
+ dialog.title = '璐﹀崟璇︽儏';
+ newPageF.value.total = res.total || 0;
+ newTableData.value = res.rows || [];
+ newTableData.value.map(item => {
+ item.currency = '浜烘皯甯�';
+ });
+ newTableRef.value.refreshTable();
+ }
+ })
+}
+const newFormRef = ref();
+const submitForm = () => {
+ newFormRef.value!.validate(valid => {
+ if (valid) {
+ let data = {
+ billId: newForm.value.id,
+ fileName: newForm.value.attachment
+ }
+ addEstimatedReceivableLog(data).then((res1) => {
+ if (res1.code === 200) {
+ estimatedReceivableBillSettlement(newForm.value).then((res) => {
+ if (res.code === 200) {
+ proxy.$message.success('鎿嶄綔鎴愬姛');
+ dialog.visible = false;
+ newForm.value = {};
+
+ }
+ })
+ }
+ })
+ }
+ });
+
+}
+
+const submitFormTow = () => {
+ proxy.$modal.confirm(`鏄惁纭淇敼璐﹀崟鍚嶇О?`).then(function () {
+ return updateEstimatedReceivableBillNmae(newForm.value);
+ }).then((res) => {
+ proxy.$modal.msgSuccess(res.msg);
+ })
+
+}
+const storagesTransferRef = ref();
+const cancel = () => {
+ newForm.value = {};
+ dialog.visible = false;
+ proxy.resetForm(storagesTransferRef.value)
+}
+
+
+const newPageF = ref<PagesInterface>({
+ total: 0,
+ pageSize: 10
+})
+
+const newSearchChange = (params, done) => {
+ // itemTableLoading2.value = true;
+ // listPendingSettlementBusiness(newForm.value).then((res) => {
+ // if (res.code === 200) {
+ // done()
+ // newTableData.value = res.rows || [];
+ // newPageF.value.total = res.total || 0;
+ // }
+ // itemTableLoading2.value = false;
+ // })
+}
+const newRsetChange = (done) => {
+ getEstimatedReceivableCancel()
+}
+// 澶勭悊闄勪欢鍒嗛〉椤电爜鍙樺寲
+const handleAttachmentCurrentChange = (currentPage: number) => {
+ newFormData.value.pageNum = currentPage;
+ getEstimatedReceivableCancel();
+}
+// 澶勭悊闄勪欢鍒嗛〉澶у皬鍙樺寲
+const handleAttachmentSizeChange = (pageSize: number) => {
+ newFormData.value.pageSize = pageSize;
+ getEstimatedReceivableCancel();
+}
+const newOnLoad = (newPageF) => {
+ getEstimatedReceivableCancel(newPageF);
+}
+const getEstimatedReceivableCancel = () => {
+ itemTableLoading2.value = true;
+ listPendingSettlementBusiness(newFormData.value).then((res) => {
+ if (res.code === 200) {
+ newTableData.value = res.rows || [];
+ newTableData.value.map(item => {
+ item.currency = '浜烘皯甯�';
+ });
+ newTableRef.value.refreshTable();
+ newPageF.value.total = res.total || 0;
+ }
+ itemTableLoading2.value = false;
+ })
+}
+
+const handleRelevance = (row) => {
+ proxy.$modal.confirm(`鏄惁鍙栨秷鍏宠仈鎴愬姛璇ヨ皟搴﹀彿 锛�${row.dispatchNo}?`).then(function () {
+ return cancelRelevancy(row.id);
+ }).then((res) => {
+ newOnLoad(newPageF.value);
+ proxy.$modal.msgSuccess(res.msg);
+ })
+
+}
+
+const flowLogIshow = ref()
+const flowParams = ref([])
+const handleFlow = (row: string) => {
+ let data = {
+ estimatedId: row.id,
+ }
+ listEstimatedReceivableBillLog(data).then((res) => {
+ flowParams.value = res.rows
+ flowLogIshow.value.openModel()
+
+ })
+}
</script>
+<style scoped>
+::v-deep .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell {
+ border: var(--el-descriptions-table-border);
+ padding: 8px 11px;
+ width: 200px;
+}
+</style>
\ No newline at end of file
diff --git a/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue b/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue
index 5951eda..973645f 100644
--- a/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue
+++ b/ui/admin-ui3/src/views/cwgl/pendingSettlementBusiness/index.vue
@@ -1,268 +1,526 @@
<template>
- <basicContainer >
- <avue-crud
- :option="option"
- :table-loading="pageF.loading"
- :data="tableData"
- :page="page"
- :permission="permissionList"
- :before-open="beforeOpen"
- v-model="form"
- ref="crudRef"
- @row-update="rowUpdate"
- @row-save="rowSave"
- @refresh-change="refreshChange"
- @row-del="rowDel"
- @search-change="searchChange"
- @search-reset="searchReset"
- @selection-change="selectionChange"
- @current-change="currentChange"
- @size-change="sizeChange"
- @on-load="onLoad"
- >
+ <basicContainer>
+ <avue-crud :option="option" v-model:search="queryParams" :table-loading="pageF.loading" :data="tableData"
+ :page="page" :permission="permissionList" :before-open="beforeOpen" v-model="form" ref="crudRef"
+ @row-update="rowUpdate" @row-save="rowSave" @refresh-change="refreshChange" @row-del="rowDel"
+ @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+ @current-change="currentChange" @size-change="sizeChange" @on-load="onLoad">
+
<template #menu-left>
- <el-button
- type="success"
- icon="Edit"
- :disabled="pageF.single"
- v-hasPermi="['cwgl:pendingSettlementBusiness:edit']"
- @click="handleUpdate">淇敼
+ <el-button type="success" :disabled="generateDisabled" @click="handleGenerate"
+ v-hasPermi="['cwgl:pendingSettlementBusiness:add']">鐢熸垚璐﹀崟
</el-button>
- <el-button
- type="danger"
- icon="Delete"
- :disabled="pageF.multiple"
- @click="handleDelete"
- v-hasPermi="['cwgl:pendingSettlementBusiness:remove']"
- >鍒犻櫎
+ <!-- <el-button type="success" icon="Edit" :disabled="pageF.single"
+ v-hasPermi="['cwgl:pendingSettlementBusiness:edit']" @click="handleUpdate">淇敼
+ </el-button> -->
+ <!-- <el-button type="danger" icon="Delete" :disabled="pageF.multiple" @click="handleDelete"
+ v-hasPermi="['cwgl:pendingSettlementBusiness:remove']">鍒犻櫎
+ </el-button> -->
+ <el-button type="warning" plain icon="Download" @click="handleExport"
+ v-hasPermi="['cwgl:pendingSettlementBusiness:export']">瀵煎嚭
</el-button>
- <el-button
- type="warning"
- plain
- icon="Download"
- @click="handleExport"
- v-hasPermi="['cwgl:pendingSettlementBusiness:export']"
- >瀵煎嚭
- </el-button>
+
+ </template>
+ <template #menu="{ size, row, index }">
+ <el-link class="link-btn" type="primary" :underline="false" plain :size="size" @click="handleFy(row)"
+ v-hasPermi="['cwgl:pendingSettlementBusiness:query']"> 璐圭敤鏄庣粏
+ </el-link>
</template>
</avue-crud>
+
+ <el-dialog v-model="dialog.visible" :title="dialog.title" width="1000px">
+ <el-form ref="storagesTransferRef" :model="form" :rules="rules" label-width="120px">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="璐﹀崟鍚嶇О" prop="billName">
+ <el-input v-model="form.billName" placeholder="璇疯緭鍏ヨ处鍗曞悕绉�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瀹㈡埛鍚嶇О" prop="customerName">
+ <el-input v-model="form.customerName" disabled placeholder="璇疯緭鍏ュ鎴峰悕绉�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璋冨害鍗曟暟閲�" prop="count">
+ <el-input-number v-model="form.count" disabled :min="0" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="缁撶畻閲戦" prop="price">
+ <el-input-number v-model="form.price" disabled :min="0" />
+ </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="cancel">鍙� 娑�</el-button>
+ </div>
+ </template>
+
+ </el-dialog>
+
+
+ <el-dialog v-model="dialog.detail" :title="dialog.title" width="1000px">
+ <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+ <el-tab-pane label="鎴愭湰" name="first"></el-tab-pane>
+ <el-tab-pane label="鏀跺叆" name="second"></el-tab-pane>
+ </el-tabs>
+ <el-table :data="tableDataList" show-summary :summary-method="getSummaries" style="width: 100%">
+ <el-table-column prop="feeName" label="璐圭敤鍚嶇О" />
+ <el-table-column prop="estimatedAmount" label="璐圭敤閲戦" />
+ <el-table-column prop="currency" label="璐圭敤甯佸埗" />
+ </el-table>
+ <template #footer>
+ <div class="dialog-footer">
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </template>
+
+ </el-dialog>
+
+
+
+
</basicContainer>
</template>
<script setup name="pendingSettlementBusiness" lang="ts">
- import {PendingSettlementBusinessI,addPendingSettlementBusiness, delPendingSettlementBusiness, exportPendingSettlementBusiness, getPendingSettlementBusiness, listPendingSettlementBusiness, updatePendingSettlementBusiness} from "@/api/cwgl/pendingSettlementBusiness";
- import useCurrentInstance from "@/utils/useCurrentInstance";
- import {computed,reactive, ref, toRefs} from "vue";
- import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
- import {usePagePlus} from "@/hooks/usePagePlus";
- import {hasPermission} from "@/utils/permissionUtils";
+import {
+ PendingSettlementBusinessI, addPendingSettlementBusiness, delPendingSettlementBusiness, exportPendingSettlementBusiness, getPendingSettlementBusiness, listPendingSettlementBusiness, updatePendingSettlementBusiness,
+ getPendingSettlementBusinessBill, getCwglPendingSettlementBusinessBillList, getSelectCustomNam, cwglPendingSettlementBusinessCreateBill, pendingSettlementBusinessCreateBillList
+} from "@/api/cwgl/pendingSettlementBusiness";
+import { listEstimatedReceivable } from "@/api/cwgl/estimatedReceivable";
- const { proxy } = useCurrentInstance();
- const crudRef = ref();
- const permissionList = computed(()=>{
- return {
- addBtn: hasPermission(["cwgl:pendingSettlementBusiness:add"]),
- delBtn: hasPermission(["cwgl:pendingSettlementBusiness:remove"]),
- editBtn: hasPermission(["cwgl:pendingSettlementBusiness:edit"]),
- viewBtn: hasPermission(["cwgl:pendingSettlementBusiness:query"]),
+import useCurrentInstance from "@/utils/useCurrentInstance";
+import { computed, reactive, ref, toRefs } from "vue";
+import { PagesInterface, PageQueryInterface } from "@/utils/globalInterface";
+import { usePagePlus } from "@/hooks/usePagePlus";
+import { hasPermission } from "@/utils/permissionUtils";
+
+const { proxy } = useCurrentInstance();
+const crudRef = ref();
+
+const permissionList = computed(() => {
+ return {
+ addBtn: hasPermission(["cwgl:pendingSettlementBusiness:add"]),
+ delBtn: hasPermission(["cwgl:pendingSettlementBusiness:remove"]),
+ editBtn: hasPermission(["cwgl:pendingSettlementBusiness:edit"]),
+ viewBtn: hasPermission(["cwgl:pendingSettlementBusiness:query"]),
+ generate: hasPermission(["cwgl:pendingSettlementBusiness:generate"]),
+
+ }
+})
+
+const data = reactive({
+ form: <PendingSettlementBusinessI & any>{
+ billName: '',
+ customerNa: '',
+ count: 0,
+ price: 0
+ },
+ selectCustomName: [],
+ queryParams: <PendingSettlementBusinessI & PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList: [],
+ tableDataList: [],
+ rules: {
+ billName: [
+ { required: true, message: '璐﹀崟鍚嶇О涓嶈兘涓虹┖', trigger: 'blur' }
+ ],
+ },
+ generateDisabled: false, // 鎺у埗鐢熸垚璐﹀崟鎸夐挳鐨勭鐢ㄧ姸鎬�
+})
+const { queryParams, form, page, selectionList, generateDisabled, rules, tableDataList,
+ selectCustomName
+} = toRefs(data);
+const getSelectCustomName = () => {
+ getSelectCustomNam().then((res) => {
+ if (res.code === 200) {
+ // selectCustomName.value = res.data;
+ selectCustomName.value = res.data.map(item => ({
+ dictLabel: item,
+ dictValue: item
+ }));
+ option.value.column.customerName.dicData = selectCustomName.value || [];
}
})
-
- const data = reactive({
- form:<PendingSettlementBusinessI>{},
- queryParams:<PendingSettlementBusinessI&PageQueryInterface>{},
- page: <PagesInterface>{
- pageSize: 10,
- total: 0,
- currentPage: 1,
+}
+getSelectCustomName()
+const option = ref({
+ pageKey: 'PendingSettlementBusiness',
+ rowKey: 'id',
+ addBtn: false,
+ generateDisabled: true,
+ editBtn: false,
+ delBtn: false,
+ viewBtn: false,
+ selection: true,
+ generate: false,
+ searchSpan: 5,
+ searchLabelWidth: 100,
+ column: {
+ // id: {
+ // label: 'ID',
+ // },
+ projectName: {
+ fixed: 'left',
+ label: '椤圭洰鍚嶇О', search: true,
},
- selectionList:[],
- })
- const {queryParams,form,page,selectionList} = toRefs(data);
- const option = ref({
- pageKey: 'PendingSettlementBusiness',
- rowKey: 'id',
- column: {
- id: {
- label: 'ID',
- },
- bookingNo: {
- label: '瀹㈡埛璁㈠崟鍙�',
- },
- customerId: {
- label: '瀹㈡埛id',
- },
- carrierId: {
- label: '鎵胯繍鍟唅d',
- },
- projectName: {
- label: '椤圭洰鍚嶇О',
- },
- dispatchNo: {
- label: '璋冨害鍗曞彿',
- rules: [
- {
- required: true,
- message: "璋冨害鍗曞彿涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- createdTime: {
- label: '涓嬪崟鏃堕棿',
- },
- transportMode: {
- label: '杩愯緭鏂瑰紡',
- },
- productId: {
- label: '鏈嶅姟浜у搧',
- },
- customerName: {
- label: '瀹㈡埛鍚嶇О',
- },
- operationMode: {
- label: '杩愯惀妯″紡',
- },
- carrierName: {
- label: '鎵胯繍鍟�',
- },
- departureLocation: {
- label: '鍑哄彂鍦�',
- },
- arrivalLocation: {
- label: '鐩殑鍦�',
- },
- vehicleId: {
- label: '杩愯緭宸ュ叿ID',
- },
- licensePlateNumber: {
- label: '杞︾墝',
- },
- vehicleType: {
- label: '杞﹀瀷',
- },
- mainDriver: {
- label: '涓婚┚椹跺憳',
- },
- assistantDriver: {
- label: '鍓┚椹跺憳',
- },
- pointNum: {
- label: '鎻愰�佽揣鐐规暟',
- },
- businessContact: {
- label: '涓氬姟鑱旂郴浜�',
- },
- estimatedTotalIncome: {
- label: '棰勪及鎬绘敹鍏�',
- },
- estimatedTotalCost: {
- label: '棰勪及鎬绘垚鏈�',
- },
- estimatedProfit: {
- label: '棰勪及鍒╂鼎',
- },
- electronicLock: {
- label: '鐢靛瓙閿�',
- },
- reWeighingWeight: {
- label: '澶嶇閲嶉噺',
- },
- quantity: {
- label: '浠舵暟',
- },
- actualDepartureTime: {
- label: '瀹為檯鍑哄彂鏃堕棿',
- },
- requiredArrivalTime: {
- label: '瑕佹眰鍒拌揪鏃堕棿',
- },
- actualArrivalTime: {
- label: '瀹為檯鍒拌揪鏃堕棿',
- },
- beReturn: {
- label: '鏄惁鍥炵▼',
- },
- dispatchQuantity: {
- label: '瀹炲彂浠舵暟',
- },
- dispatchWeight: {
- label: '瀹炲彂閲嶉噺',
- },
- dispatchVolume: {
- label: '瀹炲彂浣撶Н(绔嬫柟锛�',
- },
- emptyMileage: {
- label: '绌鸿浇閲岀▼',
- },
- emptyFuel: {
- label: '绌鸿浇娌硅��',
- },
- heavyMileage: {
- label: '閲嶈浇閲岀▼',
- },
- heavyFuel: {
- label: '閲嶈浇娌硅��',
- },
- beScheduled: {
- label: '鏄惁鎸夌彮娆�',
- },
- trackingNo: {
- label: '蹇�掑崟鍙�',
- },
- sealNo: {
- label: '閾呭皝鍙�',
- },
- scheduleNo: {
- label: '鐝鍙�',
- },
- transportStatus: {
- label: '杩愯緭鐘舵��',
- },
- estimatedBillId: {
- label: '棰勪及璐﹀崟ID',
- },
- settlementBillId: {
- label: '缁撶畻璐﹀崟ID',
- },
- settlementStatus: {
- label: '缁撶畻鐘舵��',
- },
- createTime: {
- label: '鍒涘缓鏃堕棿',
- rules: [
- {
- required: true,
- message: "鍒涘缓鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
- ], },
- updateTime: {
- label: '鏇存柊鏃堕棿',
- rules: [
- {
- required: true,
- message: "鏇存柊鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
- ] },
- }
- })
+ dispatchNo: {
+ label: '璋冨害鍗曞彿',
+ search: true,
+ rules: [
+ {
+ required: true,
+ message: "璋冨害鍗曞彿涓嶈兘涓虹┖", trigger: "blur"
+ }
+ ],
+ },
+ customerName: {
+ label: '瀹㈡埛鍚嶇О',
+ search: true,
+ type: 'select', // 璁剧疆涓轰笅鎷夋绫诲瀷
+ dicData: [], // 浣跨敤 selectCustomName 浣滀负鏁版嵁婧�
+ disabled: false // 鏍规嵁闇�瑕佽缃槸鍚︾鐢�
+ },
+ licensePlateNumber: {
+ label: '杞︾墝', search: true, hide: true,
+ },
+ vehicleType: {
+ label: '杞﹀瀷', search: true, hide: true,
+ },
+ createdTime: {
+ label: '涓嬪崟鏃堕棿',
+ display: false,
+ search: true,
+ type: 'date',
+ format: 'YYYY-MM-DD',
+ searchSpan: 5, minWidth: 100,
+ valueFormat: 'YYYY-MM-DD',
+ },
+ operationMode: {
+ label: '杩愯惀妯″紡',
+ },
+ createTime: {
+ label: '鍒涘缓鏃堕棿', display: false, hide: true, type: 'date',
+ format: 'YYYY-MM-DD', searchSpan: 5, minWidth: 100, searchLabelWidth: 110,
+ valueFormat: 'YYYY-MM-DD',
+ },
+ // bookingNo: {
+ // label: '瀹㈡埛璁㈠崟鍙�', showOverflowTooltip: true,
+ // },
- const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
- searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
- form:form,
- option:option,
- queryParams:queryParams,
- idKey:'id',
- page:page.value,
- getListApi:listPendingSettlementBusiness,
- getDetailApi:getPendingSettlementBusiness,
- exportApi:exportPendingSettlementBusiness,
- deleteApi:delPendingSettlementBusiness,
- addApi:addPendingSettlementBusiness,
- updateApi:updatePendingSettlementBusiness,
- handleUpdateFunc:()=>{
+ // customerId: {
+ // label: '瀹㈡埛id',
+ // },
+ // carrierId: {
+ // label: '鎵胯繍鍟唅d',
+ // },
+
+
+ // createdTime: {
+ // label: '涓嬪崟鏃堕棿',
+ // },
+ transportMode: {
+ label: '杩愯緭鏂瑰紡', hide: true,
+ },
+ productId: {
+ label: '鏈嶅姟浜у搧', hide: true,
+ },
+
+
+ carrierName: {
+ label: '鎵胯繍鍟�',
+ },
+ departureLocation: {
+ label: '鍑哄彂鍦�',
+ },
+ arrivalLocation: {
+ label: '鐩殑鍦�',
+ },
+ isCreate: {
+ label: '鏄惁宸插叆璐�', dataType: 'string', search: true,
+ type: 'select',
+ dicUrl: '/system/dict/data/type/sys_whether_type',
+ },
+ // vehicleId: {
+ // label: '杩愯緭宸ュ叿ID',hide: true,
+ // },
+
+
+ // mainDriver: {
+ // label: '涓婚┚椹跺憳',hide: true,
+ // },
+ // assistantDriver: {
+ // label: '鍓┚椹跺憳',hide: true,
+ // },
+ // pointNum: {
+ // label: '鎻愰�佽揣鐐规暟',hide: true,
+ // },
+ // businessContact: {
+ // label: '涓氬姟鑱旂郴浜�',hide: true,
+ // },
+ // estimatedTotalIncome: {
+ // label: '棰勪及鎬绘敹鍏�',
+ // },
+ // estimatedTotalCost: {
+ // label: '棰勪及鎬绘垚鏈�',
+ // },
+ // estimatedProfit: {
+ // label: '棰勪及鍒╂鼎',
+ // },
+ // electronicLock: {
+ // label: '鐢靛瓙閿�',
+ // },
+ // reWeighingWeight: {
+ // label: '澶嶇閲嶉噺',
+ // },
+ // quantity: {
+ // label: '浠舵暟',
+ // },
+ // actualDepartureTime: {
+ // label: '瀹為檯鍑哄彂鏃堕棿',
+ // },
+ // requiredArrivalTime: {
+ // label: '瑕佹眰鍒拌揪鏃堕棿',
+ // },
+ // actualArrivalTime: {
+ // label: '瀹為檯鍒拌揪鏃堕棿',
+ // },
+ // beReturn: {
+ // label: '鏄惁鍥炵▼',
+ // },
+ // dispatchQuantity: {
+ // label: '瀹炲彂浠舵暟',
+ // },
+ // dispatchWeight: {
+ // label: '瀹炲彂閲嶉噺',
+ // },
+ // dispatchVolume: {
+ // label: '瀹炲彂浣撶Н(绔嬫柟锛�',
+ // },
+ // emptyMileage: {
+ // label: '绌鸿浇閲岀▼',
+ // },
+ // emptyFuel: {
+ // label: '绌鸿浇娌硅��',
+ // },
+ // heavyMileage: {
+ // label: '閲嶈浇閲岀▼',
+ // },
+ // heavyFuel: {
+ // label: '閲嶈浇娌硅��',
+ // },
+ // beScheduled: {
+ // label: '鏄惁鎸夌彮娆�',
+ // },
+ // trackingNo: {
+ // label: '蹇�掑崟鍙�',
+ // },
+ // sealNo: {
+ // label: '閾呭皝鍙�',
+ // },
+ // scheduleNo: {
+ // label: '鐝鍙�',
+ // },
+ // transportStatus: {
+ // label: '杩愯緭鐘舵��',
+ // },
+ // estimatedBillId: {
+ // label: '棰勪及璐﹀崟ID',
+ // },
+ // settlementBillId: {
+ // label: '缁撶畻璐﹀崟ID',
+ // },
+ // settlementStatus: {
+ // label: '缁撶畻鐘舵��',
+ // },
+ // updateTime: {
+ // label: '鏇存柊鏃堕棿',
+ // rules: [
+ // {
+ // required: true,
+ // message: "鏇存柊鏃堕棿涓嶈兘涓虹┖", trigger: "blur"
+ // }
+ // ]
+ // },
+ }
+})
+
+const { tableData, pageF, rowSave, rowUpdate, rowDel, beforeOpen, searchChange,
+ searchReset, selectionChange, onLoad, currentChange, sizeChange, handleDelete, handleExport, handleUpdate, refreshChange } = usePagePlus({
+ form: form,
+ option: option,
+ queryParams: queryParams,
+ idKey: 'id',
+ page: page.value,
+ getListApi: listPendingSettlementBusiness,
+ getDetailApi: getPendingSettlementBusiness,
+ exportApi: exportPendingSettlementBusiness,
+ deleteApi: delPendingSettlementBusiness,
+ addApi: addPendingSettlementBusiness,
+ updateApi: updatePendingSettlementBusiness,
+ handleUpdateFunc: () => {
crudRef.value.rowEdit(selectionList.value[0]);
},
- handleSelectionChangeFunc:(selection:any)=>{
+ handleSelectionChangeFunc: (selection: any) => {
+ if (selection.every((item: any) => item.isCreate == '0')) {
+ generateDisabled.value = false;
+ } else {
+ generateDisabled.value = true;
+ if (selection.length > 0) {
+ proxy.$message.warning('璇烽�夋嫨鏈叆璐︾殑璁板綍');
+ }
+ }
+ selectionList.value = selection;
selectionList.value = selection;
}
})
+const dialog = reactive({
+ visible: false,
+ detail: false,
+ title: '',
+})
+const selectedIds = ref<string>('');
+const handleGenerate = () => {
+ form.value = {};
+ dialog.title = '鐢熸垚璐﹀崟';
+ if (selectionList.value.length > 0) {
+ selectedIds.value = selectionList.value.map(item => item.id).join(',');
+ }
+ if (selectionList.value.length === 0) {
+ if (queryParams.value.customerName == '') {
+ proxy.$message.warning('璇烽�夋嫨瀹㈡埛鍚嶇О');
+ return;
+ }
+ getCwglPendingSettlementBusinessBillList({ customerName: queryParams.value.customerName }).then((res) => {
+ if (res.code === 200) {
+ form.value = res.data;
+ // option.value.generate = true;
+ dialog.visible = true;
+ }
+ })
+ } else {
+ getPendingSettlementBusinessBill(selectedIds.value).then((res) => {
+ if (res.code === 200) {
+ form.value = res.data;
+ // option.value.generate = true;
+ dialog.visible = true;
+ }
+ })
+ }
+}
+
+const storagesTransferRef = ref<FormInstance>()
+const submitForm = () => {
+ storagesTransferRef.value!.validate(valid => {
+ if (valid) {
+ if (selectionList.value.length == 0) {
+ pendingSettlementBusinessCreateBillList(form.value).then((res) => {
+ if (res.code === 200) {
+ proxy.$message.success(res.msg);
+ dialog.visible = false;
+ onLoad(page.value)
+ }
+
+ });
+ } else {
+
+ cwglPendingSettlementBusinessCreateBill(form.value, selectedIds.value).then((res) => {
+ if (res.code === 200) {
+ proxy.$message.success(res.msg);
+ dialog.visible = false;
+ onLoad(page.value)
+
+
+ }
+ });
+ }
+ }
+ })
+}
+const cancel = () => {
+ form.value = {};
+ dialog.visible = false;
+ dialog.detail = false;
+ proxy.resetForm(storagesTransferRef.value)
+ option.value.generate = false;
+}
+const activeName = ref('first')
+const dispatchNo = ref('');
+const handleClick = (tab: TabsPaneContext, event: Event) => {
+ if (tab.props.name == 'first') {
+ getListVable(dispatchNo.value, 0);
+ } else if (tab.props.name == 'second') {
+ getListVable(dispatchNo.value, 1);
+ }
+}
+
+const handleFy = (row: any) => {
+ dispatchNo.value = row.dispatchNo;
+ if (activeName.value == 'first') {
+ listEstimatedReceivable({ dispatchNo: row.dispatchNo, feeType: 0 }).then((res) => {
+ if (res.code === 200) {
+ dialog.detail = true;
+ tableDataList.value = res.rows || [];
+ }
+ })
+ } else if (activeName.value == 'second') {
+ // 杩欓噷鍙互娣诲姞鏌ヨ鏀跺叆鐩稿叧鐨勯�昏緫
+ listEstimatedReceivable({ dispatchNo: row.dispatchNo, feeType: 1 }).then((res) => {
+ if (res.code === 200) {
+ dialog.detail = true;
+ tableDataList.value = res.rows || [];
+ }
+ })
+ }
+}
+const getListVable = (dispatchNo, feeType) => {
+ listEstimatedReceivable({ dispatchNo: dispatchNo, feeType: feeType }).then((res) => {
+ if (res.code === 200) {
+ tableDataList.value = res.rows || [];
+ }
+ })
+}
+// 娣诲姞鍚堣鏂规硶
+const getSummaries = (param) => {
+ const { columns, data } = param;
+ const sums = [];
+ columns.forEach((column, index) => {
+ if (index === 0) {
+ sums[index] = '鍚堣';
+ return;
+ }
+ if (column.property === 'estimatedAmount') {
+ const values = data.map(item => Number(item.estimatedAmount));
+ if (!values.every(value => Number.isNaN(value))) {
+ sums[index] = values.reduce((prev, curr) => {
+ const value = Number(curr);
+ if (!Number.isNaN(value)) {
+ return prev + curr;
+ } else {
+ return prev;
+ }
+ }, 0);
+ sums[index] = sums[index].toFixed(2);
+ } else {
+ sums[index] = 'N/A';
+ }
+ } else {
+ sums[index] = '';
+ }
+ });
+
+ return sums;
+}
</script>
--
Gitblit v1.8.0