snow 2 роки тому
батько
коміт
d8ac5733ad
39 змінених файлів з 663 додано та 674 видалено
  1. 20 0
      src/api/interest/processPermission/index.ts
  2. 36 0
      src/api/parameter/setActionProcess/index.ts
  3. 17 9
      src/api/parameter/setProcess/index.ts
  4. 1 1
      src/components/BasicDescriptions/src/basic-descriptions.tsx
  5. 1 1
      src/components/BasicDescriptions/src/types.ts
  6. 1 1
      src/components/Invoice/src/index.vue
  7. 5 0
      src/components/PageContent/src/types.ts
  8. 4 2
      src/components/PageSearch/src/hooks/use-page-search.ts
  9. 4 2
      src/utils/details/sale.ts
  10. 0 20
      src/utils/details/tragelog.ts
  11. 12 0
      src/utils/http/index.ts
  12. 26 0
      src/utils/tootip.ts
  13. 9 8
      src/views/InvoiceSales/invoiceApply/components/add-edit-form/order-dialog.vue
  14. 2 2
      src/views/InvoiceSales/invoiceApply/components/invoice-detail/index.vue
  15. 3 3
      src/views/InvoiceSales/invoiceApply/status.ts
  16. 11 37
      src/views/InvoiceSales/refund/components/create-refund/capital-modal.vue
  17. 76 12
      src/views/InvoiceSales/returnTicket/components/approval-process/approval-pending.vue
  18. 14 53
      src/views/InvoiceSales/returnTicket/components/create-return-ticket/capital-modal.vue
  19. 8 11
      src/views/InvoiceSales/returnTicket/components/create-return-ticket/index.vue
  20. 6 0
      src/views/InvoiceSales/returnTicket/detail.vue
  21. 0 11
      src/views/InvoiceSales/returnTicket/index.vue
  22. 2 2
      src/views/interest/dataShare/components/share-modal.vue
  23. 6 6
      src/views/interest/dataShare/config/search.config.ts
  24. 25 22
      src/views/interest/processPermission/components/process-list.vue
  25. 16 27
      src/views/parameter/setActionProcess/components/process-list.vue
  26. 157 0
      src/views/parameter/setActionProcess/components/process-modal.vue
  27. 55 0
      src/views/parameter/setActionProcess/config/configs.ts
  28. 9 118
      src/views/parameter/setActionProcess/config/content.config.ts
  29. 7 4
      src/views/parameter/setActionProcess/config/modal.config.ts
  30. 7 4
      src/views/parameter/setActionProcess/config/search.config.ts
  31. 29 35
      src/views/parameter/setActionProcess/index.vue
  32. 2 13
      src/views/parameter/setProcess/config/content.config.ts
  33. 16 6
      src/views/parameter/setProcess/config/search.config.ts
  34. 18 19
      src/views/parameter/setProcess/index.vue
  35. 2 2
      src/views/purchase/orderRecord/components/basic-purchase.vue
  36. 33 155
      src/views/purchase/orderRecord/components/create-statement/add-order-modal.vue
  37. 13 44
      src/views/purchase/purchPay/component/create-payment/add-order-modal.vue
  38. 10 37
      src/views/purchase/ticketReturn/components/create-ticket/payment-table.vue
  39. 0 7
      src/views/purchase/ticketReturn/index.vue

+ 20 - 0
src/api/interest/processPermission/index.ts

@@ -0,0 +1,20 @@
+import { http } from "/@/utils/http";
+import { loadEnv } from "@build/index";
+const { VITE_PROXY_DOMAIN_REAL, VITE_PROXY_USER_REAL } = loadEnv();
+const userAPi = VITE_PROXY_DOMAIN_REAL;
+const yewuApi = VITE_PROXY_USER_REAL + "/admin/";
+interface ResponseType extends Promise<any> {
+  data?: object;
+  code?: number;
+  message?: string;
+}
+
+//根据角色获取权限
+export const httpActionList = (): ResponseType => {
+  return http.request("post", `${yewuApi}role_process_save`, { data: {} });
+}
+
+
+export const httpAllList = (): ResponseType => {
+  return http.request("post", `${yewuApi}action_process_all`, { data: {} });
+}

+ 36 - 0
src/api/parameter/setActionProcess/index.ts

@@ -0,0 +1,36 @@
+import { http } from "/@/utils/http";
+import { loadEnv } from "@build/index";
+const { VITE_PROXY_DOMAIN_REAL, VITE_PROXY_USER_REAL } = loadEnv();
+const userAPi = VITE_PROXY_DOMAIN_REAL;
+const yewuApi = VITE_PROXY_USER_REAL + "/admin/";
+
+export const httpList = (data: object = {}): any => {
+  return http.request("post", `${yewuApi}action_process_getlist`, { data });
+};
+
+export const httpAdd = (data: object = {}): any => {
+  return http.request("post", `${yewuApi}action_process_add`, { data });
+};
+
+export const httpDetail = (data: object = {}): any => {
+  return http.request("post", `${yewuApi}action_process_read`, { data });
+};
+
+export const httpUpdate = (data: object = {}): any => {
+  return http.request("post", `${yewuApi}action_process_update`, { data });
+};
+
+
+export const httpStatus = (data: object = {}): any => {
+  return http.request("post", `${yewuApi}action_process_update`, { data });
+};
+
+
+export const httpDelete = (data: Record<string, any>): any => {
+  return http.request("post", `${yewuApi}action_process_update`, {
+    data: {
+      ...data,
+      is_del: '1'
+    }
+  });
+};

+ 17 - 9
src/api/parameter/setProcess/index.ts

@@ -4,23 +4,31 @@ const { VITE_PROXY_DOMAIN_REAL, VITE_PROXY_USER_REAL } = loadEnv();
 const userAPi = VITE_PROXY_DOMAIN_REAL;
 const yewuApi = VITE_PROXY_USER_REAL + "/admin/";
 
-export const httpList = (data: object): any => {
-  return http.request("post", `${yewuApi}involist`, { data });
-};
-
-export const httpDelete = (data: object): any => {
-  return http.request("post", `${yewuApi}invoicedel`, { data });
+export const httpList = (data: object = {}): any => {
+  return http.request("post", `${yewuApi}process_get_list`, { data });
 };
 
 export const httpAdd = (data: Record<string, any>): any => {
-  return http.request("post", `${yewuApi}invoiceadd`, { data });
+  return http.request("post", `${yewuApi}process_add`, { data });
 };
 
 export const httpUpdate = (data: Record<string, any>): any => {
-  return http.request("post", `${yewuApi}invoicesave`, { data });
+  return http.request("post", `${yewuApi}process_update`, { data });
 };
 
 export const httpStatus = (data: Record<string, any>): any => {
-  return http.request("post", `${yewuApi}invoicesave`, { data });
+  return http.request("post", `${yewuApi}process_update`, {
+    data
+  });
+};
+
+
+export const httpDelete = (data: Record<string, any>): any => {
+  return http.request("post", `${yewuApi}process_update`, {
+    data: {
+      ...data,
+      is_del: '1'
+    }
+  });
 };
 

+ 1 - 1
src/components/BasicDescriptions/src/basic-descriptions.tsx

@@ -18,7 +18,7 @@ const BasicDescriptions = defineComponent({
               span={col.span}
               minWidth={labelWidth}
             >
-              {col.render ? col.render(data[col.field]) : data[col.field]}
+              {col.render ? col.render(data[col.field], data) : data[col.field]}
             </ElDescriptionsItem>
           ))}
 

+ 1 - 1
src/components/BasicDescriptions/src/types.ts

@@ -22,7 +22,7 @@ export type DescriptionColumn = {
   label: string;
   span?: number;
   width?: string;
-  render?: (data: any) => VNode;
+  render?: (data: any, context: any) => VNode;
 };
 
 export type DescriptionColumns = Array<DescriptionColumn>;

+ 1 - 1
src/components/Invoice/src/index.vue

