Эх сурвалжийг харах

Merge remote-tracking branch 'origin/master' into master

肖路 1 сар өмнө
parent
commit
d9c1a744ca

+ 4 - 4
src/views/cart/index.vue

@@ -82,15 +82,15 @@
             </div>
           </template>
         </el-table-column>
-        <el-table-column label="单价" width="130">
+        <el-table-column label="单价" width="130" align="center">
           <template #default="scope"> ¥{{ scope.row.memberPrice }} </template>
         </el-table-column>
-        <el-table-column label="数量" width="200">
+        <el-table-column label="数量" width="200" align="center">
           <template #default="scope">
-            <el-input-number v-model="scope.row.num" :min="1" :max="10" />
+            <el-input-number v-model="scope.row.productNum" :controls="false" :min="1" :max="10" style="width: 130px" />
           </template>
         </el-table-column>
-        <el-table-column label="小计" width="140">
+        <el-table-column label="小计" width="140" align="center">
           <template #default="scope"> ¥{{ scope.row.memberPrice * scope.row.productNum }} </template>
         </el-table-column>
         <el-table-column label="操作">

+ 1 - 0
src/views/order/orderAudit/index.vue

@@ -429,6 +429,7 @@ const handleSubmitAudit = async () => {
   padding: 20px;
   background: #fff;
   min-height: 100%;
+  width: 100%;
 }
 
 .search-bar {

+ 1 - 1
src/views/order/orderManage/index.vue

@@ -174,7 +174,7 @@
       </div>
     </div>
     <!-- 分页 -->
-    <TablePagination v-model:page="queryParams.pageNum" v-model:page-size="queryParams.pageSize" :total="total" @change="handleQuery" />
+    <TablePagination v-model:page="queryParams.pageNum" v-model:page-size="queryParams.pageSize" :total="total" @change="fetchOrderList" />
 
     <el-dialog v-model="evaluateDialogVisible" :title="evaluateDialogTitle" width="600px">
       <div class="evaluate-product">

+ 4 - 1
src/views/payc/index.vue

@@ -44,6 +44,7 @@
 </template>
 
 <script setup lang="ts">
+import { onPath } from '@/utils/siteConfig';
 import { getOrderInfo, orderPay } from '@/api/pc/enterprise/order';
 const payList = ref<any>([{ title: '信用支付' }, { title: '支付宝支付' }, { title: '微信支付' }, { title: '货到付款' }]);
 const route = useRoute();
@@ -68,7 +69,9 @@ const onSubmit = () => {
     orderId: orderId.value,
     payType: 0
   }).then((res) => {
-    console.log(res);
+    if (res.code == 200) {
+      onPath('/order/orderManage');
+    }
   });
 };
 </script>

+ 106 - 0
src/views/reconciliation/billManage/detail.vue

