XiaXxxxxx 2 gadi atpakaļ
vecāks
revīzija
68f6551fcc

+ 0 - 0
src/api/sys/tag.ts


+ 2 - 2
src/mock/menu.json

@@ -1128,13 +1128,13 @@
                         }
                     },
                     {
-                        "id": "246ddwec-d414-4c38-85a0-86104dsdb172",
+                        "id": "248ddwec-d414-4c38-85a0-86104dsdb172",
                         "createTime": "2021-11-16 19:17:48",
                         "updateTime": "2021-12-20 11:46:16",
                         "name": "标签管理",
                         "parentId": "a8ffa8c5-637e-471b-a9e6-b60cebe95713",
                         "children": [],
-                        "path": "/system/zhiwei",
+                        "path": "/system/tag",
                         "type": "SYSADMIN",
                         "permission": "system:tag:view",
                         "sort": 2,

+ 1 - 1
src/mock/menu_get_ids.json

@@ -11,7 +11,7 @@
     "4ce99298-d100-4479-ac61-3f6762ade2c4",
     "50843259-c2de-442a-9da2-9a17f161a970",
     "246ddwec-d414-4c38-85a0-86104d21b172",
-    "246ddwec-d414-4c38-85a0-86104dsdb172",
+    "248ddwec-d414-4c38-85a0-86104dsdb172",
     "8a8ed060-c22b-425c-93dc-d2bca8249e92",
     "dccbd1ba-f506-4837-ada1-6675261471e8",
     "7cda452a-a8f9-43f3-8fb1-974f169244a7",

+ 0 - 225
src/views/systemAdmin/system/tag/RoleDrawer.vue

@@ -1,225 +0,0 @@
-<template>
-  <BasicDrawer v-bind="$attrs" @register="registerDrawer" showFooter :title="getTitle" width="500px" @ok="handleSubmit">
-    <BasicForm @register="registerForm">
-      <template #menu>
-        <Spin :spinning="spinning"></Spin>
-      </template>
-    </BasicForm>
-  </BasicDrawer>
-</template>
-<script lang="ts">
-import { defineComponent, ref, computed, unref, nextTick } from 'vue';
-import { BasicForm, useForm } from '/@/components/Form/index';
-import { formSchema, KeysTypeEnum, RoleMenuDictEnum } from './role.data';
-import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
-import { BasicTree, TreeItem } from '/@/components/Tree';
-import { useMessage } from '/@/hooks/web/useMessage';
-const { t } = useI18n(); //加载国际化
-// 加载菜单数据
-import { getMenuList } from '/@/api/sys/menu';
-import { useI18n } from '/@/hooks/web/useI18n';
-import { MenuRecord } from '/@/api/sys/model/menuModel';
-import { saveOrUpdateRoleInfoWithMenu } from '/@/api/system/system';
-import { findDictItemByCode } from '/@/api/system/dict';
-import { RoleEnum } from '/@/enums/roleEnum';
-import { Spin } from 'ant-design-vue';
-import { useUserStore } from '/@/store/modules/user';
-import { session } from '/@/utils/Memory';
-import { v4 as uuidv4 } from 'uuid';
-
-
-type TreeData = MenuRecord & TreeItem;
-
-export default defineComponent({
-  name: 'RoleDrawer',
-  components: { BasicDrawer, BasicForm, BasicTree, Spin },
-  emits: ['success', 'register'],
-  setup(_, { emit }) {
-    const isUpdate = ref<boolean>(true);
-    const treeData = ref<TreeData[]>([]);
-    const roleMenus = ref<string[]>([]);
-    const roleId = ref<string>('');
-    const checked = ref<string[]>([]); //需要选中的节点
-    const spinning = ref(false);
-    var nowRole = null;
-
-    const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
-      labelWidth: 100,
-      schemas: formSchema,
-      showActionButtonGroup: false,
-    });
-
-    const transformName = (data: TreeData[]) => {
-      return data.map((item) => {
-        item.name = t(item.name);
-        if (item.children && item.children.length) {
-          item.children = transformName(item.children as unknown as TreeData[]);
-        }
-        return item;
-      });
-    };
-
-    const userStore = useUserStore();
-    const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
-      resetFields();
-      roleId.value = '';
-      // 在打开弹窗时清除所有选择的菜单
-      isUpdate.value = data.isUpdate;
-      const roleType = data?.record?.roleType || userStore.getRoleList.at(0);
-
-      try {
-        spinning.value = true;
-        // 需要在setFieldsValue之前先填充treeData,否则Tree组件可能会报key not exist警告
-
-        if (!unref(treeData).length) {
-          // 获取全部的菜单
-          const menuListModel = await getMenuList();
-          treeData.value = transformName(menuListModel as unknown as TreeData[]);
-        }
-
-        const keys = await getPermissionByRole(roleType);
-        const { keyType } = RoleMenuDictEnum[roleType];
-        treeData.value = getPermissionTreeData(
-          unref(treeData) as unknown as TreeData[],
-          keys,
-          keyType
-        );
-        // 更新
-        if (unref(isUpdate)) {
-          checked.value = [];
-          roleId.value = data.record.id;
-          nowRole = data.record;
-          setFieldsValue(data.record);
-        } else {
-        }
-      } catch (error) {
-        throw error;
-      } finally {
-        spinning.value = false;
-      }
-    });
-
-    const getTitle = computed(() => (!unref(isUpdate) ? '新增角色' : '编辑角色'));
-
-    async function handleSubmit() {
-      setDrawerProps({ confirmLoading: true });
-      const { createMessage } = useMessage();
-      try {
-        const values = await validate();
-        const req = {
-          groupName: values.groupName,
-          sort: values.sort
-        };
-        if (unref(isUpdate)) {
-          if (nowRole) {
-            req.updateuser = session.getItem("userInfo").EMPLOYEE.EMPLOYEE_ID;
-            req.groupid = nowRole.groupid;
-          }
-        } else {
-          req.groupid = uuidv4()
-        }
-        saveOrUpdateRoleInfoWithMenu(req).then(() => {
-          closeDrawer();
-          emit('success');
-          nowRole = null;
-          createMessage.success(`${unref(isUpdate) ? '编辑' : '新增'}成功`);
-        });
-      } finally {
-        setTimeout(() => {
-          setDrawerProps({ confirmLoading: false });
-        }, 300);
-      }
-    }
-
-    const getPermissionByRole = async (roleType: RoleEnum) => {
-      try {
-        const { key } = RoleMenuDictEnum[roleType];
-        const res = await findDictItemByCode({ dictCode: key });
-        return res.map((item) => item.itemValue);
-      } catch (error) { }
-      return [];
-    };
-
-    const getPermissionTreeData = (
-      data: MenuRecord[],
-      permissionKeys: string[],
-      keysType: KeysTypeEnum
-    ) => {
-      const setDisabled = (data: MenuRecord[], flag: boolean) => {
-        return data.map((item) => {
-          item.name = t(item.name);
-          if (item.children && item.children.length) {
-            item.children = setDisabled(item.children, flag);
-          }
-          return {
-            ...item,
-            disabled: flag,
-            icon: item.meta.icon,
-          } as TreeData;
-        });
-      };
-
-      const permissionCompare = (
-        data: MenuRecord[],
-        permissionKeys: string[],
-        keysType: KeysTypeEnum
-      ) => {
-        return data.map((item) => {
-          item.name = t(item.name);
-          const findFlag = permissionKeys.includes(item.permission);
-          if (findFlag) item.isDictCompareDisabled = true;
-          const disabledFlag = keysType === KeysTypeEnum.DISABLED ? findFlag : !findFlag;
-          item.disabled = disabledFlag;
-
-          if (item.isDictCompareDisabled && item.children && item.children.length) {
-            setDisabled(item.children, disabledFlag);
-          } else {
-            if (item.children && item.children.length) {
-              item.children = permissionCompare(item.children, permissionKeys, keysType);
-              item.disabled = item.children.every((temp) => temp.disabled);
-            }
-          }
-          return {
-            ...item,
-            icon: item.meta.icon,
-          } as TreeData;
-        });
-      };
-
-      const result = permissionCompare(data, permissionKeys, keysType).map((item) => {
-        if (item.children && item.children.length) {
-          const rootDisabledFlag = item.children.every((temp) => temp.disabled);
-          item.disabled = rootDisabledFlag;
-        }
-        return item;
-      });
-
-      return result;
-    };
-
-    return {
-      spinning,
-      registerDrawer,
-      registerForm,
-      getTitle,
-      handleSubmit,
-      treeData,
-      roleMenus,
-    };
-  },
-});
-</script>
-
-<style scoped lang="less">
-:deep(.vben-basic-tree) {
-  width: 100% !important;
-}
-
-:deep(.is-unflod) {
-  display: none !important;
-}
-
-:deep(.is-flod) {
-  display: none !important;
-}
-</style>