@@ -13,7 +13,7 @@ const prop = ref<Partial<InvoiceDetail>>({});
 const props = defineProps<{
   type: InvoiceType;
   invNo?: string;
-  invNumber: string;
+  invNumber: string | null;
 }>();
 
 const {

+ 5 - 0
src/components/PageContent/src/types.ts

@@ -31,6 +31,8 @@ export interface ContentConfig {
   delTooltip?: string;
   inv?: boolean;
   isRequesetArray?: boolean;
+  openStatus?: string;
+  stopStatus?: string;
   showPreview?: (row: Record<string, string>) => boolean;
   showDelete?: (row: Record<string, string>) => boolean;
   showExpand?: (row: Record<string, string>) => boolean;
@@ -81,6 +83,9 @@ export const actionProps = {
   },
   isRequesetArray: {
     type: Boolean
+  },
+  statusConfig: {
+    type: Object
   }
 };
 

+ 4 - 2
src/components/PageSearch/src/hooks/use-page-search.ts

@@ -21,8 +21,10 @@ export function usePageSearch(searchCallback?: Fn, resetCallback?: Fn) {
     pageContentRef.value?.getPageData(mergeParams);
   }
 
-  function handleResetClick() {
-    pageContentRef.value?.getPageData();
+  function handleResetClick(params: any) {
+    const { result } = searchCallback ? searchCallback(params) : { result: {} }
+
+    pageContentRef.value?.getPageData(result);
     resetCallback && resetCallback()
   }
 

+ 4 - 2
src/utils/details/sale.ts

@@ -2,8 +2,9 @@
  * 销售单详情
  */
 
-import { ElTag } from "element-plus";
+import { ElButton, ElPopover, ElTag } from "element-plus";
 import { h } from "vue";
+import { createTooltip } from "../tootip";
 import { SEND_TYPE } from "./purchase";
 import { DescriptionColumns } from "/@/components/BasicDescriptions";
 
@@ -312,7 +313,8 @@ export const ORDER_COLUMNS: DescriptionColumns = [
   },
   {
     field: "companyName",
-    label: "业务公司名称"
+    label: "业务公司",
+    render: (company, { companyNo }) => createTooltip(company, '业务公司编号:' + companyNo, 260),
   },
   {
     field: "customerName",

+ 0 - 20
src/utils/details/tragelog.ts

@@ -30,10 +30,6 @@ export const CAPITAL_COLUMNS: DescriptionColumns = [
     label: "编号",
     width: "160px"
   },
-  // {
-  //   field: "total_fee",
-  //   label: "总金额"
-  // },
   {
     field: "status",
     label: "状态",
@@ -48,27 +44,11 @@ export const CAPITAL_COLUMNS: DescriptionColumns = [
     field: "addtime",
     label: "认领时间"
   },
-  // {
-  //   field: "trade_out",
-  //   label: "付款公司"
-  // },
-  // {
-  //   field: "trade_bank",
-  //   label: "银行"
-  // },
-  // {
-  //   field: "balance",
-  //   label: "资金余额"
-  // },
   {
     field: "used_fee",
     label: "资金使用金额",
     width: "110px"
   },
-  // {
-  //   field: "trade_time",
-  //   label: "交易时间"
-  // },
   {
     field: "remark",
     label: "备注"

+ 12 - 0
src/utils/http/index.ts

@@ -10,6 +10,9 @@ import qs from "qs";
 import NProgress from "../progress";
 import { loadEnv } from "@build/index";
 import { getToken } from "/@/utils/auth";
+import { useMultiTagsStoreHook } from "/@/store/modules/multiTags";
+import { storageSession } from "@pureadmin/utils";
+import { router } from "/@/router";
 
 // 相关配置请参考:www.axios-js.com/zh-cn/docs/#axios-request-config-1
 const defaultConfig: AxiosRequestConfig = {
@@ -75,6 +78,15 @@ class PureHttp {
     instance.interceptors.response.use(
       (response: PureHttpResponse) => {
         const $config = response.config;
+
+        // const { code } = response.data;
+
+        // if (Number(code) >= 100 && Number(code) <= 140) {
+        //   //token异常
+        //   storageSession.removeItem('info')
+        //   router.push('/login')
+        // }
+
         // 关闭进度条动画
         NProgress.done();
         // 优先判断post/get等方法是否传入回掉,否则执行初始化设置等回掉

+ 26 - 0
src/utils/tootip.ts

@@ -0,0 +1,26 @@
+import { h } from "vue";
+import { ElButton, ElPopover } from "element-plus";
+import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
+
+export function createTooltip(left: string, reference: string, width = 200) {
+  return h('div', {
+    style: {
+      display: 'flex',
+      justifyContent: 'space-between'
+    }
+  }, {
+    default: () => [
+      h('span', null, left),
+      h(ElPopover, {
+        placement: 'top',
+        content: reference,
+        width
+      }, {
+        reference: () => h(ElButton, {
+          link: true,
+          icon: useRenderIcon('information-line')
+        })
+      }),
+    ]
+  })
+}

+ 9 - 8
src/views/InvoiceSales/invoiceApply/components/add-edit-form/order-dialog.vue

@@ -120,10 +120,10 @@ defineExpose({
 </script>
 
 <template>
-  <div>
-    <el-dialog v-model="showModel" :close-on-press-escape="false" center append-to-body destroy-on-close relative
-      top="5vh" title="添加销售订单" :width="'1040px'">
-      <PageSearch class="page-search" @reset-btn-click="handleReset" @search-btn-click="handleSearchClick"
+  <el-dialog v-model="showModel" :close-on-press-escape="false" center append-to-body destroy-on-close top="5vh"
+    title="添加销售订单" :width="'1040px'">
+    <div relative>
+      <PageSearch class="search" @reset-btn-click="handleReset" @search-btn-click="handleSearchClick"
         :form-config="searchFormConfig" />
       <div v-loading="loading">
         <PureTable ref="tableRef" border align="left" row-key="id" table-layout="auto" :size="'small'" :data="dataList"
@@ -132,9 +132,10 @@ defineExpose({
           @current-change="handleCurrentChange" />
       </div>
 
-      <el-button absolute bottom-40px right="20px" type="primary" @click="handleConfirm" size="small">保存</el-button>
-    </el-dialog>
-  </div>
+      <el-button absolute bottom-0px right="20px" type="primary" @click="handleConfirm" size="small">保存</el-button>
+    </div>
+
+  </el-dialog>
 </template>
 
 
@@ -144,7 +145,7 @@ defineExpose({
 }
 
 
-:deep(.page-search) {
+.search {
   padding: 0px !important;
 }
 </style>

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

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { ORDER_COLUMNS } from "/@/utils/details/inv-open";
+import { INV_OPEN_COLUMNS } from "/@/utils/details/inv-open";
 import BasicDescriptions from "/@/components/BasicDescriptions";
 
 defineProps<{
@@ -12,7 +12,7 @@ defineProps<{
     ref="defaultRef"
     v-if="detail"
     :data="detail"
-    :columns="ORDER_COLUMNS"
+    :columns="INV_OPEN_COLUMNS"
     :col-number="3"
   />
 </template>

+ 3 - 3
src/views/InvoiceSales/invoiceApply/status.ts

@@ -1,5 +1,5 @@
 const statusList = [
-  { value: "0", label: "待财务开票", type: "primary" },
+  { value: "0", label: "待财务开票", type: "" },
   { value: "1", label: "待财务审核", type: "warning" },
   { value: "2", label: "待填写物流", type: "warning" },
   { value: "3", label: "开票完成", type: "warning" },
@@ -9,9 +9,9 @@ const statusList = [
   { value: "7", label: "金税开票中", type: "warning" }
 ];
 const inv_type_list = [
-  { value: "1", label: "纸质专用发票", type: "primary" },
+  { value: "1", label: "纸质专用发票", type: "" },
   { value: "2", label: "纸质普通发票", type: "success" },
-  { value: "3", label: "电子普通发票", type: "primary" },
+  { value: "3", label: "电子普通发票", type: "" },
   { value: "4", label: "电子专用发票", type: "success" }
 ];
 const menuPrivateList = [

+ 11 - 37
src/views/InvoiceSales/refund/components/create-refund/capital-modal.vue

@@ -68,12 +68,7 @@ defineExpose({
 </script>
 
 <template>
-  <el-dialog
-    v-model="visible"
-    title="资金认领"
-    center
-    @open="() => requestPaymentlist()"
-  >
+  <el-dialog v-model="visible" title="资金认领" center @open="() => requestPaymentlist()">
     <div flex mb-2>
       <div flex flex-1 gap="5" pr="20px">
         <el-input placeholder="资金编号" size="small" v-model="params.tradNo" />
@@ -81,44 +76,23 @@ defineExpose({
       </div>
 
       <div flex width="120px">
-        <el-button size="small" type="primary" @click="() => onSearch()"
-          >搜索</el-button
-        >
+        <el-button size="small" type="primary" @click="() => onSearch()">搜索</el-button>
         <el-button size="small" @click="() => onSearch(true)">重置</el-button>
       </div>
     </div>
 
-    <el-table
-      border
-      ref="tableRef"
-      :data="data"
-      size="small"
-      row-key="id"
-      @selection-change="handleSelectionChange"
-      v-loading="loading"
-    >
+    <el-table border ref="tableRef" :data="data" size="small" row-key="id" @selection-change="handleSelectionChange"
+      v-loading="loading">
       <el-table-column type="selection" width="55" />
-      <el-table-column
-        v-for="{ field, label, width } in columns"
-        :key="field"
-        :prop="field"
-        :label="label"
-        :width="width"
-        show-overflow-tooltip
-      />
+      <el-table-column v-for="{ field, label, width } in columns" :key="field" :prop="field" :label="label"
+        :width="width" show-overflow-tooltip />
     </el-table>
 
-    <el-pagination
-      :total="pagination.total"
-      v-model:current-page="pagination.currentPage"
-      @current-change="requestPaymentlist"
-    />
-
-    <div w-full flex justify-end mt-2>
-      <el-button type="primary" size="small" @click="handleConfirm"
-        >确定</el-button
-      >
-      <el-button size="small" @click="() => (visible = false)">取消</el-button>
+    <div flex justify-between mt-2>
+      <el-pagination :total="pagination.total" v-model:current-page="pagination.currentPage"
+        @current-change="requestPaymentlist" />
+
+      <el-button type="primary" size="small" @click="handleConfirm">确定</el-button>
     </div>
   </el-dialog>
 </template>

+ 76 - 12
src/views/InvoiceSales/returnTicket/components/approval-process/approval-pending.vue

@@ -1,14 +1,26 @@
 <script setup lang="ts">
-import { reactive, ref } from "vue";
+import { reactive, ref, computed } from "vue";
 import { ElForm } from "element-plus";
 
+
+const props = defineProps<{
+  isNormal?: boolean
+}>();
+
 const emit = defineEmits(["changeStatus"]);
 
+const showInvoiceInfo = computed(() => formData.return_type === "2")
+
 const formData = reactive({
   return_type: "",
   return_reason: "",
   remark: "",
-  status: ""
+  status: "",
+  invCode: "",
+  invNum: "",
+  open_date: "",
+  checkCode: "",
+  subtotal_fee: ""
 });
 
 const rules = reactive({
@@ -39,6 +51,41 @@ const rules = reactive({
       trigger: "change",
       message: "请输入备注"
     }
+  ],
+  invCode: [
+    {
+      required: true,
+      trigger: "change",
+      message: "请输入发票编号"
+    }
+  ],
+  invNum: [
+    {
+      required: true,
+      trigger: "change",
+      message: "请输入发票号码"
+    }
+  ],
+  open_date: [
+    {
+      required: true,
+      trigger: "change",
+      message: "请选择开票日期"
+    }
+  ],
+  subtotal_fee: [
+    {
+      required: true,
+      trigger: "change",
+      message: "请输入税前金额"
+    }
+  ],
+  checkCode: [
+    {
+      required: props.isNormal,
+      trigger: "change",
+      message: "请输入校验码"
+    }
   ]
 });
 
@@ -50,28 +97,22 @@ const handlePaymentReceipt = () => {
 </script>
 
 <template>
-  <el-form
-    ref="formRef"
-    label-width="100px"
-    size="small"
-    :model="formData"
-    :rules="rules"
-  >
+  <el-form ref="formRef" label-width="100px" size="small" :model="formData" :rules="rules">
     <el-form-item label="审批状态" prop="status" w-400px>
-      <el-select w-400px v-model="formData.status">
+      <el-select w-400px v-model="formData.status" placeholder="请选择审批状态">
         <el-option label="通过" value="1" />
         <el-option label="不通过" value="3" />
       </el-select>
     </el-form-item>
 
     <el-form-item label="退票方式" prop="return_type">
-      <el-select w-300px v-model="formData.return_type">
+      <el-select w-300px v-model="formData.return_type" placeholder="请选择退票方式">
         <el-option value="1" label="金税" />
         <el-option value="2" label="线下" />
       </el-select>
     </el-form-item>
 
-    <el-form-item label="红冲原因" prop="return_reason">
+    <el-form-item label="红冲原因" prop="return_reason" placeholder="请选择红冲原因">
       <el-select w-300px v-model="formData.return_reason">
         <el-option label="销货退回" value="1" />
         <el-option label="开票有误" value="2" />
@@ -80,6 +121,29 @@ const handlePaymentReceipt = () => {
       </el-select>
     </el-form-item>
 
+    <div w-400px v-if="showInvoiceInfo">
+      <el-form-item label="发票编号" prop="invCode" placeholder="请输入发票编号">
+        <el-input v-model="formData.invCode" />
+      </el-form-item>
+
+      <el-form-item label="发票号码" prop="invNum" placeholder="请输入发票号码">
+        <el-input v-model="formData.invNum" />
+      </el-form-item>
+
+      <el-form-item label="校验码" prop="checkCode" placeholder="请选择输入校验码">
+        <el-input v-model="formData.checkCode" />
+      </el-form-item>
+
+      <el-form-item label="开票日期" prop="open_date" placeholder="请选择开票日期">
+        <el-date-picker w-300px v-model="formData.open_date" value-format="YYYY-MM-DD HH:mm:ss" />
+      </el-form-item>
+
+      <el-form-item label="税前金额" prop="subtotal_fee" placeholder="请输入税前金额">
+        <el-input-number v-model="formData.subtotal_fee" />
+      </el-form-item>
+    </div>
+
+
     <el-form-item label="备注" prop="remark" w-400px>
       <el-input type="textarea" v-model="formData.remark" />
     </el-form-item>

+ 14 - 53
src/views/InvoiceSales/returnTicket/components/create-return-ticket/capital-modal.vue

@@ -84,71 +84,32 @@ defineExpose({
 </script>
 
 <template>
-  <el-dialog
-    v-model="visible"
-    title="发票列表"
-    center
-    width="1040px"
-    @open="() => requestPaymentList()"
-  >
+  <el-dialog v-model="visible" title="发票列表" center width="1040px" @open="() => requestPaymentList()">
     <div flex mb-2>
       <div flex flex-1 gap="5" pr="20px">
-        <el-input
-          placeholder="发票申请编号"
-          size="small"
-          v-model="params.invNo"
-        />
-        <el-input
-          placeholder="业务公司编号"
-          size="small"
-          v-model="params.inv_out"
-        />
-
-        <el-input
-          placeholder="业务公司名称"
-          size="small"
-          v-model="params.inv_company"
-        />
+        <el-input placeholder="发票申请编号" size="small" v-model="params.invNo" />
+        <el-input placeholder="业务公司编号" size="small" v-model="params.inv_out" />
+
+        <el-input placeholder="业务公司名称" size="small" v-model="params.inv_company" />
       </div>
 
       <div flex width="120px">
-        <el-button size="small" type="primary" @click="() => onSearch()"
-          >搜索</el-button
-        >
+        <el-button size="small" type="primary" @click="() => onSearch()">搜索</el-button>
         <el-button size="small" @click="() => onSearch(true)">重置</el-button>
       </div>
     </div>
 
-    <el-table
-      v-loading="loading"
-      border
-      ref="tableRef"
-      :data="paymentList"
-      size="small"
-      row-key="id"
-      @selection-change="handleSelectionChange"
-    >
+    <el-table v-loading="loading" border ref="tableRef" :data="paymentList" size="small" row-key="id"
+      @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" />
-      <el-table-column
-        v-for="(col, index) in inv_columns"
-        :key="index"
-        v-bind="col"
-        show-overflow-tooltip
-      />
+      <el-table-column v-for="(col, index) in inv_columns" :key="index" v-bind="col" show-overflow-tooltip />
     </el-table>
 
-    <el-pagination
-      v-model:current-page="pagination.currentPage"
-      v-model:page-size="pagination.pageSize"
-      :total="pagination.total"
-      @current-change="requestPaymentList"
-    />
-
-    <div w-full flex justify-end mt-2>
-      <el-button type="primary" size="small" @click="handleConfirm"
-        >确定</el-button
-      >
-      <el-button size="small" @click="() => (visible = false)">取消</el-button>
+    <div flex justify-between mt-2>
+      <el-pagination v-model:current-page="pagination.currentPage" v-model:page-size="pagination.pageSize"
+        :total="pagination.total" @current-change="requestPaymentList" />
+
+      <el-button type="primary" size="small" @click="handleConfirm">确定</el-button>
     </div>
   </el-dialog>
 </template>

+ 8 - 11
src/views/InvoiceSales/returnTicket/components/create-return-ticket/index.vue

@@ -24,7 +24,7 @@ const loading = ref(false);
 const formData = reactive({
   invNo: "",
   return_reason: "",
-  remark: ""
+  remark: ""  
 });
 
 const rules = {
@@ -99,19 +99,16 @@ function handleCreate() {
       />
     </el-form-item>
 
-    <Invoice mt-5 v-if="invNumber" :inv-number="invNumber" type="sale" mb-5 />
+    <Invoice mt-5 v-if="invNumber" :inv-number="invNumber" type="sale"/>
 
-    <el-form-item label="红冲原因" prop="return_reason" w-480px>
-      <el-select w-300px v-model="formData.return_reason">
-        <el-option label="销货退回" value="1" />
-        <el-option label="开票有误" value="2" />
-        <el-option label="服务终止" value="3" />
-        <el-option label="销售折让" value="4" />
-      </el-select>
+    <div mt-5 />
+
+    <el-form-item label="退票原因" prop="return_reason" w-480px>
+      <el-input type="textarea" :rows="6" maxlength="2000" max w-300px v-model="formData.return_reason" show-word-limit />
     </el-form-item>
 
-    <el-form-item label="发票备注" prop="remark" w-480px>
-      <el-input v-model="formData.remark" placeholder="请输入发票备注" />
+    <el-form-item label="备注" prop="remark" w-480px>
+      <el-input type="textarea" :rows="6" maxlength="2000" v-model="formData.remark" placeholder="请输入发票备注" show-word-limit />
     </el-form-item>
 
     <div flex w-full justify-end>

+ 6 - 0
src/views/InvoiceSales/returnTicket/detail.vue

@@ -24,6 +24,11 @@ const { data: list, run: listRun } = useAsync<Array<Record<string, string>>>({
   initalData: []
 });
 
+//是否普票
+const isNormal = computed(() => { 
+  const { inv_type } = data.value;
+  return inv_type === "2" || inv_type === '3';
+})
 const requesetReturnTicketList = () => {
   listRun(httpList({ invNo: data.value.invNo }) as any);
 };
@@ -95,6 +100,7 @@ watchEffect(() => {
           >
             <component
               :is="currentProcess.component"
+              :is-normal="isNormal"
               @change-status="requesetRetrunTicketStatus"
             />
           </ElCollapseItem>

+ 0 - 11
src/views/InvoiceSales/returnTicket/index.vue

@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import { PageSearch, usePageSearch } from "/@/components/PageSearch";
-import { PageModal, usePageModal } from "/@/components/PageModal";
 import { PageContent } from "/@/components/PageContent";
 import searchFormConfig from "./config/search.config";
 import modalConfig from "./config/modal.config";
@@ -29,10 +28,6 @@ const { push } = useRouter();
 const { pageContentRef, handleResetClick, handleSearchClick } =
   usePageSearch(search);
 
-const { pageModalRef, handleConfrim } = usePageModal({
-  pageContentRef
-});
-
 function toDetail(returnCode) {
   push({
     path: "/InvoiceSales/returnTicketDetail",
@@ -66,12 +61,6 @@ const { permission, contentConfigRef } = usePermission({
           @create-btn-click="() => push('/InvoiceSales/returnTicketDetail')"
         />
       </div>
-
-      <PageModal
-        ref="pageModalRef"
-        :modalConfig="modalConfig"
-        @confirm-btn-click="handleConfrim"
-      />
     </PagePower>
   </div>
 </template>

+ 2 - 2
src/views/interest/dataShare/components/share-modal.vue

@@ -100,8 +100,8 @@ function updateDataShare() {
   updateDateShareRun(
     httpUpdate(
       {
-        ...formData.value,
-        id: id.value
+        id: id.value,
+        ...formData.value
       }
     )
   )

+ 6 - 6
src/views/interest/dataShare/config/search.config.ts

@@ -25,12 +25,12 @@ const searchFormConfig: FormConfig = {
       placeholder: "数据共享用户组",
       options: shareTypes
     },
-    {
-      field: "status",
-      type: "select",
-      placeholder: "当前状态",
-      options: statusList
-    },
+    // {
+    //   field: "status",
+    //   type: "select",
+    //   placeholder: "当前状态",
+    //   options: statusList
+    // },
     {
       field: "type",
       type: "select",

+ 25 - 22
src/views/interest/processPermission/components/process-list.vue

@@ -1,22 +1,30 @@
 <script setup lang="ts">
-import { ref, unref, watchEffect } from "vue";
+import { ref, unref, watchEffect,onMounted } from "vue";
+import { useAsync } from "/@/hooks"
 import { MOCK_PROCESS_DATA } from "../config/mock";
+import { httpAllList } from "/@/api/interest/processPermission"
 
-defineProps<{
+const props = defineProps<{
   currentRole: Record<string, string>;
 }>();
 
-const emit = defineEmits(["saveBtnClick"]);
+const { data: rule_process_list, run: listRun } = useAsync({
+  initalData: [],
+  isList: true
+})
 
-//所有的流程权限
-const list = ref<any>([...MOCK_PROCESS_DATA]);
+const { data: list, run: allListRun } = useAsync({
+  initalData: [],
+})
 
-//角色拥有的流程权限
-const rule_process_list = ref([]);
+const emit = defineEmits(["saveBtnClick"]);
 
 //刷新流程
 watchEffect(() => {
-  rule_process_list.value = ["89", "90"];
+  const { currentRole } = props;
+  // listRun()
+
+  console.log(list.value)
 });
 
 function handleSave() {
@@ -52,30 +60,25 @@ function isCheckAll(index: number) {
   const has = process.filter(p => rule_process_list.value.includes(p.id));
   return has.length === len;
 }
+
+onMounted(() => allListRun(httpAllList()))
 </script>
 
 <template>
   <ElScrollbar>
     <template v-for="(p, index) in list" :key="p.id">
-      <div w-full v-if="p.child">
+      <div w-full>
         <p>{{ p.process_name }}</p>
+        
         <ElDivider border-style="dashed" m-0 />
 
-        <div flex gap-10>
-          <ElCheckbox
-            label="全选"
-            :model-value="isCheckAll(index)"
-            :indeterminate="isIndeterminate(index)"
-            @change="handleCheckAllChange($event, index)"
-          />
+        <div flex gap-10 v-if="p.child">
+          <ElCheckbox label="全选" :model-value="isCheckAll(index)" :indeterminate="isIndeterminate(index)"
+            @change="handleCheckAllChange($event, index)" />
 
           <ElCheckboxGroup v-model="rule_process_list">
-            <ElCheckbox
-              v-for="(action, index) in p.child"
-              :key="index"
-              :label="action.id"
-              >{{ action.status_name }}</ElCheckbox
-            >
+            <ElCheckbox v-for="(action, index) in p.child" :key="index" :label="action.id">{{ action.status_name }}
+            </ElCheckbox>
           </ElCheckboxGroup>
         </div>
         <ElDivider />

+ 16 - 27
src/views/parameter/setActionProcess/components/process-list.vue

@@ -1,43 +1,32 @@
 <script setup lang="ts">
-import { onMounted, ref } from "vue";
+import { onMounted } from "vue";
+import { useAsync } from "/@/hooks"
+import { httpList } from "/@/api/parameter/setProcess";
 
 defineProps<{
   currentProcess: Record<string, string>;
 }>();
 
-const list = ref<Array<Record<string, string>>>([]);
 const emit = defineEmits(["change-btn-click"]);
 
-//todo:请求拉取流程列表
-function requesetProcessList() {
-  list.value = Array(100)
-    .fill(0)
-    .map((_, index) => ({
-      id: String(index),
-      name: "流程节点" + Number(index)
-    }));
+const { run, data, loading } = useAsync<Array<Record<string, string>>>({
+  initalData: [],
+  isList: true,
+  success: () => emit("change-btn-click", data.value[0])
+});
 
-  emit("change-btn-click", list.value[0]);
-}
-
-function handleChangeProcess(item) {
-  emit("change-btn-click", item);
-}
-
-onMounted(() => requesetProcessList());
+onMounted(() => run(
+ httpList()
+));
 </script>
 
 <template>
-  <el-scrollbar h-full px-5 class="processs-list__content">
+  <el-scrollbar h-full px-5 class="processs-list__content" v-loading="loading">
     <h1 font-bold py-2>流程列表</h1>
-    <p
-      v-for="item in list"
-      class="px-1 hover:bg-#f7f7f7 hover:color-blue cursor-pointer duration-200 rounded"
-      :class="{ 'is-active': currentProcess.id === item.id }"
-      @click="() => handleChangeProcess(item)"
-      :key="item.name"
-    >
-      {{ item.name }}
+    <p v-for="item in data" class="px-1 hover:bg-#f7f7f7 hover:color-blue cursor-pointer duration-200 rounded"
+      :class="{ 'is-active': currentProcess.id === item.id }" @click="() =>  emit('change-btn-click', item)"
+      :key="item.id">
+      {{ item.process_name }}
     </p>
   </el-scrollbar>
 </template>

+ 157 - 0
src/views/parameter/setActionProcess/components/process-modal.vue

@@ -0,0 +1,157 @@
+<script setup lang="ts">
+import { ref, computed, reactive } from "vue";
+import { useAsync } from "/@/hooks";
+import { ElForm } from "element-plus";
+import { actionTypes, operactionTypes, rules } from "./../config/configs";
+import { httpDetail, httpAdd, httpList, httpUpdate } from "/@/api/parameter/setActionProcess";
+const emit = defineEmits(['reload']);
+const props = defineProps<{
+  currentProcess: Record<string, string>;
+}>();
+
+const id = ref("");
+const readonly = ref(false);
+
+const visible = ref(false);
+const formRef = ref<InstanceType<typeof ElForm>>(null)
+const isCreate = computed(() => !id.value);
+
+const formData = ref<Record<string, string>>({
+  action_type: "",
+  operation_type: "",
+  status_name: "",
+  order_process: "",
+  next_action_ids: []
+})
+
+
+const onBeforeAction = () => {
+  visible.value = false;
+  emit('reload')
+}
+
+
+const showNextNode = computed(() => formData.value.action_type === '1' || formData.value.action_type === '2')
+
+
+const { run: listRun, data: list, listLoading } = useAsync<Array<Record<string, string>>>({
+  initalData: [],
+  isList: [],
+})
+
+const { run: detailRun, data: detail, loading: detailLoading } = useAsync<Record<string, string>>({
+  initalData: {},
+  success: () => {
+    const { order_process, status_name, operation_type, action_type, next_action_ids } = detail.value;
+
+    console.log(next_action_ids)
+
+    formData.value = {
+      order_process,
+      status_name,
+      operation_type,
+      action_type,
+      next_action_ids: next_action_ids.filter(val => val)
+    }
+  }
+});
+
+const { run: createRun, loading: createLoading } = useAsync<Record<string, string>>({
+  success: () => onBeforeAction()
+});
+
+const { run: updateRun, loading: updateLoading } = useAsync<Record<string, string>>({
+  success: () => onBeforeAction()
+});
+
+function create() {
+  const { currentProcess } = props;
+  createRun(
+    httpAdd({
+      process_id: currentProcess.id,
+      ...formData.value
+    })
+  )
+}
+
+function update() {
+  const { currentProcess } = props;
+  updateRun(
+    httpUpdate({
+      id: id.value,
+      process_id: currentProcess.id,
+      ...formData.value
+    })
+  )
+}
+
+
+function handleConfirm() {
+  formRef.value.validate(isValid => {
+    if (!isValid) return
+
+    if (isCreate.value) return create();
+
+    update();
+  })
+}
+
+const title = computed(() => {
+  if (readonly.value) return '流程节点详情'
+  return isCreate.value ? '创建流程节点' : '编辑流程节点'
+})
+
+defineExpose({
+  onDisplay(_id?: string, _readonly = false) {
+    console.log(_id);
+    visible.value = true;
+    id.value = _id;
+    readonly.value = _readonly;
+
+    listRun(httpList({ process_id: props.currentProcess.id }))
+
+    if (id.value) return detailRun(httpDetail({ id: id.value }))
+  }
+})
+
+</script>
+
+
+<template>
+  <el-dialog v-model="visible" :title="title" center @close="() => formData = {...initalData}" :rules="rules">
+    <el-form label-width="100px" :model="formData" :disabled="readonly" v-loading="detailLoading || listLoading"
+      ref="formRef">
+      <el-form-item label="节点类型" prop="action_type">
+        <el-select w-full v-model="formData.action_type">
+          <el-option v-for="action in actionTypes" :key="action.value" :value="action.value" :label="action.label" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="操作类型" prop="operation_type">
+        <el-select w-full v-model="formData.operation_type">
+          <el-option v-for="operation in operactionTypes" :key="operation.value" :value="operation.value"
+            :label="operation.label" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="节点名称" prop="status_name">
+        <el-input v-model="formData.status_name" />
+      </el-form-item>
+      <el-form-item label="节点值" prop="order_process">
+        <el-input v-model="formData.order_process" />
+      </el-form-item>
+
+      <el-form-item label="下一节点" v-if="showNextNode" prop="next_action_ids">
+        <el-checkbox-group v-model="formData.next_action_ids">
+          <el-checkbox v-for="item in list" :label="item.id" :key="item.id" :disabled="item.id === id">
+            {{item.status_name}}</el-checkbox>
+        </el-checkbox-group>
+      </el-form-item>
+
+      <el-form-item>
+        <div flex w-full justify-end>
+          <el-button :loading="updateLoading || createLoading" type="primary" @click="() => handleConfirm()">保存
+          </el-button>
+        </div>
+      </el-form-item>
+    </el-form>
+  </el-dialog>
+</template>

+ 55 - 0
src/views/parameter/setActionProcess/config/configs.ts

@@ -0,0 +1,55 @@
+export const actionTypes = [
+  {
+    value: '1',
+    label: '开始节点'
+  },
+  {
+    value: '2',
+    label: '过程节点'
+  },
+  {
+    value: '3',
+    label: '中断节点'
+  },
+  {
+    value: '4',
+    label: '结束节点'
+  }
+]
+
+
+export const operactionTypes = [
+  {
+    value: '1',
+    label: '审批节点'
+  },
+  {
+    value: '2',
+    label: '系统节点'
+  }
+]
+
+
+export const rules = {
+  action_type: {
+    trigger: 'blur',
+    message: '请选择节点类型',
+    required: true
+  }, operation_type: {
+    trigger: 'blur',
+    message: '请选择操作类型',
+    required: true
+  }, status_name: {
+    trigger: 'blur',
+    message: '请输入节点名称',
+    required: true
+  }, order_process: {
+    trigger: 'blur',
+    message: '请输入节点值',
+    required: true
+  }, next_action_ids: {
+    trigger: 'blur',
+    message: '请选择下一节点',
+    required: true
+  }
+}

+ 9 - 118
src/views/parameter/setActionProcess/config/content.config.ts

@@ -2,14 +2,11 @@ import { ContentConfig } from "/@/components/PageContent";
 
 import dayjs from "dayjs";
 import {
-  httpAdd,
-  httpList,
-  httpUpdate,
-  httpDelete,
-  httpStatus
-} from "/@/api/parameter/setProcess";
+  httpList, httpAdd, httpStatus, httpDelete
+} from "/@/api/parameter/setActionProcess";
 import { h } from "vue";
 import { ElTag } from "element-plus";
+import { actionTypes, operactionTypes } from "./configs";
 
 const columns = [
   {
@@ -36,7 +33,7 @@ const columns = [
     prop: "status",
     cellRenderer({ row }) {
       return h(ElTag, null, {
-        default: () => "TODO"
+        default: () => actionTypes.find(type => type.value === row.action_type)?.label
       });
     }
   },
@@ -45,7 +42,7 @@ const columns = [
     prop: "status",
     cellRenderer({ row }) {
       return h(ElTag, null, {
-        default: () => "TODO"
+        default: () => operactionTypes.find(type => type.value === row.operation_type)?.label
       });
     }
   },
@@ -59,7 +56,7 @@ const columns = [
           type: row.status === "0" ? "danger" : "success"
         },
         {
-          default: () => (row.status === "0" ? "禁用" : "启用")
+          default: () => (row.status === "1" ? "启用" : "禁用")
         }
       );
     }
@@ -108,120 +105,14 @@ const columns = [
 const contentConfig: ContentConfig = {
   title: "流程节点设置",
   powers: ["001", "002", "003", "004", "005", "006", "007", "008"],
-  notReuqiredInit: true,
-  mockData: [
-    {
-      id: "116",
-      status_name: "取消订单",
-      order_process: "7",
-      status: "1",
-      action_type: "3",
-      operation_type: "2",
-      next_action_ids: "",
-      creater: "",
-      addtime: "2022-07-26 20:21:17",
-      remark: "",
-      next_actions: []
-    },
-    {
-      id: "115",
-      status_name: "成功转单",
-      order_process: "6",
-      status: "1",
-      action_type: "4",
-      operation_type: "2",
-      next_action_ids: "",
-      creater: "",
-      addtime: "2022-07-26 00:00:00",
-      remark: "",
-      next_actions: []
-    },
-    {
-      id: "114",
-      status_name: "财务驳回",
-      order_process: "5",
-      status: "1",
-      action_type: "4",
-      operation_type: "2",
-      next_action_ids: "",
-      creater: "",
-      addtime: "2022-07-26 00:00:00",
-      remark: "",
-      next_actions: []
-    },
-    {
-      id: "113",
-      status_name: "待财务审核",
-      order_process: "4",
-      status: "1",
-      action_type: "2",
-      operation_type: "1",
-      next_action_ids: "114,115",
-      creater: "",
-      addtime: "2022-07-26 00:00:00",
-      remark: "",
-      next_actions: ["财务驳回", "成功转单"]
-    },
-    {
-      id: "112",
-      status_name: "产品驳回",
-      order_process: "3",
-      status: "1",
-      action_type: "4",
-      operation_type: "2",
-      next_action_ids: "",
-      creater: "",
-      addtime: "2022-07-26 00:00:00",
-      remark: "",
-      next_actions: []
-    },
-    {
-      id: "111",
-      status_name: "待产品审核",
-      order_process: "2",
-      status: "1",
-      action_type: "2",
-      operation_type: "1",
-      next_action_ids: "112,113",
-      creater: "",
-      addtime: "2022-07-26 00:00:00",
-      remark: "",
-      next_actions: ["产品驳回", "待财务审核"]
-    },
-    {
-      id: "110",
-      status_name: "处理中",
-      order_process: "1",
-      status: "1",
-      action_type: "2",
-      operation_type: "2",
-      next_action_ids: "115,111",
-      creater: "",
-      addtime: "2022-07-26 00:00:00",
-      remark: "",
-      next_actions: ["成功转单", "待产品审核"]
-    },
-    {
-      id: "109",
-      status_name: "待系统处理",
-      order_process: "0",
-      status: "1",
-      action_type: "1",
-      operation_type: "2",
-      next_action_ids: "110",
-      creater: "",
-      addtime: "2022-07-26 00:00:00",
-      remark: "",
-      next_actions: ["处理中"]
-    }
-  ],
   columns,
+  notReuqiredInit: true,
   apis: {
     httpAdd,
     httpList,
-    httpUpdate,
+    httpStatus,
+    httpUpdate: true,
     httpDelete,
-    httpStatus
   }
 };
 

+ 7 - 4
src/views/parameter/setActionProcess/config/modal.config.ts

@@ -1,4 +1,5 @@
 import { ModalConfig } from "../../../../components/PageModal/src/types";
+import { actionTypes, operactionTypes } from "./configs";
 
 const modalConfig: ModalConfig = {
   title: "流程",
@@ -6,9 +7,10 @@ const modalConfig: ModalConfig = {
   colLayout: { span: 24 },
   formItems: [
     {
-      field: "process_name",
+      field: "action_type",
       type: "select",
       label: "节点类型",
+      options: actionTypes,
       labelWidth: "120px",
       rules: [
         {
@@ -19,10 +21,11 @@ const modalConfig: ModalConfig = {
       ]
     },
     {
-      field: "process_type",
+      field: "operation_type",
       type: "select",
       labelWidth: "120px",
       label: "操作类型",
+      options: operactionTypes,
       rules: [
         {
           required: true,
@@ -32,7 +35,7 @@ const modalConfig: ModalConfig = {
       ]
     },
     {
-      field: "process_type",
+      field: "status_name",
       type: "input",
       labelWidth: "120px",
       label: "节点名称",
@@ -45,7 +48,7 @@ const modalConfig: ModalConfig = {
       ]
     },
     {
-      field: "process_type",
+      field: "order_process",
       type: "input",
       labelWidth: "120px",
       label: "节点值",

+ 7 - 4
src/views/parameter/setActionProcess/config/search.config.ts

@@ -1,15 +1,18 @@
+import { actionTypes, operactionTypes } from "./configs";
 import { FormConfig } from "/@/components/PageSearch";
 const searchFormConfig: FormConfig = {
   formItems: [
     {
-      field: "status",
+      field: "action_type",
       type: "select",
-      placeholder: "节点类型"
+      placeholder: "节点类型",
+      options: actionTypes
     },
     {
-      field: "status",
+      field: "operation_type",
       type: "select",
-      placeholder: "操作类型"
+      placeholder: "操作类型",
+      options: operactionTypes
     }
   ]
 };

+ 29 - 35
src/views/parameter/setActionProcess/index.vue

@@ -1,6 +1,5 @@
 <script setup lang="ts">
 import { PageSearch, usePageSearch } from "/@/components/PageSearch";
-import { PageModal, usePageModal } from "/@/components/PageModal";
 import { PageContent } from "/@/components/PageContent";
 import searchFormConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
@@ -9,33 +8,35 @@ import { onMounted, ref } from "vue";
 import { useUserStoreHook } from "/@/store/modules/user";
 import PagePower from "/@/components/PagePower/PagePower.vue";
 import ProcessList from "./components/process-list.vue";
+import ProcessModal from "./components/process-modal.vue";
 
 defineOptions({
   name: "invoiceheader"
 });
 
 const currentProcess = ref<Record<string, any>>({});
+const processModalRef = ref<InstanceType<typeof ProcessModal>>(null);
 
-const { pageContentRef, handleResetClick, handleSearchClick } = usePageSearch();
-
-const {
-  pageModalRef,
-  handleUpdateData,
-  handleCreateData,
-  handlePreviewData,
-  handleConfrim,
-  defaultInfo
-} = usePageModal({ pageContentRef });
+const { pageContentRef, handleResetClick, handleSearchClick } = usePageSearch(() => {
+  return {
+    result: {
+      process_id: currentProcess.value.id
+    },
+    deleteProps: []
+  }
+});
 
 function handleProcessChange(process) {
+  const { id } = process;
   currentProcess.value = process;
   //重新请求
+  pageContentRef.value.getPageData({ process_id: id });
 }
 
 onMounted(
   () =>
-    (contentConfig.powers =
-      useUserStoreHook().getMenuActions("setActionProcess"))
+  (contentConfig.powers =
+    useUserStoreHook().getMenuActions("setActionProcess"))
 );
 </script>
 
@@ -44,34 +45,23 @@ onMounted(
     <PagePower :is-show="contentConfig.powers.some(i => i === '001')">
       <div w-full flex>
         <div class="min-w-240px h-[calc(100vh-90px)] process-list__content">
-          <ProcessList
-            :current-process="currentProcess"
-            @change-btn-click="handleProcessChange"
-          />
+          <ProcessList :current-process="currentProcess" @change-btn-click="handleProcessChange" />
         </div>
 
         <div flex-1>
-          <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"
-          />
+          <PageSearch class="search" :form-config="searchFormConfig" @search-btn-click="handleSearchClick"
+            @reset-btn-click="handleResetClick" />
+
+          <PageContent ref="pageContentRef" :content-config="contentConfig"
+            @create-btn-click="() => processModalRef.onDisplay()"
+            @preview-btn-click="({id}) => processModalRef.onDisplay(id,true)"
+            @update-btn-click="({id}) => processModalRef.onDisplay(id)" />
         </div>
       </div>
+
+      <ProcessModal :current-process="currentProcess" ref="processModalRef"
+        @reload="() => pageContentRef.getPageData({ process_id: currentProcess.id })" />
     </PagePower>
-    <PageModal
-      ref="pageModalRef"
-      :modal-config="modalConfig"
-      :default-info="defaultInfo"
-      @confirm-btn-click="handleConfrim"
-    />
   </div>
 </template>
 
@@ -83,4 +73,8 @@ onMounted(
 .processs-list__content {
   border-right: 1px solid #dfe6ec;
 }
+
+.search {
+  padding-left: 20px !important;
+}
 </style>

+ 2 - 13
src/views/parameter/setProcess/config/content.config.ts

@@ -71,24 +71,13 @@ const columns = [
 const contentConfig: ContentConfig = {
   title: "流程设置",
   powers: ["001", "002", "003", "004", "005", "006", "007", "008"],
-  notReuqiredInit: true,
-  mockData: [
-    {
-      addtime: "2022-08-09 13:30:18",
-      creater: "",
-      id: "23",
-      process_name: "采购单退货流程",
-      process_type: "CGTHD",
-      status: "1"
-    }
-  ],
   columns,
   apis: {
     httpAdd,
     httpList,
     httpUpdate,
-    httpDelete,
-    httpStatus
+    httpStatus,
+    httpDelete
   }
 };
 

+ 16 - 6
src/views/parameter/setProcess/config/search.config.ts

@@ -1,11 +1,6 @@
 import { FormConfig } from "/@/components/PageSearch";
 const searchFormConfig: FormConfig = {
   formItems: [
-    {
-      field: "status",
-      type: "select",
-      placeholder: "状态"
-    },
     {
       field: "addtime",
       type: "date_picker",
@@ -24,7 +19,22 @@ const searchFormConfig: FormConfig = {
       field: "creater",
       type: "input",
       placeholder: "创建人"
-    }
+    },
+    {
+      field: "status",
+      type: "select",
+      placeholder: "状态",
+      options: [
+        {
+          value: '1',
+          label: '启用'
+        },
+        {
+          value: '0',
+          label: '禁用'
+        }
+      ]
+    },
   ]
 };
 

+ 18 - 19
src/views/parameter/setProcess/index.vue

@@ -11,7 +11,17 @@ defineOptions({
   name: "invoiceheader"
 });
 
-const { pageContentRef, handleResetClick, handleSearchClick } = usePageSearch();
+const { pageContentRef, handleResetClick, handleSearchClick } = usePageSearch(({ addtime }) => {
+  const [addtime_start, addtime_end] = addtime
+
+  return {
+    result: {
+      addtime_start: addtime_start ? addtime_start : '',
+      addtime_end: addtime_end ? addtime_end : ''
+    },
+    deleteProps: ['addtime']
+  }
+});
 
 const {
   pageModalRef,
@@ -33,26 +43,15 @@ const { permission, contentConfigRef } = usePermission({
   <div class="main role">
     <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"
-        />
+        <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">
+        </PageContent>
       </div>
     </PagePower>
-    <PageModal
-      ref="pageModalRef"
-      :modal-config="modalConfig"
-      :default-info="defaultInfo"
-      @confirm-btn-click="handleConfrim"
-    />
+    <PageModal ref="pageModalRef" :modal-config="modalConfig" :default-info="defaultInfo"
+      @confirm-btn-click="handleConfrim" />
   </div>
 </template>
 

+ 2 - 2
src/views/purchase/orderRecord/components/basic-purchase.vue

@@ -13,8 +13,8 @@ const emit = defineEmits([
 const props = defineProps<{
   purchaseOrderList?: any;
   readonly?: boolean;
-  supplierNo?: number;
-  companyNo?: number;
+  supplierNo?: string;
+  companyNo?: string;
 }>();
 
 const cgd_type = [

+ 33 - 155
src/views/purchase/orderRecord/components/create-statement/add-order-modal.vue

@@ -8,8 +8,8 @@ import { INPUT_MAX_LENGTH } from "/@/utils/global";
 
 const emit = defineEmits(["saveBtnClick"]);
 const props = defineProps<{
-  supplierNo?: number;
-  companyNo?: number;
+  supplierNo?: string;
+  companyNo?: string;
 }>();
 
 const visible = ref(false);
@@ -102,95 +102,37 @@ function handleSave() {
   emit("saveBtnClick", unref(selection));
 }
 
-//显示添加采购单的dialog 选中传入的节点
-// function onDisplay(items) {
-//   visible.value = true;
-//   selection.value = items;
-//   nextTick(() =>
-//     items.forEach(item => tableRef.value.toggleRowSelection(item, true))
-//   );
-// }
-
 defineExpose({
   onDisplay: () => (visible.value = true)
 });
 </script>
 
 <template>
-  <el-dialog
-    v-model="visible"
-    title="选择采购商品"
-    center
-    destroy-on-close
-    width="1040px"
-    @open="handleSearch"
-  >
+  <el-dialog v-model="visible" title="选择采购商品" center destroy-on-close width="1040px" @open="handleSearch">
     <div flex justify-between>
       <div flex mb-2 gap-2 w-full>
         <div flex mb-2 gap-2>
-          <el-input
-            v-model="formData.code"
-            placeholder="关键字"
-            class="input-with-select"
-            :maxlength="INPUT_MAX_LENGTH"
-            style="width: 340px"
-            clearable
-          >
+          <el-input v-model="formData.code" placeholder="关键字" class="input-with-select" :maxlength="INPUT_MAX_LENGTH"
+            style="width: 340px" clearable>
             <template #prepend>
-              <el-select
-                v-model="formData.codeType"
-                placeholder="关键字类型"
-                style="width: 130px"
-              >
-                <el-option
-                  v-for="(si, sii) in selectList"
-                  :key="'si' + si.value + sii"
-                  :label="si.label"
-                  :value="si.value"
-                />
+              <el-select v-model="formData.codeType" placeholder="关键字类型" style="width: 130px">
+                <el-option v-for="(si, sii) in selectList" :key="'si' + si.value + sii" :label="si.label"
+                  :value="si.value" />
               </el-select>
             </template>
           </el-input>
 
-          <el-select
-            placeholder="发货状态"
-            v-model="formData.sendstatus"
-            clearable
-            w-200px
-          >
-            <el-option
-              v-for="status in send_status_list"
-              :key="status.value"
-              :label="status.label"
-              :value="status.value"
-            />
+          <el-select placeholder="发货状态" v-model="formData.sendstatus" clearable w-200px>
+            <el-option v-for="status in send_status_list" :key="status.value" :label="status.label"
+              :value="status.value" />
           </el-select>
 
-          <el-select
-            v-model="formData.cgdsource"
-            placeholder="订单来源"
-            clearable
-          >
-            <el-option
-              v-for="c in cg_order_source_options"
-              :key="c.value"
-              :label="c.label"
-              :value="c.value"
-            />
+          <el-select v-model="formData.cgdsource" placeholder="订单来源" clearable>
+            <el-option v-for="c in cg_order_source_options" :key="c.value" :label="c.label" :value="c.value" />
           </el-select>
 
-          <el-select
-            v-model="formData.cgdtype"
-            w-200px
-            placeholder="商品来源"
-            clearable
-          >
-            <el-option
-              v-for="c in cgd_type"
-              :key="c.value"
-              :label="c.label"
-              :value="c.value"
-            />
+          <el-select v-model="formData.cgdtype" w-200px placeholder="商品来源" clearable>
+            <el-option v-for="c in cgd_type" :key="c.value" :label="c.label" :value="c.value" />
           </el-select>
 
           <el-button @click="handleSearch" type="primary">搜索</el-button>
@@ -199,116 +141,52 @@ defineExpose({
       </div>
     </div>
 
-    <el-table
-      ref="tableRef"
-      size="small"
-      :data="tableData"
-      v-loading="loading"
-      @selection-change="handleSelection"
-    >
+    <el-table ref="tableRef" size="small" :data="tableData" v-loading="loading" @selection-change="handleSelection">
       <el-table-column type="selection" width="55" />
       <el-table-column label="采购单编号" prop="sequenceNo" width="150" />
       <el-table-column label="采购单信息">
-        <el-table-column
-          label="供货商"
-          prop="supplierName"
-          width="160"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          label="发货状态"
-          prop="sendStatus"
-          width="90"
-          show-overflow-tooltip
-        >
+        <el-table-column label="供货商" prop="supplierName" width="160" 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
+            send_status_list.find(s => s.value === row.sendStatus)?.label
             }}</el-tag>
           </template>
         </el-table-column>
-        <el-table-column
-          label="业务公司"
-          prop="companyName"
-          width="180"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          label="订单来源"
-          prop="cgdSource"
-          width="100"
-          show-overflow-tooltip
-        >
+        <el-table-column label="业务公司" prop="companyName" width="180" show-overflow-tooltip />
+        <el-table-column label="订单来源" prop="cgdSource" width="100" show-overflow-tooltip>
           <template #default="{ row }">
             <el-tag>
               {{
-                cg_order_source_options.find(t => t.value === row.cgdSource)
-                  ?.label
+              cg_order_source_options.find(t => t.value === row.cgdSource)
+              ?.label
               }}
             </el-tag>
           </template>
         </el-table-column>
-        <el-table-column
-          label="总货款"
-          prop="totalPrice"
-          width="80"
-          show-overflow-tooltip
-        />
+        <el-table-column label="总货款" prop="totalPrice" width="80" show-overflow-tooltip />
       </el-table-column>
       <el-table-column label="商品信息">
-        <el-table-column
-          label="商品编号"
-          prop="goodNo"
-          width="140"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          label="商品名称"
-          prop="goodName"
-          width="180"
-          show-overflow-tooltip
-        />
-        <el-table-column
-          label="商品来源"
-          prop="cgdType"
-          width="90"
-          show-overflow-tooltip
-        >
+        <el-table-column label="商品编号" prop="goodNo" width="140" show-overflow-tooltip />
+        <el-table-column label="商品名称" prop="goodName" width="180" show-overflow-tooltip />
+        <el-table-column label="商品来源" prop="cgdType" width="90" show-overflow-tooltip>
           <template #="{ row }">
             <el-tag>
               {{ cgd_type.find(t => t.value === String(row.cgdType))?.label }}
             </el-tag>
           </template>
         </el-table-column>
-        <el-table-column
-          label="商品数量"
-          prop="goodNum"
-          width="90"
-          show-overflow-tooltip
-        />
+        <el-table-column label="商品数量" prop="goodNum" width="90" show-overflow-tooltip />
       </el-table-column>
-      <el-table-column
-        label="采购员"
-        prop="ownerName"
-        width="75"
-        show-overflow-tooltip
-      />
+      <el-table-column label="采购员" prop="ownerName" width="75" show-overflow-tooltip />
     </el-table>
 
     <!-- 分页器  -->
-    <div flex justify-between mt-2>
-      <ElPagination
-        v-model:current-page="pagination.currentPage"
-        v-model:page-size="pagination.pageSize"
-        :total="pagination.total"
-        :page-sizes="[10, 15, 20]"
-        @current-change="handleSearch"
-      />
+    <div flex mt-2 justify-between>
+      <ElPagination v-model:current-page="pagination.currentPage" v-model:page-size="pagination.pageSize"
+        :total="pagination.total" :page-sizes="[10, 15, 20]" @current-change="handleSearch" />
 
-      <div>
-        <el-button type="primary" @click="handleSave">保存</el-button>
-        <el-button @click="visible = false">取消</el-button>
-      </div>
+      <el-button type="primary" @click="handleSave">保存</el-button>
     </div>
   </el-dialog>
 </template>

+ 13 - 44
src/views/purchase/purchPay/component/create-payment/add-order-modal.vue

@@ -83,20 +83,10 @@ defineExpose({
 </script>
 
 <template>
-  <el-dialog
-    v-model="visible"
-    title="订单对账"
-    center
-    width="1040px"
-    @open="() => requestPaymentList()"
-  >
+  <el-dialog v-model="visible" title="订单对账" center width="1040px" @open="() => requestPaymentList()">
     <div flex justify-between mb-2>
       <div flex gap-2>
-        <el-input
-          clearable
-          v-model="formData.currentValue"
-          placeholder="对账编号"
-        >
+        <el-input clearable v-model="formData.currentValue" placeholder="对账编号">
           <template #prepend>
             <el-select v-model="currentKey" style="width: 130px">
               <el-option label="对账编号" value="payNo" />
@@ -105,12 +95,7 @@ defineExpose({
             </el-select>
           </template>
         </el-input>
-        <el-select
-          clearable
-          w-80
-          v-model="formData.pay_status"
-          placeholder="付款状态"
-        >
+        <el-select clearable w-80 v-model="formData.pay_status" placeholder="付款状态">
           <el-option value="1" label="未付款" />
           <el-option value="2" label="部分付款" />
         </el-select>
@@ -121,26 +106,13 @@ defineExpose({
         <el-button @click="() => handleSearch(true)">重置</el-button>
       </div>
     </div>
-    <el-table
-      border
-      ref="tableRef"
-      :data="paymentList"
-      size="small"
-      row-key="id"
-      @selection-change="handleSelectionChange"
-      mb-2
-      v-loading="loading"
-    >
+    <el-table border ref="tableRef" :data="paymentList" size="small" row-key="id"
+      @selection-change="handleSelectionChange" mb-2 v-loading="loading">
       <el-table-column type="selection" width="55" />
-      <el-table-column
-        v-for="(col, index) in columns"
-        :key="index"
-        v-bind="col"
-        show-overflow-tooltip
-      >
+      <el-table-column v-for="(col, index) in columns" :key="index" v-bind="col" show-overflow-tooltip>
         <template #="{ row }">
           <el-tag v-if="col.prop === 'pay_status'">{{
-            pay_status.find(p => p.value === row.pay_status)?.label
+          pay_status.find(p => p.value === row.pay_status)?.label
           }}</el-tag>
 
           <span v-else>{{ row[col.prop] }}</span>
@@ -148,16 +120,13 @@ defineExpose({
       </el-table-column>
     </el-table>
 
-    <el-pagination
-      v-model:current-page="pagination.page"
-      :page-size="pagination.size"
-      :total="pagination.total"
-      @current-change="requestPaymentList"
-    />
+    <div flex>
+      <el-pagination v-model:current-page="pagination.page" :page-size="pagination.size" :total="pagination.total"
+        @current-change="requestPaymentList" />
 
-    <div w-full flex justify-end mt-2>
-      <el-button type="primary" @click="handleConfirm">确定</el-button>
-      <el-button @click="() => (visible = false)">取消</el-button>
+      <div w-full flex justify-end mt-2>
+        <el-button type="primary" @click="handleConfirm">保存</el-button>
+      </div>
     </div>
   </el-dialog>
 </template>

+ 10 - 37
src/views/purchase/ticketReturn/components/create-ticket/payment-table.vue

@@ -80,20 +80,10 @@ defineExpose({
 </script>
 
 <template>
-  <el-dialog
-    v-model="visible"
-    title="订单对账"
-    center
-    width="1040px"
-    @open="() => requestPurchaseList()"
-  >
+  <el-dialog v-model="visible" title="订单对账" center width="1040px" @open="() => requestPurchaseList()">
     <div flex justify-between mb-2>
       <div flex gap-2>
-        <el-input
-          clearable
-          v-model="formData.currentValue"
-          placeholder="对账编号"
-        >
+        <el-input clearable v-model="formData.currentValue" placeholder="对账编号">
           <template #prepend>
             <el-select v-model="formData.currentKey" style="width: 130px">
               <el-option label="对账编号" value="payNo" />
@@ -109,35 +99,18 @@ defineExpose({
         <el-button type="primary" @click="() => handleSearch()">搜索</el-button>
       </div>
     </div>
-    <el-table
-      border
-      v-loading="loading"
-      ref="tableRef"
-      row-key="id"
-      size="small"
-      @select="handleSelectionChange"
-      :data="purchaseList"
-    >
+    <el-table border v-loading="loading" ref="tableRef" row-key="id" size="small" @select="handleSelectionChange"
+      :data="purchaseList">
       <el-table-column type="selection" />
-      <el-table-column
-        v-for="(col, index) in purchase_columns"
-        :key="index"
-        v-bind="col"
-        show-overflow-tooltip
-      />
+      <el-table-column v-for="(col, index) in purchase_columns" :key="index" v-bind="col" show-overflow-tooltip />
     </el-table>
 
-    <div>
-      <el-pagination
-        v-model:current-page="pagination.currentPage"
-        v-model:page-size="pagination.pageSize"
-        :total="pagination.total"
-        @current-change="() => requestPurchaseList()"
-      />
-    </div>
+    <div flex justify-between mt-2>
+      <div>
+        <el-pagination v-model:current-page="pagination.currentPage" v-model:page-size="pagination.pageSize"
+          :total="pagination.total" @current-change="() => requestPurchaseList()" />
+      </div>
 
-    <div flex justify-end>
-      <el-button @click="visible = false">取消</el-button>
       <el-button type="primary" @click="handleConfirm">保存</el-button>
     </div>
   </el-dialog>

+ 0 - 7
src/views/purchase/ticketReturn/index.vue

@@ -15,7 +15,6 @@ defineOptions({
   name: "ticketReturn"
 });
 
-const TicketDialog = ref<InstanceType<typeof CreateTicketDialog>>(null);
 const invoiceDialogRef = ref<InstanceType<typeof InvoiceDialog>>(null);
 const { push } = useRouter();
 
@@ -90,12 +89,6 @@ onMounted(
           </template>
         </PageContent>
       </div>
-
-      <!-- 展示对账列表数据 根据对账列表payNo创建采购回单数据 -->
-      <CreateTicketDialog
-        @reload="() => pageContentRef.onSearch()"
-        ref="TicketDialog"
-      />
     </PagePower>
 
     <InvoiceDialog ref="invoiceDialogRef" />