feat(crm): 合同含税总金额自动填入订单总金额 & 移除冗余页面
- feat(crm/contract): 含税总额变化后自动填写订单总金额(可配置开关) - fix(crm/receive): 修复金额单位错误(万元→元);清理未使用导入 - fix(contract/product): 产品备注设置默认值 - chore: 移除已废弃的 OrderDashboard 组件和 finance/order 页面 - feat(wms/hrm): 新增考勤异常管理页面(attendanceAbnormal.vue) - chore: 移除 trae git 提交规则配置
This commit is contained in:
@@ -1,202 +0,0 @@
|
||||
<template>
|
||||
<div style="padding: 20px;">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<div>
|
||||
<el-row>
|
||||
<el-input v-model="queryParams.orderCode" placeholder="请输入单据编号" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-row>
|
||||
|
||||
<klp-list :list-data="orderList" list-key="orderId" :loading="loading" @item-click="handleItemClick"
|
||||
info1-field="orderCode" info1-max-percent="40" info5-field="createTime" info4-field="taxAmount">
|
||||
<!-- info4 插槽:Vue2 用 slot 指定插槽名,slot-scope 接收作用域变量 -->
|
||||
<template slot="info4" slot-scope="{ item }">
|
||||
<span class="info-value info-value--primary">
|
||||
{{ item.taxAmount }}元(含税)
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<!-- info1 插槽:同理修改插槽语法 -->
|
||||
<template slot="info1" slot-scope="{ item }">
|
||||
<span class="info-value info-value--primary">
|
||||
{{ item.salesManager }}【{{ item.orderCode }}】
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<!-- info2 插槽:dict-tag 若为 Vue2 兼容组件,用法不变 -->
|
||||
<template slot="info2" slot-scope="{ item }">
|
||||
<dict-tag :options="dict.type.order_status" :value="item.orderStatus" />
|
||||
</template>
|
||||
|
||||
<!-- actions 插槽:el-button 为 Element UI Vue2 组件,用法不变 -->
|
||||
<template slot="actions" slot-scope="{ item }">
|
||||
<el-button size="small" type="text" style="color: red" icon="el-icon-delete"
|
||||
@click.stop="handleDelete(item)"></el-button>
|
||||
</template>
|
||||
</klp-list>
|
||||
|
||||
<pagination :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" :total="total"
|
||||
layout="prev, pager, next" @pagination="getList" />
|
||||
</div>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="18" v-loading="rightLoading">
|
||||
<el-tabs v-if="currentOrder" v-model="activeTab">
|
||||
<el-tab-pane label="订单信息" name="orderDetail">
|
||||
<el-form>
|
||||
<el-form-item label="订单ID">
|
||||
<el-input v-model="currentOrder.orderId" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="订单编号">
|
||||
<el-input v-model="currentOrder.orderCode" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="销售经理">
|
||||
<el-input v-model="currentOrder.salesManager" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="客户">
|
||||
<el-input v-model="currentOrder.customerName" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="含税金额">
|
||||
<el-input v-model="currentOrder.taxAmount" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="无税金额">
|
||||
<el-input v-model="currentOrder.noTaxAmount" disabled />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="订单明细" name="orderList">
|
||||
<order-detail-list :orderId="currentOrder.orderId" :editable="false" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="应收明细" name="receivable">
|
||||
<div style="margin-top: 10px;">
|
||||
<ReceiveTable :order-id="currentOrder.orderId" :searchable="false" />
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="应付明细" name="payable">
|
||||
<div style="margin-top: 10px;">
|
||||
<PayTable :order-id="currentOrder.orderId" :searchable="false" />
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="凭证管理" name="document">
|
||||
<KLPTable :data="currentOrder.documents" style="width: 100%" empty-text="暂无数据">
|
||||
<el-table-column prop="docNo" label="凭证编号" />
|
||||
<el-table-column prop="docDate" label="凭证日期" />
|
||||
<el-table-column prop="amount" label="凭证金额" />
|
||||
<el-table-column prop="status" label="凭证状态" />
|
||||
</KLPTable>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
|
||||
<el-empty v-else description="请选择订单" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listOrder } from "@/api/wms/order";
|
||||
import { listOrderDetail } from "@/api/wms/orderDetail";
|
||||
import { listReceivable } from "@/api/finance/receivable";
|
||||
import { listPayable } from "@/api/finance/payable";
|
||||
import { listFinancialDocument } from "@/api/finance/financialDocument";
|
||||
|
||||
import OrderDetailList from '@/views/wms/order/panels/detail.vue'
|
||||
import klpList from "@/components/KLPUI/KLPList/index.vue"; // 引入klp-list组件
|
||||
import ReceiveTable from '../components/ReceiveTable.vue';
|
||||
import PayTable from '../components/PayTable.vue';
|
||||
|
||||
export default {
|
||||
name: "Order",
|
||||
components: {
|
||||
OrderDetailList,
|
||||
klpList, // 注册klp-list组件
|
||||
ReceiveTable,
|
||||
PayTable
|
||||
},
|
||||
dicts: ['order_status'],
|
||||
data() {
|
||||
return {
|
||||
activeTab: "orderDetail",
|
||||
currentOrder: null,
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
orderCode: undefined
|
||||
},
|
||||
orderListLoading: false,
|
||||
orderList: [], // 用于klp-list的列表数据
|
||||
total: 0,
|
||||
rightLoading: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
getList() {
|
||||
this.orderListLoading = true;
|
||||
listOrder(this.queryParams).then(response => {
|
||||
this.orderList = response.rows; // 直接使用原始数据
|
||||
this.total = response.total;
|
||||
}).finally(() => {
|
||||
this.orderListLoading = false;
|
||||
});
|
||||
},
|
||||
// 处理列表项点击事件
|
||||
handleItemClick(selectedItem) {
|
||||
if (!selectedItem) {
|
||||
this.currentOrder = null;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.rightLoading) {
|
||||
this.$message.warning('请等待当前订单加载完成');
|
||||
return;
|
||||
}
|
||||
|
||||
this.currentOrder = selectedItem;
|
||||
this.fetchData(selectedItem.orderId);
|
||||
},
|
||||
// 查看详情按钮点击事件
|
||||
handleViewDetail(item) {
|
||||
this.currentOrder = item;
|
||||
this.fetchData(item.orderId);
|
||||
},
|
||||
async fetchData(orderId) {
|
||||
this.rightLoading = true;
|
||||
try {
|
||||
// 并行请求提高性能
|
||||
const [
|
||||
orderDetailRes,
|
||||
receivableRes,
|
||||
payableRes,
|
||||
documentRes
|
||||
] = await Promise.all([
|
||||
listOrderDetail({ orderId, pageSize: 1000 }),
|
||||
listReceivable({ orderId, pageSize: 1000 }),
|
||||
listPayable({ orderId, pageSize: 1000 }),
|
||||
listFinancialDocument({ orderId, pageSize: 1000 })
|
||||
]);
|
||||
|
||||
this.currentOrder = {
|
||||
...this.currentOrder,
|
||||
details: orderDetailRes.rows,
|
||||
receivables: receivableRes.rows,
|
||||
payables: payableRes.rows,
|
||||
documents: documentRes.rows
|
||||
};
|
||||
} catch (error) {
|
||||
this.$message.error('数据加载失败,请重试');
|
||||
console.error(error);
|
||||
} finally {
|
||||
this.rightLoading = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user