+ 152 - 0
src/views/systemAdmin/system/tag/TagDrawer.vue

@@ -0,0 +1,152 @@
+<template>
+    <a-drawer :title="title" :width="540" :visible="open" :body-style="{ paddingBottom: '80px' }"
+        :footer-style="{ textAlign: 'right' }" @close="onClose">
+        <a-form ref="formRef" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol">
+            <!-- 名称 -->
+            <a-form-item label="岗位名称" name="name">
+                <a-input v-model:value="form.name" style="width: 100%" placeholder="请输入名称" />
+            </a-form-item>
+            <!-- 职责 -->
+            <a-form-item label="岗位职责" name="duty">
+                <a-input v-model:value="form.duty" style="width: 100%" placeholder="请输入职责" />
+            </a-form-item>
+            <!-- 排序 -->
+            <a-form-item label="排序" name="sort">
+                <a-input v-model:value="form.sort" style="width: 100%" placeholder="请输入序号" />
+            </a-form-item>
+        </a-form>
+        <div :style="{
+            position: 'absolute',
+            right: 0,
+            bottom: 0,
+            width: '100%',
+            borderTop: '1px solid #e9e9e9',
+            padding: '10px 16px',
+            background: '#fff',
+            textAlign: 'right',
+            zIndex: 1,
+        }">
+            <a-button style="margin-right: 8px" @click="onClose">取消</a-button>
+            <a-button type="primary" @click="onSubmit">确定</a-button>
+        </div>
+    </a-drawer>
+</template>
+<script>
+import { defineComponent, reactive, ref, onMounted, watch } from 'vue';
+import { message } from 'ant-design-vue';
+import { v4 as uuidv4 } from 'uuid';
+import { savePosition } from '/@/api/sys/position';
+
+const props = {
+    formData: {
+        type: Object,
+        default: () => {
+            return {}
+        }
+    },
+    drawerTitle: {
+        type: String,
+        default: "新增岗位"
+    }
+}
+export default defineComponent({
+    name: 'TagDrawer',
+    components: {},
+    props,
+    setup(props, { emit }) {
+        const form = reactive({
+            id: "",
+            orgid: "",
+            oabaseid: "",
+            name: '',
+            duty: '',
+            sort: 0,
+        });
+        const rules = {
+            name: [{
+                required: true,
+                message: '请输入岗位名称',
+                trigger: 'blur'
+            }],
+            duty: [{
+                required: true,
+                message: '请输入岗位职责',
+                trigger: 'blur'
+            }],
+            sort: [{
+                required: true,
+                message: '请输入序号',
+                trigger: 'change'
+            }]
+        };
+        const title = ref(props.drawerTitle)
+        const open = ref(false);
+        const formRef = ref()
+
+        onMounted(() => {
+            if (Object.keys(props.formData).length) {
+                for (let key in form) {
+                    form[key] = props.formData[key]
+                }
+            }
+        })
+        watch(
+            () => [props.formData, props.drawerTitle],
+            ([newF, newD]) => {
+                for (let key in form) {
+                    form[key] = props.formData[key]
+                }
+                title.value = newD
+            },
+            {
+                immediate: true,
+                deep: true
+            }
+        )
+        const showDrawer = () => {
+            open.value = true;
+        };
+        const onClose = () => {
+            open.value = false;
+            resetForm()
+        };
+        const onSubmit = () => {
+            formRef.value.validate().then(() => {
+                //此处调用新增
+                if (title.value === '新增岗位') {
+                    form.id = uuidv4()
+                }
+                form.sort = parseInt(form.sort)
+                savePosition(form).then(res => {
+                    if (res.datas === 1) {
+                        message.success('操作成功')
+                        emit('onSubmit', true)
+                    } else {
+                        message.error('操作失败')
+                        emit('onSubmit', false)
+                    }
+                    onClose()
+                })
+            }).catch((error) => {
+                console.log('error', error);
+            });
+        };
+        const resetForm = () => {
+            formRef.value.resetFields();
+        };
+        return {
+            form,
+            rules,
+            title,
+            open,
+            formRef,
+            labelCol: { span: 6 },
+            wrapperCol: { span: 18 },
+            showDrawer,
+            onClose,
+            onSubmit,
+            resetForm
+        };
+    },
+});
+</script>

