Przeglądaj źródła

fix:销售模块bug

snow 2 lat temu
rodzic
commit
6bae21cbb3
25 zmienionych plików z 166 dodań i 187 usunięć
  1. 1 1
      src/api/InvoiceSales/invoicePool/index.ts
  2. 1 1
      src/api/InvoiceSales/returnTicket/index.ts
  3. 9 2
      src/hooks/permission/use-permission.ts
  4. 2 3
      src/views/InvoiceSales/invoiceApply/columns.tsx
  5. 20 11
      src/views/InvoiceSales/invoiceApply/components/addEditForm.vue
  6. 11 4
      src/views/InvoiceSales/invoiceApply/components/approval-process/src/upload-invoice.vue
  7. 1 2
      src/views/InvoiceSales/invoiceApply/components/columns.tsx
  8. 28 6
      src/views/InvoiceSales/invoiceApply/components/edit-order.vue
  9. 0 22
      src/views/InvoiceSales/invoiceApply/components/order-dialog.vue
  10. 8 2
      src/views/InvoiceSales/invoiceApply/detail.vue
  11. 1 1
      src/views/InvoiceSales/refund/components/create-refund/index.vue
  12. 3 2
      src/views/InvoiceSales/refund/config/content.config.ts
  13. 10 16
      src/views/InvoiceSales/refund/index.vue
  14. 5 0
      src/views/InvoiceSales/returnTicket/components/approval-process/index.ts
  15. 17 0
      src/views/InvoiceSales/returnTicket/components/approval-process/padding.vue
  16. 1 1
      src/views/InvoiceSales/returnTicket/components/create-refund/index.vue
  17. 0 45
      src/views/InvoiceSales/returnTicket/config/content.config.ts
  18. 2 38
      src/views/InvoiceSales/returnTicket/detail.vue
  19. 8 8
      src/views/InvoiceSales/returnTicket/index.vue
  20. 3 2
      src/views/parameter/clients/index.vue
  21. 3 2
      src/views/parameter/finance/index.vue
  22. 23 12
      src/views/parameter/invoiceheader/index.vue
  23. 3 2
      src/views/parameter/setProcess/index.vue
  24. 3 2
      src/views/parameter/supplierPay/index.vue
  25. 3 2
      src/views/parameter/tagManage/index.vue

+ 1 - 1
src/api/InvoiceSales/invoicePool/index.ts

@@ -18,7 +18,7 @@ export const httpList = (data: object): ResponseType => {
   return http.request("post", `${yewuApi}orderinvlist`, {
     data: {
       ...data,
-      status: "4"
+      status: "3"
     }
   });
 };

+ 1 - 1
src/api/InvoiceSales/returnTicket/index.ts

