ZN
6 天以前 7ff67bff3b4ac5e503ca4291f03eee1ac213fd33
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();