From d3526e6f6307d853a5402ed8e2d3fdd7e5c1ce44 Mon Sep 17 00:00:00 2001
From: xingyu4j <xingyu4j@vip.qq.com>
Date: Tue, 15 Nov 2022 17:44:28 +0800
Subject: [PATCH] refactor: template script

---
 .../src/views/system/dept/index.vue           | 207 +++----
 .../src/views/system/tenantPackage/index.vue  | 181 +++---
 .../src/views/system/user/index.vue           | 521 +++++++++---------
 3 files changed, 454 insertions(+), 455 deletions(-)

diff --git a/yudao-ui-admin-vue3/src/views/system/dept/index.vue b/yudao-ui-admin-vue3/src/views/system/dept/index.vue
index 7276107a6..f50d338f1 100644
--- a/yudao-ui-admin-vue3/src/views/system/dept/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/dept/index.vue
@@ -1,3 +1,106 @@
+<template>
+  <div class="flex">
+    <el-card class="w-1/3 dept" :gutter="12" shadow="always">
+      <template #header>
+        <div class="card-header">
+          <span>部门列表</span>
+          <XButton
+            type="primary"
+            preIcon="ep:zoom-in"
+            title="新增根节点"
+            v-hasPermi="['system:dept:create']"
+            @click="handleCreate"
+          />
+        </div>
+      </template>
+      <div class="custom-tree-container">
+        <!-- <p>部门列表</p> -->
+        <!-- 操作工具栏 -->
+        <el-input v-model="filterText" placeholder="搜索部门" />
+        <el-tree
+          ref="treeRef"
+          node-key="id"
+          :data="deptOptions"
+          :props="defaultProps"
+          :highlight-current="true"
+          default-expand-all
+          :filter-node-method="filterNode"
+          :expand-on-click-node="false"
+        >
+          <template #default="{ node, data }">
+            <span class="custom-tree-node">
+              <span>{{ node.label }}</span>
+              <span>
+                <XTextButton
+                  preIcon="ep:zoom-in"
+                  :title="t('action.add')"
+                  v-hasPermi="['system:dept:create']"
+                  @click="handleCreate(data)"
+                />
+                <XTextButton
+                  preIcon="ep:edit"
+                  :title="t('action.edit')"
+                  v-hasPermi="['system:dept:update']"
+                  @click="handleUpdate(data)"
+                />
+                <XTextButton
+                  preIcon="ep:delete"
+                  :title="t('action.del')"
+                  v-hasPermi="['system:dept:delete']"
+                  @click="handleDelete(data)"
+                />
+              </span>
+            </span>
+          </template>
+        </el-tree>
+      </div>
+    </el-card>
+    <el-card class="w-2/3 dept" style="margin-left: 10px" :gutter="12" shadow="hover">
+      <template #header>
+        <div class="card-header">
+          <span>{{ formTitle }}</span>
+        </div>
+      </template>
+      <div v-if="!showForm">
+        <span><p>请从左侧选择部门</p></span>
+      </div>
+      <div v-if="showForm">
+        <!-- 操作工具栏 -->
+        <Form ref="formRef" :schema="modelSchema" :rules="rules">
+          <template #parentId>
+            <el-tree-select
+              node-key="id"
+              v-model="deptParentId"
+              :props="defaultProps"
+              :data="deptOptions"
+              check-strictly
+            />
+          </template>
+          <template #leaderUserId>
+            <el-select v-model="leaderUserId">
+              <el-option
+                v-for="item in userOption"
+                :key="parseInt(item.id)"
+                :label="item.nickname"
+                :value="parseInt(item.id)"
+              />
+            </el-select>
+          </template>
+        </Form>
+        <!-- 按钮:保存 -->
+        <XButton
+          type="primary"
+          :title="t('action.save')"
+          v-hasPermi="['system:dept:update']"
+          :loading="loading"
+          @click="submitForm()"
+        />
+        <!-- 按钮:关闭 -->
+        <XButton :loading="loading" :title="t('dialog.close')" @click="showForm = false" />
+      </div>
+    </el-card>
+  </div>
+</template>
 <script setup lang="ts">
 import { useI18n } from '@/hooks/web/useI18n'
 import { ElInput, ElCard, ElTree, ElTreeSelect, ElSelect, ElOption } from 'element-plus'
@@ -104,109 +207,7 @@ onMounted(async () => {
   await getUserList()
 })
 </script>