+ 274 - 138
src/views/systemAdmin/system/tag/index.vue

@@ -1,147 +1,283 @@
 <template>
-  <div>
-    <BasicTable :rowSelection="{ type: 'checkbox' }" @register="registerTable" :clickToRowSelect="false">
-      <template #toolbar>
-        <Authority>
-          <a-button type="primary" @click="handleCreate">新增角色</a-button>
-        </Authority>
-        <Authority>
-          <Popconfirm title="您确定要批量删除数据" ok-text="确定" cancel-text="取消" @confirm="handleDeleteOrBatchDelete(null)">
-            <a-button type="primary" color="error" :disabled="hasBatchDelete"> 批量删除 </a-button>
-          </Popconfirm>
-        </Authority>
-      </template>
-      <template #status="{ record }">
-        <Switch :checked="record.status === 1" :loading="record.pendingStatus" checkedChildren="启用" unCheckedChildren="禁用"
-          @change="(checked: boolean) => statusChange(checked, record)" />
-      </template>
-      <template #action="{ record }">
-        <TableAction :actions="[
-          {
-            label: '编辑',
-            icon: 'clarity:note-edit-line',
-            onClick: handleEdit.bind(null, record),
-          },
-          {
-            label: '删除',
-            icon: 'ant-design:delete-outlined',
-            color: 'error',
-            ifShow: record.roleType != RoleEnum.SYS_ADMIN,
-            popConfirm: {
-              title: '是否确认删除',
-              confirm: handleDeleteOrBatchDelete.bind(null, record),
-            },
-          },
-        ]" />
-      </template>
-    </BasicTable>
-    <RoleDrawer @register="registerDrawer" @success="handleSuccess" />
-  </div>
+    <div class="p-4">
+        <div class="tag-header">
+            <div class="tag-title">标签管理</div>
+            <div class="handle-btns">
+                <span class="label">查询类型:</span>
+                <a-select v-model:value="searchType" style="width: 120px">
+                    <a-select-option value="name">标签名称</a-select-option>
+                    <a-select-option value="code">标签编码</a-select-option>
+                    <a-select-option value="type">标签类型</a-select-option>
+                    <a-select-option value="time">创建时间</a-select-option>
+                </a-select>
+                <a-input v-model:value="searchValue" placeholder="输入关键字查询" allow-clear />
+                <a-button class="btn" type="primary" @click="searchTable">查询</a-button>
+            </div>
+        </div>
+        <div class="tag-body">
+            <div class="body-header">
+                <div class="item-title">标签列表</div>
+                <div class="table-btns">
+                    <a-button class="btn" type="primary" @click="addHandle">新增标签</a-button>
+                    <a-button class="btn" :disabled="!hasSelected" @click="delAllData">批量删除</a-button>
+                </div>
+            </div>
+            <div class="body-content">
+                <a-table :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :columns="columns"
+                    :data-source="tableData" :bordered="true" @change="tableChange">
+                    <template #operation="{ record }">
+                        <a-tooltip title="编辑" color="yellow">
+                            <a>
+                                <EditOutlined />
+                            </a>
+                        </a-tooltip>
+                        <a-popconfirm v-if="tableData.length" title="确定删除该标签?" @confirm="onDelete(record.key)">
+                            <a-tooltip title="删除" color="red">
+                                <a>
+                                    <DeleteOutlined />
+                                </a>
+                            </a-tooltip>
+                        </a-popconfirm>
+                    </template>
+                </a-table>
+            </div>
+        </div>
+        <TagDrawer :formData="formData" :drawerTitle="drawerTitle" @onSubmit="onSubmit" ref="drawerRef">
+        </TagDrawer>
+    </div>
 </template>