@@ -0,0 +1,106 @@
+<template>
+  <el-dialog title="对账单详情" v-model="visible" width="800px" append-to-body destroy-on-close>
+    <div v-loading="loading">
+      <el-descriptions title="基本信息" :column="2" border class="margin-bottom">
+        <el-descriptions-item label="对账编号">{{ form.statementOrderNo }}</el-descriptions-item>
+        <el-descriptions-item label="客户名称">{{ form.customerName || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="对账金额(元)">¥{{ form.amount != null ? Number(form.amount).toFixed(2) : '-' }}</el-descriptions-item>
+        <el-descriptions-item label="对账日期">{{ parseTime(form.statementDate, '{y}-{m}-{d}') || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="对账人">{{ form.statementSelf || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="联系电话">{{ form.statementSelfPhone || '-' }}</el-descriptions-item>
+        <el-descriptions-item label="对账状态">
+          <dict-tag :options="statement_status" :value="form.statementStatus" />
+        </el-descriptions-item>
+        <el-descriptions-item label="开票状态">
+          <dict-tag :options="invoice_issuance_status" :value="form.isInvoiceStatus" />
+        </el-descriptions-item>
+        <el-descriptions-item label="支付状态">
+          <dict-tag :options="payment_status" :value="form.isPaymentStatus" />
+        </el-descriptions-item>
+        <el-descriptions-item label="备注" :span="2">{{ form.remark || '-' }}</el-descriptions-item>
+      </el-descriptions>
+
+      <!-- 订单明细列表 -->
+      <div v-if="form.detailList && form.detailList.length > 0">
+        <el-divider content-position="left">对账明细</el-divider>
+        <el-table :data="form.detailList" border style="width: 100%; margin-bottom: 20px">
+          <el-table-column prop="orderNo" label="订单编号" min-width="150" align="center" />
+          <el-table-column prop="deliverCode" label="发货单号" min-width="150" align="center" />
+          <!-- <el-table-column prop="type" label="明细类型" min-width="100" align="center" /> -->
+          <el-table-column prop="amount" label="金额(元)" min-width="100" align="center">
+            <template #default="{ row }"> ¥{{ row.amount != null ? Number(row.amount).toFixed(2) : '-' }} </template>
+          </el-table-column>
+          <el-table-column prop="orderTime" label="订单时间" min-width="150" align="center">
+            <template #default="{ row }">
+              <span>{{ parseTime(row.orderTime) || '-' }}</span>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <!-- 商品明细列表 -->
+      <div v-if="form.productList && form.productList.length > 0">
+        <el-divider content-position="left">商品清单</el-divider>
+        <el-table :data="form.productList" border style="width: 100%">
+          <el-table-column prop="itemName" label="商品名称" min-width="150" align="center" show-overflow-tooltip />
+          <el-table-column prop="productNo" label="商品编号" min-width="120" align="center" />
+          <el-table-column prop="unitPrice" label="单价" min-width="90" align="center" />
+          <el-table-column prop="quantity" label="数量" min-width="90" align="center" />
+          <el-table-column prop="unitName" label="单位" min-width="60" align="center" />
+        </el-table>
+      </div>
+    </div>
+    <template #footer>
+      <div class="dialog-footer">
+        <el-button @click="visible = false">关 闭</el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup lang="ts">
+import { ref, getCurrentInstance, toRefs } from 'vue';
+import { ElMessage } from 'element-plus';
+import { getStatementInfo } from '@/api/pc/enterprise/statement';
+import type { StatementOrder, StatementDetail, StatementProduct } from '@/api/pc/enterprise/statementTypes';
+
+const { proxy } = getCurrentInstance() as any;
+const { statement_status, invoice_issuance_status, payment_status } = toRefs<any>(
+  proxy?.useDict('statement_status', 'invoice_issuance_status', 'payment_status')
+);
+
+const visible = ref(false);
+const loading = ref(false);
+const form = ref<Partial<StatementOrder>>({});
+
+const open = async (id: number | string) => {
+  visible.value = true;
+  loading.value = true;
+  try {
+    const res = await getStatementInfo(id);
+    if (res.code === 200) {
+      form.value = res.data || {};
+    } else {
+      ElMessage.error(res.msg || '获取详情失败');
+    }
+  } catch (error) {
+    console.error('获取对账单详情失败:', error);
+    ElMessage.error('获取对账单详情失败');
+  } finally {
+    loading.value = false;
+  }
+};
+
+defineExpose({
+  open
+});
+</script>
+
+<style scoped>
+.margin-bottom {
+  margin-bottom: 20px;
+}
+.dialog-footer {
+  text-align: right;
+}
+</style>

+ 11 - 3
src/views/reconciliation/billManage/index.vue

@@ -29,7 +29,7 @@
       </el-table-column>
       <el-table-column label="操作" width="100" align="center">
         <template #default="{ row }">
-          <!-- <el-button type="primary" link size="small" @click="handleView(row)">查看</el-button> -->
+          <el-button type="primary" link size="small" @click="handleView(row)">查看</el-button>
           <el-button type="danger" link size="small" @click="handleConfirm(row)" :disabled="row.billStatus !== '1'">确认</el-button>
         </template>
       </el-table-column>
@@ -38,6 +38,9 @@
     <div class="pagination-wrapper">
       <TablePagination v-model:page="pagination.page" v-model:pageSize="pagination.pageSize" :total="pagination.total" />
     </div>
+
+    <!-- 详情弹窗 -->
+    <DetailDialog ref="detailDialogRef" />
   </div>
 </template>
 
@@ -45,8 +48,11 @@
 import { reactive, ref, onMounted, watch } from 'vue';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { PageTitle, SearchBar, TablePagination } from '@/components';
-import { getStatementList, confirmStatement } from '@/api/pc/enterprise/statement';
+import { getStatementList, getStatementInfo, confirmStatement } from '@/api/pc/enterprise/statement';
 import type { StatementOrder } from '@/api/pc/enterprise/statementTypes';
+import DetailDialog from './detail.vue';
+
+const detailDialogRef = ref<InstanceType<typeof DetailDialog>>();
 
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { invoice_issuance_status, statement_status, payment_status } = toRefs<any>(
@@ -144,7 +150,9 @@ onMounted(() => {
 });
 
 const handleView = (row: any) => {
-  ElMessage.info(`查看对账单:${row.billNo}`);
+  if (detailDialogRef.value) {
+    detailDialogRef.value.open(row.id);
+  }
 };
 
 const handleConfirm = async (row: any) => {

+ 2 - 2
src/views/trad/index.vue

@@ -6,9 +6,9 @@
         <div style="margin-left: 6px">确认订单信息</div>
       </div>
       <div class="create-head flex-row-start">
-        <span>中国南方电网有限公司</span>
+        <span>测试客户123</span>
         <span class="border"></span>
-        <span>某某部门</span>
+        <!-- <span>某某部门</span> -->
       </div>
       <div class="address-title">收货地址</div>
       <div class="address-bos">