@@ -28,7 +28,7 @@ export const httpDetail = (data: object): ResponseType => {
 
 //退票状态
 export const httpStatus = (data: object): ResponseType => {
-  return http.request("post", `${yewuApi}returninvinfo`, {
+  return http.request("post", `${yewuApi}invreturnstatus`, {
     data
   });
 };

+ 9 - 2
src/hooks/permission/use-permission.ts

@@ -1,26 +1,33 @@
 import { computed, onMounted, ref, unref } from "vue";
+import { ContentConfig } from "/@/components/PageContent";
 import { useUserStoreHook } from "/@/store/modules/user";
 
 type Params = {
   pageName: string;
   callback: (permissions: Array<string>) => void;
+  contentConfig: ContentConfig;
 };
 
-export function usePermission({ pageName, callback }: Params) {
+export function usePermission({ pageName, callback, contentConfig }: Params) {
   const permissions = ref<Array<string>>([]);
+  const contentConfigRef = computed(() => contentConfig);
 
   const permission = computed(() => {
     return {
-      list: permissions.value.some(i => i === "001")
+      list: permissions.value.some(i => i === "001"),
+      create: permissions.value.some(i => i === "002")
     };
   });
 
   onMounted(() => {
     permissions.value = useUserStoreHook().getMenuActions(pageName);
+
+    console.log(permissions.value);
     callback(unref(permissions));
   });
 
   return {
+    contentConfigRef,
     permissions,
     permission
   };

+ 2 - 3
src/views/InvoiceSales/invoiceApply/columns.tsx

@@ -88,9 +88,8 @@ export function useColumns() {
     {
       label: "创建时间",
       width: 145,
-      prop: "createTime",
-      formatter: ({ createTime }) =>
-        dayjs(createTime).format("YYYY-MM-DD HH:mm:ss")
+      prop: "addtime",
+      formatter: ({ addtime }) => dayjs(addtime).format("YYYY-MM-DD HH:mm:ss")
     },
     {
       label: "操作",

+ 20 - 11
src/views/InvoiceSales/invoiceApply/components/addEditForm.vue

@@ -23,7 +23,7 @@ const { push } = useRouter();
 const modelRef = ref<InstanceType<typeof OrderDialog>>(null);
 const editOrderRef = ref<InstanceType<typeof EditOrder>>(null);
 const formRef = ref<InstanceType<typeof ElForm>>(null);
-const mapSequenceNoToInvfee = ref<Record<string, string>>({});
+const mapSequenceNoToInvfee = ref<Record<string, any>>({});
 const responseHandle = useResponseHandle();
 const loading = ref(false);
 const orderList = ref([]);
@@ -105,8 +105,11 @@ function handleShowEditModal(index, row: any) {
   });
 }
 
-function handleEdit({ row, inv_fee }) {
-  mapSequenceNoToInvfee.value[row.sequenceNo] = inv_fee;
+function handleEdit({ row, inv_fee, num }) {
+  mapSequenceNoToInvfee.value[row.sequenceNo] = {
+    inv_fee,
+    num
+  };
 }
 
 const handleDelete = (index: number) => {
@@ -121,11 +124,14 @@ function handleSave() {
 
     const { code, message } = await httpAdd({
       ...ruleForm.value,
-      orderArr: Object.keys(mapSequenceNoToInvfee.value).map(sequenceNo => ({
-        sequenceNo,
-        inv_fee: mapSequenceNoToInvfee.value[sequenceNo],
-        num: "2"
-      }))
+      orderArr: Object.keys(mapSequenceNoToInvfee.value).map(sequenceNo => {
+        const { inv_fee, num } = mapSequenceNoToInvfee.value[sequenceNo];
+        return {
+          sequenceNo,
+          inv_fee,
+          num
+        };
+      })
     });
 
     responseHandle({
@@ -150,8 +156,11 @@ async function companyNo_change() {
 function handleAddOrder(list) {
   orderList.value = list;
 
-  list.forEach(({ sequenceNo, winv_fee }) => {
-    mapSequenceNoToInvfee.value[sequenceNo] = winv_fee;
+  list.forEach(({ sequenceNo, winv_fee, goodNum }) => {
+    mapSequenceNoToInvfee.value[sequenceNo] = {
+      inv_fee: winv_fee,
+      num: goodNum
+    };
   });
 }
 </script>
@@ -269,7 +278,7 @@ function handleAddOrder(list) {
 
             <el-table-column label="开票金额" width="110">
               <template #="{ row }">{{
-                mapSequenceNoToInvfee[row.sequenceNo]
+                mapSequenceNoToInvfee[row.sequenceNo].inv_fee
               }}</template>
             </el-table-column>
 

+ 11 - 4
src/views/InvoiceSales/invoiceApply/components/approval-process/src/upload-invoice.vue

@@ -9,6 +9,8 @@ const rules = reactive({ ...upload_invoice_rules });
 
 const disabled = computed(() => formData.input_type === "1");
 
+const noPass = computed(() => formData.status === "4");
+
 const barCodeInput = ref("");
 
 const formData = reactive({
@@ -26,7 +28,12 @@ const formData = reactive({
 
 function handleSaveStatus() {
   const { subtotal_fee } = formData;
-  emit("changeStatus", { ...formData, subtotal_fee: String(subtotal_fee) });
+  emit(
+    "changeStatus",
+    formData.status === "4"
+      ? { status: "4", remark: formData.remark }
+      : { ...formData, subtotal_fee: String(subtotal_fee) }
+  );
 }
 </script>
 
@@ -48,7 +55,7 @@ function handleSaveStatus() {
             <el-option label="不通过" value="4" />
           </el-select>
         </el-form-item>
-        <el-form-item label="开票类型" prop="open_type">
+        <el-form-item label="开票类型" prop="open_type" v-if="!noPass">
           <el-select
             v-model="formData.open_type"
             style="width: 100%"
@@ -74,7 +81,7 @@ function handleSaveStatus() {
           /> </el-form-item
       ></el-col>
     </el-row>
-    <el-row v-show="formData.open_type !== '1'">
+    <el-row v-show="formData.open_type !== '1'" v-if="!noPass">
       <el-col :span="8">
         <el-form-item label="输入类型" prop="input_type">
           <el-select
@@ -103,7 +110,7 @@ function handleSaveStatus() {
         />
       </el-col>
     </el-row>
-    <el-row v-show="formData.open_type !== '1'">
+    <el-row v-show="formData.open_type !== '1'" v-if="!noPass">
       <el-col :span="8">
         <el-form-item label="发票类型" prop="inv_type">
           <el-select

+ 1 - 2
src/views/InvoiceSales/invoiceApply/components/columns.tsx

@@ -141,8 +141,7 @@ export function useColumns() {
       minWidth: 145,
       prop: "createTime",
       showOverflowTooltip: true,
-      formatter: ({ createTime }) =>
-        dayjs(createTime).format("YYYY-MM-DD HH:mm:ss")
+      formatter: ({ addtime }) => dayjs(addtime).format("YYYY-MM-DD HH:mm:ss")
     }
   ]);
 

+ 28 - 6
src/views/InvoiceSales/invoiceApply/components/edit-order.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { ref, unref } from "vue";
+import { computed, ref, unref, watchEffect } from "vue";
 import BasicDescriptions from "/@/components/BasicDescriptions";
 import { order_detail_columns } from "./columns";
 
@@ -7,21 +7,33 @@ const visible = ref(false);
 const data = ref<Record<string, string>>({});
 const emit = defineEmits(["save-btn-click"]);
 
-const inv_fee = ref("");
+const total = ref(0);
+const inv_fee = ref(0);
 
 function handleSave() {
   emit("save-btn-click", {
     row: unref(data),
-    inv_fee: inv_fee.value
+    inv_fee: unref(inv_fee),
+    num: unref(total)
   });
 
   visible.value = false;
 }
 
+const totalNum = computed(() => {
+  const { winv_fee, goodPrice } = data.value as any;
+  return winv_fee / goodPrice;
+});
+
+watchEffect(() => {
+  total.value = totalNum.value;
+});
+
 defineExpose({
   onDisplay({ row: _data }) {
     visible.value = true;
     data.value = _data;
+    inv_fee.value = data.value.winv_fee as any;
   }
 });
 </script>
@@ -34,10 +46,20 @@ defineExpose({
       :columns="order_detail_columns"
     >
       <template #custom>
-        <el-descriptions-item label="开票金额" />
-
         <el-descriptions-item label="数量">
-          <el-input-number />
+          <el-input-number
+            size="small"
+            :min="1"
+            :max="totalNum"
+            v-model="total"
+        /></el-descriptions-item>
+
+        <el-descriptions-item label="开票金额">
+          <el-input
+            placeholder="请输入开票金额"
+            size="small"
+            v-model="inv_fee"
+          />
         </el-descriptions-item>
       </template>
     </BasicDescriptions>

+ 0 - 22
src/views/InvoiceSales/invoiceApply/components/order-dialog.vue

@@ -144,28 +144,6 @@ defineExpose({
             format="YYYY-MM-DD"
             value-forma="YYYY-MM-DD"
           />
-          <!-- <el-date-picker
-            v-model="ruleForm.start"
-            :disabled-date="startDisabledDate"
-            type="date"
-            @change="aa"
-            format="YYYY-MM-DD"
-            value-forma="YYYY-MM-DD"
-            style="width: 100%"
-            placeholder="申请开始时间"
-          />
-        </el-col>
-        <el-col :span="5">
-          <el-date-picker
-            v-model="ruleForm.end"
-            :disabled-date="endDisabledDate"
-            type="date"
-            @change="aa"
-            format="YYYY-MM-DD"
-            value-forma="YYYY-MM-DD"
-            style="width: 100%"
-            placeholder="申请结束时间"
-          /> -->
         </el-col>
         <el-col :span="5">
           <el-date-picker

+ 8 - 2
src/views/InvoiceSales/invoiceApply/detail.vue

@@ -4,7 +4,7 @@ import addEditForm from "./components/addEditForm.vue";
 import { approvalProcess } from "./components/approval-process";
 import { examRecord } from "/@/components/examRecord";
 import { useResponseHandle } from "/@/hooks";
-import { useRoute } from "vue-router";
+import { useRoute, useRouter } from "vue-router";
 
 import {
   httpSetPost,
@@ -18,6 +18,7 @@ defineOptions({
 });
 
 const { query } = useRoute();
+const { push } = useRouter();
 const activeName = computed(() => (isCreate.value ? "0" : "1"));
 
 const collapseItem = ref(["0", "1", "2", "3"]);
@@ -79,7 +80,12 @@ onMounted(() => !isCreate.value && requesetInvDetail());
           <el-collapse-item title="发票申请详情" name="2">
             <InvoiceDetail :detail="invDetail" />
           </el-collapse-item>
-          <el-collapse-item :title="currentProcess.title" name="3">
+
+          <el-collapse-item
+            name="3"
+            :title="currentProcess.title"
+            v-if="Object.keys(currentProcess).length"
+          >
             <component
               :is="currentProcess.component"
               @change-status="handleChangeStatus"

+ 1 - 1
src/views/InvoiceSales/refund/components/create-refund/index.vue

@@ -59,7 +59,7 @@ function handleCreate() {
     responseHandle({
       code,
       message,
-      handler: () => push("/InvoiceSales/refund")
+      handler: () => push("/InvoiceSales/returnTicket")
     });
   });
 }

+ 3 - 2
src/views/InvoiceSales/refund/config/content.config.ts

@@ -1,5 +1,5 @@
 import { ContentConfig } from "/@/components/PageContent";
-import { httpList } from "/@/api/InvoiceSales/refund";
+import { httpList, httpAdd } from "/@/api/InvoiceSales/refund";
 
 import dayjs from "dayjs";
 import { ElTag, ElImage } from "element-plus";
@@ -77,7 +77,8 @@ const contentConfig: ContentConfig = {
   powers: ["001", "002", "003", "004", "005", "006", "007", "008"],
   columns,
   apis: {
-    httpList
+    httpList,
+    httpAdd
   }
 };
 

+ 10 - 16
src/views/InvoiceSales/refund/index.vue

@@ -4,8 +4,7 @@ import { PageContent } from "/@/components/PageContent";
 import searchFormConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
 import { useRouter } from "vue-router";
-import { onMounted } from "vue";
-import { useUserStoreHook } from "/@/store/modules/user";
+import { usePermission } from "/@/hooks";
 
 defineOptions({
   name: "invoiceheader"
@@ -23,14 +22,16 @@ function toDetail(returnCode) {
   });
 }
 
-onMounted(
-  () => (contentConfig.powers = useUserStoreHook().getMenuActions("refund"))
-);
+const { permission, contentConfigRef } = usePermission({
+  pageName: "refund",
+  contentConfig,
+  callback: powers => (contentConfig.powers = powers)
+});
 </script>
 
 <template>
   <div class="main role">
-    <PagePower :is-show="contentConfig.powers.some(i => i === '001')">
+    <PagePower :is-show="permission.list">
       <div w-full>
         <PageSearch
           :form-config="searchFormConfig"
@@ -40,17 +41,10 @@ onMounted(
 
         <PageContent
           ref="pageContentRef"
-          :content-config="contentConfig"
+          :content-config="contentConfigRef"
           @preview-btn-click="({ returnCode }) => toDetail(returnCode)"
-        >
-          <template #create>
-            <el-button
-              type="primary"
-              @click="() => push('/InvoiceSales/refundDetail')"
-              >创建</el-button
-            >
-          </template>
-        </PageContent>
+          @create-btn-click="() => push('/InvoiceSales/refundDetail')"
+        />
       </div>
     </PagePower>
   </div>

+ 5 - 0
src/views/InvoiceSales/returnTicket/components/approval-process/index.ts

@@ -1,6 +1,11 @@
 import ApprovalPending from "./approval-pending.vue";
+import Pending from "./padding.vue";
 
 export const approval_process = {
+  "0": {
+    title: "待审核",
+    component: Pending
+  },
   "0": {
     title: "待审核",
     component: ApprovalPending

+ 17 - 0
src/views/InvoiceSales/returnTicket/components/approval-process/padding.vue

@@ -0,0 +1,17 @@
+<script setup lang="ts">
+const emit = defineEmits(["changeStatus"]);
+
+const handlePaymentReceipt = () => {
+  emit("changeStatus", {
+    status: "1"
+  });
+};
+</script>
+
+<template>
+  <div w-full flex justify-end>
+    <el-button type="primary" @click="handlePaymentReceipt"
+      >发起审核流程</el-button
+    >
+  </div>
+</template>

+ 1 - 1
src/views/InvoiceSales/returnTicket/components/create-refund/index.vue

@@ -17,7 +17,7 @@ const { push } = useRouter();
 const loading = ref(false);
 
 const formData = reactive({
-  invNo: "",
+  invNo: "INV2208311508183780",
   return_reason: "",
   remark: ""
 });

+ 0 - 45
src/views/InvoiceSales/returnTicket/config/content.config.ts

@@ -65,51 +65,6 @@ const contentConfig: ContentConfig = {
   title: "退票申请管理",
   powers: ["001", "002", "003", "004", "005", "006", "007", "008"],
   columns,
-  mockData: [
-    {
-      buyer_title: "泰康人寿保险有限责任公司大连分公司",
-      buyer_code: "91210200736420120U",
-      buyer_addr: "辽宁省大连市中山区五五路4A号上方港景A座32层",
-      buyer_mobile: "0411-82800287",
-      buyer_bank: "中国建设银行大连人民路支行",
-      buyer_bankNo: "21201500250053000712",
-      seller_title: "北京万宇恒通国际科贸有限公司",
-      seller_code: "91110113MA004JNJ28",
-      seller_addr: "北京市顺义区信中街12号院8号楼-1至4层101内三层309室",
-      seller_mobile: "010-69464815",
-      seller_bank: "中国农业银行股份有限公司北京空港支行",
-      seller_bankNo: "11120901040013561",
-      voider: " ",
-      payee: " ",
-      drawer: " ",
-      reviewer: " ",
-      ownerPlace: " ",
-      inv_value: "650.00",
-      inv_out: "GS2203161855277894",
-      inv_in: "KH2206091605154719",
-      inv_type: 1,
-      open_type: 2,
-      is_ticket: 0,
-      email: "",
-      winv_fee: "650.00",
-      ainv_fee: "0.00",
-      post_fee: "26.00",
-      post_company: "顺丰快递",
-      post_code: "SF12321321312312",
-      id: 1,
-      returnCode: "RIN2207271638256857",
-      invNo: "INV2207271542474795",
-      return_reason: "开多票",
-      return_type: 1,
-      remark: "退票",
-      status: "2",
-      red_inv: "hc1213213321",
-      apply_id: 44,
-      apply_name: "吴广广",
-      addtime: "2022-07-27 16:38:25",
-      updatetime: "2022-07-27 16:47:31"
-    }
-  ],
   apis: {
     httpList,
     httpAdd

+ 2 - 38
src/views/InvoiceSales/returnTicket/detail.vue

@@ -15,43 +15,7 @@ const returnCode = computed(() => query.id);
 
 const isCreate = computed(() => !returnCode.value);
 
-//TODO:delete
-const refundDetail = ref<Record<string, string>>({
-  id: "1",
-  returnCode: "RIN2207271638256857",
-  invNo: "INV2207271542474795",
-  return_reason: "开多票",
-  return_type: "1",
-  remark: "退票",
-  status: "0",
-  red_inv: "hc1213213321",
-  apply_id: "44",
-  apply_name: "吴广广",
-  addtime: "2022-07-27 16:38:25",
-  updatetime: "2022-07-27 16:47:31",
-  inv_out: "GS2203161855277894",
-  inv_value: "650.00",
-  inv_apply_id: "44",
-  inv_apply_name: "吴广广",
-  inv_type: "1",
-  open_type: "2",
-  is_ticket: "0",
-  email: "",
-  post_code: "SF12321321312312",
-  post_company: "顺丰快递",
-  buyer_title: "泰康人寿保险有限责任公司大连分公司",
-  buyer_code: "91210200736420120U",
-  buyer_addr: "辽宁省大连市中山区五五路4A号上方港景A座32层",
-  buyer_mobile: "0411-82800287",
-  buyer_bank: "中国建设银行大连人民路支行",
-  buyer_bankNo: "21201500250053000712",
-  seller_title: "北京万宇恒通国际科贸有限公司",
-  seller_addr: "北京市顺义区信中街12号院8号楼-1至4层101内三层309室",
-  seller_code: "91110113MA004JNJ28",
-  seller_mobile: "010-69464815",
-  seller_bank: "中国农业银行股份有限公司北京空港支行",
-  seller_bankNo: "11120901040013561"
-});
+const refundDetail = ref<Record<string, string>>({});
 
 const responseHandle = useResponseHandle();
 
@@ -84,7 +48,7 @@ async function requesetRetrunTicketStatus(otherParmas) {
   responseHandle({
     code,
     message,
-    handler: () => push("/InvoiceSales/refund")
+    handler: () => push("/InvoiceSales/returnTicket")
   });
 }
 

+ 8 - 8
src/views/InvoiceSales/returnTicket/index.vue

@@ -6,9 +6,8 @@ import searchFormConfig from "./config/search.config";
 import modalConfig from "./config/modal.config";
 import contentConfig from "./config/content.config";
 import { useRouter } from "vue-router";
-import { onMounted } from "vue";
-import { useUserStoreHook } from "/@/store/modules/user";
 import PagePower from "/@/components/PagePower/PagePower.vue";
+import { usePermission } from "/@/hooks";
 
 defineOptions({
   name: "invoiceheader"
@@ -30,15 +29,16 @@ function toDetail(returnCode) {
   });
 }
 
-onMounted(
-  () =>
-    (contentConfig.powers = useUserStoreHook().getMenuActions("returnTicket"))
-);
+const { permission, contentConfigRef } = usePermission({
+  pageName: "returnTicket",
+  contentConfig,
+  callback: powers => (contentConfig.powers = powers)
+});
 </script>
 
 <template>
   <div class="main role">
-    <PagePower :is-show="contentConfig.powers.some(i => i === '001')">
+    <PagePower :is-show="permission.list">
       <div w-full>
         <PageSearch
           :form-config="searchFormConfig"
@@ -48,7 +48,7 @@ onMounted(
 
         <PageContent
           ref="pageContentRef"
-          :content-config="contentConfig"
+          :content-config="contentConfigRef"
           @preview-btn-click="({ returnCode }) => toDetail(returnCode)"
           @create-btn-click="() => push('/InvoiceSales/returnTicketDetail')"
         />

+ 3 - 2
src/views/parameter/clients/index.vue

@@ -22,8 +22,9 @@ const {
   defaultInfo
 } = usePageModal({ pageContentRef });
 
-const { permission } = usePermission({
+const { permission, contentConfigRef } = usePermission({
   pageName: "clients",
+  contentConfig,
   callback: powers => (contentConfig.powers = powers)
 });
 </script>
@@ -39,7 +40,7 @@ const { permission } = usePermission({
         />
         <PageContent
           ref="pageContentRef"
-          :content-config="contentConfig"
+          :content-config="contentConfigRef"
           @create-btn-click="handleCreateData"
           @update-btn-click="handleUpdateData"
           @preview-btn-click="handlePreviewData"

+ 3 - 2
src/views/parameter/finance/index.vue

@@ -25,8 +25,9 @@ const {
   pageContentRef
 });
 
-const { permission } = usePermission({
+const { permission, contentConfigRef } = usePermission({
   pageName: "finance",
+  contentConfig,
   callback: powers => (contentConfig.powers = powers)
 });
 </script>
@@ -42,7 +43,7 @@ const { permission } = usePermission({
         />
         <PageContent
           ref="pageContentRef"
-          :content-config="contentConfig"
+          :content-config="contentConfigRef"
           @create-btn-click="handleCreateData"
           @update-btn-click="handleUpdateData"
           @preview-btn-click="handlePreviewData"

+ 23 - 12
src/views/parameter/invoiceheader/index.vue

@@ -5,6 +5,7 @@ import { PageContent } from "/@/components/PageContent";
 import searchFormConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
 import modalConfig from "./config/modal.config";
+import { usePermission } from "/@/hooks";
 
 defineOptions({
   name: "invoiceheader"
@@ -20,22 +21,32 @@ const {
   handleConfrim,
   defaultInfo
 } = usePageModal({ pageContentRef });
+
+const { permission, contentConfigRef } = usePermission({
+  pageName: "invoiceheader",
+  contentConfig,
+  callback: powers => (contentConfig.powers = powers)
+});
 </script>
 
 <template>
   <div class="main role">
-    <PageSearch
-      :form-config="searchFormConfig"
-      @search-btn-click="handleSearchClick"
-      @reset-btn-click="handleResetClick"
-    />
-    <PageContent
-      ref="pageContentRef"
-      :content-config="contentConfig"
-      @create-btn-click="handleCreateData"
-      @update-btn-click="handleUpdateData"
-      @preview-btn-click="handlePreviewData"
-    />
+    <PagePower :is-show="permission.list">
+      <div w-full>
+        <PageSearch
+          :form-config="searchFormConfig"
+          @search-btn-click="handleSearchClick"
+          @reset-btn-click="handleResetClick"
+        />
+        <PageContent
+          ref="pageContentRef"
+          :content-config="contentConfigRef"
+          @create-btn-click="handleCreateData"
+          @update-btn-click="handleUpdateData"
+          @preview-btn-click="handlePreviewData"
+        />
+      </div>
+    </PagePower>
     <PageModal
       ref="pageModalRef"
       :modal-config="modalConfig"

+ 3 - 2
src/views/parameter/setProcess/index.vue

@@ -22,8 +22,9 @@ const {
   defaultInfo
 } = usePageModal({ pageContentRef });
 
-const { permission } = usePermission({
+const { permission, contentConfigRef } = usePermission({
   pageName: "setProcess",
+  contentConfig,
   callback: powers => (contentConfig.powers = powers)
 });
 </script>
@@ -39,7 +40,7 @@ const { permission } = usePermission({
         />
         <PageContent
           ref="pageContentRef"
-          :content-config="contentConfig"
+          :content-config="contentConfigRef"
           @create-btn-click="handleCreateData"
           @update-btn-click="handleUpdateData"
           @preview-btn-click="handlePreviewData"

+ 3 - 2
src/views/parameter/supplierPay/index.vue

@@ -12,8 +12,9 @@ defineOptions({
 
 const { pageContentRef, handleResetClick, handleSearchClick } = usePageSearch();
 
-const { permission } = usePermission({
+const { permission, contentConfigRef } = usePermission({
   pageName: "supplierPay",
+  contentConfig,
   callback: powers => (contentConfig.powers = powers)
 });
 </script>
@@ -27,7 +28,7 @@ const { permission } = usePermission({
           @search-btn-click="handleSearchClick"
           @reset-btn-click="handleResetClick"
         />
-        <PageContent ref="pageContentRef" :content-config="contentConfig" />
+        <PageContent ref="pageContentRef" :content-config="contentConfigRef" />
       </div>
     </PagePower>
   </div>

+ 3 - 2
src/views/parameter/tagManage/index.vue

@@ -23,8 +23,9 @@ const {
   defaultInfo
 } = usePageModal({ pageContentRef });
 
-const { permission } = usePermission({
+const { permission, contentConfigRef } = usePermission({
   pageName: "tagManage",
+  contentConfig,
   callback: powers => (contentConfig.powers = powers)
 });
 </script>
@@ -40,7 +41,7 @@ const { permission } = usePermission({
         />
         <PageContent
           ref="pageContentRef"
-          :content-config="contentConfig"
+          :content-config="contentConfigRef"
           @create-btn-click="handleCreateData"
           @update-btn-click="handleUpdateData"
           @preview-btn-click="handlePreviewData"