-<script lang="ts">
-import { defineComponent, nextTick } from 'vue';
-import { BasicTable, useTable, TableAction } from '/@/components/Table';
-import { delRole, getRoleListByPage, setRoleStatus } from '/@/api/system/system';
-import { useDrawer } from '/@/components/Drawer';
-import RoleDrawer from './RoleDrawer.vue';
-import { columns, searchFormSchema } from './role.data';
-import { RoleEnum } from '/@/enums/roleEnum';
-import { Authority } from '/@/components/Authority';
-import { useBatchDelete } from '/@/hooks/web/useBatchDelete';
-import { useMessage } from '/@/hooks/web/useMessage';
-import { Switch, Popconfirm } from 'ant-design-vue';
-import { roleList } from '/@/api/sys/user';
+
+<script>
+import { defineComponent, reactive, ref, toRefs, computed, onMounted, watch } from 'vue';
+import TagDrawer from './TagDrawer.vue';
+import { structureList, getPositionList, delPosition } from '/@/api/sys/position';
+import { message } from 'ant-design-vue';
+import { EditOutlined, DeleteOutlined } from '@ant-design/icons-vue';
+import moment from 'moment'
 
 export default defineComponent({
-  name: 'RoleManagement',
-  components: { BasicTable, RoleDrawer, TableAction, Authority, Switch, Popconfirm },
-  setup() {
-    const [registerDrawer, { openDrawer }] = useDrawer();
-    function handleSuccess() {
-      reload();
-    }
-    const [registerTable, { setProps, reload, setSelectedRowKeys }] = useTable({
-      title: '角色列表',
-      api: roleList,
-      columns,
-      formConfig: {
-        labelWidth: 120,
-        schemas: searchFormSchema,
-      },
-      useSearchForm: true,
-      showTableSetting: true,
-      bordered: true,
-      showIndexColumn: false,
-      actionColumn: {
-        width: 200,
-        title: '操作',
-        dataIndex: 'action',
-        slots: { customRender: 'action' },
-        fixed: 'right',
-      },
-    });
-    const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions, resetSelectedRowKeys } =
-      useBatchDelete(delRole, handleSuccess, setProps);
-    selectionOptions.rowSelection.getCheckboxProps = (record: Recordable) => {
-      // Demo:status为1的选择框禁用
-      if (record.status === 1) {
-        return { disabled: true };
-      } else {
-        return { disabled: false };
-      }
-    };
-    nextTick(() => {
-      setProps(selectionOptions);
-    });
-
-    function handleCreate() {
-      openDrawer(true, {
-        isUpdate: false,
-      });
-    }
+    name: 'tag',
+    components: { TagDrawer, EditOutlined, DeleteOutlined },
+    setup() {
+        const drawerRef = ref(null)
+        onMounted(() => {
+            for (let i = 0; i < 40; i++) {
+                data.tableData.push({
+                    name: `标签${i}`,
+                    code: `编码${i}`,
+                    type: `类型${i}`,
+                    state: `状态${i}`,
+                    time: `时间${i}`
+                })
+            }
+        });
+        const data = reactive({
+            tableData: [],//表格数据
+            selectedRowKeys: [],//选中的key
+            searchType: "name",//查询类型
+            searchValue: "",//查询值
+            formData: {
+                name: "",
+                code: "",
+                type: "",
+                px: "",
+            },
+            drawerTitle:"新增标签"
+        });
 
-    function handleEdit(record: Recordable) {
-      openDrawer(true, {
-        record,
-        isUpdate: true,
-      });
-      console.log(record)
-    }
+        const filteredInfo = ref({
+            name: null,
+            code: null,
+            type: null,
+            time: null
+        });
+        const sortedInfo = ref();
+        const columns = computed(() => {
+            const filtered = filteredInfo.value || {};
+            const sorted = sortedInfo.value || {};
+            return [
+                {
+                    title: '标签名称',
+                    dataIndex: 'name',
+                    key: 'name',
+                    filteredValue: filtered.name || null,
+                    onFilter: (value, record) => record.name.includes(value),
+                    sorter: (a, b) => a.name.length - b.name.length,
+                    sortOrder: sorted.columnKey === 'name' && sorted.order,
+                    width: "500px"
+                },
+                {
+                    title: '标签编码',
+                    dataIndex: 'code',
+                    key: 'code',
+                    filteredValue: filtered.code || null,
+                    onFilter: (value, record) => record.code.includes(value),
+                    sorter: (a, b) => a.code.length - b.code.length,
+                    sortOrder: sorted.columnKey === 'code' && sorted.order,
+                    width: "400px"
+                },
+                {
+                    title: '标签类型',
+                    dataIndex: 'type',
+                    key: 'type',
+                    filteredValue: filtered.type || null,
+                    onFilter: (value, record) => record.type.includes(value),
+                    sorter: (a, b) => a.type.length - b.type.length,
+                    sortOrder: sorted.columnKey === 'type' && sorted.order,
+                    width: "230px"
+                },
+                {
+                    title: '启用状态',
+                    dataIndex: 'state',
+                    key: 'state',
+                    filteredValue: filtered.state || null,
+                    onFilter: (value, record) => record.state.includes(value),
+                    width: "100px"
+                },
+                {
+                    title: '创建时间',
+                    dataIndex: 'time',
+                    key: 'time',
+                    filteredValue: filtered.time || null,
+                    onFilter: (value, record) => record.time.includes(value),
+                    sorter: (a, b) => a.time.length - b.time.length,
+                    sortOrder: sorted.columnKey === 'time' && sorted.order,
+                    width: "230px"
+                },
+                {
+                    title: '操作',
+                    dataIndex: 'operation',
+                    slots: {
+                        customRender: 'operation',
+                    }
+                },
+            ];
+        });
+        const tableChange = (pagination, filters, sorter) => {
+            filteredInfo.value = filters;
+            sortedInfo.value = sorter;
+        };
+        const searchTable = () => {
+            filteredInfo.value[data.searchType] = [data.searchValue]
+        }
 
-    const statusChange = async (checked, record) => {
-      setProps({
-        loading: true,
-      });
-      setSelectedRowKeys([]);
-      resetSelectedRowKeys();
-      const newStatus = checked ? 1 : 0;
-      const { createMessage } = useMessage();
-      try {
-        await setRoleStatus(record.id, newStatus);
-        if (newStatus) {
-          createMessage.success(`启用成功`);
-        } else {
-          createMessage.success('禁用成功');
+        const hasSelected = computed(() => data.selectedRowKeys.length > 0);
+        const delAllData = () => {
+            setTimeout(() => {
+                message.success('删除成功')
+                data.selectedRowKeys = [];
+            }, 1000);
+        };
+        const onSelectChange = selectedRowKeys => {
+            data.selectedRowKeys = selectedRowKeys;
+        };
+        const onSubmit = (e) => {
+            if (e) {
+                data.position.data = []
+                data.position.currentId = ""
+                let params = {
+                    zwId: data.posts.currentId
+                }
+                getPositionList(params).then(res => {
+                    if (res.datas && res.datas.length) {
+                        data.position.data = res.datas
+                    }
+                })
+            }
         }
-      } finally {
-        setProps({
-          loading: false,
-        });
-        reload();
-      }
-    };
-
-    return {
-      registerTable,
-      registerDrawer,
-      handleCreate,
-      handleEdit,
-      handleSuccess,
-      RoleEnum,
-      hasBatchDelete,
-      handleDeleteOrBatchDelete,
-      statusChange,
-    };
-  },
+        return {
+            drawerRef,
+            filteredInfo,
+            sortedInfo,
+            columns,
+            hasSelected,
+            ...toRefs(data),
+            // func
+            tableChange,
+            searchTable,
+            delAllData,
+            onSelectChange,
+            onSubmit
+        };
+    },
 });
 </script>
