Pārlūkot izejas kodu

feat:数据标签

snow 2 gadi atpakaļ
vecāks
revīzija
810f58f291
24 mainītis faili ar 422 papildinājumiem un 173 dzēšanām
  1. 68 11
      src/components/PageContent/src/actions/action-tag.tsx
  2. 12 3
      src/components/PageContent/src/page-content.tsx
  3. 2 1
      src/components/PageContent/src/types.ts
  4. 19 0
      src/utils/global.ts
  5. 7 5
      src/views/InvoiceSales/capitalClaim/components/execl-upload.vue
  6. 3 1
      src/views/InvoiceSales/capitalClaim/config/xls-template.ts
  7. 15 13
      src/views/InvoiceSales/invoiceApply/components/add-edit-form/add-edit-form.vue
  8. 4 8
      src/views/InvoiceSales/invoiceApply/components/add-edit-form/columns.tsx
  9. 1 0
      src/views/InvoiceSales/invoiceApply/components/invoice-detail/index.vue
  10. 20 6
      src/views/InvoiceSales/sheetOrderPool/config/content.config.ts
  11. 3 2
      src/views/purchase/inputInvoice/config/content.config.ts
  12. 11 1
      src/views/purchase/inputInvoice/index.vue
  13. 42 73
      src/views/purchase/inputInvoice/invoice-dialog.vue
  14. 64 9
      src/views/purchase/orderRecord/components/basic-purchase.vue
  15. 28 10
      src/views/purchase/orderRecord/components/create-statement/add-order-modal.vue
  16. 53 6
      src/views/purchase/orderRecord/config/content.config.ts
  17. 3 4
      src/views/purchase/orderRecord/detail.vue
  18. 4 4
      src/views/purchase/porder/columns.tsx
  19. 54 8
      src/views/purchase/porder/index.vue
  20. 2 2
      src/views/purchase/purchPay/detail.vue
  21. 3 1
      src/views/purchase/ticketReturn/components/create-ticket-dialog/create-ticket-dialog.vue
  22. 1 1
      src/views/purchase/ticketReturn/config/configs.ts
  23. 1 1
      src/views/purchase/ticketReturn/config/content.config.ts
  24. 2 3
      src/views/purchase/ticketReturn/detail.vue

+ 68 - 11
src/components/PageContent/src/actions/action-tag.tsx

@@ -1,4 +1,12 @@
-import { defineComponent, ref, watchEffect, nextTick } from "vue";
+import {
+  defineComponent,
+  ref,
+  watchEffect,
+  nextTick,
+  onMounted,
+  computed
+} from "vue";
+
 import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
 import { httpBillAddTag, httpList } from "/@/api/parameter/tagManage";
 import { useAsync } from "/@/hooks";
@@ -8,13 +16,15 @@ import {
   ElDialog,
   ElForm,
   ElFormItem,
+  ElInputNumber,
   ElOption,
   ElSelect
 } from "element-plus";
 
 const defaultFormData = {
   tag_id: "",
-  code: ""
+  code: "",
+  total_fee: 0
 };
 
 const props = {
@@ -23,9 +33,31 @@ const props = {
   },
   row: {
     type: Object as PropType<Record<string, string>>
+  },
+  isPay: {
+    type: Boolean
   }
 };
 
