Quellcode durchsuchen

会员管理修改

wangwei vor 3 Jahren
Ursprung
Commit
efa04936be

+ 2 - 1
src/views/activity/activity/customCom/member/index.vue

@@ -43,7 +43,6 @@
     ids: { type: Array as PropType<string[] | number[]>, default: [] },
   };
   export default defineComponent({
-    name: 'User',
     components: { BasicTable, Popup },
     props,
     emits: ['register', 'select'],
@@ -86,6 +85,8 @@
       }
       // 请求之前处理参数
       function beforeFetch(params) {
+        // 获取审核通过的会员
+        params.isCheck = 1;
         if (!params.field && !params.order) {
           params.field = 'id';
           params.order = 'descend';

+ 2 - 0
src/views/activity/activity/customCom/member/popup.vue

@@ -70,6 +70,8 @@
           } else {
             data.fromId = data.unitName.id;
           }
+          data.isCheck = 1;
+          data.source = 'active';
           data.jointime = moment(data.jointime).format('YYYY-MM-DD');
           delete data.relation;
           delete data.relationUnit;

+ 2 - 1
src/views/activity/meeting/customCom/member/index.vue

@@ -43,7 +43,6 @@
     ids: { type: Array as PropType<string[] | number[]>, default: [] },
   };
   export default defineComponent({
-    name: 'User',
     components: { BasicTable, Popup },
     props,
     emits: ['register', 'select'],
@@ -86,6 +85,8 @@
       }
       // 请求之前处理参数
       function beforeFetch(params) {
+        // 获取审核通过的会员
+        params.isCheck = 1;
         if (!params.field && !params.order) {
           params.field = 'id';
           params.order = 'descend';

+ 2 - 0
src/views/activity/meeting/customCom/member/popup.vue

@@ -70,6 +70,8 @@
           } else {
             data.fromId = data.unitName.id;
           }
+          data.isCheck = 1;
+          data.source = 'meeting';
           data.jointime = moment(data.jointime).format('YYYY-MM-DD');
           delete data.relation;
           delete data.relationUnit;

+ 2 - 2
src/views/department/department/customCom/member/index.vue

@@ -5,7 +5,6 @@
     rowKey="id"
     @selectionChange="selectionChange"
     :rowSelection="{ type: 'checkbox' }"
-    @rowDbClick="handleEdit"
     :canResize="true"
     :pagination="{
       pageSize: 10,
@@ -44,7 +43,6 @@
     ids: { type: Array as PropType<string[] | number[]>, default: [] },
   };
   export default defineComponent({
-    name: 'User',
     components: { BasicTable, Popup },
     props,
     emits: ['register', 'select'],
@@ -87,6 +85,8 @@
       }
       // 请求之前处理参数
       function beforeFetch(params) {
+        // 获取审核通过的会员
+        params.isCheck = 1;
         if (!params.field && !params.order) {
           params.field = 'id';
           params.order = 'descend';

+ 2 - 0
src/views/department/department/customCom/member/popup.vue

@@ -88,6 +88,8 @@
           } else {
             data.fromId = data.unitName.id;
           }
+          data.isCheck = 1;
+          data.source = 'department';
           data.jointime = moment(data.jointime).format('YYYY-MM-DD');
           delete data.relation;
           delete data.relationUnit;

+ 959 - 0
src/views/member/applyRecord/data.ts

@@ -0,0 +1,959 @@
+import { FormProps, BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Form/index';
+import { adapt } from '/@/utils/adapt';
+import { h } from 'vue';
+import moment from 'moment';
+
+const adaptWidth = adapt();
+export const columns: BasicColumn[] = [
+  {
+    title: 'ID',
+    dataIndex: 'id',
+    editComponentProps: {
+      prefix: '$',
+    },
+    width: 100,
+    sorter: true,
+  },
+  {
+    title: '企业(单位)名称',
+    dataIndex: 'name',
+    width: 200,
+    sorter: true,
+    customRender({ record }) {
+      const dom: object[] = [];
+      dom.push(h('span', {}, record.name));
+      if (record.nature === 0) {
+        dom.push(h('span', { style: { fontSize: '18px', fontWeight: 'bold', color: 'red' } }, '★'));
+      }
+      return dom;
+    },
+  },
+  {
+    title: '法人代表',
+    dataIndex: 'legalman',
+    width: 130,
+    sorter: true,
+  },
+  {
+    title: '成立时间',
+    dataIndex: 'foundingtime',
+    width: 150,
+    customRender({ record }) {
+      return moment(record.foundingtime).format('YYYY-MM-DD');
+    },
+    sorter: true,
+  },
+  {
+    title: '工商登记号',
+    dataIndex: 'businessNo',
+    width: 350,
+    sorter: true,
+  },
+  {
+    title: '单位性质',
+    dataIndex: 'nature',
+    width: 160,
+    customRender: ({ record }) => {
+      const options = [
+        '机关事业单位',
+        '国有企业',
+        '集体所有制',
+        '私营企业',
+        '股份制企业',
+        '有限合伙企业',
+        '联营企业',
+        '外商投资企业',
+        '个人独资企业',
+      ];
+      return options[record.nature];
+    },
+    sorter: true,
+  },
+  {
+    title: '行业分类',
+    dataIndex: 'job',
+    width: 160,
+    sorter: true,
+  },
+  {
+    title: '注册资金',
+    dataIndex: 'regMoney',
+    width: 160,
+    sorter: true,
+  },
+  {
+    title: '职工人数',
+    dataIndex: 'jobnum',
+    width: 160,
+    sorter: true,
+  },
+];
+
+export function getFormConfig(): Partial<FormProps> {
+  return {
+    labelWidth: 110,
+    schemas: [
+      {
+        field: `id`,
+        label: `ID`,
+        component: 'Input',
+        componentProps: {
+          placeholder: 'ID',
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `name`,
+        label: `企业(单位)名称`,
+        component: 'Input',
+        componentProps: {
+          placeholder: '企业或单位名称',
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `legalman`,
+        label: `法人代表`,
+        component: 'Input',
+        componentProps: {
+          placeholder: '法人代表',
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `foundingtime`,
+        label: `成立时间`,
+        component: 'RangePicker',
+        componentProps: {
+          valueFormat: 'YYYY-MM-DD',
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `businessNo`,
+        label: `工商登记号`,
+        component: 'Input',
+        componentProps: {
+          placeholder: '工商登记号',
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `nature`,
+        label: `单位性质`,
+        component: 'Select',
+        componentProps: {
+          placeholder: '单位性质',
+          options: [
+            {
+              label: '机关事业单位',
+              value: 0,
+            },
+            {
+              label: '国有企业',
+              value: 1,
+            },
+            {
+              label: '集体所有制',
+              value: 2,
+            },
+            {
+              label: '私营企业',
+              value: 3,
+            },
+            {
+              label: '股份制企业',
+              value: 4,
+            },
+            {
+              label: '有限合伙企业',
+              value: 5,
+            },
+            {
+              label: '联营企业',
+              value: 6,
+            },
+            {
+              label: '外商投资企业',
+              value: 7,
+            },
+            {
+              label: '个人独资企业',
+              value: 8,
+            },
+          ],
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `job`,
+        label: `行业分类`,
+        component: 'Input',
+        componentProps: {
+          placeholder: '行业分类',
+        },
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `regMoney`,
+        label: `注册资金`,
+        component: 'RangeNumber',
+        componentProps: {
+          placeholder: '注册资金',
+        },
+        defaultValue: '',
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+      {
+        field: `jobnum`,
+        label: `职工人数`,
+        component: 'RangeNumber',
+        componentProps: {
+          placeholder: '职工人数',
+        },
+        defaultValue: '',
+        colProps: {
+          xl: 12,
+          xxl: 8,
+        },
+      },
+    ],
+  };
+}
+
+// =================popup================================
+export const schemas: FormSchema[] = [
+  {
+    field: 'name',
+    component: 'Input',
+    label: '企业名称',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '企业名称',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    required: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'name',
+    component: 'Input',
+    label: '单位名称',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '单位名称',
+    },
+    show: ({ values }) => {
+      if (values.nature === 0) {
+        return true;
+      }
+      return false;
+    },
+    required: ({ values }) => {
+      if (values.nature === 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'nature',
+    label: '单位性质',
+    component: 'Select',
+    componentProps: {
+      placeholder: '单位性质',
+      options: [
+        {
+          label: '机关事业单位',
+          value: 0,
+        },
+        {
+          label: '国有企业',
+          value: 1,
+        },
+        {
+          label: '集体所有制',
+          value: 2,
+        },
+        {
+          label: '私营企业',
+          value: 3,
+        },
+        {
+          label: '股份制企业',
+          value: 4,
+        },
+        {
+          label: '有限合伙企业',
+          value: 5,
+        },
+        {
+          label: '联营企业',
+          value: 6,
+        },
+        {
+          label: '外商投资企业',
+          value: 7,
+        },
+        {
+          label: '个人独资企业',
+          value: 8,
+        },
+      ],
+    },
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    required: true,
+  },
+  {
+    field: 'legalman',
+    component: 'Input',
+    label: '法人代表',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '法人代表',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    required: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'level',
+    component: 'Input',
+    label: '行政级别',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '行政级别',
+    },
+    show: ({ values }) => {
+      if (values.nature === 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'area',
+    component: 'Input',
+    label: '所属地区',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '所属地区',
+    },
+    show: ({ values }) => {
+      if (values.nature === 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'parent',
+    component: 'Input',
+    label: '上级单位',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '上级单位',
+    },
+    show: ({ values }) => {
+      if (values.nature === 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'businessNo',
+    component: 'Input',
+    label: '工商登记号',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '工商登记号',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    required: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'centralTax',
+    component: 'Input',
+    label: '国税税号',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '国税税号',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'landTax',
+    component: 'Input',
+    label: '地税税号',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '地税税号',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'foundingtime',
+    component: 'DatePicker',
+    label: '成立时间',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '成立时间',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    required: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'job',
+    component: 'Input',
+    label: '行业分类',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '行业分类',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    required: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'jobnum',
+    component: 'Input',
+    label: '职工人数',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '职工人数',
+    },
+  },
+  {
+    field: 'partynum',
+    component: 'Input',
+    label: '党员数',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '党员数',
+    },
+  },
+  {
+    field: 'tel',
+    component: 'Input',
+    label: '电话',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '电话',
+    },
+  },
+  {
+    field: 'fax',
+    component: 'Input',
+    label: '传真',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '传真',
+    },
+  },
+  {
+    field: 'zipcode',
+    component: 'Input',
+    label: '邮编',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '邮箱',
+    },
+  },
+  {
+    field: 'address',
+    component: 'Input',
+    label: '地址',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '地址',
+    },
+    required: true,
+  },
+  {
+    field: 'culturalnum',
+    component: 'Input',
+    label: '大专以上文化人数',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '大专以上文化人数',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'laidnum',
+    component: 'Input',
+    label: '安置下岗人数',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '安置下岗人数',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'partyCase',
+    component: 'Input',
+    label: '党、团工会情况',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '党、团工会情况',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'web',
+    component: 'Input',
+    label: '网址',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '网址',
+    },
+    rules: [
+      {
+        validator: async (_, value: any) => {
+          const regex =
+            /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
+          if (value && !regex.test(value)) {
+            return Promise.reject('请填写有效的网址');
+          }
+        },
+        trigger: 'blur',
+      },
+    ],
+  },
+  {
+    field: 'email',
+    component: 'Input',
+    label: '电子邮箱',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '电子邮箱',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'technology',
+    label: '高新技术企业认证',
+    component: 'Switch',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '高新技术企业认证',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'technologyDept',
+    component: 'Input',
+    label: '高新技术企业认证部门',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    show: ({ values }) => {
+      if (values.technology && values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    componentProps: {
+      placeholder: '高新技术企业认证部门',
+    },
+    required: ({ values }) => {
+      if (values.technology && values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'foreignTrade',
+    label: '外贸自营进出口权',
+    component: 'Switch',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '外贸自营进出口权',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'foreignTradeDept',
+    component: 'Input',
+    label: '外贸自营进出口权批准部门',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    show: ({ values }) => {
+      if (values.foreignTrade && values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    componentProps: {
+      placeholder: '外贸自营进出口权批准部门',
+    },
+    required: ({ values }) => {
+      if (values.foreignTrade && values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'quality',
+    label: '质量管理、质量保证系列认证标准',
+    component: 'Switch',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '质量管理、质量保证系列认证标准',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'qualityDept',
+    component: 'Input',
+    label: '质量管理、质量保证系列认证标准认证部门',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    show: ({ values }) => {
+      if (values.quality && values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    componentProps: {
+      placeholder: '质量管理、质量保证系列认证标准认证部门',
+    },
+    required: ({ values }) => {
+      if (values.quality && values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'regMoney',
+    component: 'Input',
+    label: '注册资金(万元)',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '注册资金(万元)',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    rules: [
+      {
+        required: true,
+        validator: async (_, value: any) => {
+          let dealValue = '';
+          if (value) {
+            dealValue = value.replace(/\s*/g, '');
+          }
+          if (dealValue === '') {
+            return Promise.reject('请输入注册资金');
+          }
+          if (value < 0) {
+            return Promise.reject('注册资金不能小于0');
+          }
+        },
+        trigger: 'blur',
+      },
+    ],
+    required: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'money',
+    component: 'Input',
+    label: '资产(万元)',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '资产(万元)',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'ownerMoney',
+    component: 'Input',
+    label: '所有者权益(万元)',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '所有者权益(万元)',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'sellMoney',
+    component: 'Input',
+    label: '销售收入(万元)',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      type: 'number',
+      placeholder: '销售收入(万元)',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+  {
+    field: 'product',
+    component: 'InputTextArea',
+    label: '主要经营项目',
+    labelWidth: adaptWidth.labelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+    componentProps: {
+      placeholder: '主要经营项目',
+    },
+    show: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+    required: ({ values }) => {
+      if (values.nature !== 0) {
+        return true;
+      }
+      return false;
+    },
+  },
+];

+ 380 - 0
src/views/member/applyRecord/index.vue

@@ -0,0 +1,380 @@
+<template>
+  <CollapseContainer
+    class="sys-container"
+    title="申请记录"
+    :canExpan="false"
+    helpMessage="申请记录"
+  >
+    <BasicTable
+      ref="tableRef"
+      @register="registerTable"
+      rowKey="id"
+      :rowClassName="tableRowClass"
+      @selectionChange="selectionChange"
+      @rowClick="rowClick"
+      @rowDbClick="handleEdit"
+      :canResize="true"
+      :pagination="{
+        pageSize: 10,
+        defaultPageSize: 10,
+        showSizeChanger: false,
+      }"
+    >
+      <template #toolbar>
+        <div class="tool-btn-wrap">
+          <a-button type="primary" @click="addRole"> 添加 </a-button>
+          <a-button color="error" :disabled="disable_btn" @click="deleteBatches"> 删除 </a-button>
+          <a-button @click="openModal"> 导出 </a-button>
+        </div>
+      </template>
+      <template #form-custom> custom-slot </template>
+      <template #action="{ record }">
+        <TableAction :actions="createActions(record)" stopButtonPropagation />
+      </template>
+    </BasicTable>
+    <ExpExcelModel @register="register" @success="defaultHeader" />
+    <Popup @register="addRegister" :popupData="popupData" @saveData="saveData" />
+  </CollapseContainer>
+</template>
+<script lang="ts">
+  import { defineComponent, reactive, ref, toRefs, unref, createVNode } from 'vue';
+  import { CollapseContainer } from '/@/components/Container/index';
+  import Popup from './popup.vue';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useModal } from '/@/components/Modal';
+  import { jsonToSheetXlsx, ExpExcelModel, ExportModalResult } from '/@/components/Excel';
+  import { Modal } from 'ant-design-vue';
+  import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
+  import { getFormConfig, columns } from './data';
+  import moment from 'moment';
+  import {
+    getUnitList,
+    addUnit,
+    deleteBatchesUnit,
+    getUnit,
+    editUnit,
+    deleteUnit,
+  } from '/@/api/sys/member';
+  import {
+    BasicTable,
+    useTable,
+    TableAction,
+    ActionItem,
+    EditRecordRow,
+    TableActionType,
+  } from '/@/components/Table';
+
+  interface PopupData {
+    title: string;
+  }
+  interface Btn {
+    disable_btn: boolean;
+  }
+
+  export default defineComponent({
+    name: 'Unit',
+    components: { CollapseContainer, BasicTable, TableAction, Popup, ExpExcelModel },
+    setup() {
+      const { createMessage } = useMessage();
+      const { success /*, error*/ } = createMessage;
+      const tableRef = ref<Nullable<TableActionType>>(null);
+      const currentEditKeyRef = ref('');
+      const popupData = reactive<PopupData>({
+        title: '添加',
+      });
+      // const state = reactive({
+      //   isSerach: false,
+      // });
+      const btn = reactive<Btn>({
+        disable_btn: true,
+      });
+      const [registerTable] = useTable({
+        rowSelection: { type: 'checkbox' },
+        columns: columns,
+        api: getUnitList,
+        useSearchForm: true,
+        showTableSetting: true,
+        tableSetting: {
+          redo: false,
+          size: false,
+        },
+        beforeFetch: beforeFetch,
+        formConfig: getFormConfig(),
+        actionColumn: {
+          width: 160,
+          title: '操作',
+          dataIndex: 'action',
+          slots: { customRender: 'action' },
+          fixed: undefined,
+        },
+        showIndexColumn: false,
+        bordered: true,
+      });
+      const [register, { openModal }] = useModal();
+      const [addRegister, { openModal: openPopup }] = useModal();
+      function getTableAction() {
+        // 获取组件
+        const tableAction = unref(tableRef);
+        if (!tableAction) {
+          throw new Error('tableAction is null');
+        }
+        return tableAction;
+      }
+      // 请求之前处理参数
+      function beforeFetch(params) {
+        console.log(`params`, params);
+        for (let k in params) {
+          if (k !== 'page' && k !== 'pageSize' && k !== 'field' && k !== 'order') {
+            if (params[k] === '') {
+              delete params[k];
+            } else {
+              if (!params.filter) {
+                params.filter = {};
+              }
+              params.filter[k] = params[k];
+              delete params[k];
+            }
+          }
+        }
+        params.filter = JSON.stringify(params.filter);
+        params.offset = params.page;
+        params.limit = params.pageSize;
+        delete params.page;
+        delete params.pageSize;
+      }
+      // function handleSearch() {
+      //   state.isSerach = !state.isSerach;
+      // }
+
+      function addRole() {
+        popupData.title = '添加';
+        openPopup(true, {});
+      }
+
+      function handleEdit(record: EditRecordRow) {
+        currentEditKeyRef.value = record.id; // record.key
+        popupData.title = '编辑';
+        getUnit({ id: record.id }).then((res) => {
+          const data = res.row;
+          openPopup(true, data);
+        });
+      }
+
+      async function handleDelete(record: Recordable) {
+        console.log(record);
+        await deleteUnit({ id: record.id }).then((res) => {
+          console.log(res);
+          getTableAction().reload();
+          success('删除成功!');
+        });
+      }
+
+      function selectionChange() {
+        const keys = getTableAction().getSelectRowKeys();
+        if (keys.length) {
+          btn.disable_btn = false;
+        } else {
+          btn.disable_btn = true;
+        }
+      }
+      function rowClick() {
+        const keys = getTableAction().getSelectRowKeys();
+        if (keys.length) {
+          btn.disable_btn = false;
+        } else {
+          btn.disable_btn = true;
+        }
+      }
+
+      async function deleteBatches() {
+        const keys = await getTableAction().getSelectRowKeys();
+        const count = keys.length;
+        const ids = keys.toString();
+        if (!ids) {
+          return;
+        }
+        Modal.confirm({
+          title: '删除提示',
+          icon: createVNode(ExclamationCircleOutlined),
+          content: '确定删除选中的' + count + '项?',
+          okText: '确定',
+          okType: 'danger',
+          cancelText: '取消',
+          maskClosable: true,
+          async onOk() {
+            await deleteBatchesUnit({ ids }).then((res) => {
+              console.log(res);
+              getTableAction().reload();
+              success('删除成功!');
+              getTableAction().setSelectedRowKeys([]);
+            });
+          },
+          onCancel() {
+            console.log('Cancel');
+          },
+        });
+      }
+
+      async function saveData(params: any) {
+        const data = params.data;
+        const closeModel = params.closeModal;
+        if (!data.id) {
+          await addUnit(data).then((res) => {
+            console.log(res);
+            getTableAction().reload();
+            closeModel();
+            success('创建成功!');
+          });
+          console.log('----------add---');
+        } else {
+          await editUnit(data).then((res) => {
+            console.log(res);
+            getTableAction().reload();
+            closeModel();
+            success('修改成功!');
+          });
+          console.log('----------edit---');
+        }
+      }
+
+      // 导出
+      function defaultHeader({ filename, bookType }: ExportModalResult) {
+        // 默认Object.keys(data[0])作为header
+        const jsondata = getTableAction().getDataSource();
+        const excelData: object[] = [];
+        const options = [
+          '机关事业单位',
+          '国有企业',
+          '集体所有制',
+          '私营企业',
+          '股份制企业',
+          '有限合伙企业',
+          '联营企业',
+          '外商投资企业',
+          '个人独资企业',
+        ];
+        jsondata.map((item, i) => {
+          let data = {
+            No: 0,
+            id: '',
+            name: '',
+            legalman: '',
+            nature: '',
+            foundingtime: '',
+            businessNo: '',
+            job: '',
+            regMoney: '',
+            jobnum: '',
+          };
+          data.No = i + 1;
+          data.id = item.id;
+          data.name = item.name;
+          data.legalman = item.legalman;
+          data.nature = options[item.nature];
+          data.foundingtime = moment(item.foundingtime).format('YYYY-MM-DD');
+          data.businessNo = item.businessNo;
+          data.job = item.job;
+          data.regMoney = item.regMoney.toFixed(2);
+          data.jobnum = item.jobnum;
+          excelData.push(data);
+        });
+        jsonToSheetXlsx({
+          data: excelData,
+          header: {
+            No: 'No.',
+            id: 'ID',
+            name: '企业(单位)名称',
+            legalman: '法人代表',
+            nature: '单位性质',
+            foundingtime: '成立时间',
+            businessNo: '工商登记号',
+            job: '行业分类',
+            regMoney: '注册资金',
+            jobnum: '职工人数',
+          },
+          filename,
+          write2excelOpts: {
+            bookType,
+          },
+        });
+      }
+
+      function createActions(record: EditRecordRow): ActionItem[] {
+        return [
+          {
+            label: '编辑',
+            icon: 'ant-design:edit-outlined',
+            color: 'warning',
+            onClick: handleEdit.bind(null, record),
+          },
+          {
+            label: '删除',
+            color: 'error',
+            icon: 'ic:outline-delete-outline',
+            popConfirm: {
+              title: '是否确认删除',
+              confirm: handleDelete.bind(null, record),
+            },
+          },
+        ];
+      }
+
+      function tableRowClass(record) {
+        if (record.nature === 0) {
+          return 'rowClass';
+        }
+        return '';
+      }
+      return {
+        popupData,
+        tableRef,
+        registerTable,
+        addRole,
+        handleEdit,
+        deleteBatches,
+        createActions,
+        getTableAction,
+        rowClick,
+        selectionChange,
+        addRegister,
+        saveData,
+        defaultHeader,
+        openModal,
+        register,
+        tableRowClass,
+        ...toRefs(btn),
+      };
+    },
+  });
+</script>
+<style scoped>
+  .search-wrap {
+    display: flex;
+    width: 90%;
+    margin: 0 auto;
+    justify-content: flex-end;
+  }
+
+  .ant-calendar-picker {
+    width: 100%;
+  }
+  .vben-basic-table-header__toolbar {
+    justify-content: space-between;
+  }
+  .tool-btn-wrap {
+    flex: 1;
+  }
+  .tool-btn-wrap button {
+    margin-right: 5px;
+  }
+
+  ::v-deep table .rowClass {
+    background: #e9e173;
+    color: rgba(0, 0, 0, 0.85);
+  }
+
+  /* 鼠标悬停不变色 */
+  ::v-deep table tbody .rowClass:hover > td {
+    background-color: #e9e173 !important;
+  }
+</style>

+ 130 - 0
src/views/member/applyRecord/popup.vue

@@ -0,0 +1,130 @@
+<template>
+  <BasicModal width="800px" v-bind="$attrs" @register="register" @ok="confirm" :title="title">
+    <BasicForm @register="registerForm" :model="model" />
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, PropType, reactive, ref, toRefs } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { schemas } from './data';
+  import moment from 'moment';
+  interface PopupData {
+    title: string;
+  }
+  interface Role {
+    id: string | number;
+  }
+
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    props: {
+      popupData: {
+        type: Object as PropType<PopupData>,
+        default: () => {},
+      },
+    },
+    emits: ['register', 'saveData'],
+    setup(props, { emit }) {
+      const { createMessage } = useMessage();
+      const { error } = createMessage;
+      const role = reactive<Role>({
+        id: 0,
+      });
+      const popupData = props.popupData as PopupData;
+      const modelRef = ref({});
+
+      const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
+        labelWidth: 120,
+        schemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      //   const [register, { closeModal }] = useModalInner((data) => {
+      //     modelRef.value = data;
+
+      //
+      //   });
+      const [register, { closeModal }] = useModalInner((data) => {
+        resetFields();
+        if (data.technology === 1) {
+          data.technology = true;
+        } else {
+          data.technology = false;
+        }
+        if (data.quality === 1) {
+          data.quality = true;
+        } else {
+          data.quality = false;
+        }
+        if (data.foreignTrade === 1) {
+          data.foreignTrade = true;
+        } else {
+          data.foreignTrade = false;
+        }
+        setFieldsValue(data);
+        role.id = data.id;
+      });
+
+      async function confirm() {
+        try {
+          const data = await validate();
+          console.log(`确定`, data);
+          if (role.id) {
+            data.id = role.id;
+          } else {
+            role.id = 0;
+          }
+          if (data.technology) {
+            data.technology = 1;
+          } else {
+            data.technology = 0;
+          }
+          if (data.foreignTrade) {
+            data.foreignTrade = 1;
+          } else {
+            data.foreignTrade = 0;
+          }
+          if (data.quality) {
+            data.quality = 1;
+          } else {
+            data.quality = 0;
+          }
+          data.foundingtime = moment(data.foundingtime).format('YYYY-MM-DD');
+
+          const popupData = { closeModal, data };
+          emit('saveData', popupData);
+        } catch (err: any) {
+          error(err.errorFields[0].errors[0]);
+        }
+      }
+      return {
+        register,
+        schemas,
+        registerForm,
+        model: modelRef,
+        confirm,
+        ...toRefs(popupData),
+      };
+    },
+  });
+</script>
+<style lang="less">
+  .ant-form-item-label {
+    overflow: hidden;
+    text-align: center !important;
+    // white-space: pre-wrap !important;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  @media (max-width: 639px) {
+    .ant-form-item-label {
+      line-height: 2.5715 !important;
+      text-align: center !important;
+    }
+  }
+</style>

+ 91 - 0
src/views/member/member/CheckPopup.vue

@@ -0,0 +1,91 @@
+<template>
+  <BasicModal width="800px" v-bind="$attrs" @register="register" @ok="confirm" title="审核">
+    <BasicForm @register="registerForm" :model="model" />
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, reactive, ref } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { BasicForm, useForm } from '/@/components/Form/index';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { checkSchemas } from './data';
+  import moment from 'moment';
+  interface Role {
+    id: string | number;
+  }
+
+  export default defineComponent({
+    components: { BasicModal, BasicForm },
+    emits: ['register', 'saveData'],
+    setup(_, { emit }) {
+      const { createMessage } = useMessage();
+      const { error } = createMessage;
+      const modelRef = ref({});
+      const role = reactive<Role>({
+        id: 0,
+      });
+
+      const [registerForm, { setFieldsValue, resetFields, validate }] = useForm({
+        labelWidth: 120,
+        schemas: checkSchemas,
+        showActionButtonGroup: false,
+        actionColOptions: {
+          span: 24,
+        },
+      });
+      const [register, { closeModal }] = useModalInner((data) => {
+        resetFields();
+        role.id = data.id;
+        setFieldsValue(data);
+      });
+
+      async function confirm() {
+        try {
+          const data = await validate();
+          console.log(`确定`, data);
+          data.id = role.id;
+          if (!role.id) {
+            // 添加申请
+            data.isCheck = 0;
+          }
+          if (data.name) {
+            data.fromId = data.name.id;
+          } else {
+            data.fromId = data.unitName.id;
+          }
+          data.jointime = moment(data.jointime).format('YYYY-MM-DD');
+          delete data.relation;
+          delete data.relationUnit;
+          delete data.unitName;
+          delete data.name;
+          const popupData = { closeModal, data };
+          emit('saveData', popupData);
+        } catch (err: any) {
+          error(err.errorFields[0].errors[0]);
+        }
+      }
+      return {
+        register,
+        registerForm,
+        model: modelRef,
+        confirm,
+      };
+    },
+  });
+</script>
+<style scoped>
+  .ant-form-item-label {
+    overflow: hidden;
+    text-align: center !important;
+    /* white-space: pre-wrap !important; */
+    text-overflow: ellipsis;
+    white-space: nowrap;
+  }
+
+  @media (max-width: 639px) {
+    .ant-form-item-label {
+      line-height: 2.5715 !important;
+      text-align: center !important;
+    }
+  }
+</style>

+ 33 - 4
src/views/member/member/data.ts

@@ -51,7 +51,7 @@ export const columns: BasicColumn[] = [
   {
     title: '入会时间',
     dataIndex: 'jointime',
-    width: 150,
+    width: 160,
     customRender({ record }) {
       return moment(record.jointime).format('YYYY-MM-DD');
     },
@@ -60,7 +60,7 @@ export const columns: BasicColumn[] = [
   {
     title: '当年会费',
     dataIndex: 'nowdues',
-    width: 200,
+    width: 150,
     customRender({ record }) {
       if (!record.nowdues) {
         return h('span', { style: { color: 'red' } }, '未缴纳');
@@ -84,7 +84,7 @@ export const columns: BasicColumn[] = [
   {
     title: '当年参会率',
     dataIndex: 'nowmeeting',
-    width: 130,
+    width: 100,
     customRender({ record }) {
       return h('span', {}, record.nowmeeting + '%');
     },
@@ -93,7 +93,7 @@ export const columns: BasicColumn[] = [
   {
     title: '去年参会率',
     dataIndex: 'lastmeeting',
-    width: 130,
+    width: 100,
     customRender({ record }) {
       return h('span', {}, record.lastmeeting + '%');
     },
@@ -362,3 +362,32 @@ export const schemas: FormSchema[] = [
     required: true,
   },
 ];
+// =================check popup================================
+export const checkSchemas: FormSchema[] = [
+  {
+    field: 'checkInfo',
+    component: 'InputTextArea',
+    label: '审批信息',
+    labelWidth: adaptWidth.adminLabelWidth,
+    defaultValue: 0,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+  },
+  {
+    field: 'isCheck',
+    label: '状态',
+    component: 'RadioButtonGroup',
+    defaultValue: 0,
+    componentProps: {
+      options: [
+        { label: '通过', value: 1 },
+        { label: '拒绝', value: 0 },
+      ],
+    },
+    labelWidth: adaptWidth.adminLabelWidth,
+    colProps: {
+      span: adaptWidth.elContainer,
+    },
+  },
+];

+ 90 - 9
src/views/member/member/index.vue

@@ -5,6 +5,16 @@
     :canExpan="false"
     helpMessage="会员管理"
   >
+    <a-button
+      v-for="tab in tabs"
+      :key="tab.isCheck"
+      type="default"
+      class="mr-2"
+      :id="current_tab.isCheck === tab.isCheck ? 'current-btn' : ''"
+      @click="handleTab(tab)"
+    >
+      {{ tab.name }}
+    </a-button>
     <BasicTable
       ref="tableRef"
       @register="registerTable"
@@ -33,12 +43,14 @@
     </BasicTable>
     <ExpExcelModel @register="register" @success="defaultHeader" />
     <Popup @register="addRegister" :popupData="popupData" @saveData="saveData" />
+    <CheckPopup @register="checkRegister" @saveData="saveCheckData" />
   </CollapseContainer>
 </template>
 <script lang="ts">
   import { defineComponent, reactive, ref, toRefs, unref, createVNode } from 'vue';
   import { CollapseContainer } from '/@/components/Container/index';
   import Popup from './popup.vue';
+  import CheckPopup from './CheckPopup.vue';
   import { useMessage } from '/@/hooks/web/useMessage';
   import { useModal } from '/@/components/Modal';
   import { jsonToSheetXlsx, ExpExcelModel, ExportModalResult } from '/@/components/Excel';
@@ -67,13 +79,20 @@
     title: string;
   }
 
-  interface Btn {
+  interface Tab {
+    isCheck: number;
+    name: string;
+  }
+
+  interface State {
+    tabs: Tab[];
+    current_tab: Tab;
     disable_btn: boolean;
   }
 
   export default defineComponent({
     name: 'Member',
-    components: { CollapseContainer, BasicTable, TableAction, Popup, ExpExcelModel },
+    components: { CollapseContainer, BasicTable, TableAction, CheckPopup, Popup, ExpExcelModel },
     setup() {
       const { createMessage } = useMessage();
       const { success /*, error*/ } = createMessage;
@@ -81,7 +100,12 @@
       const popupData = reactive<PopupData>({
         title: '添加',
       });
-      const btn = reactive<Btn>({
+      const state = reactive<State>({
+        tabs: [
+          { isCheck: 1, name: '会员列表' },
+          { isCheck: 0, name: '待审核' },
+        ],
+        current_tab: { isCheck: 1, name: '会员列表' },
         disable_btn: true,
       });
       const [registerTable] = useTable({
@@ -99,7 +123,7 @@
         },
         formConfig: getFormConfig(),
         actionColumn: {
-          width: 160,
+          width: 180,
           title: '操作',
           dataIndex: 'action',
           slots: { customRender: 'action' },
@@ -110,6 +134,7 @@
       });
       const [register, { openModal }] = useModal();
       const [addRegister, { openModal: openPopup }] = useModal();
+      const [checkRegister, { openModal: openCheckPopup }] = useModal();
       function getTableAction() {
         // 获取组件
         const tableAction = unref(tableRef);
@@ -120,6 +145,8 @@
       }
       // 请求之前处理参数
       function beforeFetch(params) {
+        // 通过tab获取不同的数据
+        params.isCheck = state.current_tab.isCheck;
         for (let k in params) {
           if (k !== 'page' && k !== 'pageSize' && k !== 'field' && k !== 'order') {
             if (params[k] === '') {
@@ -150,6 +177,11 @@
         // tableData.result = result;
       }
 
+      function handleTab(tab) {
+        state.current_tab = tab;
+        getTableAction().reload();
+      }
+
       function addRole() {
         popupData.title = '添加';
         openPopup(true, { family: [] });
@@ -172,20 +204,25 @@
         });
       }
 
+      function handleCheck(record: Recordable) {
+        console.log(record);
+        openCheckPopup(true, {});
+      }
+
       function selectionChange() {
         const keys = getTableAction().getSelectRowKeys();
         if (keys.length) {
-          btn.disable_btn = false;
+          state.disable_btn = false;
         } else {
-          btn.disable_btn = true;
+          state.disable_btn = true;
         }
       }
       function rowClick() {
         const keys = getTableAction().getSelectRowKeys();
         if (keys.length) {
-          btn.disable_btn = false;
+          state.disable_btn = false;
         } else {
-          btn.disable_btn = true;
+          state.disable_btn = true;
         }
       }
 
@@ -241,6 +278,17 @@
         }
       }
 
+      async function saveCheckData(params: any) {
+        const data = params.data;
+        const closeModel = params.closeModal;
+        await editUser(data).then((res) => {
+          console.log(res);
+          getTableAction().reload();
+          closeModel();
+          success('修改成功!');
+        });
+      }
+
       // 导出
       function defaultHeader({ filename, bookType }: ExportModalResult) {
         // 默认Object.keys(data[0])作为header
@@ -297,6 +345,32 @@
       }
 
       function createActions(record: EditRecordRow): ActionItem[] {
+        if (record.ischeck === 0) {
+          // 如果不是正式会员添加审核操作
+          return [
+            {
+              label: '审核',
+              icon: 'ant-design:check-circle-outlined',
+              color: 'success',
+              onClick: handleCheck.bind(null, record),
+            },
+            {
+              label: '编辑',
+              icon: 'ant-design:edit-outlined',
+              color: 'warning',
+              onClick: handleEdit.bind(null, record),
+            },
+            {
+              label: '删除',
+              color: 'error',
+              icon: 'ic:outline-delete-outline',
+              popConfirm: {
+                title: '是否确认删除',
+                confirm: handleDelete.bind(null, record),
+              },
+            },
+          ];
+        }
         return [
           {
             label: '编辑',
@@ -317,6 +391,7 @@
       }
       return {
         popupData,
+        handleTab,
         tableRef,
         registerTable,
         addRole,
@@ -327,16 +402,22 @@
         rowClick,
         selectionChange,
         addRegister,
+        checkRegister,
         saveData,
+        saveCheckData,
         defaultHeader,
         openModal,
         register,
-        ...toRefs(btn),
+        ...toRefs(state),
       };
     },
   });
 </script>
 <style scoped>
+  #current-btn {
+    color: #3785cc;
+    border: 1px solid #3785cc;
+  }
   .ant-calendar-picker {
     width: 100%;
   }

+ 4 - 0
src/views/member/member/popup.vue

@@ -83,6 +83,10 @@
           const data = await validate();
           console.log(`确定`, data);
           data.id = role.id;
+          if (!role.id) {
+            // 添加申请
+            data.isCheck = 0;
+          }
           if (data.name) {
             data.fromId = data.name.id;
           } else {