+
+<style lang="less" scoped>
+.p-4 {
+    height: 100%;
+
+    .tag-header {
+        padding: 10px;
+        width: 100%;
+        height: 70px;
+        background-color: #fff;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+
+        .tag-title {
+            font-size: 16px;
+            font-weight: 500;
+            margin-left: 20px;
+            user-select: none;
+        }
+
+        .handle-btns {
+            margin-right: 20px;
+            display: flex;
+            align-items: center;
+
+            .label {
+                width: 150px;
+            }
+
+            .btn {
+                margin-left: 10px;
+            }
+        }
+    }
+
+    .tag-body {
+        padding: 0 30px;
+        margin-top: 20px;
+        width: 100%;
+        // height: 800px;
+        height: calc(100% - 90px);
+        background-color: #fff;
+
+        .body-header {
+            display: flex;
+            height: 80px;
+            width: 100%;
+            justify-content: space-between;
+            align-items: center;
+
+            .item-title {
+                height: 40px;
+                line-height: 40px;
+                font-size: 16px;
+                user-select: none;
+            }
+
+            .table-btns {
+                .btn {
+                    margin-right: 10px;
+
+                    &:last-child {
+                        margin-right: 0;
+                    }
+                }
+            }
+        }
+
+        .body-content {
+            padding-bottom: 20px;
+            height: calc(100% - 80px);
+
+            a {
+                margin-right: 10px;
+            }
+        }
+    }
+}</style>