+const MAP = [
+  {
+    value: "1",
+    label: "采购单付款"
+  },
+  {
+    value: "2",
+    label: "采购单回票"
+  },
+  {
+    value: "3",
+    label: "销售回款"
+  },
+  {
+    value: "4",
+    label: "销售开票"
+  }
+];
+
 const ActionTag = defineComponent({
   name: "ActionTag",
   props,
@@ -44,15 +76,13 @@ const ActionTag = defineComponent({
       isList: true
     });
 
-    const requesetTaglist = tag_name => {
-      if (!tag_name) return;
-      const { tagProps } = props;
-      const { type } = tagProps;
+    const requesetTaglist = async () => {
+      const { type } = props.tagProps;
 
       taglistRun(
         httpList({
           type,
-          tag_name
+          size: 1000
         })
       );
     };
@@ -67,22 +97,35 @@ const ActionTag = defineComponent({
     const onAddTagWithCode = () => {
       formRef.value.validate(isValid => {
         if (!isValid) return;
-        const { tag_id } = formData.value;
+        const { tag_id, total_fee } = formData.value;
         const { row, tagProps } = props;
         const { prop } = tagProps;
 
         addtagRun(
           httpBillAddTag({
             tag_id,
+            total_fee,
             code: row[prop]
           })
         );
       });
     };
 
+    const title = computed(() => {
+      const { tagProps } = props;
+      const { type } = tagProps;
+      if (!type) return;
+      return MAP.find(s => s.value === type)?.label;
+    });
+
     function renderModal() {
       return (
-        <ElDialog title="添加标签" appendToBody center v-model={visible.value}>
+        <ElDialog
+          title={`添加${title.value}标签`}
+          appendToBody
+          center
+          v-model={visible.value}
+        >
           <ElForm model={formData.value} ref={formRef}>
             <ElFormItem
               prop="tag_id"
@@ -99,10 +142,8 @@ const ActionTag = defineComponent({
                 class="w-full"
                 v-model={formData.value.tag_id}
                 loading={taglistLoading.value}
-                remoteMethod={requesetTaglist}
                 placeholder="请选择标签名"
                 filterable
-                remote
               >
                 {taglist.value.map(tag => (
                   <ElOption key={tag.id} label={tag.tag_name} value={tag.id} />
@@ -110,6 +151,20 @@ const ActionTag = defineComponent({
               </ElSelect>
             </ElFormItem>
 
+            <ElFormItem
+              prop="total_fee"
+              label="标签金额:"
+              rules={[
+                {
+                  message: "请输入标签金额",
+                  required: true,
+                  trigger: "change"
+                }
+              ]}
+            >
+              <ElInputNumber v-model={formData.value.total_fee} />
+            </ElFormItem>
+
             <div class="w-full flex justify-end flex-end">
               <ElButton
                 type="primary"
@@ -129,6 +184,8 @@ const ActionTag = defineComponent({
       nextTick(() => formRef.value && formRef.value.clearValidate());
     });
 
+    onMounted(() => requesetTaglist());
+
     return () => (
       <ElButton
         link

+ 12 - 3
src/components/PageContent/src/page-content.tsx

@@ -39,7 +39,7 @@ const PageConent = defineComponent({
      */
     function renderOperation(row) {
       const { contentConfig } = props;
-      const { apis, notPreview, powers, tagProps } = contentConfig;
+      const { apis, notPreview, powers, payProps, returnProps } = contentConfig;
 
       return (
         <>
@@ -48,10 +48,19 @@ const PageConent = defineComponent({
             <Operation.Preview onPreview={() => emit("previewBtnClick", row)} />
           )}
 
-          {tagProps && (
+          {payProps && (
             <Operation.Tag
               row={row}
-              tagProps={tagProps}
+              tagProps={payProps}
+              isPay
+              onReload={() => onSearch()}
+            />
+          )}
+
+          {returnProps && (
+            <Operation.Tag
+              row={row}
+              tagProps={returnProps}
               onReload={() => onSearch()}
             />
           )}

+ 2 - 1
src/components/PageContent/src/types.ts

@@ -26,7 +26,8 @@ export interface ContentConfig {
   powers?: Array<any>;
   treeProps?: any;
   rowKey?: string;
-  tagProps?: Record<string, string>;
+  payProps?: Record<string, string>;
+  returnProps?: Record<string, string>;
 }
 
 interface ContentApiResponse {

+ 19 - 0
src/utils/global.ts

@@ -5,3 +5,22 @@ export const REMARK_MAX_LENGTH = {
   maxlength: 1000,
   showWordLimit: true
 };
+
+export const TAG_TYPE = [
+  {
+    value: "1",
+    label: "采购单付款"
+  },
+  {
+    value: "2",
+    label: "采购单回票"
+  },
+  {
+    value: "3",
+    label: "销售回款"
+  },
+  {
+    value: "4",
+    label: "销售开票"
+  }
+];

+ 7 - 5
src/views/InvoiceSales/capitalClaim/components/execl-upload.vue

@@ -2,15 +2,14 @@
 import { ref } from "vue";
 import { ElMessage, ElUpload, UploadFile, UploadProps } from "element-plus";
 import { httpUpload } from "/@/api/InvoiceSales/capitalClaim";
-import { useUserStore } from "/@/store/modules/user";
 import { useResponseHandle } from "/@/hooks";
+import { getToken } from "/@/utils/auth";
 
 const visible = ref(false);
 const loading = ref(false);
 const uploadRef = ref<InstanceType<typeof ElUpload>>(null);
 const execlFile = ref<UploadFile | null>(null);
 const responseHandle = useResponseHandle();
-const userStore = useUserStore();
 
 //上传成功关闭dialog
 const handleUploadSccess = async () => (visible.value = false);
@@ -25,14 +24,18 @@ const handleRemove: UploadProps["onRemove"] = () => (execlFile.value = null);
 //上传方法
 const handleRequeset: UploadProps["httpRequest"] = async ({ file }) => {
   const formData = new FormData();
+  const token = getToken();
   formData.append("excel", file);
-  formData.append("token", userStore.token);
+  formData.append("token", token);
   const { message, code } = await httpUpload(formData);
 
   responseHandle({
     message,
     code,
-    handler: () => ElMessage.success("导入文件成功")
+    handler: () => {
+      ElMessage.success("导入文件成功");
+      handleUploadSccess();
+    }
   });
 };
 
@@ -63,7 +66,6 @@ defineExpose({
       :http-request="handleRequeset"
       @change="handleChange"
       @remove="handleRemove"
-      @success="handleUploadSccess"
     >
       <div class="el-upload__text" v-if="!execlFile">点击此处,上传文件</div>
     </el-upload>

+ 3 - 1
src/views/InvoiceSales/capitalClaim/config/xls-template.ts

@@ -7,5 +7,7 @@ export const template = {
   账号余额: "",
   交易行名: "",
   对方省市: "",
-  对方账号: ""
+  对方账号: "",
+  对方户名: "",
+  交易用途: ""
 };

+ 15 - 13
src/views/InvoiceSales/invoiceApply/components/add-edit-form/add-edit-form.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { FormRules, ElForm } from "element-plus";
-import { reactive, ref } from "vue";
+import { reactive, ref, watchEffect } from "vue";
 import { httpAdd } from "/@/api/InvoiceSales/invoiceApply";
 import RemoteSelect from "/@/components/RemoteSelect";
 import { httpInvoiceList } from "/@/api/InvoiceSales/invoiceApply";
@@ -39,8 +39,6 @@ const initform = {
   remark: "", //备注
   orderArr: [], //开票销售单明细 obj:sequenceNo//销售单编号 inv_fee//销售单开票金额,
   companyType: "01"
-  // id_number: "",
-  // real_name: "",
 };
 
 const ruleForm = ref({ ...initform });
@@ -119,6 +117,11 @@ function handleInvoiceTitle(
   _isSeller: boolean,
   invoiceTitle: Record<string, string>
 ) {
+  if (!invoiceTitle) {
+    sellerInvoiceTitle.value = {};
+    sellerInvoiceTitle.value = {};
+  }
+
   _isSeller
     ? (sellerInvoiceTitle.value = convertInvoiceTitle(invoiceTitle))
     : (purchaserInvoiceTitle.value = invoiceTitle);
@@ -126,6 +129,15 @@ function handleInvoiceTitle(
 
 const setSellerInvoiceTitle = handleInvoiceTitle.bind(null, true);
 const setPurchaserInvoiceTitle = handleInvoiceTitle.bind(null, false);
+
+watchEffect(() => {
+  const { companyNo, buy_id } = ruleForm.value;
+  console.log(buy_id);
+  if (!companyNo || !buy_id) {
+    orderList.value = [];
+    mapSequenceNoToInvfee.value = {};
+  }
+});
 </script>
 
 <template>
@@ -199,16 +211,6 @@ const setPurchaserInvoiceTitle = handleInvoiceTitle.bind(null, false);
           /></el-form-item>
         </el-col>
 
-        <!-- <el-col :span="6">
-          <el-form-item label-width="120px" label="真实姓名" prop="real_name">
-            <el-input v-model="ruleForm.real_name" placeholder="真实姓名" />
-          </el-form-item>
-
-          <el-form-item label-width="120px" label="身份证号" prop="id_number">
-            <el-input v-model="ruleForm.id_number" placeholder="身份证号"
-          /></el-form-item>
-        </el-col> -->
-
         <el-col :span="12">
           <el-form-item label="申请备注" prop="remark" label-width="135px">
             <el-input

+ 4 - 8
src/views/InvoiceSales/invoiceApply/components/add-edit-form/columns.tsx

@@ -226,14 +226,6 @@ export const convertInvoiceTitle = (title: Record<string, string>) => {
 };
 
 export const invoice_columns = [
-  {
-    label: "公司注册地址",
-    field: "invoice_addr"
-  },
-  {
-    label: "法人",
-    field: "invoice_people"
-  },
   {
     label: "联系方式",
     field: "invoice_mobile"
@@ -249,5 +241,9 @@ export const invoice_columns = [
   {
     label: "开户账户",
     field: "invoice_bankNo"
+  },
+  {
+    label: "公司注册地址",
+    field: "invoice_addr"
   }
 ];

+ 1 - 0
src/views/InvoiceSales/invoiceApply/components/invoice-detail/index.vue

@@ -10,6 +10,7 @@ defineProps<{
 <template>
   <BasicDescriptions
     ref="defaultRef"
+    v-if="detail"
     :data="detail"
     :columns="INV_OPEN_COLUMNS"
     :col-number="3"

+ 20 - 6
src/views/InvoiceSales/sheetOrderPool/config/content.config.ts

@@ -1,9 +1,9 @@
 import { ContentConfig } from "/@/components/PageContent";
 import { httpList } from "/@/api/InvoiceSales/sheetOrderPool";
 
-import dayjs from "dayjs";
 import { h } from "vue";
 import { ElTag } from "element-plus";
+import { TAG_TYPE } from "/@/utils/global";
 
 const USE_STATUS = [
   {
@@ -48,6 +48,14 @@ const columns = [
     label: "客户名称",
     prop: "customerName"
   },
+  {
+    label: "标签类型",
+    prop: "tag_id",
+    cellRenderer: ({ row }) =>
+      h(ElTag, null, {
+        default: () => TAG_TYPE.find(s => s.value === row.tag_id)?.label || "--"
+      })
+  },
   {
     label: "状态",
     prop: "ststus",
@@ -73,15 +81,13 @@ const columns = [
     prop: "department"
   },
   {
-    label: "创建时间",
-    prop: "createTime",
-    formatter: ({ createTime }) =>
-      dayjs(createTime).format("YYYY-MM-DD HH:mm:ss")
+    label: "标签类型",
+    prop: "department"
   },
   {
     label: "操作",
     fixed: "right",
-    width: 80,
+    width: 120,
     slot: "operation"
   }
 ];
@@ -90,6 +96,14 @@ const contentConfig: ContentConfig = {
   title: "确认单公海池",
   powers: ["001", "002", "003", "004", "005", "006", "007", "008"],
   columns,
+  payProps: {
+    prop: "sequenceNo",
+    type: "3"
+  },
+  returnProps: {
+    prop: "sequenceNo",
+    type: "4"
+  },
   apis: {
     httpList
   }

+ 3 - 2
src/views/purchase/inputInvoice/config/content.config.ts

@@ -63,7 +63,7 @@ const columns = [
     label: "开票日期",
     prop: "open_time",
     formatter: ({ open_time }) =>
-      open_time ? dayjs(open_time).format("YYYY-MM-DD HH:mm:ss") : ""
+      open_time ? dayjs(open_time).format("YYYY-MM-DD") : ""
   },
   {
     label: "创建时间",
@@ -79,8 +79,9 @@ const columns = [
 ];
 
 const contentConfig: ContentConfig = {
-  title: "企业客户",
+  title: "进项发票池",
   columns,
+  notPreview: true,
   apis: {
     httpList
   },

+ 11 - 1
src/views/purchase/inputInvoice/index.vue

@@ -6,6 +6,7 @@ import searchFormConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
 import InvoiceDialog from "./invoice-dialog.vue";
 import { usePermission } from "/@/hooks";
+import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
 
 defineOptions({
   name: "inputInvoice"
@@ -57,7 +58,16 @@ const { permission, contentConfigRef } = usePermission({
           ref="pageContentRef"
           :content-config="contentConfigRef"
           @preview-btn-click="handlePreviewInvoice"
-        />
+        >
+          <template #custom="{ row }">
+            <el-button
+              link
+              type="primary"
+              :icon="useRenderIcon('eye-view')"
+              @click="handlePreviewInvoice(row)"
+            />
+          </template>
+        </PageContent>
       </div>
       <InvoiceDialog ref="invoiceDialogRef" />
     </PagePower>

+ 42 - 73
src/views/purchase/inputInvoice/invoice-dialog.vue

@@ -15,24 +15,23 @@ defineExpose({
 </script>
 
 <template>
-  <el-dialog v-model="visible">
+  <el-dialog v-model="visible" width="1040px" @close="() => (invoiceData = {})">
     <div class="InvoiceTmpDiv">
       <el-row>
-        <!-- {{
-          invoiceData.invoiceType
-        }} -->
-        <el-col :span="12" :offset="6" class="title no-border" />
+        <el-col :span="12" :offset="6" class="title no-border">{{
+          invoiceData.invoiceType_cn
+        }}</el-col>
         <el-col :span="6" class="extra no-border">
           <div>
             <span class="label title-label">发票代码</span>:<span
               class="content"
-              >{{ invoiceData.invNumber }}</span
+              >{{ invoiceData.invoiceCode }}</span
             >
           </div>
           <div>
             <span class="label title-label">发票号码</span>:<span
               class="content"
-              >{{ invoiceData.invCode }}</span
+              >{{ invoiceData.invoiceNumber }}</span
             >
           </div>
           <div>
@@ -64,38 +63,22 @@ defineExpose({
         <el-col :span="15">
           <div flex mb-1>
             <span class="label">名称</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.buyer_name"
-                size="small"
-                placeholder="请输入名称"
-              />
+              {{ invoiceData.buyer_name }}
             </span>
           </div>
           <div flex mb-1>
             <span class="label">纳税人识别号</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.buyer_id"
-                size="small"
-                placeholder="请输入纳税识别号"
-              />
+              {{ invoiceData.buyer_id }}
             </span>
           </div>
           <div flex mb-1>
             <span class="label">地址、电话</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.buyer_address"
-                size="small"
-                placeholder="请输入地址、电话"
-              />
+              {{ invoiceData.buyer_address }}
             </span>
           </div>
           <div flex mb-1>
             <span class="label">开户行及账号</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.buyer_bank"
-                size="small"
-                placeholder="请输入开户行及账号"
-              />
+              {{ invoiceData.buyer_bank }}
             </span>
           </div>
         </el-col>
@@ -137,32 +120,34 @@ defineExpose({
             <div class="tc">税额</div>
           </el-col>
         </el-row>
-        <el-row v-for="(item, index) in invoiceData.item_list" :key="index">
-          <el-col :span="8" class="no-border">
-            <div class="tc">{{ item._name }}</div>
-          </el-col>
-          <el-col :span="3">
-            <div class="tc">{{ item._specification }}</div>
-          </el-col>
-          <el-col :span="1">
-            <div class="tc">{{ item._unit }}</div>
-          </el-col>
-          <el-col :span="2">
-            <div class="tc">{{ item._quantity }}</div>
-          </el-col>
-          <el-col :span="3">
-            <div class="tc">{{ item._unit_price }}</div>
-          </el-col>
-          <el-col :span="3">
-            <div class="tc">{{ item._amount }}</div>
-          </el-col>
-          <el-col :span="1">
-            <div class="tc">{{ item._tax_rate }}</div>
-          </el-col>
-          <el-col :span="3">
-            <div class="tc">{{ item._tax }}</div>
-          </el-col>
-        </el-row>
+        <el-scrollbar max-height="150px">
+          <el-row v-for="(item, index) in invoiceData.item_list" :key="index">
+            <el-col :span="8" class="no-border">
+              <div class="tc">{{ item.name }}</div>
+            </el-col>
+            <el-col :span="3">
+              <div class="tc">{{ item.specification }}</div>
+            </el-col>
+            <el-col :span="1">
+              <div class="tc">{{ item.unit }}</div>
+            </el-col>
+            <el-col :span="2">
+              <div class="tc">{{ item.quantity }}</div>
+            </el-col>
+            <el-col :span="3">
+              <div class="tc">{{ item.unit_price }}</div>
+            </el-col>
+            <el-col :span="3">
+              <div class="tc">{{ item.amount }}</div>
+            </el-col>
+            <el-col :span="1">
+              <div class="tc">{{ item.tax_rate }}</div>
+            </el-col>
+            <el-col :span="3">
+              <div class="tc">{{ item.tax }}</div>
+            </el-col>
+          </el-row>
+        </el-scrollbar>
         <el-row>
           <el-col :span="8" class="no-border">
             <div class="tc">合计</div>
@@ -208,38 +193,22 @@ defineExpose({
         <el-col :span="15">
           <div flex mb-1>
             <span class="label">名称</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.seller_name"
-                size="small"
-                placeholder="请输入名称"
-              />
+              {{ invoiceData.seller_name }}
             </span>
           </div>
           <div flex mb-1>
             <span class="label">纳税人识别号</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.seller_id"
-                size="small"
-                placeholder="请输入纳税识别号"
-              />
+              {{ invoiceData.seller_id }}
             </span>
           </div>
           <div flex mb-1>
             <span class="label">地址、电话</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.seller_address"
-                size="small"
-                placeholder="请输入地址、电话"
-              />
+              {{ invoiceData.seller_address }}
             </span>
           </div>
           <div flex mb-1>
             <span class="label">开户行及账号</span>:<span class="content">
-              <el-input
-                v-model="invoiceData.seller_bank"
-                size="small"
-                placeholder="请输入开户行及账号"
-              />
+              {{ invoiceData.seller_bank }}
             </span>
           </div>
         </el-col>

+ 64 - 9
src/views/purchase/orderRecord/components/basic-purchase.vue

@@ -1,6 +1,7 @@
 <script setup lang="ts">
 import { ElMessage } from "element-plus";
 import { computed } from "vue";
+import { goodTypes } from "/@/utils/details/reconciliation";
 import { send_status_list } from "/@/utils/status";
 
 const emit = defineEmits([
@@ -43,32 +44,86 @@ function handleAddClick() {
   </div>
 
   <el-table :data="purchaseOrderList" size="small">
-    <el-table-column label="采购单编号" prop="sequenceNo" width="180" />
-    <el-table-column label="采购单信息" show-overflow-tooltip>
-      <el-table-column label="货款" prop="totalPrice" show-overflow-tooltip />
+    <el-table-column label="采购单编号" prop="sequenceNo" width="150" />
+    <el-table-column label="采购单信息">
+      <el-table-column
+        label="供货商编号"
+        prop="supplierNo"
+        width="160"
+        show-overflow-tooltip
+      />
       <el-table-column
         label="供货商"
         prop="supplierName"
+        width="160"
         show-overflow-tooltip
       />
-      <el-table-column label="联系人" show-overflow-tooltip />
-      <el-table-column label="采购员" prop="ownerName" show-overflow-tooltip />
-      <el-table-column label="发货状态" prop="sendStatus" show-overflow-tooltip>
+      <el-table-column
+        label="发货状态"
+        prop="sendStatus"
+        width="90"
+        show-overflow-tooltip
+      >
         <template #default="{ row }">
           <el-tag>{{
             send_status_list.find(s => s.value === row.sendStatus)?.label
           }}</el-tag>
         </template>
       </el-table-column>
-      <el-table-column label="开票编号" show-overflow-tooltip />
+      <el-table-column label="业务公司编号" prop="companyNo" width="150" />
       <el-table-column
-        label="开票公司"
+        label="业务公司"
         prop="companyName"
+        width="150"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="已付金额"
+        prop="apay_fee"
+        width="80"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="待付金额"
+        prop="wpay_fee"
+        width="80"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="采购员"
+        prop="ownerName"
+        width="80"
+        show-overflow-tooltip
+      />
+    </el-table-column>
+    <el-table-column label="商品信息">
+      <el-table-column
+        label="商品名称"
+        prop="goodName"
+        width="140"
+        show-overflow-tooltip
+      />
+      <el-table-column
+        label="商品类型"
+        prop="goodType"
+        width="90"
+        show-overflow-tooltip
+      >
+        <template #="{ row }">
+          <el-tag>
+            {{ goodTypes.find(t => t.value === row.goodType)?.label }}
+          </el-tag>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="商品数量"
+        prop="goodNum"
+        width="90"
         show-overflow-tooltip
       />
     </el-table-column>
 
-    <el-table-column label="操作" v-if="hiddenAction">
+    <el-table-column label="操作" v-if="hiddenAction" fixed="right">
       <template #default="{ row }">
         <el-button link type="primary" @click="handleDelete(row)"
           >删除</el-button

+ 28 - 10
src/views/purchase/orderRecord/components/create-statement/add-order-modal.vue

@@ -98,7 +98,7 @@ defineExpose({
         <div flex mb-2 w-400px gap-2>
           <el-select
             placeholder="发货状态"
-            v-model="formData.sendStatus"
+            v-model="formData.sendstatus"
             cleable
           >
             <el-option
@@ -132,18 +132,18 @@ defineExpose({
       @selection-change="handleSelection"
     >
       <el-table-column type="selection" width="55" reserve-selection />
-      <el-table-column label="采购单编号" prop="sequenceNo" />
+      <el-table-column label="采购单编号" prop="sequenceNo" width="150" />
       <el-table-column label="采购单信息">
         <el-table-column
-          label="供货商"
-          prop="supplierName"
+          label="供货商编号"
+          prop="supplierNo"
           width="160"
           show-overflow-tooltip
         />
         <el-table-column
-          label="采购员"
-          prop="ownerName"
-          width="80"
+          label="供货商"
+          prop="supplierName"
+          width="160"
           show-overflow-tooltip
         />
         <el-table-column
@@ -158,11 +158,29 @@ defineExpose({
             }}</el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="开票编号" width="90" />
+        <el-table-column label="业务公司编号" prop="companyNo" width="150" />
         <el-table-column
-          label="开票公司"
+          label="业务公司"
           prop="companyName"
-          width="140"
+          width="150"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="已付金额"
+          prop="apay_fee"
+          width="80"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="待付金额"
+          prop="wpay_fee"
+          width="80"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="采购员"
+          prop="ownerName"
+          width="80"
           show-overflow-tooltip
         />
       </el-table-column>

+ 53 - 6
src/views/purchase/orderRecord/config/content.config.ts

@@ -5,6 +5,22 @@ import { h } from "vue";
 import dayjs from "dayjs";
 import { ElTag } from "element-plus";
 import { statusOptions } from "/@/utils/details/reconciliation";
+import { PAY_STATUS } from "/@/utils/details/purchase";
+
+const open_status = [
+  {
+    value: "1",
+    label: "未回票"
+  },
+  {
+    value: "2",
+    label: "部分回票"
+  },
+  {
+    value: "3",
+    label: "已回票"
+  }
+];
 
 const columns = [
   {
@@ -38,12 +54,6 @@ const columns = [
     minWidth: 180,
     align: "left"
   },
-  {
-    label: "申请人编号",
-    prop: "apply_name",
-    minWidth: 180,
-    align: "left"
-  },
   {
     label: "总额款",
     prop: "total_fee",
@@ -80,6 +90,43 @@ const columns = [
     minWidth: 180,
     align: "left"
   },
+  {
+    label: "申请人",
+    prop: "apply_name",
+    minWidth: 180,
+    align: "left"
+  },
+  {
+    label: "开票状态",
+    prop: "pay_status",
+    width: "120px",
+    cellRenderer: ({ row, props }) =>
+      h(
+        ElTag,
+        {
+          size: props.size
+        },
+        {
+          default: () =>
+            open_status.find(s => row.inv_status === s.value)?.label
+        }
+      )
+  },
+  {
+    label: "付款状态",
+    prop: "pay_status",
+    width: "120px",
+    cellRenderer: ({ row, props }) =>
+      h(
+        ElTag,
+        {
+          size: props.size
+        },
+        {
+          default: () => PAY_STATUS.find(s => row.pay_status === s.value)?.label
+        }
+      )
+  },
   {
     label: "状态",
     prop: "status",

+ 3 - 4
src/views/purchase/orderRecord/detail.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { computed, ref, watchEffect } from "vue";
-import { useRoute, useRouter } from "vue-router";
+import { useRoute } from "vue-router";
 import { httpInfo } from "/@/api/purchase/orderRecord";
 import InitiateAudit from "./components/approval-process/Initiate-audit.vue";
 import BusinessReview from "./components/approval-process/business-review.vue";
@@ -11,7 +11,6 @@ import { httpStatus } from "/@/api/purchase/orderRecord";
 import { useAsync, usePermission } from "/@/hooks";
 
 const { query } = useRoute();
-const { push } = useRouter();
 const payNo = computed(() => query.id as string);
 const isCreate = computed(() => !payNo.value);
 
@@ -22,7 +21,7 @@ const collapses = ref(["1", "2", "3", "4"]);
 const status = computed(() => Number(statementDetail.value.status));
 
 const { run: statementStatusRun } = useAsync({
-  success: () => push("/purchase/orderRecord")
+  success: () => window.location.reload()
 });
 const { data: statementDetail, run: statementDetailRun } = useAsync<
   Record<string, string>
@@ -71,7 +70,7 @@ watchEffect(() => payNo.value && requesetStatementDetail());
               <InitiateAudit @change-status="requesetChangeStatus" />
             </ElCollapseItem>
 
-            <ElCollapseItem name="3" v-if="status === 1" title="业务审核">
+            <ElCollapseItem name="3" v-if="status === 1" title="采购审核">
               <BusinessReview @change-status="requesetChangeStatus" />
             </ElCollapseItem>
 

+ 4 - 4
src/views/purchase/porder/columns.tsx

@@ -4,15 +4,15 @@ import { cg_order_source_options } from "/@/utils/status";
 const good_type = [
   {
     value: "1",
-    label: "正常商品"
+    label: "库存"
   },
   {
     value: "2",
-    label: "赠品"
+    label: "非库存"
   },
   {
     value: "3",
-    label: "样品"
+    label: "咨询"
   }
 ];
 
@@ -52,7 +52,7 @@ export function useColumns() {
     },
     {
       label: "业务公司名称",
-      prop: "companyNo",
+      prop: "companyName",
       width: "120px"
     },
     {

+ 54 - 8
src/views/purchase/porder/index.vue

@@ -8,7 +8,7 @@ import { TableProBar } from "/@/components/ReTable";
 import { type PaginationProps } from "@pureadmin/table";
 import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
 import { useNav } from "/@/layout/hooks/nav";
-// import { statusList } from "/@/utils/status";
+import { cg_order_source_options } from "/@/utils/status";
 import PreviewDialog from "./preview-dialog.vue";
 import { useUserStoreHook } from "/@/store/modules/user";
 import { INPUT_MAX_LENGTH } from "/@/utils/global";
@@ -25,12 +25,31 @@ const selectList = ref([
   { value: "goodNo", label: "商品单号" },
   { value: "goodName", label: "商品名称" },
   { value: "supplierName", label: "供应商名称" },
-  { value: "supplierNo", label: "供应商编号" }
+  { value: "supplierNo", label: "供应商编号" },
+  { value: "cgder", label: "采购员名称" }
 ]);
+
+const good_type = [
+  {
+    value: "1",
+    label: "库存"
+  },
+  {
+    value: "2",
+    label: "非库存"
+  },
+  {
+    value: "3",
+    label: "咨询"
+  }
+];
+
 const form = reactive({
   input: "",
   select: "sequenceNo",
   status: "", //0 未对账1 对账
+  cgdsource: "",
+  cgdtype: "",
   page: 1,
   size: 15
 });
@@ -140,16 +159,43 @@ onMounted(() => {
             placeholder="采购单状态"
             clearable
           >
-            <!-- <el-option
-              v-for="(si, sii) in statusList"
-              :key="'status' + si.value + sii"
-              :label="si.label"
-              :value="si.value"
-            /> -->
             <el-option value="0" label="未对账" />
             <el-option value="1" label="对账" />
           </el-select>
         </el-form-item>
+
+        <el-form-item prop="cgdsource">
+          <el-select
+            v-model="form.cgdsource"
+            style="width: 100%"
+            placeholder="订单来源"
+            clearable
+          >
+            <el-option
+              v-for="c in cg_order_source_options"
+              :key="c.value"
+              :label="c.label"
+              :value="c.value"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item prop="cgdtype">
+          <el-select
+            v-model="form.cgdtype"
+            style="width: 100%"
+            placeholder="商品类型"
+            clearable
+          >
+            <el-option
+              v-for="c in good_type"
+              :key="c.value"
+              :label="c.label"
+              :value="c.value"
+            />
+          </el-select>
+        </el-form-item>
+
         <el-form-item prop="input">
           <el-input
             v-model="form.input"

+ 2 - 2
src/views/purchase/purchPay/detail.vue

@@ -33,7 +33,7 @@ const {
 } = useShowAudit(status, isCreate);
 
 const { run: paymentStatusRun } = useAsync({
-  success: () => push("/purchase/purchPay")
+  success: () => window.location.reload()
 });
 
 //请求更改付款订单状态
@@ -97,7 +97,7 @@ onMounted(() => initalData());
             <InitiateAudit @change-status="requestStatusPayment" />
           </ElCollapseItem>
 
-          <ElCollapseItem name="2" title="业务审核" v-if="showBusinessAudit">
+          <ElCollapseItem name="2" title="采购审核" v-if="showBusinessAudit">
             <BusinessAudit @change-status="requestStatusPayment" />
           </ElCollapseItem>
 

+ 3 - 1
src/views/purchase/ticketReturn/components/create-ticket-dialog/create-ticket-dialog.vue

@@ -78,6 +78,7 @@ function handleClose() {
 function handleScanKeydown(evt: KeyboardEvent) {
   const { keyCode } = evt;
 
+  console.log(keyCode);
   if (keyCode !== 13) return;
 
   //校验扫描枪值是否含有中文逗号
@@ -86,7 +87,7 @@ function handleScanKeydown(evt: KeyboardEvent) {
     return (scanInputValue.value = "");
   }
 
-  const [_1, invoiceType, ...chunks] = scanInputValue.value.split(",");
+  const [_, invoiceType, ...chunks] = scanInputValue.value.split(",");
   const [invCode, invNumber, subtotal_amount, open_time, checkNumber] = chunks;
 
   const year = open_time.slice(0, 4);
@@ -170,6 +171,7 @@ defineExpose({
       <el-form-item label="扫码枪" v-if="showScanInput">
         <el-input
           type="textarea"
+          placeholder="请在扫码完成后手动回车"
           @keydown="handleScanKeydown"
           v-model="scanInputValue"
           v-bind="INPUT_MAX_LENGTH"

+ 1 - 1
src/views/purchase/ticketReturn/config/configs.ts

@@ -96,7 +96,7 @@ export const ticketFormItems = {
       prop: "invNumber"
     },
     {
-      label: "金额",
+      label: "税前金额",
       prop: "subtotal_amount"
     },
     {

+ 1 - 1
src/views/purchase/ticketReturn/config/content.config.ts

@@ -79,7 +79,7 @@ const columns = [
     prop: "open_time",
     width: 180,
     formatter: ({ open_time }) =>
-      open_time ? dayjs(open_time).format("YYYY-MM-DD HH:mm:ss") : ""
+      open_time ? dayjs(open_time).format("YYYY-MM-DD") : ""
   },
   {
     label: "创建时间",

+ 2 - 3
src/views/purchase/ticketReturn/detail.vue

@@ -1,13 +1,12 @@
 <script setup lang="ts">
 import { computed, onMounted, ref } from "vue";
-import { useRoute, useRouter } from "vue-router";
+import { useRoute } from "vue-router";
 import { useAsync } from "/@/hooks";
 import { httpStatus, httpInfo } from "/@/api/purchase/ticketReturn";
 import { approvalProcess } from "./components/approval-process";
 import TicketDetail from "./components/ticket-detail/index.vue";
 
 const { query } = useRoute();
-const { push } = useRouter();
 const collapses = ref(["0", "1"]);
 const hpNo = computed(() => query.id);
 
@@ -33,7 +32,7 @@ const requesetInvoiceDetail = () => {
 };
 
 const { run: invoiceStatusRun } = useAsync({
-  success: () => push("/purchase/ticketReturn")
+  success: () => window.location.reload()
 });
 
 //请求更改回票状态