snow 2 years ago
parent
commit
66f1f8cc32

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

@@ -1,6 +1,6 @@
 /* eslint-disable prettier/prettier */
 import { defineComponent } from "vue";
-import { ElDescriptions, ElDescriptionsItem } from "element-plus";
+import { ElRow, ElCol } from "element-plus";
 import { useRenderIcon } from "../../ReIcon/src/hooks";
 import { basicDescriptionsProps } from "./types";
 import "./index.scss"
@@ -13,22 +13,22 @@ const BasicDescriptions = defineComponent({
       const { title, colNumber, columns, data, labelWidth, show } = props;
 
       return show ? (
-        <ElDescriptions title={title} border column={colNumber} size="small">
+        <ElRow title={title} border column={colNumber} size="small">
           {columns.map(col => (
-            <ElDescriptionsItem
+            <ElCol
               label={col.label}
               key={col.field}
-              span={col.span}
-              v-slots={{
-                label: () => <div class="description-label" style={{ width: col.labelWidth ? col.labelWidth : labelWidth }}>{col.label}</div>
-              }}
+              span={col.span ? col.span : 6}
             >
-              <div>{col.render ? col.render(data[col.field], data) : data[col.field]}</div>
-            </ElDescriptionsItem>
+              <div class="col-item">
+                <p class="col-label" style={{ width: labelWidth + 'px' }}>{col.label}</p>
+                <p class="col-value">{col.render ? col.render(data[col.field], data) : data[col.field]}</p>
+              </div>
+            </ElCol>
           ))}
 
           {slots.custom && slots.custom(props.data)}
-        </ElDescriptions>
+        </ElRow>
       ) : (
           <div
             style={{

+ 29 - 0
src/components/BasicDescriptions/src/index.scss

@@ -1,3 +1,32 @@
 .description-label{
   white-space: nowrap;
 }
+
+
+.col-item{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+
+  p{
+    border: 1px solid #ebeef5;
+    line-height: 40px;
+    min-height: 42px;
+    margin-bottom: -1px;
+    margin-left: -1px;
+  }
+
+  .col-label{
+    background-color:#f5f7fa;
+    text-align: right;
+    padding-right: 5px;
+    min-width: 80px;
+  }
+
+  .col-value{
+    flex:1;
+    padding-left: 5px;
+    display: flex;
+    align-items: center;
+  }
+}

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

@@ -5,7 +5,7 @@ export const basicDescriptionsProps = {
   },
   colNumber: {
     type: Number,
-    default: 6
+    default: 24
   },
   columns: {
     type: Array as PropType<Array<DescriptionColumn>>

+ 5 - 0
src/style/index.scss

@@ -112,3 +112,8 @@ html {
 .dialog-max{
   min-width: 1040px !important;
 }
+
+
+.el-dialog__body{
+  overflow-x:hidden;
+}

+ 0 - 1
src/utils/details/inv-open.ts

@@ -1,7 +1,6 @@
 /**
  * 开票申请详情
  */
-
 import { h } from "vue";
 import { ElTable, ElTableColumn, ElTag } from "element-plus";
 import { DescriptionColumns } from "/@/components/BasicDescriptions";

+ 0 - 1
src/utils/details/inv-return.ts

@@ -1,7 +1,6 @@
 /**
  *  退票详情
  */
-
 import { ElTag } from "element-plus";
 import { h } from "vue";
 import { createTooltip } from "../tootip";

+ 0 - 1
src/utils/details/purchPay.ts

@@ -1,7 +1,6 @@
 /**
  * 采购单付款
  */
-
 import { ElImage, ElTag } from "element-plus";
 import { h } from "vue";
 import { createTooltip } from "../tootip";

+ 51 - 78
src/utils/details/purchase.ts

@@ -1,11 +1,11 @@
-/**
- * 采购单详情
- */
-
-import { ElTag } from "element-plus";
 import { h } from "vue";
-import { send_status_list } from "../status";
-import { createTooltip } from "../tootip";
+import { ElTag } from "element-plus";
+import {
+  cg_order_type_options,
+  cg_order_source_options,
+  send_status_list
+} from "/@/utils/status";
+import { createTooltip } from "/@/utils/tootip";
 import { DescriptionColumns } from "/@/components/BasicDescriptions";
 
 export const PURCHASE_STATUS = [
@@ -98,99 +98,75 @@ export const PAY_STATUS = [
   }
 ];
 
-export const INV_STATUS = [
+export const PURCHAS_COLUMNS: DescriptionColumns = [
   {
-    value: "1",
-    label: "未回票"
+    label: "采购单编号",
+    field: "name",
+    span: 6
   },
   {
-    value: "2",
-    label: "部分回票"
+    label: "确认单编号",
+    field: "qrdCode",
+    span: 6
   },
   {
-    value: "3",
-    label: "已回票"
-  }
-];
-
-export const PURCHAS_COLUMNS: DescriptionColumns = [
+    label: "采购员",
+    field: "ownerName",
+    span: 6,
+    labelWidth: "80",
+    render: (ownerName, { department }) =>
+      createTooltip(ownerName, "部门: " + department, 260)
+  },
   {
-    label: "采购单名称",
-    field: "name",
+    label: "采购时间",
     span: 6,
-    render: (name, { sequenceNo }) =>
-      createTooltip(name, "采购单编号 : " + sequenceNo, 260)
+    field: "createdTime"
   },
   {
-    label: "业务企业",
+    label: "买入方公司",
     field: "companyName",
-    span: 3,
+    span: 12,
     render: (companyName, { companyNo }) =>
       createTooltip(companyName, "业务企业公司编号 : " + companyNo, 300)
   },
   {
-    label: "供应商",
-    span: 3,
+    label: "卖出方公司",
+    span: 12,
     field: "supplierName",
     render: (supplierName, { supplierNo }) =>
       createTooltip(supplierName, "供应商编号 : " + supplierNo, 300)
   },
   {
-    label: "采购员",
-    field: "ownerName",
-    span: 2,
-    render: (ownerName, { ownerid }) =>
-      createTooltip(ownerName, "采购员id : " + ownerid, 260)
-  },
-  {
-    label: "部门",
-    span: 2,
-    field: "department"
-  },
-  {
-    label: "采购时间",
-    span: 2,
-    field: "createdTime"
-  },
-  {
-    label: "状态",
+    label: "对账状态",
     field: "status",
     render(type) {
       return h(ElTag, null, {
-        default: () => PURCHASE_STATUS.find(c => c.value === type)?.label
+        default: () => PURCHASE_STATUS.find(c => c.value == type)?.label
       });
     }
   },
   {
-    label: "采购单类型",
-    field: "cgdType",
+    label: "订单来源",
+    field: "cgdSource",
     render(type) {
       return h(ElTag, null, {
-        default: () => PURCHASE_TYPE.find(c => c.value === type)?.label
+        default: () => cg_order_source_options.find(c => c.value == type)?.label
       });
     }
   },
   {
-    label: "订单来源",
-    field: "cgdSource",
+    label: "商品类型",
+    field: "goodType",
     render(type) {
       return h(ElTag, null, {
-        default: () => PURCHAS_SOURCE.find(c => c.value === type)?.label
+        default: () => cg_order_type_options.find(c => c.value == type)?.label
       });
     }
   },
-  {
-    label: "采购时间",
-    field: "cgdTime"
-  },
   {
     label: "备库编号",
     field: "bkCode"
   },
-  {
-    label: "确认单编号",
-    field: "qrdCode"
-  },
   {
     label: "已付金额",
     field: "apay_fee"
@@ -212,7 +188,7 @@ export const PURCHAS_COLUMNS: DescriptionColumns = [
     field: "sendType",
     render(type) {
       return h(ElTag, null, {
-        default: () => SEND_TYPE.find(c => c.value === type)?.label
+        default: () => SEND_TYPE.find(c => c.value == type)?.label
       });
     }
   },
@@ -225,7 +201,7 @@ export const PURCHAS_COLUMNS: DescriptionColumns = [
     field: "sendStatus",
     render(type) {
       return h(ElTag, null, {
-        default: () => send_status_list.find(c => c.value === type)?.label
+        default: () => send_status_list.find(c => c.value == type)?.label
       });
     }
   },
@@ -252,27 +228,18 @@ export const PURCHAS_COLUMNS: DescriptionColumns = [
   {
     label: "退货数量",
     field: "thNum"
-  }
-];
-
-//商品详情
-export const PURCHAS_PRODUCT_COLUMNS = [
+  },
   {
     label: "商品名称",
     field: "goodName",
-    span: 6,
+    span: 18,
     render: (goodName, { goodNo }) =>
       createTooltip(goodName, "商品编号 : " + goodNo, 260)
-  },
-  {
-    label: "商品类类型",
-    field: "goodType",
-    render(type) {
-      return h(ElTag, null, {
-        default: () => PRODUCT_TYPE.find(c => c.value === type)?.label
-      });
-    }
-  },
+  }
+];
+
+//商品详情
+export const PURCHAS_PRODUCT_COLUMNS = [
   {
     label: "品牌",
     field: "goodBrand"
@@ -299,6 +266,7 @@ export const PURCHAS_PRODUCT_COLUMNS = [
   },
   {
     label: "工艺描述",
+    span: 12,
     field: "goodDesc"
   },
   {
@@ -358,7 +326,7 @@ export const PURCHAS_PRODUCT_COLUMNS = [
     field: "isStock",
     render(type) {
       return h(ElTag, null, {
-        default: () => (type === "0" ? "非库存" : "库存")
+        default: () => (type == "0" ? "非库存" : "库存")
       });
     }
   },
@@ -371,3 +339,8 @@ export const PURCHAS_PRODUCT_COLUMNS = [
     field: "totalPrice"
   }
 ];
+
+export const purchaseOrderColumns = [
+  ...PURCHAS_COLUMNS,
+  ...PURCHAS_PRODUCT_COLUMNS
+];

+ 0 - 1
src/utils/details/reconciliation.ts

@@ -1,7 +1,6 @@
 /**
  * 对账详情
  */
-
 import { ElTag } from "element-plus";
 import { h } from "vue";
 import { createTooltip } from "../tootip";

+ 2 - 2
src/utils/details/refund.ts

@@ -1,7 +1,6 @@
 /**
  * 资金退款详情
  */
-
 import { ElImage, ElTag } from "element-plus";
 import { h } from "vue";
 import { createTooltip } from "../tootip";
@@ -72,7 +71,8 @@ export const REFOUD_COLUMNS: DescriptionColumns = [
   {
     label: "申请人",
     field: "apply_name",
-    render: (apply_name, { apply_id }) => createTooltip(apply_name, '申请人ID : ' + apply_id, 90)
+    render: (apply_name, { apply_id }) =>
+      createTooltip(apply_name, "申请人ID : " + apply_id, 90)
   },
   {
     label: "付款公司",

+ 0 - 1
src/utils/details/sale.ts

@@ -1,7 +1,6 @@
 /**
  * 销售单详情
  */
-
 import { ElTag } from "element-plus";
 import { h } from "vue";
 import { createTooltip } from "../tootip";

+ 0 - 1
src/utils/details/ticket-return.ts

@@ -1,7 +1,6 @@
 /**
  * 采购回票详情
  */
-
 import { ElImage, ElTag } from "element-plus";
 import { h } from "vue";
 import { createTooltip } from "../tootip";

+ 0 - 1
src/utils/details/trade.ts

@@ -1,7 +1,6 @@
 /**
  * 资金详情
  */
-
 import { DescriptionColumns } from "/@/components/BasicDescriptions";
 
 export const TRADE_COLUMNS: DescriptionColumns = [

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

@@ -1,7 +1,6 @@
 /**
  * 资金认领详情
  */
-
 import { ElTag } from "element-plus";
 import { h } from "vue";
 import { DescriptionColumns } from "/@/components/BasicDescriptions";
@@ -31,7 +30,6 @@ export const CAPITAL_STATUS = [
 ];
 
 //认领详情描述列表
-
 export const CAPITAL_COLUMNS: DescriptionColumns = [
   {
     field: "logNo",

+ 0 - 5
src/views/InvoiceSaleSettings/commodityCost/config/search.config.ts

@@ -19,11 +19,6 @@ const searchFormConfig: FormConfig = {
       type: "input",
       placeholder: "商品名称"
     },
-    {
-      field: "companyNo",
-      type: "input",
-      placeholder: "业务企业编号"
-    },
     {
       field: "supplierNo",
       type: "input",

+ 10 - 1
src/views/InvoiceSaleSettings/consultingCost/config/content.config.ts

@@ -33,6 +33,14 @@ const columns = [
     width: 70,
     hide: ({ checkList }) => !checkList.includes("序号列")
   },
+  {
+    label: "供应商编号",
+    prop: "supplierNo"
+  },
+  {
+    label: "业务企业编号",
+    prop: "companyNo"
+  },
   {
     label: "商品编码",
     prop: "spuCode"
@@ -51,7 +59,8 @@ const columns = [
     prop: "status",
     cellRenderer: ({ row }) => {
       return h(ElTag, null, {
-        default: () => good_type.find(t => t.value === row.status)?.label
+        default: () =>
+          good_type.find(t => t.value === String(row.status))?.label
       });
     }
   },

+ 0 - 5
src/views/InvoiceSaleSettings/consultingCost/config/search.config.ts

@@ -19,11 +19,6 @@ const searchFormConfig: FormConfig = {
       type: "input",
       placeholder: "商品名称"
     },
-    {
-      field: "companyNo",
-      type: "input",
-      placeholder: "业务企业编号"
-    },
     {
       field: "supplierNo",
       type: "input",

+ 5 - 8
src/views/InvoiceSaleSettings/consultingCost/index.vue

@@ -5,7 +5,7 @@ import { useRouter } from "vue-router";
 import searchFormConfig from "./config/search.config";
 import contentConfig from "./config/content.config";
 import PagePower from "/@/components/PagePower/PagePower.vue";
-import { usePermission } from "/@/hooks";
+import { usePermission } from "/@/hooks/core/usePermission";
 
 defineOptions({
   name: "invoiceheader"
@@ -23,16 +23,12 @@ function toDetail(spuCode) {
   });
 }
 
-const { permission, contentConfigRef } = usePermission({
-  pageName: "consultingCost",
-  contentConfig,
-  callback: powers => (contentConfig.powers = powers)
-});
+const { permissions, hasPermissionWithCode } = usePermission("consultingCost");
 </script>
 
 <template>
   <div class="main role">
-    <PagePower :is-show="permission.list">
+    <PagePower :is-show="hasPermissionWithCode('001')">
       <div w-full>
         <PageSearch
           :form-config="searchFormConfig"
@@ -42,7 +38,8 @@ const { permission, contentConfigRef } = usePermission({
 
         <PageContent
           ref="pageContentRef"
-          :content-config="contentConfigRef"
+          :powers="permissions"
+          :content-config="contentConfig"
           @preview-btn-click="({ spuCode }) => toDetail(spuCode)"
         />
       </div>

+ 4 - 2
src/views/interest/companyAccount/index.vue

@@ -273,7 +273,9 @@ onMounted(() => {
                 :icon="useRenderIcon('edits')"
               />
               <el-popconfirm
-                :title="row.status === '1' ? '改为禁用?' : '改为启用?'"
+                :title="
+                  String(row.status) === '1' ? '改为禁用?' : '改为启用?'
+                "
                 v-if="
                   (powers.some(i => i == '004') && row.status + '' === '1') ||
                   (powers.some(i => i == '003') && row.status + '' === '0')
@@ -288,7 +290,7 @@ onMounted(() => {
                     :size="size"
                     :icon="
                       useRenderIcon(
-                        row.status === '1'
+                        String(row.status) === '1'
                           ? 'close-circle-line'
                           : 'checkbox-circle-line'
                       )

+ 170 - 68
src/views/interest/role/addEdit.vue

@@ -74,7 +74,9 @@ const handleCheckAllChange = (checkAll, index, item, subIndex) => {
       subIndex
     ].checkList.findIndex(findItem => findItem === String(element.id));
     if (checkAll && findindex == -1) {
-      menuactionList.value[index].child[subIndex].checkList.push(String(element.id));
+      menuactionList.value[index].child[subIndex].checkList.push(
+        String(element.id)
+      );
     } else if (!checkAll && findindex > -1) {
       menuactionList.value[index].child[subIndex].checkList.splice(
         findindex,
@@ -92,7 +94,9 @@ const handleFieldAllChange = (fieldAll, index, item, subIndex) => {
       subIndex
     ].fieldList.findIndex(findItem => findItem === String(element.id));
     if (fieldAll && findindex == -1) {
-      menuactionList.value[index].child[subIndex].fieldList.push(String(element.id));
+      menuactionList.value[index].child[subIndex].fieldList.push(
+        String(element.id)
+      );
     } else if (!fieldAll && findindex > -1) {
       menuactionList.value[index].child[subIndex].fieldList.splice(
         findindex,
@@ -448,21 +452,51 @@ let indeterminateField = computed(() => {
 </script>
 
 <template>
-  <el-dialog :close-on-press-escape="false" v-model="showModelThis" append-to-body center :top="'5vh'" :width="'900px'"
-    :title="titleType" v-loading="loading" @close="closeDialog">
-    <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="90px" class="role-addedit" :size="formSize"
-      status-icon>
+  <el-dialog
+    :close-on-press-escape="false"
+    v-model="showModelThis"
+    append-to-body
+    center
+    :top="'5vh'"
+    :width="'900px'"
+    :title="titleType"
+    v-loading="loading"
+    @close="closeDialog"
+  >
+    <el-form
+      ref="ruleFormRef"
+      :model="ruleForm"
+      :rules="rules"
+      label-width="90px"
+      class="role-addedit"
+      :size="formSize"
+      status-icon
+    >
       <el-row>
         <el-col :span="12">
           <el-form-item label="角色名称" prop="role_name">
-            <el-input v-model="ruleForm.role_name" :disabled="editType == 'view'" placeholder="角色名称" />
-          </el-form-item></el-col>
+            <el-input
+              v-model="ruleForm.role_name"
+              :disabled="editType == 'view'"
+              placeholder="角色名称"
+            /> </el-form-item
+        ></el-col>
         <el-col :span="12">
           <el-form-item label="角色等级" prop="level">
-            <el-select v-model="ruleForm.level" style="width: 100%" :disabled="editType == 'view'" placeholder="菜单类型">
-              <el-option v-for="(si, sii) in levelList" :key="'type' + si.value + sii" :label="si.label"
-                :value="si.value" />
-            </el-select> </el-form-item></el-col>
+            <el-select
+              v-model="ruleForm.level"
+              style="width: 100%"
+              :disabled="editType == 'view'"
+              placeholder="菜单类型"
+            >
+              <el-option
+                v-for="(si, sii) in levelList"
+                :key="'type' + si.value + sii"
+                :label="si.label"
+                :value="si.value"
+              />
+            </el-select> </el-form-item
+        ></el-col>
         <el-col :span="24">
           <div class="quanxian-main">
             <div class="quanxian-title">
@@ -474,58 +508,98 @@ let indeterminateField = computed(() => {
             </div>
             <div class="rule-view">
               <div class="rule-list">
-                <el-row v-for="(item, index) in menuactionList" :key="'menu' + item.id + index">
-                  <el-col v-if="item.child && item.child.length > 0" class="ffff" :span="24">
+                <el-row
+                  v-for="(item, index) in menuactionList"
+                  :key="'menu' + item.id + index"
+                >
+                  <el-col
+                    v-if="item.child && item.child.length > 0"
+                    class="ffff"
+                    :span="24"
+                  >
                     <div class="ftitle">
-                      <div v-for="(si, sii) in item.menu_name" :key="'title' + sii + si">
+                      <div
+                        v-for="(si, sii) in item.menu_name"
+                        :key="'title' + sii + si"
+                      >
                         {{ si }}
                       </div>
                     </div>
                     <div class="fbody">
-                      <div class="fbody-item" v-for="(subItem, subIndex) in item.child"
-                        :key="'yemian' + subItem.id + subIndex">
-                        <template v-if="
-                          !(
-                            subItem.action &&
-                            subItem.action.length == 0 &&
-                            subItem.action_data &&
-                            subItem.action_data.length == 0
-                          )
-                        ">
+                      <div
+                        class="fbody-item"
+                        v-for="(subItem, subIndex) in item.child"
+                        :key="'yemian' + subItem.id + subIndex"
+                      >
+                        <template
+                          v-if="
+                            !(
+                              subItem.action &&
+                              subItem.action.length == 0 &&
+                              subItem.action_data &&
+                              subItem.action_data.length == 0
+                            )
+                          "
+                        >
                           <div class="stitle">
                             <span class="_h2">{{ subItem.menu_name }}</span>
-                            <el-radio-group style="margin: 0 0 0 20px" :size="'mini'" v-if="
-                              subItem &&
-                              subItem.private &&
-                              subItem.private.length == 2
-                            " v-model="subItem.is_private_change">
-                              <el-radio-button v-for="(radioN, ri) in subItem.private" :key="radioN.label + ri"
-                                :label="String(radioN.id)">{{ radioN.label }}</el-radio-button>
+                            <el-radio-group
+                              style="margin: 0 0 0 20px"
+                              :size="'mini'"
+                              v-if="
+                                subItem &&
+                                subItem.private &&
+                                subItem.private.length == 2
+                              "
+                              v-model="subItem.is_private_change"
+                            >
+                              <el-radio-button
+                                v-for="(radioN, ri) in subItem.private"
+                                :key="radioN.label + ri"
+                                :label="String(radioN.id)"
+                                >{{ radioN.label }}</el-radio-button
+                              >
                             </el-radio-group>
                           </div>
-                          <div class="scheck" v-if="subItem.action && subItem.action.length > 0">
+                          <div
+                            class="scheck"
+                            v-if="subItem.action && subItem.action.length > 0"
+                          >
                             <div class="checkAll">
-                              <el-checkbox v-model="subItem.checkAll" :disabled="editType == 'view'"
-                                :indeterminate="indeterminateCheck(subItem)" @change="
+                              <el-checkbox
+                                v-model="subItem.checkAll"
+                                :disabled="editType == 'view'"
+                                :indeterminate="indeterminateCheck(subItem)"
+                                @change="
                                   handleCheckAllChange(
                                     $event,
                                     index,
                                     item,
                                     subIndex
                                   )
-                                ">功能全选</el-checkbox>
+                                "
+                                >功能全选</el-checkbox
+                              >
                             </div>
                             <div class="checkItem">
-                              <el-checkbox-group v-model="subItem.checkList" :disabled="editType == 'view'" @change="
-                                handleCheckedGroupChange(
-                                  $event,
-                                  index,
-                                  item,
-                                  subIndex
-                                )
-                              ">
-                                <el-checkbox :disabled="editType == 'view'" v-for="children in subItem.action"
-                                  :key="'checkItem' + children.id" :label="String(children.id)" @change="
+                              <el-checkbox-group
+                                v-model="subItem.checkList"
+                                :disabled="editType == 'view'"
+                                @change="
+                                  handleCheckedGroupChange(
+                                    $event,
+                                    index,
+                                    item,
+                                    subIndex
+                                  )
+                                "
+                              >
+                                <el-checkbox
+                                  :disabled="editType == 'view'"
+                                  v-for="children in subItem.action"
+                                  :key="'checkItem' + children.id"
+                                  :label="String(children.id)"
+                                  @change="
                                     handleCheckedChange(
                                       $event,
                                       String(children.id),
@@ -533,36 +607,54 @@ let indeterminateField = computed(() => {
                                       subIndex,
                                       item
                                     )
-                                  ">{{ children.action_name }}</el-checkbox>
+                                  "
+                                  >{{ children.action_name }}</el-checkbox
+                                >
                               </el-checkbox-group>
                             </div>
                           </div>
-                          <div class="sfield" v-if="
-                            subItem.action_data &&
-                            subItem.action_data.length > 0
-                          ">
+                          <div
+                            class="sfield"
+                            v-if="
+                              subItem.action_data &&
+                              subItem.action_data.length > 0
+                            "
+                          >
                             <div class="checkAll">
-                              <el-checkbox v-model="subItem.fieldAll" :disabled="editType == 'view'"
-                                :indeterminate="indeterminateField(subItem)" @change="
+                              <el-checkbox
+                                v-model="subItem.fieldAll"
+                                :disabled="editType == 'view'"
+                                :indeterminate="indeterminateField(subItem)"
+                                @change="
                                   handleFieldAllChange(
                                     $event,
                                     index,
                                     item,
                                     subIndex
                                   )
-                                ">字段全选</el-checkbox>
+                                "
+                                >字段全选</el-checkbox
+                              >
                             </div>
                             <div class="checkItem">
-                              <el-checkbox-group v-model="subItem.fieldList" :disabled="editType == 'view'" @change="
-                                handleFieldGroupChange(
-                                  $event,
-                                  index,
-                                  item,
-                                  subIndex
-                                )
-                              ">
-                                <el-checkbox v-for="children in subItem.action_data" :key="'FieldItem' + children.id"
-                                  :label="String(children.id)" :disabled="editType == 'view'" @change="
+                              <el-checkbox-group
+                                v-model="subItem.fieldList"
+                                :disabled="editType == 'view'"
+                                @change="
+                                  handleFieldGroupChange(
+                                    $event,
+                                    index,
+                                    item,
+                                    subIndex
+                                  )
+                                "
+                              >
+                                <el-checkbox
+                                  v-for="children in subItem.action_data"
+                                  :key="'FieldItem' + children.id"
+                                  :label="String(children.id)"
+                                  :disabled="editType == 'view'"
+                                  @change="
                                     handleFieldChange(
                                       $event,
                                       String(children.id),
@@ -570,7 +662,9 @@ let indeterminateField = computed(() => {
                                       subIndex,
                                       item
                                     )
-                                  ">{{ children.field_name }}</el-checkbox>
+                                  "
+                                  >{{ children.field_name }}</el-checkbox
+                                >
                               </el-checkbox-group>
                             </div>
                           </div>
@@ -585,9 +679,17 @@ let indeterminateField = computed(() => {
         </el-col>
       </el-row>
       <el-col :span="24" class="clear">
-        <el-button v-if="editType == 'add' || editType == 'edit'" type="primary" class="fr" style="margin: 0 0 0 16px"
-          @click="submitForm(ruleFormRef)">保存</el-button>
-        <el-button class="fr" style="margin: 0 0 0 16px" @click="closeDialog">关闭</el-button>
+        <el-button
+          v-if="editType == 'add' || editType == 'edit'"
+          type="primary"
+          class="fr"
+          style="margin: 0 0 0 16px"
+          @click="submitForm(ruleFormRef)"
+          >保存</el-button
+        >
+        <el-button class="fr" style="margin: 0 0 0 16px" @click="closeDialog"
+          >关闭</el-button
+        >
       </el-col>
     </el-form>
   </el-dialog>

+ 1 - 1
src/views/interest/role/index.vue

@@ -101,7 +101,7 @@ function editItem(id, type) {
   if (!currentCompany.value.companyNo) {
     ElMessage.warning("请选择一个公司");
     return;
-   }
+  }
 
   itemId.value = id;
   isDetails.value = type;

+ 276 - 0
src/views/invoice/query/components/purchase.vue

@@ -0,0 +1,276 @@
+<script setup lang="ts">
+import { reactive, ref, onMounted, computed, watch } from "vue";
+import { useColumns } from "./columns";
+import { ElMessage, type FormInstance } from "element-plus";
+import { type PaginationProps } from "@pureadmin/table";
+import { useRenderIcon } from "/@/components/ReIcon/src/hooks";
+import { useCompany } from "/@/hooks/core/useCompany";
+import { httpXSList, httpCGList } from "/@/api/invoice/query";
+import { INV_OPEN_STATUS } from "/@/utils/details/inv-open";
+import { STATUS_OPTIONS as returnStatus } from "/@/utils/details/ticket-return";
+import { useNav } from "/@/layout/hooks/nav";
+import { useRouter } from "vue-router";
+
+import {
+  cgInvTypeOptions,
+  xsInvTypeOptions,
+  xsOpenType,
+  cgOpenType
+} from "./options";
+
+const { logout } = useNav();
+
+defineOptions({
+  name: "role"
+});
+
+const form = reactive({
+  name: "",
+  timer: [],
+  inv_type: "",
+  page: 1,
+  size: 15
+});
+
+const dataList = ref([]);
+const loading = ref(true);
+const { xsColumns, cgColumns } = useColumns();
+const { push } = useRouter();
+
+const formRef = ref<FormInstance>();
+
+const { currentCompany } = useCompany();
+
+const columns = computed(() =>
+  formData.value.type === "0" ? xsColumns.value : cgColumns.value
+);
+
+const isXS = computed(() => formData.value.type === "0");
+
+const statusOptions = computed(() => {
+  return formData.value.type === "0" ? INV_OPEN_STATUS : returnStatus;
+});
+
+const invOptions = computed(() => {
+  return isXS.value ? xsInvTypeOptions : cgInvTypeOptions;
+});
+
+const openTypes = computed(() => {
+  return isXS.value ? xsOpenType : cgOpenType;
+});
+
+const toPath = computed(() => {
+  return formData.value.type === "0"
+    ? "/InvoiceSales/invoiceApplyDetail"
+    : "/purchase/ticketReturnDetail";
+});
+
+const pagination = reactive<PaginationProps>({
+  total: 0,
+  pageSize: 15,
+  currentPage: 1,
+  background: true
+});
+
+const formData = ref({
+  type: "0"
+});
+
+async function onSearch() {
+  loading.value = true;
+  const { type } = formData.value;
+  const api = type === "0" ? httpXSList : httpCGList;
+
+  const { inv_type, timer, ...rest } = form;
+
+  const { code, data, message } = await api({
+    [isXS.value ? "inv_type" : "invoiceType"]: inv_type,
+    [isXS.value ? "start" : "open_start"]: timer[0],
+    [isXS.value ? "end" : "open_end"]: timer[1],
+    [isXS.value ? "inv_out" : "companyNo"]: currentCompany.value.companyNo,
+    ...rest
+  });
+
+  if (code === 0) {
+    const { list, count } = data;
+    dataList.value = list ?? [];
+    pagination.total = count ?? 0;
+    pagination.pageSize = form.size;
+    pagination.currentPage = form.page;
+  } else if (code > 100 && code < 140) {
+    logout();
+  } else {
+    ElMessage.error(message);
+  }
+  loading.value = false;
+}
+
+async function resetSearch() {
+  form.page = 1;
+  await onSearch();
+}
+
+const resetForm = (formEl: FormInstance | undefined) => {
+  if (!formEl) return;
+  formEl.resetFields();
+  form.page = 1;
+  form.inv_type = "";
+  form.timer = [];
+  onSearch();
+};
+
+function resetType() {
+  form.page = 1;
+  form.inv_type = "";
+  form.timer = [];
+  onSearch();
+}
+
+function toDetail(data) {
+  const id = formData.value.type === "0" ? data["invNo"] : data["hpNo"];
+  push(toPath.value + "?id=" + id + "&back=/invoice/query");
+}
+
+watch(
+  () => currentCompany.value,
+  () => onSearch()
+);
+
+onMounted(() => {
+  onSearch();
+});
+</script>
+
+<template>
+  <div class="main role">
+    <el-form
+      ref="formRef"
+      :inline="true"
+      :model="form"
+      :label-width="0"
+      class="bg-white w-99/100 pl-8 pt-4 mb-2"
+    >
+      <el-form-item prop="status">
+        <el-select
+          v-model="formData.type"
+          style="width: 100%"
+          @change="() => resetType()"
+        >
+          <el-option value="0" label="销售开票" />
+          <el-option value="1" label="采购回票" />
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="role_name">
+        <el-date-picker
+          v-model="form.timer"
+          type="daterange"
+          start-placeholder="申请开始时间"
+          end-placeholder="申请结束时间"
+          value-format="YYYY-MM-DD"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-select v-model="form.inv_type" placeholder="发票类型">
+          <el-option
+            v-for="t in formData.type === '0'
+              ? xsInvTypeOptions
+              : cgInvTypeOptions"
+            :key="t.value"
+            :label="t.label"
+            :value="t.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          :icon="useRenderIcon('search')"
+          :loading="loading"
+          @click="resetSearch"
+        >
+          搜索
+        </el-button>
+        <el-button :icon="useRenderIcon('refresh')" @click="resetForm(formRef)">
+          重置
+        </el-button>
+      </el-form-item>
+    </el-form>
+
+    <div class="bg-white p-[5px]">
+      <ElTable :data="dataList" border v-loading="loading">
+        <ElTableColumn
+          show-overflow-tooltip
+          v-for="(c, index) in columns"
+          :width="c.width"
+          :min-width="c?.minWidth"
+          :key="index"
+          :label="c.label"
+          :prop="c.prop"
+        >
+          <template #="scope">
+            <ElTag v-if="c.slot === 'type'">
+              {{ formData.type === "0" ? "销售开票" : "采购回票" }}
+            </ElTag>
+
+            <ElTag v-else-if="c.slot === 'status'">
+              {{
+                statusOptions.find(s => s.value === scope.row["status"])
+                  ?.label || "--"
+              }}
+            </ElTag>
+
+            <ElTag v-else-if="c.slot === 'inv_type'">
+              <span v-if="formData.type === '0'">
+                {{
+                  invOptions.find(
+                    s =>
+                      s.value === scope.row[isXS ? "inv_type" : "invoiceType"]
+                  )?.label || "--"
+                }}
+              </span>
+
+              <span v-else>
+                {{ scope.row["invoiceType_cn"] || "--" }}
+              </span>
+            </ElTag>
+
+            <ElTag v-else-if="c.slot === 'open_type'">
+              {{
+                openTypes.find(
+                  s => s.value === scope.row[isXS ? "open_type" : "invType"]
+                )?.label || "--"
+              }}
+            </ElTag>
+
+            <span v-else>
+              {{ scope.row[c.prop as any] }}
+            </span>
+          </template>
+        </ElTableColumn>
+
+        <ElTableColumn label="操作" width="80px" fixed="right">
+          <template #="{ row }">
+            <ElButton
+              @click="() => toDetail(row)"
+              type="primary"
+              link
+              :icon="useRenderIcon('eye-view')"
+            />
+          </template>
+        </ElTableColumn>
+      </ElTable>
+
+      <ElPagination
+        class="float-right my-[10px]"
+        background
+        layout="total,prev,pager,next"
+        :total="pagination.total"
+        :page-size="15"
+        v-model:current-page="form.page"
+        @current-change="() => onSearch()"
+      />
+
+      <div class="clear" />
+    </div>
+  </div>
+</template>

+ 43 - 56
src/views/purchase/porder/config/_details.ts

@@ -1,6 +1,10 @@
 import { h } from "vue";
 import { ElTag } from "element-plus";
-import { inv_status_list, send_status_list } from "/@/utils/status";
+import {
+  cg_order_type_options,
+  cg_order_source_options,
+  send_status_list
+} from "/@/utils/status";
 import { createTooltip } from "/@/utils/tootip";
 import { DescriptionColumns } from "/@/components/BasicDescriptions";
 
@@ -96,45 +100,44 @@ export const PAY_STATUS = [
 
 export const PURCHAS_COLUMNS: DescriptionColumns = [
   {
-    label: "采购单名称",
+    label: "采购单编号",
     field: "name",
+    span: 6
+  },
+  {
+    label: "确认单编号",
+    field: "qrdCode",
+    span: 6
+  },
+  {
+    label: "采购员",
+    field: "ownerName",
     span: 6,
-    render: (name, { sequenceNo }) =>
-      createTooltip(name, "采购单编号 : " + sequenceNo, 260)
+    labelWidth: "80",
+    render: (ownerName, { department }) =>
+      createTooltip(ownerName, "部门: " + department, 260)
   },
   {
-    label: "业务企业",
+    label: "采购时间",
+    span: 6,
+    field: "createdTime"
+  },
+  {
+    label: "买入方公司",
     field: "companyName",
-    span: 3,
+    span: 12,
     render: (companyName, { companyNo }) =>
       createTooltip(companyName, "业务企业公司编号 : " + companyNo, 300)
   },
   {
-    label: "供应商",
-    span: 3,
+    label: "卖出方公司",
+    span: 12,
     field: "supplierName",
     render: (supplierName, { supplierNo }) =>
       createTooltip(supplierName, "供应商编号 : " + supplierNo, 300)
   },
   {
-    label: "采购员",
-    field: "ownerName",
-    span: 2,
-    render: (ownerName, { ownerid }) =>
-      createTooltip(ownerName, "采购员id : " + ownerid, 260)
-  },
-  {
-    label: "部门",
-    span: 2,
-    field: "department"
-  },
-  {
-    label: "采购时间",
-    span: 2,
-    field: "createdTime"
-  },
-  {
-    label: "状态",
+    label: "对账状态",
     field: "status",
     render(type) {
       return h(ElTag, null, {
@@ -143,35 +146,27 @@ export const PURCHAS_COLUMNS: DescriptionColumns = [
     }
   },
   {
-    label: "采购单类型",
-    field: "cgdType",
+    label: "订单来源",
+    field: "cgdSource",
     render(type) {
       return h(ElTag, null, {
-        default: () => PURCHASE_TYPE.find(c => c.value == type)?.label
+        default: () => cg_order_source_options.find(c => c.value == type)?.label
       });
     }
   },
   {
-    label: "订单来源",
-    field: "cgdSource",
+    label: "商品类型",
+    field: "goodType",
     render(type) {
       return h(ElTag, null, {
-        default: () => PURCHAS_SOURCE.find(c => c.value == type)?.label
+        default: () => cg_order_type_options.find(c => c.value == type)?.label
       });
     }
   },
-  {
-    label: "采购时间",
-    field: "cgdTime"
-  },
   {
     label: "备库编号",
     field: "bkCode"
   },
-  {
-    label: "确认单编号",
-    field: "qrdCode"
-  },
   {
     label: "已付金额",
     field: "apay_fee"
@@ -233,27 +228,18 @@ export const PURCHAS_COLUMNS: DescriptionColumns = [
   {
     label: "退货数量",
     field: "thNum"
-  }
-];
-
-//商品详情
-export const PURCHAS_PRODUCT_COLUMNS = [
+  },
   {
     label: "商品名称",
     field: "goodName",
-    span: 6,
+    span: 18,
     render: (goodName, { goodNo }) =>
       createTooltip(goodName, "商品编号 : " + goodNo, 260)
-  },
-  {
-    label: "商品类类型",
-    field: "goodType",
-    render(type) {
-      return h(ElTag, null, {
-        default: () => PRODUCT_TYPE.find(c => c.value == type)?.label
-      });
-    }
-  },
+  }
+];
+
+//商品详情
+export const PURCHAS_PRODUCT_COLUMNS = [
   {
     label: "品牌",
     field: "goodBrand"
@@ -280,6 +266,7 @@ export const PURCHAS_PRODUCT_COLUMNS = [
   },
   {
     label: "工艺描述",
+    span: 12,
     field: "goodDesc"
   },
   {

+ 26 - 52
src/views/system/account/addEdit.vue

@@ -1,10 +1,11 @@
 <script setup lang="ts">
+import { reactive, ref, watch } from "vue";
 import { httpAdd, httpUpdate } from "/@/api/interest/account";
 import { ElMessage, FormInstance, FormRules } from "element-plus";
-import { reactive, ref, watch, nextTick } from "vue";
-import menuType from "./types";
 import { useNav } from "/@/layout/hooks/nav";
 import { isMobile } from "/@/utils/validate";
+import menuType from "./types";
+
 const { logout } = useNav();
 const formSize = ref("default");
 const ruleFormRef = ref<FormInstance>();
@@ -31,15 +32,13 @@ const emit = defineEmits<{
   (e: "cancel"): void;
   (e: "refresh"): void;
 }>();
-const id = ref("");
 const editType = ref("add");
-const roleList = ref([]);
 const formModel = {
   id: "", //账户id
   nickname: "", //真实姓名
   mobile: "" //手机号
-  // email: "" //邮箱
 };
+
 const ruleForm = reactive<menuType>({ ...formModel });
 const rules = reactive<FormRules>({
   nickname: [
@@ -75,9 +74,9 @@ const submitForm = async (formEl: FormInstance | undefined) => {
   const { id, ...rest } = Object.assign({}, ruleForm);
 
   await formEl.validate(async (valid, fields) => {
+    console.log(valid);
+
     if (valid) {
-      if (loading.value === true) return;
-      loading.value = true;
       const model = Object.assign({}, ruleForm);
       const { code, message } =
         editType.value === "add"
@@ -85,7 +84,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
           : await httpUpdate(model);
       loading.value = false;
       if (code === 0) {
-        ElMessage.success(titleType.value + "成功!");
+        ElMessage.success(title.value + "成功!");
         showModelThis.value = false;
         emit("refresh");
       } else if (code > 100 && code < 140) {
@@ -99,61 +98,36 @@ const submitForm = async (formEl: FormInstance | undefined) => {
     }
   });
 };
-const resetForm = async (formEl: FormInstance | undefined, item) => {
-  if (!formEl) return;
-  formEl.clearValidate();
-  formEl.resetFields();
-  await nextTick(async () => {
-    for (let key in ruleForm) {
-      if (key === "role") {
-        ruleForm[key] = item["roleid"] || "";
-      } else {
-        ruleForm[key] = item[key];
-      }
-    }
-  });
-};
+
 const closeDialog = () => {
   showModelThis.value = false;
   emit("cancel");
 };
 
 const loading = ref(true);
-const titleType = ref("");
-async function initForm(item: Object) {
-  loading.value = true;
-  switch (editType.value) {
-    case "add":
-      titleType.value = "新建账号";
-      break;
-    case "edit":
-      titleType.value = "编辑账号";
-      break;
-    case "view":
-      titleType.value = "账号详情";
-      break;
-    default:
-      titleType.value = "新建账号";
-  }
-  await resetForm(ruleFormRef.value, item);
-  loading.value = false;
-}
+const title = ref("");
+
 watch(
   () => {
     return props.showModel;
   },
   () => {
-    const { showModel, itemId, isDetails, sitem } = props;
-    showModelThis.value = showModel;
-    if (showModelThis.value) {
-      id.value = itemId;
-      editType.value = isDetails;
-      if (isDetails !== "add") {
-        initForm(sitem);
-      } else {
-        initForm(formModel);
-      }
+    const { showModel, isDetails, sitem } = props;
+    editType.value = isDetails;
+
+    if (editType.value === "add") {
+      title.value = "新建运营账号";
+    } else if (editType.value === "view") {
+      title.value = "运营账号详情";
+    } else {
+      title.value = "修改运营账号";
     }
+
+    showModelThis.value = showModel;
+
+    ruleForm.nickname = sitem.nickname;
+    ruleForm.mobile = sitem.mobile;
+    ruleForm.id = sitem.id;
   }
 );
 </script>
@@ -165,7 +139,7 @@ watch(
     append-to-body
     :width="'900px'"
     center
-    :title="titleType"
+    :title="title"
     v-loading="loading"
     @close="closeDialog"
   >

+ 1 - 5
src/views/system/account/columns.tsx

@@ -26,10 +26,6 @@ export function useColumns() {
       label: "用户名称",
       prop: "username"
     },
-    {
-      label: "业务公司",
-      prop: "companyName"
-    },
     {
       label: "状态",
       prop: "status",
@@ -50,7 +46,7 @@ export function useColumns() {
     },
     {
       label: "创建时间",
-      width: 145,
+      width: 160,
       prop: "addtime",
       formatter: ({ addtime }) => dayjs(addtime).format("YYYY-MM-DD HH:mm:ss")
     },

+ 10 - 7
src/views/system/account/index.vue

@@ -36,7 +36,7 @@ const isDetails = ref("add");
 const sitem = reactive<menuType>({
   id: "", //账户id
   nickname: "", //真实姓名
-  mobile: "" //手机号
+  mobile: ""
 });
 const passwordModelId = ref("");
 const passwordModel = ref(false);
@@ -52,7 +52,6 @@ const pagination = reactive<PaginationProps>({
 //重置密码
 const resetRwd = async row => {
   const { id } = row;
-  console.log(row);
   passwordModelId.value = id;
   passwordModel.value = true;
 };
@@ -119,10 +118,12 @@ async function resetSearch() {
 //新建/编辑/详情弹窗
 function editItem(id, type, item) {
   itemId.value = id;
+
   isDetails.value = type;
-  for (let key in item) {
-    sitem[key] = item[key];
-  }
+  const { nickname, mobile } = item;
+  sitem.nickname = nickname;
+  sitem.mobile = mobile;
+  sitem.id = id;
   showModel.value = true;
 }
 const submitRefresh = () => {
@@ -280,7 +281,9 @@ onMounted(() => {
                 :icon="useRenderIcon('edits')"
               />
               <el-popconfirm
-                :title="row.status === '1' ? '改为禁用?' : '改为启用?'"
+                :title="
+                  String(row.status) === '1' ? '改为禁用?' : '改为启用?'
+                "
                 v-if="
                   (powers.some(i => i == '004') && row.status + '' === '1') ||
                   (powers.some(i => i == '003') && row.status + '' === '0')
@@ -295,7 +298,7 @@ onMounted(() => {
                     :size="size"
                     :icon="
                       useRenderIcon(
-                        row.status === '1'
+                        String(row.status) === '1'
                           ? 'close-circle-line'
                           : 'checkbox-circle-line'
                       )

+ 1 - 1
tsconfig.json

@@ -25,7 +25,7 @@
       "/#/*": ["types/*"],
       "views/*": [
         "./src/views/*"
-      ],
+      ]
     },
     "types": [
       "node",