+ 0 - 90
src/views/systemAdmin/system/tag/role.data.ts

@@ -1,90 +0,0 @@
-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: 'groupName',
-    width: 200,
-  },
-  {
-    title: '角色Code',
-    dataIndex: 'groupid',
-    width: 200,
-  },
-  {
-    title: '类型',
-    dataIndex: 'groupType',
-    width: 120,
-  },
-
-  {
-    title: '备注',
-    dataIndex: 'memo',
-    width: 240,
-  },
-  {
-    title: '排序',
-    dataIndex: 'sort',
-    width: 180,
-  },
-];
-
-export const searchFormSchema: FormSchema[] = [
-  {
-    field: 'roleName',
-    label: '角色名称',
-    component: 'Input',
-    colProps: { span: 6 },
-    componentProps: {
-      maxLength: 255,
-    },
-  },
-  {
-    field: 'status',
-    label: '状态',
-    component: 'Select',
-    componentProps: {
-      options: [
-        { label: '启用', value: 1 },
-        { label: '停用', value: 0 },
-      ],
-    },
-    colProps: { span: 6 },
-  },
-];
-
-export const formSchema: FormSchema[] = [
-  {
-    field: 'groupName',
-    label: '角色名称',
-    required: true,
-    component: 'Input',
-    componentProps: {
-      maxLength: 255,
-      placeholder: '请输入角色名称',
-    },
-  },
-  {
-    label: '排序',
-    field: 'sort',
-    component: 'Input',
-    componentProps: {
-      maxLength: 255,
-      placeholder: '请输入排序',
-    },
-  }
-];