-<template>
-  <div class="flex">
-    <el-card class="w-1/3 dept" :gutter="12" shadow="always">
-      <template #header>
-        <div class="card-header">
-          <span>部门列表</span>
-          <XButton
-            type="primary"
-            preIcon="ep:zoom-in"
-            title="新增根节点"
-            v-hasPermi="['system:dept:create']"
-            @click="handleCreate"
-          />
-        </div>
-      </template>
-      <div class="custom-tree-container">
-        <!-- <p>部门列表</p> -->
-        <!-- 操作工具栏 -->
-        <el-input v-model="filterText" placeholder="搜索部门" />
-        <el-tree
-          ref="treeRef"
-          node-key="id"
-          :data="deptOptions"
-          :props="defaultProps"
-          :highlight-current="true"
-          default-expand-all
-          :filter-node-method="filterNode"
-          :expand-on-click-node="false"
-        >
-          <template #default="{ node, data }">
-            <span class="custom-tree-node">
-              <span>{{ node.label }}</span>
-              <span>
-                <XTextButton
-                  preIcon="ep:zoom-in"
-                  :title="t('action.add')"
-                  v-hasPermi="['system:dept:create']"
-                  @click="handleCreate(data)"
-                />
-                <XTextButton
-                  preIcon="ep:edit"
-                  :title="t('action.edit')"
-                  v-hasPermi="['system:dept:update']"
-                  @click="handleUpdate(data)"
-                />
-                <XTextButton
-                  preIcon="ep:delete"
-                  :title="t('action.del')"
-                  v-hasPermi="['system:dept:delete']"
-                  @click="handleDelete(data)"
-                />
-              </span>
-            </span>
-          </template>
-        </el-tree>
-      </div>
-    </el-card>
-    <el-card class="w-2/3 dept" style="margin-left: 10px" :gutter="12" shadow="hover">
-      <template #header>
-        <div class="card-header">
-          <span>{{ formTitle }}</span>
-        </div>
-      </template>
-      <div v-if="!showForm">
-        <span><p>请从左侧选择部门</p></span>
-      </div>
-      <div v-if="showForm">
-        <!-- 操作工具栏 -->
-        <Form ref="formRef" :schema="modelSchema" :rules="rules">
-          <template #parentId>
-            <el-tree-select
-              node-key="id"
-              v-model="deptParentId"
-              :props="defaultProps"
-              :data="deptOptions"
-              check-strictly
-            />
-          </template>
-          <template #leaderUserId>
-            <el-select v-model="leaderUserId">
-              <el-option
-                v-for="item in userOption"
-                :key="parseInt(item.id)"
-                :label="item.nickname"
-                :value="parseInt(item.id)"
-              />
-            </el-select>
-          </template>
-        </Form>
-        <!-- 按钮:保存 -->
-        <XButton
-          type="primary"
-          :title="t('action.save')"
-          v-hasPermi="['system:dept:update']"
-          :loading="loading"
-          @click="submitForm()"
-        />
-        <!-- 按钮:关闭 -->
-        <XButton :loading="loading" :title="t('dialog.close')" @click="showForm = false" />
-      </div>
-    </el-card>
-  </div>
-</template>
+
 <style scoped>
 .dept {
   height: 600px;
diff --git a/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue b/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
index 147f06197..5bdd48a64 100644
--- a/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/tenantPackage/index.vue
@@ -1,3 +1,93 @@
+<template>
+  <!-- 搜索工作区 -->
+  <ContentWrap>
+    <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
+  </ContentWrap>
+  <ContentWrap>
+    <!-- 操作工具栏 -->
+    <div class="mb-10px">
+      <el-button type="primary" @click="handleCreate">
+        <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }}
+      </el-button>
+    </div>
+    <!-- 列表 -->
+    <Table
+      :columns="allSchemas.tableColumns"
+      :selection="false"
+      :data="tableObject.tableList"
+      :loading="tableObject.loading"
+      :pagination="{
+        total: tableObject.total
+      }"
+      v-model:pageSize="tableObject.pageSize"
+      v-model:currentPage="tableObject.currentPage"
+      @register="register"
+    >
+      <template #status="{ row }">
+        <DictTag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" />
+      </template>
+      <template #createTime="{ row }">
+        <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span>
+      </template>
+      <template #action="{ row }">
+        <el-button link type="primary" @click="handleUpdate(row)">
+          <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }}
+        </el-button>
+        <el-button link type="primary" @click="delList(row.id, false)">
+          <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }}
+        </el-button>
+      </template>
+    </Table>
+  </ContentWrap>
+
+  <XModal v-model="dialogVisible" :title="dialogTitle" maxHeight="500px" width="50%">
+    <!-- 对话框(添加 / 修改) -->
+    <Form
+      v-if="['create', 'update'].includes(actionType)"
+      :schema="allSchemas.formSchema"
+      :rules="rules"
+      ref="formRef"
+    >
+      <template #menuIds>
+        <el-card class="box-card">
+          <template #header>
+            <div class="card-header">
+              全选/全不选:
+              <el-switch
+                v-model="treeNodeAll"
+                inline-prompt
+                active-text="是"
+                inactive-text="否"
+                @change="handleCheckedTreeNodeAll()"
+              />
+            </div>
+          </template>
+          <el-tree
+            ref="treeRef"
+            node-key="id"
+            show-checkbox
+            :props="defaultProps"
+            :data="menuOptions"
+            empty-text="加载中,请稍后"
+          />
+        </el-card>
+      </template>
+    </Form>
+    <!-- 操作按钮 -->
+    <template #footer>
+      <!-- 按钮:保存 -->
+      <XButton
+        v-if="['create', 'update'].includes(actionType)"
+        type="primary"
+        :title="t('action.save')"
+        :loading="loading"
+        @click="submitForm()"
+      />
+      <!-- 按钮:关闭 -->
+      <XButton :loading="loading" :title="t('dialog.close')" @click="dialogVisible = false" />
+    </template>
+  </XModal>
+</template>
 <script setup lang="ts">
 import { onMounted, ref, unref } from 'vue'
 import dayjs from 'dayjs'
