Kaynağa Gözat

组件资源审核接口对接中

sujunling 2 yıl önce
ebeveyn
işleme
5f1d96c9be

BIN
.DS_Store


+ 1 - 1
src/views/assembly/index.vue

@@ -31,7 +31,7 @@ export default defineComponent({
   setup() {
     var menu = ref({});
     var assemblylist = ref([]);
-    const action = ref(0)
+    const action = ref(-1)
     const actionName = ref('');
     var assemblyType = ref({
       // '地图基础功能': [],

+ 13 - 15
src/views/dataAdmin/assembly/MapSourceModal.vue

@@ -1,33 +1,29 @@
 
 <template>
-  <BasicModal
-    width="1200px"
-    v-bind="$attrs"
-    @register="registerModal"
-    :title="getTitle"
-    @ok="handleSubmit"
-  >
+  <BasicModal width="1200px" v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
     <div style="height: 60vh" class="res-form-container">
       <a-tabs v-model:activeKey="activeKey" class="res-a-tabs">
         <a-tab-pane key="1" tab="地图资源信息">
           <!-- <BasicForm @register="registerForm"></BasicForm> -->
-          <source-detail ref="refSourceDetail" @RtnMain="RtnMain" :formData="formData" :isUpdate="isUpdate"></source-detail>
+          <source-detail ref="refSourceDetail" @RtnMain="RtnMain" :formData="formData"
+            :isUpdate="isUpdate"></source-detail>
         </a-tab-pane>
         <a-tab-pane key="2" tab="流程信息" force-render>
-          <div class="tab2"></div>
+          <FlowStep :flowTitle="'文件资源上传'" :flowCode="'20220523001'"></FlowStep>
         </a-tab-pane>
       </a-tabs>
     </div>
   </BasicModal>
 </template>
-  <script lang="ts">
+<script lang="ts">
 import { defineComponent, ref, computed, unref, reactive, onMounted } from 'vue';
 import { BasicModal, useModalInner } from '/@/components/Modal';
-import { BasicForm, useForm } from '/@/components/Form/index';
-import { formSchema } from './map.data';
+import { BasicForm } from '/@/components/Form/index';
 import { BasicTree } from '/@/components/Tree';
 import { PlusOutlined } from '@ant-design/icons-vue';
 import SourceDetail from './SourceDetail.vue';
+import FlowStep from './flowStep/index.vue';
+
 
 export default defineComponent({
   name: 'AccountModal',
@@ -36,6 +32,7 @@ export default defineComponent({
     BasicForm,
     BasicTree,
     PlusOutlined,
+    FlowStep,
     SourceDetail,
     VNodes: (_, { attrs }) => {
       return attrs.vnodes;
@@ -52,7 +49,7 @@ export default defineComponent({
     const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
       setModalProps({ confirmLoading: false });
       isUpdate.value = !!data?.isUpdate;
-      if(isUpdate.value) formData.value = data.record
+      if (isUpdate.value) formData.value = data.record
     });
     const getTitle = computed(() => (!unref(isUpdate) ? '新增组件资源' : '编辑组件资源'));
 
@@ -63,7 +60,7 @@ export default defineComponent({
       emit('success')
     }
 
-    onMounted(() => {});
+    onMounted(() => { });
     return {
       ...ref(data),
       registerModal,
@@ -77,7 +74,7 @@ export default defineComponent({
   },
 });
 </script>
-  <style scoped lang="less">
+<style scoped lang="less">
 :deep(.vben-basic-tree) {
   width: 100% !important;
 }
@@ -89,6 +86,7 @@ export default defineComponent({
 :deep(.is-flod) {
   display: none !important;
 }
+
 :deep(.res-form-container) {
   .res-a-tabs {
     margin-top: 61px !important;

+ 3 - 65
src/views/dataAdmin/assembly/SourceDetail.vue

@@ -38,12 +38,12 @@
               </a-select>
             </a-form-item>
           </a-col>
-          <a-col :span="9" class="form-col">
+          <!-- <a-col :span="9" class="form-col">
             <a-form-item ref="sourcetable" label="预览图名称" name="sourcetable" class="label-form-item">
               <a-input v-model:value="formState.publiccurl" />
             </a-form-item>
-          </a-col>
-          <a-col :span="6" class="form-col">
+          </a-col> -->
+          <a-col :span="9" class="form-col">
             <a-form-item ref="thumbnail" label="缩略图" name="thumbnail" class="label-form-item">
               <a-upload :custom-request="customUpload" v-model:file-list="fileList">
                 <a-button style="background-color: #0671dd; color: #fff; border-radius: 4px">
@@ -55,68 +55,6 @@
           </a-col>
         </a-row>
       </div>
-
-      <!-- <div class="compontents">
-        <div class="title">描述信息</div>
-        <a-row class="form-container">
-
-
-
-
-
-
-
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="source" label="发布日期" name="source" class="label-form-item">
-              <a-date-picker v-model:value="formState.publishtime" format="YYYY-MM-DD hh:mm:ss" style="width: 100%"
-                disabled show-time>
-                <template #renderExtraFooter>extra footer</template>
-              </a-date-picker>
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="source" label="发布者" name="source" class="label-form-item">
-              <a-input v-model:value="formState.publisher" disabled />
-            </a-form-item>
-          </a-col>
-
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="updatetype" label="更新方式" name="updatetype" class="label-form-item">
-              <a-input v-model:value="formState.updateType" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="12" class="form-col">
-            <a-form-item ref="updatetime" label="更新时间" name="updatetime" class="label-form-item">
-              <a-date-picker v-model:value="formState.updatetime" format="YYYY-MM-DD hh:mm:ss" style="width: 100%"
-                disabled show-time>
-                <template #renderExtraFooter>extra footer</template>
-              </a-date-picker>
-            </a-form-item>
-          </a-col>
-
-
-          <a-col :span="6" class="form-col">
-            <a-form-item ref="public" label="是否公开" name="public" class="label-form-item">
-              <a-switch checked-children="" un-checked-children="" v-model:checked="formState.public" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="6" class="form-col">
-            <a-form-item ref="share" label="是否共享" name="share" class="label-form-item">
-              <a-switch checked-children="" un-checked-children="" v-model:checked="formState.share" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="6" class="form-col">
-            <a-form-item ref="externalApply" label="是否外部申请" name="externalApply" class="label-form-item">
-              <a-switch checked-children="" un-checked-children="" v-model:checked="formState.externalApply" />
-            </a-form-item>
-          </a-col>
-          <a-col :span="6" class="form-col">
-            <a-form-item ref="searched" label="是否展示" name="searched" class="label-form-item">
-              <a-switch checked-children="" un-checked-children="" v-model:checked="formState.searched" />
-            </a-form-item>
-          </a-col>
-        </a-row>
-      </div> -->
     </a-form>
   </div>
 </template>

+ 67 - 0
src/views/dataAdmin/assembly/flowStep/flowData.ts

@@ -0,0 +1,67 @@
+export const columns = [
+    {
+      title: '资源类型',
+      dataIndex: 'resourceNumber',
+      width: 100,
+    },
+    {
+        title: '资源名称',
+        dataIndex: 'resourceName',
+        width: 100,
+      },
+      {
+        title: '发布人',
+        dataIndex: 'publisher',
+        width: 100,
+      },
+      {
+        title: '发布时间',
+        dataIndex: 'publisherTime',
+        width: 100,
+      },
+      {
+        title: '审核人',
+        dataIndex: 'reviewer',
+        width: 100,
+      },
+      {
+        title: '审核时间',
+        dataIndex: 'reviewTime',
+        width: 100,
+      },
+      {
+        title: '审核状态',
+        dataIndex: 'auditStatus',
+        width: 100,
+      },
+      {
+        title: '审核意见',
+        dataIndex: 'auditStatus',
+        width: 100,
+      },
+];
+
+export const searchFormSchema = [
+  {
+    field: 'resourceName',
+    label: '关键字',
+    component: 'Input',
+    colProps: { span: 6 },
+    componentProps: {
+      maxLength: 255,
+    },
+  },
+  {
+    field: 'auditStatus',
+    label: '审核状态',
+    component: 'Select',
+    componentProps: {
+      options: [
+        { label: '审核不通过', value: 2 },
+        { label: '审核中', value: 1 },
+        { label: '审核通过', value: 0 },
+      ],
+    },
+    colProps: { span: 6 },
+  },
+]

+ 101 - 0
src/views/dataAdmin/assembly/flowStep/handleLog.vue

@@ -0,0 +1,101 @@
+<!--
+ * @Author: tengmingxue 1473375109@qq.com
+ * @Date: 2023-08-31 15:17:20
+ * @LastEditors: tengmingxue 1473375109@qq.com
+ * @LastEditTime: 2023-09-22 17:18:58
+ * @FilePath: \xld-gis-admin\src\views\dataAdmin\dataAdmin\flowStep\handleLog.vue
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+-->
+<template>
+  <div class="handle-log-table">
+    <BasicTable @register="registerTable" :clickToRowSelect="false">
+      <template #pdate="{ record }">
+        <Tag :color="'red'">
+          {{ record.handlerTime ? moment(record.handlerTime).format('YYYY-MM-DD HH:mm:ss') : '' }}
+        </Tag>
+      </template>
+      <template #status="{ record }">
+        <Tag :style="`color:${record.status === 3 || record.status === 3 ? 'red' : '#05B069'};`">
+          {{
+            record.status === 0
+              ? '待审核'
+              : record.status === 1
+              ? '审核通过'
+              : record.status === 2
+              ? '审核不通过'
+              : record.status === 3
+              ? '被驳回'
+              : '未提交'
+          }}
+        </Tag>
+      </template>
+    </BasicTable>
+  </div>
+</template>
+  <script lang="ts">
+import { defineComponent, onBeforeMount,onMounted,ref,watch } from 'vue';
+import { BasicTable, useTable, TableAction } from '/@/components/Table';
+import { columns } from './table.data';
+import { RoleEnum } from '/@/enums/roleEnum';
+import { Authority } from '/@/components/Authority';
+import { useMessage } from '/@/hooks/web/useMessage';
+import { Switch, Popconfirm } from 'ant-design-vue';
+
+import Moment from 'moment';
+const props = {
+  flowStatus:{type:String,default:'1'}  //流程状态 1,新增  2 审核
+}
+export default defineComponent({
+  name: 'RoleManagement',
+  components: { BasicTable, TableAction, Authority, Switch, Popconfirm },
+  props,
+  setup(props) {
+    const flowStatus = ref(props.flowStatus)
+    const checkInfo = [
+        {flowStep:'开始',handleDept:'发电组',handler:'张山',handlerTime:'2013-09-02 11:23:56',status:1,suggestion:'不按章程来',illustrate:'处理'},
+        {flowStep:'审核1',handleDept:'发电组',handler:'张山',handlerTime:'2013-09-02 11:23:56',status:2,suggestion:'不按章程来',illustrate:'处理'}
+    ]
+    const checkList = ref([]);
+    const [registerTable] = useTable({
+      //api: list,
+      dataSource:checkList,
+      columns,
+      useSearchForm: false,
+      showTableSetting: false,
+      bordered: true,
+      showIndexColumn: true,
+      pagination:false,
+    //   pagination: {
+    //     hideOnSinglePage: false,
+    //   },
+    });
+    const moment = Moment;
+    const { createMessage } = useMessage();
+    watch(()=>props.flowStatus,(val)=>{
+      flowStatus.value = val
+      checkList.value = flowStatus.value === '1' ? [] : checkInfo as any;
+    })
+    onMounted(async () => {
+      checkList.value = flowStatus.value === '1' ? [] : checkInfo as any;
+    });
+    onBeforeMount(async () => {});
+
+    return {
+      moment,
+      flowStatus,
+      checkInfo,
+      checkList,
+      createMessage,
+      registerTable,
+      RoleEnum,
+    };
+  },
+});
+</script>
+  <style lang="less" scoped>
+.handle-log-table {
+  height: 100%;
+}
+</style>
+
+  

+ 331 - 0
src/views/dataAdmin/assembly/flowStep/index.vue

@@ -0,0 +1,331 @@
+<!--
+ * @Author: tengmingxue 1473375109@qq.com
+ * @Date: 2023-08-30 17:25:03
+ * @LastEditors: tengmingxue 1473375109@qq.com
+ * @LastEditTime: 2023-09-25 16:25:12
+ * @FilePath: \xld-gis-admin\src\views\dataAdmin\dataAdmin\flowStep\index.vue
+ * @Description: 流程图表
+-->
+<template>
+  <div class="flow-chart">
+    <div class="flow-title">{{ flowTitle }}流程信息</div>
+    <div class="flow-code">
+      <span>流程编号:</span>
+      <span>{{ flowCode }}</span>
+    </div>
+    <div class="legend">
+      <template v-for="legend in legends" :key="legend.key">
+        <div class="item-list">
+          <span class="item-span-legend" :style="`background-color:${legend.color};`"></span>
+          <span class="item-span">{{ legend.name }}</span>
+        </div>
+      </template>
+    </div>
+    <div class="flow">
+      <a-steps>
+        <template v-for="(step, index) in steps" :key="step.xh">
+          <!-- status 1:已完成,2:进行中,3:驳回,0:未开始 -->
+          <a-step :status="status[step.status]">
+            <template #title>
+              <div class="step-title">{{ step.stepName }}</div>
+            </template>
+            <template #icon>
+              <div class="cicle-out">
+                <div
+                  class="cicle"
+                  :style="`border: 2px solid ${colors[step.status]};color:${colors[step.status]};`"
+                  >{{ index + 1 }}</div
+                >
+              </div>
+            </template>
+            <template #description>
+              <!-- <div class="desc-step-name">{{ step.stepName }}</div> -->
+              <div class="desc-handler">
+                <template v-for="user in step.handlers" :key="user.id">
+                  <span class="handler-name" :style="`background-color:${colors[user.status]};`" :title="user.handler">{{
+                    user.handler
+                  }}</span>
+                </template>
+              </div>
+            </template>
+          </a-step>
+        </template>
+      </a-steps>
+    </div>
+    <div class="log-table">
+      <handle-log :flowStatus="flowStatus"></handle-log>
+    </div>
+  </div>
+</template>
+<script>
+import { defineComponent, ref, watch, reactive, onMounted, nextTick, toRefs } from 'vue';
+// 引入封装的table
+import { BasicTable, TableAction, useTable } from '/@/components/Table';
+// 引入封装的权限识别
+import { Authority } from '/@/components/Authority';
+// 引入搜索框和表格表头
+import { columns, searchFormSchema } from './flowData';
+// 引入删除
+import { useBatchDelete } from '/@/hooks/web/useBatchDelete';
+import { message, Popconfirm } from 'ant-design-vue';
+import { useMessage } from '/@/hooks/web/useMessage';
+import HandleLog from './handleLog.vue';
+import { session } from '/@/utils/Memory.js';
+import { getFlowConfigByBusinessName } from '/@/api/resource/examine';
+import { getAccountList } from '/@/api/system/system';
+const props = {
+  flowTitle: { type: String, require: true },
+  flowCode: { type: String, default: '' },
+  flowStatus: { type: String, default: '1' }, //流程状态 1,新增  2 审核
+};
+export default defineComponent({
+  components: { BasicTable, Authority, Popconfirm, TableAction, HandleLog },
+  props,
+  setup(props, { emit }) {
+    const data = reactive({
+      flowTitle: ref(props.flowTitle),
+      flowCode: ref(props.flowCode),
+      flowName: props.flowTitle,
+      flowStatus: props.flowStatus, //流程状态 1,新增  2 审核
+      sysUserInfo: {},
+      legends: [
+        { key: 1, name: '已完成', color: '#67C23A' },
+        { key: 2, name: '进行中', color: '#2D74E7' },
+        { key: 3, name: '驳回', color: '#E6A23C' },
+        { key: 4, name: '未开始', color: '#989898' },
+      ],
+      colors: ['#989898', '#67C23A', '#2D74E7', '#E6A23C'],
+      status: ['wait', 'finish', 'process', 'back'],
+      steps: [
+        //status 1:已完成,2:进行中,3:驳回,0:未开始
+        // {
+        //   xh: 1,
+        //   stepName: '地图资源上传',
+        //   handlers: [{ handler: '张三', id: '1', status: '1' }],
+        //   status: '1',
+        // },
+        // { xh: 6, stepName: '完成', handlers: [], status: '0' },
+      ],
+    });
+    const { createMessage } = useMessage();
+    /**
+     * 获取系统人员信息,并存为字典
+     */
+    const queryAllUserInfos = async () => {
+      const res = await getAccountList({ page: 1, pageSize: 999 });
+      if (res) {
+        res.items.map((item) => {
+          data.sysUserInfo[item['EMPLOYEE_ID']] = item['NAME'];
+        });
+      }
+      console.log('人员信息',data.sysUserInfo)
+    };
+    const queryData = async () => {
+      const res = await getFlowConfigByBusinessName(data.flowName);
+      console.log('地图资源上传配置信息', res);
+      if (res) {
+        setFlowNodes(res);
+      } else {
+        createMessage.error(`获取流程【${data.flowName}】配置信息异常!请联系管理员检查!`);
+      }
+    };
+
+    const setFlowNodes = async (flow) => {
+      if (!flow?.flowInfo || !flow?.flowNode || !flow?.flowNodePerson) {
+        createMessage.error(`获取流程【${data.flowName}】配置信息异常!请联系管理员检查!`);
+        return;
+      }
+      if (flow?.flowNode.length === 0) {
+        createMessage.error(`流程【${data.flowName}】未配置审核步骤!请联系管理员配置!`);
+        return;
+      }
+      const user = session.getItem('userInfo');
+      data.steps = [
+        {
+          xh: 0,
+          stepName: flow.flowInfo['FLOWNAME'],
+          handlers: [
+            { handler: user['EMPLOYEE']['NAME'], id: user['EMPLOYEE']['EMPLOYEE_ID'], status: '1' },
+          ],
+          status: '1', //status 1:已完成,2:进行中,3:驳回,0:未开始
+        },
+      ];
+      const step = getFlowNodes(flow.flowNode, flow.flowNodePerson);
+      console.log('步骤',step)
+      if(step) data.steps.push(...step)
+      const length = step.length
+      //最后一步默认完成
+      data.steps.push({ xh: length+2, stepName: '完成', handlers: [], status: '0' })
+    };
+
+    const getFlowNodes = (flowNode, flowNodePerson) => {
+      let index = 1;
+      let steps = [];
+      function getNextNode(nodes, id) {
+        const node = flowNode.find((item) => item['PRENODEID'] === id);
+        if (node) {
+          const eximPersons = flowNodePerson.filter((item) => item['FLOWNODEID'] === node['ID']);
+          let handlers = [];
+          eximPersons.map((item) => {
+            handlers.push({
+              handler: data.sysUserInfo[item['USERID']],
+              id: item['USERID'],
+              status: '0',
+            });
+          });
+          steps.push({
+            xh: (index = index + 1),
+            stepName: node['NODENAME'],
+            handlers: handlers,
+            status: '0',
+          });
+          getNextNode(nodes, node['ID']);   //递归
+        }
+        else return false;
+      }
+      getNextNode(flowNode,'')
+      return steps
+    };
+
+    // 生命周期函数
+    onMounted(() => {
+      queryAllUserInfos();
+      queryData();
+    });
+
+    return {
+      ...toRefs(data),
+      createMessage,
+      queryData,
+      setFlowNodes,
+      getFlowNodes,
+    };
+  },
+});
+</script>
+  
+  <style lang="scss" scoped>
+.flow-chart {
+  height: 100%;
+  .flow-title {
+    width: 100%;
+    height: 40px;
+    line-height: 40px;
+    text-align: center;
+    font-family: Source Han Sans CN;
+    font-size: 20px;
+    font-weight: 300;
+    letter-spacing: 0px;
+    color: #2d74e7;
+  }
+  .flow-code {
+    height: 20px;
+    text-align: center;
+    font-family: Source Han Sans CN;
+    font-size: 16px;
+    font-weight: 300;
+    letter-spacing: 0px;
+    color: rgba(0, 0, 0, 0.6);
+    margin-bottom: 20px;
+  }
+
+  .legend {
+    position: absolute;
+    right: 0;
+    top: 53px;
+    height: 100px;
+    width: 72px;
+    .item-list {
+      margin: 4px 0;
+      display: flex;
+      align-items: center;
+      .item-span-legend {
+        display: flex;
+        height: 10px;
+        width: 10px;
+        margin-right: 10px;
+      }
+      .item-span {
+        font-family: Source Han Sans CN;
+        font-size: 12px;
+        font-weight: 300;
+        line-height: normal;
+        letter-spacing: 0px;
+        color: #333333;
+      }
+    }
+  }
+
+  .flow {
+    height: 140px;
+    width: 100%;
+    padding: 0 20px;
+
+    :deep(.ant-steps) {
+      height: 100%;
+      .ant-steps-item {
+        margin-right: 0px !important;
+        height: 100%;
+        .ant-steps-item-container {
+          margin-top: 20px;
+          height: 100%;
+          .ant-steps-item-content {
+            position: absolute;
+            height: 100%;
+            width: 100%;
+            margin-top: 20px;
+            left: 16px;
+            .ant-steps-item-title {
+              .step-title {
+                position: absolute;
+                top: -33px;
+                left: -16px;
+              }
+            }
+            .ant-steps-item-description {
+              margin-left: -16px;
+              .desc-step-name {
+                margin-top: 4px;
+              }
+              .desc-handler {
+                margin-top: 38px;
+                .handler-name {
+                  display: flex;
+                  float: left;
+                  height: 36px;
+                  line-height: 36px;
+                  width: 44px;
+                  margin-right: 3px;
+                  justify-content: center;
+                  color: #fff;
+                  background-color: #2d74e7;
+                  border-radius: 6px;
+                }
+              }
+            }
+          }
+          .ant-steps-item-icon {
+            margin-top: 20px;
+            margin-right: 0px;
+            .cicle-out {
+              height: 40px;
+              width: 40px;
+              .cicle {
+                height: 30px;
+                width: 30px;
+                line-height: 24px;
+                border-radius: 50%;
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+
+  .log-table {
+    height: calc(100% - 374px);
+  }
+}
+</style>
+  

+ 56 - 0
src/views/dataAdmin/assembly/flowStep/table.data.ts

@@ -0,0 +1,56 @@
+import { BasicColumn } from '/@/components/Table';
+import { FormSchema } from '/@/components/Table';
+import { RoleEnum } from '/@/enums/roleEnum';
+export enum KeysTypeEnum {
+  DISABLED = 'disabled',
+  ENABLED = 'enabled',
+}
+
+export const RoleMenuDictEnum: Recordable<{ key: string; keyType: KeysTypeEnum }> = {
+  [RoleEnum.PLATFORM_ADMIN]: { key: 'enabled_platform_admin_auth', keyType: KeysTypeEnum.ENABLED },
+  [RoleEnum.SYS_ADMIN]: { key: 'enabled_sysadmin_auth', keyType: KeysTypeEnum.ENABLED },
+  [RoleEnum.TENANT_ADMIN]: { key: 'disabled_tenant_auth', keyType: KeysTypeEnum.DISABLED },
+  [RoleEnum.CUSTOMER_USER]: { key: 'disabled_tenant_auth', keyType: KeysTypeEnum.DISABLED },
+};
+
+/**
+ * 列表显示信息
+*/
+export const columns: BasicColumn[] = [
+  {
+    title: '流程环节',
+    dataIndex: 'flowStep',
+    width: 100,
+  },
+  {
+    title: '处理岗位',
+    dataIndex: 'handleDept',
+    width: 110,
+  },
+  {
+    title: '处理人',
+    dataIndex: 'handler',
+    width: 110,
+  },
+  {
+    title: '处理时间',
+    dataIndex: 'handlerTime',
+    width: 160,
+    slots: { customRender: 'pdate' },
+  },
+  {
+    title: '处理状态',
+    dataIndex: 'status',
+    width: 90,
+    slots: { customRender: 'status' },
+  },
+  {
+    title: '处理意见',
+    dataIndex: 'suggestion',
+  },
+  {
+    title: '说明',
+    dataIndex: 'illustrate',
+  }
+];
+