From 7ff67bff3b4ac5e503ca4291f03eee1ac213fd33 Mon Sep 17 00:00:00 2001
From: ZN <zhang_12370@163.com>
Date: 星期四, 26 三月 2026 16:33:36 +0800
Subject: [PATCH] refactor(financial): 简化收支借款管理页面并移除编辑功能
---
/dev/null | 120 -----------------
src/pages.json | 21 ---
src/api/financialManagement/revenueManagement.js | 2
src/pages/financialManagement/revenueManagement/index.vue | 34 +---
src/pages/financialManagement/expenseManagement/index.vue | 68 +--------
src/pages/financialManagement/loanManagement/index.vue | 130 +-----------------
src/api/financialManagement/expenseManagement.js | 2
7 files changed, 29 insertions(+), 348 deletions(-)
diff --git a/src/api/financialManagement/expenseManagement.js b/src/api/financialManagement/expenseManagement.js
index 49e63ac..2b16f5d 100644
--- a/src/api/financialManagement/expenseManagement.js
+++ b/src/api/financialManagement/expenseManagement.js
@@ -26,7 +26,7 @@
export const delAccountExpense = (data) => {
return request({
- url: "account/accountExpense/del",
+ url: "/account/accountExpense/del",
method: "delete",
data,
});
diff --git a/src/api/financialManagement/revenueManagement.js b/src/api/financialManagement/revenueManagement.js
index 3a270fd..68db0a5 100644
--- a/src/api/financialManagement/revenueManagement.js
+++ b/src/api/financialManagement/revenueManagement.js
@@ -26,7 +26,7 @@
export const delAccountIncome = (data) => {
return request({
- url: "account/accountIncome/del",
+ url: "/account/accountIncome/del",
method: "delete",
data,
});
diff --git a/src/pages.json b/src/pages.json
index 5c4283d..572e4f1 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -26,13 +26,6 @@
}
},
{
- "path": "pages/financialManagement/revenueManagement/edit",
- "style": {
- "navigationBarTitleText": "鏀跺叆缂栬緫",
- "navigationStyle": "custom"
- }
- },
- {
"path": "pages/financialManagement/expenseManagement/index",
"style": {
"navigationBarTitleText": "鏀嚭绠$悊",
@@ -40,23 +33,9 @@
}
},
{
- "path": "pages/financialManagement/expenseManagement/edit",
- "style": {
- "navigationBarTitleText": "鏀嚭缂栬緫",
- "navigationStyle": "custom"
- }
- },
- {
"path": "pages/financialManagement/loanManagement/index",
"style": {
"navigationBarTitleText": "鍊熸绠$悊",
- "navigationStyle": "custom"
- }
- },
- {
- "path": "pages/financialManagement/loanManagement/edit",
- "style": {
- "navigationBarTitleText": "鍊熸缂栬緫",
"navigationStyle": "custom"
}
},
diff --git a/src/pages/financialManagement/expenseManagement/edit.vue b/src/pages/financialManagement/expenseManagement/edit.vue
deleted file mode 100644
index 292957a..0000000
--- a/src/pages/financialManagement/expenseManagement/edit.vue
+++ /dev/null
@@ -1,120 +0,0 @@
-<template>
- <view class="sales-account">
- <PageHeader :title="pageTitle" @back="goBack" />
- <view class="search-section">
- <up-form :model="form" :rules="rules" ref="formRef">
- <up-form-item label="鏀嚭鏃ユ湡" prop="expenseDate">
- <uni-datetime-picker type="date" v-model="form.expenseDate" />
- </up-form-item>
- <up-form-item label="鏀嚭绫诲瀷" prop="expenseType">
- <up-picker :columns="[expenseTypes]" key-name="label" v-model="expenseTypeIndex" @confirm="onExpenseTypeConfirm" />
- </up-form-item>
- <up-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName">
- <up-input v-model="form.supplierName" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鏀嚭閲戦" prop="expenseMoney">
- <up-input type="number" v-model="form.expenseMoney" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鏀嚭鎻忚堪" prop="expenseDescribed">
- <up-input v-model="form.expenseDescribed" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="浠樻鏂瑰紡" prop="expenseMethod">
- <up-picker :columns="[checkoutPayment]" key-name="label" v-model="expenseMethodIndex" @confirm="onMethodConfirm" />
- </up-form-item>
- <up-form-item label="鍙戠エ鍙风爜" prop="invoiceNumber">
- <up-input v-model="form.invoiceNumber" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="澶囨敞" prop="note">
- <up-textarea v-model="form.note" placeholder="璇疯緭鍏�" autoHeight />
- </up-form-item>
- </up-form>
- <view class="actions">
- <u-button type="primary" @click="submitForm">淇濆瓨</u-button>
- </view>
- </view>
- </view>
-</template>
-
-<script setup>
-import { ref, reactive, computed } from "vue";
-import { onLoad } from "@dcloudio/uni-app";
-import { useDict } from "@/utils/dict";
-import { add, update, getAccountExpense } from "@/api/financialManagement/expenseManagement";
-
-const operationType = ref("add");
-const id = ref(undefined);
-
-const { checkout_payment, expense_types } = useDict("checkout_payment", "expense_types");
-const checkoutPayment = ref([]);
-const expenseTypes = ref([]);
-const expenseTypeIndex = ref([0]);
-const expenseMethodIndex = ref([0]);
-
-const formRef = ref();
-const form = reactive({
- expenseDate: undefined,
- expenseType: undefined,
- supplierName: "",
- expenseMoney: undefined,
- expenseDescribed: "",
- expenseMethod: undefined,
- invoiceNumber: "",
- note: "",
-});
-
-const rules = {
- expenseDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- expenseType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- supplierName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- expenseMoney: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- expenseDescribed: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- expenseMethod: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-};
-
-const pageTitle = computed(() => (operationType.value === "edit" ? "缂栬緫鏀嚭" : "鏂板鏀嚭"));
-
-const onExpenseTypeConfirm = (e) => {
- const item = expenseTypes.value[e.value[0]];
- if (item) form.expenseType = item.value;
-};
-const onMethodConfirm = (e) => {
- const item = checkoutPayment.value[e.value[0]];
- if (item) form.expenseMethod = item.value;
-};
-
-const syncDict = () => {
- checkoutPayment.value = (checkout_payment?.value || []).map(i => ({ label: i.label, value: i.value }));
- expenseTypes.value = (expense_types?.value || []).map(i => ({ label: i.label, value: i.value }));
-};
-
-const submitForm = () => {
- formRef.value?.validate(async (valid) => {
- if (!valid) return;
- const payload = { ...form };
- const res = operationType.value === "edit" ? await update({ id: id.value, ...payload }) : await add(payload);
- if (res?.code === 200) {
- uni.navigateBack();
- }
- });
-};
-
-const goBack = () => {
- uni.navigateBack();
-};
-
-onLoad(async (query) => {
- syncDict();
- operationType.value = query?.type || "add";
- if (query?.id) {
- id.value = query.id;
- const res = await getAccountExpense(id.value);
- const data = res?.data ?? res;
- Object.assign(form, data || {});
- }
-});
-</script>
-
-<style scoped lang="scss">
-@import "@/styles/sales-common.scss";
-.actions { margin-top: 16px; }
-</style>
diff --git a/src/pages/financialManagement/expenseManagement/index.vue b/src/pages/financialManagement/expenseManagement/index.vue
index 397414b..d73c91c 100644
--- a/src/pages/financialManagement/expenseManagement/index.vue
+++ b/src/pages/financialManagement/expenseManagement/index.vue
@@ -4,17 +4,11 @@
<view class="search-section">
<view class="search-bar">
<view class="search-input">
- <uni-datetime-picker type="daterange" v-model="filters.entryDate" @change="onDateChange" />
+ <up-input class="search-text" placeholder="璇疯緭鍏ュ鎴峰悕绉版悳绱�" v-model="searchForm.supplierName" clearable />
</view>
- <view class="search-input">
- <up-input readonly placeholder="浠樻鏂瑰紡" v-model="expenseMethodLabel" @click="methodPickerShow = true" />
+ <view class="filter-button" @click="handleQuery">
+ <up-icon name="search" size="24" color="#999"></up-icon>
</view>
- <view class="filter-button" @click="getList">
- <up-icon name="search" size="24" color="#999" />
- </view>
- </view>
- <view class="actions">
- <u-button type="primary" size="small" @click="goAdd">鏂板</u-button>
</view>
</view>
<view class="ledger-list" v-if="list.length>0">
@@ -36,31 +30,24 @@
<view class="detail-row"><text class="detail-label">鍙戠エ鍙风爜</text><text class="detail-value">{{ item.invoiceNumber || '--' }}</text></view>
<view class="detail-row"><text class="detail-label">澶囨敞</text><text class="detail-value">{{ item.note || '--' }}</text></view>
</view>
- <view class="card-actions">
- <u-button size="small" @click="goEdit(item)" :disabled="!!item.businessId">缂栬緫</u-button>
- <u-button size="small" type="error" @click="confirmDelete(item)" :disabled="!!item.businessId">鍒犻櫎</u-button>
- </view>
</view>
</view>
<view class="no-data" v-else><text>鏆傛棤鏁版嵁</text></view>
- <up-action-sheet :show="methodPickerShow" :actions="checkoutPayment" title="浠樻鏂瑰紡" @select="onSelectMethod" @close="methodPickerShow=false" />
</view>
</template>
<script setup>
import { ref, reactive } from "vue";
import { onShow } from "@dcloudio/uni-app";
-import { listPage, delAccountExpense } from "@/api/financialManagement/expenseManagement";
+import { listPage } from "@/api/financialManagement/expenseManagement";
import { useDict } from "@/utils/dict";
const list = ref([]);
-const filters = reactive({ entryDate: null, expenseMethod: undefined, entryDateStart: undefined, entryDateEnd: undefined });
const { checkout_payment, expense_types } = useDict("checkout_payment", "expense_types");
const checkoutPayment = ref([]);
const expenseTypes = ref([]);
-const methodPickerShow = ref(false);
-const expenseMethodLabel = ref("");
+const searchForm = reactive({ supplierName: null,current:-1,size:-1 });
const syncDict = () => {
checkoutPayment.value = (checkout_payment?.value || []).map(i => ({ label: i.label, value: i.value }));
@@ -68,28 +55,13 @@
};
const getList = () => {
- listPage({ expenseMethod: filters.expenseMethod, entryDateStart: filters.entryDateStart, entryDateEnd: filters.entryDateEnd, current: 1, size: 100 })
+ listPage({...searchForm })
.then(res => {
const records = res?.data?.records ?? res?.records ?? [];
list.value = records;
});
};
-const onDateChange = (val) => {
- if (val && val.length === 2) {
- filters.entryDateStart = val[0];
- filters.entryDateEnd = val[1];
- } else {
- filters.entryDateStart = undefined;
- filters.entryDateEnd = undefined;
- }
-};
-
-const onSelectMethod = (e) => {
- filters.expenseMethod = e.value;
- expenseMethodLabel.value = e.label;
- methodPickerShow.value = false;
-};
const methodText = (v) => {
const m = checkoutPayment.value.find(i=>String(i.value)===String(v));
@@ -104,34 +76,10 @@
return n.toFixed(2);
};
-const goAdd = () => {
- uni.navigateTo({ url: "/pages/financialManagement/expenseManagement/edit?type=add" });
-};
-const goEdit = (row) => {
- uni.navigateTo({ url: `/pages/financialManagement/expenseManagement/edit?type=edit&id=${row.id}` });
-};
-const confirmDelete = (row) => {
- uni.showModal({
- title: "鎻愮ず",
- content: "纭鍒犻櫎璇ヨ褰曪紵",
- success: async (r) => {
- if (r.confirm) {
- const ids = Array.isArray(row) ? row.map(i=>i.id) : [row.id];
- const res = await delAccountExpense(ids);
- if (res?.code === 200) getList();
- }
- },
- });
+const handleQuery = () => {
+ getList();
};
-const onExpenseTypeConfirm = (e) => {
- const item = expenseTypes.value[e.value[0]];
- if (item) form.expenseType = item.value;
-};
-const onMethodConfirm = (e) => {
- const item = checkoutPayment.value[e.value[0]];
- if (item) form.expenseMethod = item.value;
-};
const goBack = () => {
uni.navigateBack();
diff --git a/src/pages/financialManagement/loanManagement/edit.vue b/src/pages/financialManagement/loanManagement/edit.vue
deleted file mode 100644
index a5226ed..0000000
--- a/src/pages/financialManagement/loanManagement/edit.vue
+++ /dev/null
@@ -1,87 +0,0 @@
-<template>
- <view class="sales-account">
- <PageHeader :title="pageTitle" @back="goBack" />
- <view class="search-section">
- <up-form :model="form" :rules="rules" ref="formRef">
- <up-form-item label="鍊熸浜哄鍚�" prop="borrowerName">
- <up-input v-model="form.borrowerName" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鍊熸閲戦(鍏�)" prop="borrowAmount">
- <up-input type="number" v-model="form.borrowAmount" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鍊熸鍒╃巼(%)" prop="interestRate">
- <up-input type="number" v-model="form.interestRate" placeholder="渚嬪 5.85" />
- </up-form-item>
- <up-form-item label="鍊熸鏃ユ湡" prop="borrowDate">
- <uni-datetime-picker type="date" v-model="form.borrowDate" />
- </up-form-item>
- <up-form-item v-if="operationType==='repay'" label="瀹為檯杩樻鏃ユ湡" prop="repayDate">
- <uni-datetime-picker type="date" v-model="form.repayDate" />
- </up-form-item>
- <up-form-item label="澶囨敞" prop="remark">
- <up-textarea v-model="form.remark" autoHeight />
- </up-form-item>
- </up-form>
- <view class="actions">
- <u-button type="primary" @click="submitForm">淇濆瓨</u-button>
- </view>
- </view>
- </view>
-</template>
-
-<script setup>
-import { ref, reactive, computed } from "vue";
-import { onLoad } from "@dcloudio/uni-app";
-import { add, update } from "@/api/financialManagement/loanManagement";
-
-const operationType = ref("add");
-const id = ref(undefined);
-
-const formRef = ref();
-const form = reactive({
- borrowerName: "",
- borrowAmount: undefined,
- interestRate: undefined,
- borrowDate: undefined,
- repayDate: undefined,
- remark: "",
-});
-
-const rules = {
- borrowerName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- borrowAmount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- interestRate: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- borrowDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- repayDate: [{ validator: (_r, v, cb) => { if (operationType.value==='repay' && !v) return cb(new Error('璇烽�夋嫨')); cb(); }, trigger: "change" }],
-};
-
-const pageTitle = computed(() => operationType.value==='repay' ? "杩樻" : operationType.value==='edit' ? "缂栬緫鍊熸" : "鏂板鍊熸");
-
-const submitForm = () => {
- formRef.value?.validate(async (valid) => {
- if (!valid) return;
- const payload = operationType.value==='repay' ? { ...form, status: 2 } : { ...form };
- const res = operationType.value==='add' ? await add(payload) : await update({ id: id.value, ...payload });
- if (res?.code === 200) {
- uni.navigateBack();
- }
- });
-};
-
-const goBack = () => {
- uni.navigateBack();
-};
-
-onLoad((query) => {
- operationType.value = query?.type || "add";
- if (query?.id) {
- id.value = query.id;
- // 閫氳繃瀵艰埅鍙傛暟鎼哄甫鐨勫瓧娈靛洖濉敱 index 椤靛喅瀹氾紝杩欓噷浠呬繚鐣欐渶绠�閫昏緫
- }
-});
-</script>
-
-<style scoped lang="scss">
-@import "@/styles/sales-common.scss";
-.actions { margin-top: 16px; }
-</style>
diff --git a/src/pages/financialManagement/loanManagement/index.vue b/src/pages/financialManagement/loanManagement/index.vue
index 5383b9c..63877e2 100644
--- a/src/pages/financialManagement/loanManagement/index.vue
+++ b/src/pages/financialManagement/loanManagement/index.vue
@@ -4,22 +4,11 @@
<view class="search-section">
<view class="search-bar">
<view class="search-input">
- <up-input v-model="filters.borrowerName" placeholder="鍊熸浜哄鍚�" clearable />
+ <up-input class="search-text" placeholder="璇疯緭鍏ュ鎴峰悕绉版悳绱�" v-model="searchForm.borrowerName" clearable />
</view>
- <view class="search-input">
- <uni-datetime-picker type="daterange" v-model="filters.borrowDate" @change="onDateChange" />
+ <view class="filter-button" @click="handleQuery">
+ <up-icon name="search" size="24" color="#999"></up-icon>
</view>
- <view class="search-input">
- <up-picker :columns="[statusOptions]" key-name="label" v-model="statusIndex" @confirm="onStatusConfirm">
- <up-input readonly :value="statusLabel" placeholder="鍊熸鐘舵��" />
- </up-picker>
- </view>
- <view class="filter-button" @click="getList">
- <up-icon name="search" size="24" color="#999" />
- </view>
- </view>
- <view class="actions">
- <u-button type="primary" size="small" @click="goAdd">鏂板</u-button>
</view>
</view>
<view class="ledger-list" v-if="list.length>0">
@@ -41,103 +30,33 @@
<view class="detail-row"><text class="detail-label">瀹為檯杩樻鏃ユ湡</text><text class="detail-value">{{ item.repayDate || '--' }}</text></view>
<view class="detail-row"><text class="detail-label">澶囨敞</text><text class="detail-value">{{ item.remark || '--' }}</text></view>
</view>
- <view class="card-actions">
- <u-button size="small" @click="goEdit(item)">缂栬緫</u-button>
- <u-button size="small" type="warning" @click="goRepay(item)" :disabled="item.status!==1">杩樻</u-button>
- <u-button size="small" type="error" @click="confirmDelete(item)">鍒犻櫎</u-button>
- </view>
</view>
</view>
<view class="no-data" v-else><text>鏆傛棤鏁版嵁</text></view>
-
- <up-popup :show="formShow" mode="bottom" @close="closeForm">
- <view class="popup">
- <view class="popup-header">{{ formMode==='add'?'鏂板鍊熸': formMode==='repay'?'杩樻':'缂栬緫鍊熸' }}</view>
- <up-form :model="form" :rules="rules" ref="formRef">
- <up-form-item label="鍊熸浜哄鍚�" prop="borrowerName">
- <up-input v-model="form.borrowerName" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鍊熸閲戦" prop="borrowAmount">
- <up-input type="number" v-model="form.borrowAmount" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鍊熸鍒╃巼(%)" prop="interestRate">
- <up-input type="number" v-model="form.interestRate" placeholder="渚嬪 5.85" />
- </up-form-item>
- <up-form-item label="鍊熸鏃ユ湡" prop="borrowDate">
- <uni-datetime-picker type="date" v-model="form.borrowDate" />
- </up-form-item>
- <up-form-item v-if="formMode==='repay'" label="瀹為檯杩樻鏃ユ湡" prop="repayDate">
- <uni-datetime-picker type="date" v-model="form.repayDate" />
- </up-form-item>
- <up-form-item label="澶囨敞" prop="remark">
- <up-textarea v-model="form.remark" autoHeight />
- </up-form-item>
- </up-form>
- <view class="popup-actions">
- <u-button @click="closeForm">鍙栨秷</u-button>
- <u-button type="primary" @click="submitForm">淇濆瓨</u-button>
- </view>
- </view>
- </up-popup>
</view>
</template>
<script setup>
import { ref, reactive } from "vue";
import { onShow } from "@dcloudio/uni-app";
-import { listPage, delAccountLoan } from "@/api/financialManagement/loanManagement";
+import { listPage } from "@/api/financialManagement/loanManagement";
const list = ref([]);
-const filters = reactive({ borrowerName: "", borrowDate: null, entryDateStart: undefined, entryDateEnd: undefined, status: undefined });
-const statusOptions = ref([{ label: "鍏ㄩ儴", value: undefined }, { label: "寰呰繕娆�", value: 1 }, { label: "宸茶繕娆�", value: 2 }]);
-const statusIndex = ref([0]);
-const statusLabel = ref("");
+const searchForm = reactive({ borrowerName: "", current: -1, size: -1 });
-const formShow = ref(false);
-const formMode = ref("add");
-const formRef = ref();
-const form = reactive({
- id: undefined,
- borrowerName: "",
- borrowAmount: undefined,
- interestRate: undefined,
- borrowDate: undefined,
- repayDate: undefined,
- remark: "",
- status: undefined,
-});
-const rules = {
- borrowerName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- borrowAmount: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- interestRate: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- borrowDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- repayDate: [{ validator: (_r, v, cb)=>{ if (formMode.value==='repay' && !v) return cb(new Error('璇烽�夋嫨')); cb(); }, trigger: "change" }],
-};
const getList = () => {
- const extra = {};
- if (filters.entryDateStart && filters.entryDateEnd) {
- extra.entryDateStart = filters.entryDateStart;
- extra.entryDateEnd = filters.entryDateEnd;
- }
- if (filters.status) extra.status = filters.status;
- listPage({ borrowerName: filters.borrowerName, ...extra, current: 1, size: 100 })
+ listPage({ ...searchForm, current: -1, size: -1 })
.then(res => {
const records = res?.data?.records ?? res?.records ?? [];
list.value = records;
});
};
-const onDateChange = (val) => {
- if (val && val.length === 2) {
- filters.entryDateStart = val[0];
- filters.entryDateEnd = val[1];
- } else {
- filters.entryDateStart = undefined;
- filters.entryDateEnd = undefined;
- }
+const handleQuery = () => {
+ searchForm.current = 1;
+ getList();
};
-
const statusText = (s) => s===1?'寰呰繕娆�': s===2?'宸茶繕娆�':'';
const statusType = (s) => s===1?'error': s===2?'success':'primary';
const fmtAmount = (v) => {
@@ -148,37 +67,6 @@
if (v===undefined || v===null || v==='') return '-';
const n = parseFloat(v);
return n.toFixed(2) + '%';
-};
-
-const goAdd = () => {
- uni.navigateTo({ url: "/pages/financialManagement/loanManagement/edit?type=add" });
-};
-const goEdit = (row) => {
- uni.navigateTo({ url: `/pages/financialManagement/loanManagement/edit?type=edit&id=${row.id}` });
-};
-const goRepay = (row) => {
- uni.navigateTo({ url: `/pages/financialManagement/loanManagement/edit?type=repay&id=${row.id}` });
-};
-const confirmDelete = (row) => {
- uni.showModal({
- title: "鎻愮ず",
- content: "纭鍒犻櫎璇ヨ褰曪紵",
- success: async (r) => {
- if (r.confirm) {
- const ids = Array.isArray(row) ? row.map(i=>i.id) : [row.id];
- const res = await delAccountLoan(ids);
- if (res?.code === 200) getList();
- }
- },
- });
-};
-
-const onStatusConfirm = (e) => {
- const item = statusOptions.value[e.value[0]];
- if (item) {
- filters.status = item.value;
- statusLabel.value = item.label || "";
- }
};
const goBack = () => {
diff --git a/src/pages/financialManagement/revenueManagement/edit.vue b/src/pages/financialManagement/revenueManagement/edit.vue
deleted file mode 100644
index 869e12c..0000000
--- a/src/pages/financialManagement/revenueManagement/edit.vue
+++ /dev/null
@@ -1,120 +0,0 @@
-<template>
- <view class="sales-account">
- <PageHeader :title="pageTitle" @back="goBack" />
- <view class="search-section">
- <up-form :model="form" :rules="rules" ref="formRef">
- <up-form-item label="鏀跺叆鏃ユ湡" prop="incomeDate">
- <uni-datetime-picker type="date" v-model="form.incomeDate" />
- </up-form-item>
- <up-form-item label="鏀跺叆绫诲瀷" prop="incomeType">
- <up-picker :columns="[incomeTypes]" key-name="label" v-model="incomeTypeIndex" @confirm="onIncomeTypeConfirm" />
- </up-form-item>
- <up-form-item label="瀹㈡埛鍚嶇О" prop="customerName">
- <up-input v-model="form.customerName" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鏀跺叆閲戦" prop="incomeMoney">
- <up-input type="number" v-model="form.incomeMoney" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鏀跺叆鎻忚堪" prop="incomeDescribed">
- <up-input v-model="form.incomeDescribed" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="鏀舵鏂瑰紡" prop="incomeMethod">
- <up-picker :columns="[paymentMethods]" key-name="label" v-model="incomeMethodIndex" @confirm="onMethodConfirm" />
- </up-form-item>
- <up-form-item label="鍙戠エ鍙风爜" prop="invoiceNumber">
- <up-input v-model="form.invoiceNumber" placeholder="璇疯緭鍏�" />
- </up-form-item>
- <up-form-item label="澶囨敞" prop="note">
- <up-textarea v-model="form.note" placeholder="璇疯緭鍏�" autoHeight />
- </up-form-item>
- </up-form>
- <view class="actions">
- <u-button type="primary" @click="submitForm">淇濆瓨</u-button>
- </view>
- </view>
- </view>
-</template>
-
-<script setup>
-import { ref, reactive, computed } from "vue";
-import { onLoad } from "@dcloudio/uni-app";
-import { useDict } from "@/utils/dict";
-import { add, update, getAccountIncome } from "@/api/financialManagement/revenueManagement";
-
-const operationType = ref("add");
-const id = ref(undefined);
-
-const { payment_methods, income_types } = useDict("payment_methods", "income_types");
-const paymentMethods = ref([]);
-const incomeTypes = ref([]);
-const incomeTypeIndex = ref([0]);
-const incomeMethodIndex = ref([0]);
-
-const formRef = ref();
-const form = reactive({
- incomeDate: undefined,
- incomeType: undefined,
- customerName: "",
- incomeMoney: undefined,
- incomeDescribed: "",
- incomeMethod: undefined,
- invoiceNumber: "",
- note: "",
-});
-
-const rules = {
- incomeDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- incomeType: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
- customerName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- incomeMoney: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- incomeDescribed: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
- incomeMethod: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
-};
-
-const pageTitle = computed(() => (operationType.value === "edit" ? "缂栬緫鏀跺叆" : "鏂板鏀跺叆"));
-
-const onIncomeTypeConfirm = (e) => {
- const item = incomeTypes.value[e.value[0]];
- if (item) form.incomeType = item.value;
-};
-const onMethodConfirm = (e) => {
- const item = paymentMethods.value[e.value[0]];
- if (item) form.incomeMethod = item.value;
-};
-
-const syncDict = () => {
- paymentMethods.value = (payment_methods?.value || []).map(i => ({ label: i.label, value: i.value }));
- incomeTypes.value = (income_types?.value || []).filter(i=>i.value!=3).map(i => ({ label: i.label, value: i.value }));
-};
-
-const submitForm = () => {
- formRef.value?.validate(async (valid) => {
- if (!valid) return;
- const payload = { ...form };
- const res = operationType.value === "edit" ? await update({ id: id.value, ...payload }) : await add(payload);
- if (res?.code === 200) {
- uni.navigateBack();
- }
- });
-};
-
-const goBack = () => {
- uni.navigateBack();
-};
-
-onLoad(async (query) => {
- syncDict();
- operationType.value = query?.type || "add";
- if (query?.id) {
- id.value = query.id;
- const res = await getAccountIncome(id.value);
- const data = res?.data ?? res;
- Object.assign(form, data || {});
- }
-});
-</script>
-
-<style scoped lang="scss">
-@import "@/styles/sales-common.scss";
-.actions { margin-top: 16px; }
-</style>
diff --git a/src/pages/financialManagement/revenueManagement/index.vue b/src/pages/financialManagement/revenueManagement/index.vue
index e7a4de5..a23272a 100644
--- a/src/pages/financialManagement/revenueManagement/index.vue
+++ b/src/pages/financialManagement/revenueManagement/index.vue
@@ -4,18 +4,12 @@
<view class="search-section">
<view class="search-bar">
<view class="search-input">
- <uni-datetime-picker type="daterange" v-model="filters.entryDate" @change="onDateChange" />
+ <up-input class="search-text" placeholder="璇疯緭鍏ュ鎴峰悕绉版悳绱�" v-model="searchForm.customerName" clearable />
</view>
- <view class="search-input">
- <up-input readonly placeholder="鏀舵鏂瑰紡" v-model="incomeMethodLabel" @click="methodPickerShow = true" />
- </view>
- <view class="filter-button" @click="getList">
- <up-icon name="search" size="24" color="#999" />
+ <view class="filter-button" @click="handleQuery">
+ <up-icon name="search" size="24" color="#999"></up-icon>
</view>
</view>
- <view class="actions">
- <u-button type="primary" size="small" @click="goAdd">鏂板</u-button>
- </view>
</view>
<view class="ledger-list" v-if="list.length>0">
<view class="ledger-item" v-for="item in list" :key="item.id">
@@ -31,14 +25,10 @@
<up-divider></up-divider>
<view class="item-details">
<view class="detail-row"><text class="detail-label">鏀跺叆鏃ユ湡</text><text class="detail-value">{{ item.incomeDate || '--' }}</text></view>
- <view class="detail-row"><text class="detail-label">鏀跺叆绫诲瀷</text><text class="detail-value">{{ incomeTypeText(item.incomeType) || '--' }}</text></view>
+ <view class="detail-row"><text class="detail-label">鏀跺叆绫诲瀷</text><text class="detail-value">{{ incomeTypeText(item.incomeMethod) || '鍏朵粬鏀跺叆' }}</text></view>
<view class="detail-row"><text class="detail-label">鏀跺叆閲戦(鍏�)</text><text class="detail-value highlight">{{ fmtAmount(item.incomeMoney) }}</text></view>
<view class="detail-row"><text class="detail-label">鍙戠エ鍙风爜</text><text class="detail-value">{{ item.invoiceNumber || '--' }}</text></view>
<view class="detail-row"><text class="detail-label">澶囨敞</text><text class="detail-value">{{ item.note || '--' }}</text></view>
- </view>
- <view class="card-actions">
- <u-button size="small" @click="goEdit(item)" :disabled="!!item.businessId">缂栬緫</u-button>
- <u-button size="small" type="error" @click="confirmDelete(item)" :disabled="!!item.businessId">鍒犻櫎</u-button>
</view>
</view>
</view>
@@ -61,28 +51,24 @@
const incomeTypes = ref([]);
const methodPickerShow = ref(false);
const incomeMethodLabel = ref("");
+const searchForm = reactive({ customerName: null,current:1,size:100 });
const syncDict = () => {
paymentMethods.value = (payment_methods?.value || []).map(i => ({ label: i.label, value: i.value }));
- incomeTypes.value = (income_types?.value || []).filter(i=>i.value!=3).map(i => ({ label: i.label, value: i.value }));
+ incomeTypes.value = (income_types?.value || []).map(i => ({ label: i.label, value: i.value }));
};
const getList = () => {
- listPage({ incomeMethod: filters.incomeMethod, entryDateStart: filters.entryDateStart, entryDateEnd: filters.entryDateEnd, current: 1, size: 100 })
+ listPage({ ...searchForm })
.then(res => {
const records = res?.data?.records ?? res?.records ?? [];
list.value = records;
});
};
-const onDateChange = (val) => {
- if (val && val.length === 2) {
- filters.entryDateStart = val[0];
- filters.entryDateEnd = val[1];
- } else {
- filters.entryDateStart = undefined;
- filters.entryDateEnd = undefined;
- }
+const handleQuery = () => {
+ searchForm.current = 1;
+ getList();
};
const onSelectMethod = (e) => {
--
Gitblit v1.9.3