@@ -107,94 +197,3 @@ onMounted(async () => {
 })
 // getList()
 </script>
-
-<template>
-  <!-- 搜索工作区 -->
-  <ContentWrap>
-    <Search :schema="allSchemas.searchSchema" @search="setSearchParams" @reset="setSearchParams" />
-  </ContentWrap>
-  <ContentWrap>
-    <!-- 操作工具栏 -->
-    <div class="mb-10px">
-      <el-button type="primary" @click="handleCreate">
-        <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }}
-      </el-button>
-    </div>
-    <!-- 列表 -->
-    <Table
-      :columns="allSchemas.tableColumns"
-      :selection="false"
-      :data="tableObject.tableList"
-      :loading="tableObject.loading"
-      :pagination="{
-        total: tableObject.total
-      }"
-      v-model:pageSize="tableObject.pageSize"
-      v-model:currentPage="tableObject.currentPage"
-      @register="register"
-    >
-      <template #status="{ row }">
-        <DictTag :type="DICT_TYPE.COMMON_STATUS" :value="row.status" />
-      </template>
-      <template #createTime="{ row }">
-        <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span>
-      </template>
-      <template #action="{ row }">
-        <el-button link type="primary" @click="handleUpdate(row)">
-          <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }}
-        </el-button>
-        <el-button link type="primary" @click="delList(row.id, false)">
-          <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }}
-        </el-button>
-      </template>
-    </Table>
-  </ContentWrap>
-
-  <XModal v-model="dialogVisible" :title="dialogTitle" maxHeight="500px" width="50%">
-    <!-- 对话框(添加 / 修改) -->
-    <Form
-      v-if="['create', 'update'].includes(actionType)"
-      :schema="allSchemas.formSchema"
-      :rules="rules"
-      ref="formRef"
-    >
-      <template #menuIds>
-        <el-card class="box-card">
-          <template #header>
-            <div class="card-header">
-              全选/全不选:
-              <el-switch
-                v-model="treeNodeAll"
-                inline-prompt
-                active-text="是"
-                inactive-text="否"
-                @change="handleCheckedTreeNodeAll()"
-              />
-            </div>
-          </template>
-          <el-tree
-            ref="treeRef"
-            node-key="id"
-            show-checkbox
-            :props="defaultProps"
-            :data="menuOptions"
-            empty-text="加载中,请稍后"
-          />
-        </el-card>
-      </template>
-    </Form>
-    <!-- 操作按钮 -->
-    <template #footer>
-      <!-- 按钮:保存 -->
-      <XButton
-        v-if="['create', 'update'].includes(actionType)"
-        type="primary"
-        :title="t('action.save')"
-        :loading="loading"
-        @click="submitForm()"
-      />
-      <!-- 按钮:关闭 -->
-      <XButton :loading="loading" :title="t('dialog.close')" @click="dialogVisible = false" />
-    </template>
-  </XModal>
-</template>
diff --git a/yudao-ui-admin-vue3/src/views/system/user/index.vue b/yudao-ui-admin-vue3/src/views/system/user/index.vue
index b22bb4cb1..f14409249 100644
--- a/yudao-ui-admin-vue3/src/views/system/user/index.vue
+++ b/yudao-ui-admin-vue3/src/views/system/user/index.vue
@@ -1,3 +1,263 @@
+<template>
+  <div class="flex">
+    <el-card class="w-1/5 user" :gutter="12" shadow="always">
+      <template #header>
+        <div class="card-header">
+          <span>部门列表</span>
+          <el-button link class="button" type="primary" @click="handleDeptEdit">
+            修改部门
+          </el-button>
+        </div>
+      </template>
+      <el-input v-model="filterText" placeholder="搜索部门" />
+      <el-tree
+        ref="treeRef"
+        node-key="id"
+        default-expand-all
+        :data="deptOptions"
+        :props="defaultProps"
+        :highlight-current="true"
+        :filter-node-method="filterNode"
+        :expand-on-click-node="false"
+        @node-click="handleDeptNodeClick"
+      />
+    </el-card>
+    <!-- 搜索工作区 -->
+    <el-card class="w-4/5 user" style="margin-left: 10px" :gutter="12" shadow="hover">
+      <template #header>
+        <div class="card-header">
+          <span>{{ tableTitle }}</span>
+        </div>
+      </template>
+      <Search
+        :schema="allSchemas.searchSchema"
+        @search="setSearchParams"
+        @reset="setSearchParams"
+        ref="searchForm"
+      />
+      <!-- 操作工具栏 -->
+      <div class="mb-10px">
+        <el-button type="primary" v-hasPermi="['system:user:create']" @click="handleAdd">
+          <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }}
+        </el-button>
+        <el-button
+          type="info"
+          v-hasPermi="['system:user:import']"
+          @click="importDialogVisible = true"
+        >
+          <Icon icon="ep:upload" class="mr-5px" /> {{ t('action.import') }}
+        </el-button>
+        <el-button
+          type="warning"
+          v-hasPermi="['system:user:export']"
+          @click="exportList('用户数据.xls')"
+        >
+          <Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
+        </el-button>
+      </div>
+      <!-- 列表 -->
+      <Table
+        :columns="allSchemas.tableColumns"
+        :selection="false"
+        :data="tableObject.tableList"
+        :loading="tableObject.loading"
+        :pagination="{
+          total: tableObject.total
+        }"
+        v-model:pageSize="tableObject.pageSize"
+        v-model:currentPage="tableObject.currentPage"
+        @register="register"
+      >
+        <template #status="{ row }">
+          <el-switch
+            v-model="row.status"
+            :active-value="0"
+            :inactive-value="1"
+            @change="handleStatusChange(row)"
+          />
+        </template>
+        <template #loginDate="{ row }">
+          <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span>
+        </template>
+        <template #action="{ row }">
+          <el-button
+            link
+            type="primary"
+            v-hasPermi="['system:user:update']"
+            @click="handleUpdate(row)"
+          >
+            <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }}
+          </el-button>
+          <el-button
+            link
+            type="primary"
+            v-hasPermi="['system:user:update']"
+            @click="handleDetail(row)"
+          >
+            <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }}
+          </el-button>
+          <el-button
+            link
+            type="primary"
+            v-hasPermi="['system:user:update-password']"
+            @click="handleResetPwd(row)"
+          >
+            <Icon icon="ep:key" class="mr-1px" /> 重置密码
+          </el-button>
+          <el-button
+            link
+            type="primary"
+            v-hasPermi="['system:permission:assign-user-role']"
+            @click="handleRole(row)"
+          >
+            <Icon icon="ep:key" class="mr-1px" /> 分配角色
+          </el-button>
+          <el-button
+            link
+            type="primary"
+            v-hasPermi="['system:user:delete']"
+            @click="delList(row.id, false)"
+          >
+            <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }}
+          </el-button>
+        </template>
+      </Table>
+    </el-card>
+  </div>
+  <XModal v-model="dialogVisible" :title="dialogTitle">
+    <!-- 对话框(添加 / 修改) -->
+    <Form
+      v-if="['create', 'update'].includes(actionType)"
+      :rules="rules"
+      :schema="allSchemas.formSchema"
+      ref="formRef"
+    >
+      <template #deptId>
+        <el-tree-select
+          node-key="id"
+          v-model="deptId"
+          :props="defaultProps"
+          :data="deptOptions"
+          check-strictly
+        />
+      </template>
+      <template #postIds>
+        <el-select v-model="postIds" multiple :placeholder="t('common.selectText')">
+          <el-option
+            v-for="item in postOptions"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          />
+        </el-select>
+      </template>
+    </Form>
+    <!-- 对话框(详情) -->
+    <Descriptions
+      v-if="actionType === 'detail'"
+      :schema="allSchemas.detailSchema"
+      :data="detailRef"
+    >
+      <template #deptId="{ row }">
+        <span>{{ row.dept?.name }}</span>
+      </template>
+      <template #postIds="{ row }">
+        <el-tag v-for="(post, index) in row.postIds" :key="index" index="">
+          <template v-for="postObj in postOptions">
+            {{ post === postObj.id ? postObj.name : '' }}
+          </template>
+        </el-tag>
+      </template>
+    </Descriptions>
+    <!-- 操作按钮 -->
+    <template #footer>
+      <!-- 按钮:保存 -->
+      <XButton
+        v-if="['create', 'update'].includes(actionType)"
+        type="primary"
+        :title="t('action.save')"
+        :loading="loading"
+        @click="submitForm()"
+      />
+      <!-- 按钮:关闭 -->
+      <XButton :loading="loading" :title="t('dialog.close')" @click="dialogVisible = false" />
+    </template>
+  </XModal>
+  <!-- 分配用户角色 -->
+  <XModal v-model="roleDialogVisible" title="分配角色">
+    <el-form :model="userRole" label-width="80px">
+      <el-form-item label="用户名称">
+        <el-input v-model="userRole.username" :disabled="true" />
+      </el-form-item>
+      <el-form-item label="用户昵称">
+        <el-input v-model="userRole.nickname" :disabled="true" />
+      </el-form-item>
+      <el-form-item label="角色">
+        <el-transfer
+          v-model="userRole.roleIds"
+          :titles="['角色列表', '已选择']"
+          :props="{
+            key: 'id',
+            label: 'name'
+          }"
+          :data="roleOptions"
+        />
+      </el-form-item>
+    </el-form>
+    <!-- 操作按钮 -->
+    <template #footer>
+      <el-button type="primary" :loading="loading" @click="submitRole">
+        {{ t('action.save') }}
+      </el-button>
+      <el-button @click="roleDialogVisible = false">{{ t('dialog.close') }}</el-button>
+    </template>
+  </XModal>
+  <!-- 导入 -->
+  <XModal v-model="importDialogVisible" :title="importDialogTitle">
+    <el-form class="drawer-multiColumn-form" label-width="150px">
+      <el-form-item label="模板下载 :">
+        <el-button type="primary" @click="handleImportTemp">
+          <Icon icon="ep:download" />
+          点击下载
+        </el-button>
+      </el-form-item>
+      <el-form-item label="文件上传 :">
+        <el-upload
+          ref="uploadRef"
+          :action="updateUrl + '?updateSupport=' + updateSupport"
+          :headers="uploadHeaders"
+          :drag="true"
+          :limit="1"
+          :multiple="true"
+          :show-file-list="true"
+          :disabled="uploadDisabled"
+          :before-upload="beforeExcelUpload"
+          :on-exceed="handleExceed"
+          :on-success="handleFileSuccess"
+          :on-error="excelUploadError"
+          :auto-upload="false"
+          accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+        >
+          <Icon icon="ep:upload-filled" />
+          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+          <template #tip>
+            <div class="el-upload__tip">请上传 .xls , .xlsx 标准格式文件</div>
+          </template>
+        </el-upload>
+      </el-form-item>
+      <el-form-item label="是否更新已经存在的用户数据:">
+        <el-checkbox v-model="updateSupport" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button type="primary" @click="submitFileForm">
+        <Icon icon="ep:upload-filled" />
+        {{ t('action.save') }}
+      </el-button>
+      <el-button @click="importDialogVisible = false">{{ t('dialog.close') }}</el-button>
+    </template>
+  </XModal>
+</template>
 <script setup lang="ts">
 import { onMounted, reactive, ref, unref, watch } from 'vue'
 import dayjs from 'dayjs'
@@ -286,267 +546,6 @@ onMounted(async () => {
 })
 </script>
 
-<template>
-  <div class="flex">
-    <el-card class="w-1/5 user" :gutter="12" shadow="always">
-      <template #header>
-        <div class="card-header">
-          <span>部门列表</span>
-          <el-button link class="button" type="primary" @click="handleDeptEdit">
-            修改部门
-          </el-button>
-        </div>
-      </template>
-      <el-input v-model="filterText" placeholder="搜索部门" />
-      <el-tree
-        ref="treeRef"
-        node-key="id"
-        default-expand-all
-        :data="deptOptions"
-        :props="defaultProps"
-        :highlight-current="true"
-        :filter-node-method="filterNode"
-        :expand-on-click-node="false"
-        @node-click="handleDeptNodeClick"
-      />
-    </el-card>
-    <!-- 搜索工作区 -->
-    <el-card class="w-4/5 user" style="margin-left: 10px" :gutter="12" shadow="hover">
-      <template #header>
-        <div class="card-header">
-          <span>{{ tableTitle }}</span>
-        </div>
-      </template>
-      <Search
-        :schema="allSchemas.searchSchema"
-        @search="setSearchParams"
-        @reset="setSearchParams"
-        ref="searchForm"
-      />
-      <!-- 操作工具栏 -->
-      <div class="mb-10px">
-        <el-button type="primary" v-hasPermi="['system:user:create']" @click="handleAdd">
-          <Icon icon="ep:zoom-in" class="mr-5px" /> {{ t('action.add') }}
-        </el-button>
-        <el-button
-          type="info"
-          v-hasPermi="['system:user:import']"
-          @click="importDialogVisible = true"
-        >
-          <Icon icon="ep:upload" class="mr-5px" /> {{ t('action.import') }}
-        </el-button>
-        <el-button
-          type="warning"
-          v-hasPermi="['system:user:export']"
-          @click="exportList('用户数据.xls')"
-        >
-          <Icon icon="ep:download" class="mr-5px" /> {{ t('action.export') }}
-        </el-button>
-      </div>
-      <!-- 列表 -->
-      <Table
-        :columns="allSchemas.tableColumns"
-        :selection="false"
-        :data="tableObject.tableList"
-        :loading="tableObject.loading"
-        :pagination="{
-          total: tableObject.total
-        }"
-        v-model:pageSize="tableObject.pageSize"
-        v-model:currentPage="tableObject.currentPage"
-        @register="register"
-      >
-        <template #status="{ row }">
-          <el-switch
-            v-model="row.status"
-            :active-value="0"
-            :inactive-value="1"
-            @change="handleStatusChange(row)"
-          />
-        </template>
-        <template #loginDate="{ row }">
-          <span>{{ dayjs(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}</span>
-        </template>
-        <template #action="{ row }">
-          <el-button
-            link
-            type="primary"
-            v-hasPermi="['system:user:update']"
-            @click="handleUpdate(row)"
-          >
-            <Icon icon="ep:edit" class="mr-1px" /> {{ t('action.edit') }}
-          </el-button>
-          <el-button
-            link
-            type="primary"
-            v-hasPermi="['system:user:update']"
-            @click="handleDetail(row)"
-          >
-            <Icon icon="ep:view" class="mr-1px" /> {{ t('action.detail') }}
-          </el-button>
-          <el-button
-            link
-            type="primary"
-            v-hasPermi="['system:user:update-password']"
-            @click="handleResetPwd(row)"
-          >
-            <Icon icon="ep:key" class="mr-1px" /> 重置密码
-          </el-button>
-          <el-button
-            link
-            type="primary"
-            v-hasPermi="['system:permission:assign-user-role']"
-            @click="handleRole(row)"
-          >
-            <Icon icon="ep:key" class="mr-1px" /> 分配角色
-          </el-button>
-          <el-button
-            link
-            type="primary"
-            v-hasPermi="['system:user:delete']"
-            @click="delList(row.id, false)"
-          >
-            <Icon icon="ep:delete" class="mr-1px" /> {{ t('action.del') }}
-          </el-button>
-        </template>
-      </Table>
-    </el-card>
-  </div>
-  <XModal v-model="dialogVisible" :title="dialogTitle">
-    <!-- 对话框(添加 / 修改) -->
-    <Form
-      v-if="['create', 'update'].includes(actionType)"
-      :rules="rules"
-      :schema="allSchemas.formSchema"
-      ref="formRef"
-    >
-      <template #deptId>
-        <el-tree-select
-          node-key="id"
-          v-model="deptId"
-          :props="defaultProps"
-          :data="deptOptions"
-          check-strictly
-        />
-      </template>
-      <template #postIds>
-        <el-select v-model="postIds" multiple :placeholder="t('common.selectText')">
-          <el-option
-            v-for="item in postOptions"
-            :key="item.id"
-            :label="item.name"
-            :value="item.id"
-          />
-        </el-select>
-      </template>
-    </Form>
-    <!-- 对话框(详情) -->
-    <Descriptions
-      v-if="actionType === 'detail'"
-      :schema="allSchemas.detailSchema"
-      :data="detailRef"
-    >
-      <template #deptId="{ row }">
-        <span>{{ row.dept?.name }}</span>
-      </template>
-      <template #postIds="{ row }">
-        <el-tag v-for="(post, index) in row.postIds" :key="index" index="">
-          <template v-for="postObj in postOptions">
-            {{ post === postObj.id ? postObj.name : '' }}
-          </template>
-        </el-tag>
-      </template>
-    </Descriptions>
-    <!-- 操作按钮 -->
-    <template #footer>
-      <!-- 按钮:保存 -->
-      <XButton
-        v-if="['create', 'update'].includes(actionType)"
-        type="primary"
-        :title="t('action.save')"
-        :loading="loading"
-        @click="submitForm()"
-      />
-      <!-- 按钮:关闭 -->
-      <XButton :loading="loading" :title="t('dialog.close')" @click="dialogVisible = false" />
-    </template>
-  </XModal>
-  <!-- 分配用户角色 -->
-  <XModal v-model="roleDialogVisible" title="分配角色">
-    <el-form :model="userRole" label-width="80px">
-      <el-form-item label="用户名称">
-        <el-input v-model="userRole.username" :disabled="true" />
-      </el-form-item>
-      <el-form-item label="用户昵称">
-        <el-input v-model="userRole.nickname" :disabled="true" />
-      </el-form-item>
-      <el-form-item label="角色">
-        <el-transfer
-          v-model="userRole.roleIds"
-          :titles="['角色列表', '已选择']"
-          :props="{
-            key: 'id',
-            label: 'name'
-          }"
-          :data="roleOptions"
-        />
-      </el-form-item>
-    </el-form>
-    <!-- 操作按钮 -->
-    <template #footer>
-      <el-button type="primary" :loading="loading" @click="submitRole">
-        {{ t('action.save') }}
-      </el-button>
-      <el-button @click="roleDialogVisible = false">{{ t('dialog.close') }}</el-button>
-    </template>
-  </XModal>
-  <!-- 导入 -->
-  <XModal v-model="importDialogVisible" :title="importDialogTitle">
-    <el-form class="drawer-multiColumn-form" label-width="150px">
-      <el-form-item label="模板下载 :">
-        <el-button type="primary" @click="handleImportTemp">
-          <Icon icon="ep:download" />
-          点击下载
-        </el-button>
-      </el-form-item>
-      <el-form-item label="文件上传 :">
-        <el-upload
-          ref="uploadRef"
-          :action="updateUrl + '?updateSupport=' + updateSupport"
-          :headers="uploadHeaders"
-          :drag="true"
-          :limit="1"
-          :multiple="true"
-          :show-file-list="true"
-          :disabled="uploadDisabled"
-          :before-upload="beforeExcelUpload"
-          :on-exceed="handleExceed"
-          :on-success="handleFileSuccess"
-          :on-error="excelUploadError"
-          :auto-upload="false"
-          accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
-        >
-          <Icon icon="ep:upload-filled" />
-          <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-          <template #tip>
-            <div class="el-upload__tip">请上传 .xls , .xlsx 标准格式文件</div>
-          </template>
-        </el-upload>
-      </el-form-item>
-      <el-form-item label="是否更新已经存在的用户数据:">
-        <el-checkbox v-model="updateSupport" />
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <el-button type="primary" @click="submitFileForm">
-        <Icon icon="ep:upload-filled" />
-        {{ t('action.save') }}
-      </el-button>
-      <el-button @click="importDialogVisible = false">{{ t('dialog.close') }}</el-button>
-    </template>
-  </XModal>
-</template>
-
 <style scoped>
 .user {
   height: 900px;