Commit 82c219cf57b4ec086c171b2c0e1c515bfa58d517

Authored by fengistao
1 parent 48808a47

fix:修改密码和角色回显 feat:新增场景联动接口,待联调 wip:开发场景联动中

1 import { BasicPageParams } from '/@/api/model/baseModel'; 1 import { BasicPageParams } from '/@/api/model/baseModel';
2 2
3 -export type ScreenLinkPageTableQueryParam = BasicPageParams;  
4 -export interface ScreenModel {  
5 - name: string;  
6 - act: number;  
7 - stu: number;  
8 - desc: string;  
9 - createTime: string; 3 +export type ScreenLinkPageTableQueryParam = BasicPageParams & ScreenParam;
  4 +
  5 +export type ScreenParam = {
  6 + name?: string;
  7 + other?: string;
  8 +};
  9 +export interface ScreenAddModel {
  10 + createTime?: '2021-11-29T09:13:38.810Z';
  11 + creator?: 'string';
  12 + defaultConfig?: 'string';
  13 + description?: 'string';
  14 + doAction?: [
  15 + {
  16 + command: 'string';
  17 + createTime: '2021-11-29T09:13:38.810Z';
  18 + creator: 'string';
  19 + defaultConfig: 'string';
  20 + description: 'string';
  21 + deviceId: 'string';
  22 + enabled: true;
  23 + icon: 'string';
  24 + id: 'string';
  25 + name: 'string';
  26 + outPut: 'string';
  27 + outTarget: 'string';
  28 + roleIds: ['string'];
  29 + tenantCode: 'string';
  30 + tenantExpireTime: '2021-11-29T09:13:38.811Z';
  31 + tenantId: 'string';
  32 + tenantStatus: 'DISABLED';
  33 + updateTime: '2021-11-29T09:13:38.811Z';
  34 + updater: 'string';
  35 + }
  36 + ];
  37 + doCondition?: [
  38 + {
  39 + compare: 0;
  40 + createTime: '2021-11-29T09:13:38.811Z';
  41 + creator: 'string';
  42 + defaultConfig: 'string';
  43 + description: 'string';
  44 + deviceId: 'string';
  45 + enabled: true;
  46 + icon: 'string';
  47 + id: 'string';
  48 + name: 'string';
  49 + property: 'string';
  50 + roleIds: ['string'];
  51 + status: 'string';
  52 + tenantCode: 'string';
  53 + tenantExpireTime: '2021-11-29T09:13:38.811Z';
  54 + tenantId: 'string';
  55 + tenantStatus: 'DISABLED';
  56 + updateTime: '2021-11-29T09:13:38.811Z';
  57 + updater: 'string';
  58 + value: 'string';
  59 + }
  60 + ];
  61 + enabled?: true;
  62 + icon?: 'string';
  63 + id?: 'string';
  64 + name?: 'string';
  65 + organizationId?: 'string';
  66 + roleIds?: ['string'];
  67 + status?: 'string';
  68 + tenantCode?: 'string';
  69 + tenantExpireTime?: '2021-11-29T09:13:38.811Z';
  70 + tenantId?: 'string';
  71 + tenantStatus?: 'DISABLED';
  72 + triggers?: [
  73 + {
  74 + attributeChoose: 'string';
  75 + compare: 0;
  76 + createTime: '2021-11-29T09:13:38.811Z';
  77 + creator: 'string';
  78 + defaultConfig: 'string';
  79 + description: 'string';
  80 + deviceId: 'string';
  81 + enabled: true;
  82 + icon: 'string';
  83 + id: 'string';
  84 + name: 'string';
  85 + roleIds: ['string'];
  86 + tenantCode: 'string';
  87 + tenantExpireTime: '2021-11-29T09:13:38.811Z';
  88 + tenantId: 'string';
  89 + tenantStatus: 'DISABLED';
  90 + tiggerEvent: 'string';
  91 + touchWay: 'string';
  92 + updateTime: '2021-11-29T09:13:38.811Z';
  93 + updater: 'string';
  94 + value: 'string';
  95 + }
  96 + ];
  97 + updateTime?: '2021-11-29T09:13:38.811Z';
  98 + updater?: 'string';
  99 +}
  100 +
  101 +export interface ScreenUpdateModel {
  102 + createTime?: '2021-11-29T09:13:38.810Z';
  103 + creator?: 'string';
  104 + defaultConfig?: 'string';
  105 + description?: 'string';
  106 + doAction?: [
  107 + {
  108 + command: 'string';
  109 + createTime: '2021-11-29T09:13:38.810Z';
  110 + creator: 'string';
  111 + defaultConfig: 'string';
  112 + description: 'string';
  113 + deviceId: 'string';
  114 + enabled: true;
  115 + icon: 'string';
  116 + id: 'string';
  117 + name: 'string';
  118 + outPut: 'string';
  119 + outTarget: 'string';
  120 + roleIds: ['string'];
  121 + tenantCode: 'string';
  122 + tenantExpireTime: '2021-11-29T09:13:38.811Z';
  123 + tenantId: 'string';
  124 + tenantStatus: 'DISABLED';
  125 + updateTime: '2021-11-29T09:13:38.811Z';
  126 + updater: 'string';
  127 + }
  128 + ];
  129 + doCondition?: [
  130 + {
  131 + compare: 0;
  132 + createTime: '2021-11-29T09:13:38.811Z';
  133 + creator: 'string';
  134 + defaultConfig: 'string';
  135 + description: 'string';
  136 + deviceId: 'string';
  137 + enabled: true;
  138 + icon: 'string';
  139 + id: 'string';
  140 + name: 'string';
  141 + property: 'string';
  142 + roleIds: ['string'];
  143 + status: 'string';
  144 + tenantCode: 'string';
  145 + tenantExpireTime: '2021-11-29T09:13:38.811Z';
  146 + tenantId: 'string';
  147 + tenantStatus: 'DISABLED';
  148 + updateTime: '2021-11-29T09:13:38.811Z';
  149 + updater: 'string';
  150 + value: 'string';
  151 + }
  152 + ];
  153 + enabled?: true;
  154 + icon?: 'string';
  155 + id?: 'string';
  156 + name?: 'string';
  157 + organizationId?: 'string';
  158 + roleIds?: ['string'];
  159 + status?: 'string';
  160 + tenantCode?: 'string';
  161 + tenantExpireTime?: '2021-11-29T09:13:38.811Z';
  162 + tenantId?: 'string';
  163 + tenantStatus?: 'DISABLED';
  164 + triggers?: [
  165 + {
  166 + attributeChoose: 'string';
  167 + compare: 0;
  168 + createTime: '2021-11-29T09:13:38.811Z';
  169 + creator: 'string';
  170 + defaultConfig: 'string';
  171 + description: 'string';
  172 + deviceId: 'string';
  173 + enabled: true;
  174 + icon: 'string';
  175 + id: 'string';
  176 + name: 'string';
  177 + roleIds: ['string'];
  178 + tenantCode: 'string';
  179 + tenantExpireTime: '2021-11-29T09:13:38.811Z';
  180 + tenantId: 'string';
  181 + tenantStatus: 'DISABLED';
  182 + tiggerEvent: 'string';
  183 + touchWay: 'string';
  184 + updateTime: '2021-11-29T09:13:38.811Z';
  185 + updater: 'string';
  186 + value: 'string';
  187 + }
  188 + ];
  189 + updateTime?: '2021-11-29T09:13:38.811Z';
  190 + updater?: 'string';
10 } 191 }
1 import { defHttp } from '/@/utils/http/axios'; 1 import { defHttp } from '/@/utils/http/axios';
2 -import { ScreenLinkPageTableQueryParam } from '/@/api/ruleengine/model/ruleengineModel'; 2 +import {
  3 + ScreenLinkPageTableQueryParam,
  4 + ScreenAddModel,
  5 + ScreenUpdateModel,
  6 +} from '/@/api/ruleengine/model/ruleengineModel';
3 7
4 enum ScreenManagerApi { 8 enum ScreenManagerApi {
5 /** 9 /**
6 * 场景URL 10 * 场景URL
7 */ 11 */
8 - SCREEN_URL = '/getTable', 12 + SCREEN_GET_URL = '/sceneLinkage',
  13 + SCREEN_ADD_URL = '/sceneLinkage',
  14 + SCREEN_DELETE_URL = '/sceneLinkage',
  15 + SCREEN_UPDATE_URL = '/sceneLinkage/update',
9 } 16 }
10 17
11 /** 18 /**
12 * 分页查询场景联动表格页面 19 * 分页查询场景联动表格页面
13 * @param params pageSize page name 20 * @param params pageSize page name
14 */ 21 */
15 -export const screenLinkPageApi = () => { 22 +export const screenLinkPageGetApi = () => {
16 return defHttp.get<ScreenLinkPageTableQueryParam>({ 23 return defHttp.get<ScreenLinkPageTableQueryParam>({
17 - url: ScreenManagerApi.SCREEN_URL, 24 + url: ScreenManagerApi.SCREEN_GET_URL,
18 }); 25 });
19 }; 26 };
20 27
21 -//模拟数据  
22 -export const screenLinkPageApiList = () => {  
23 - return [  
24 - {  
25 - id: '10001',  
26 - name: '李丽',  
27 - act: 1,  
28 - stu: '启用',  
29 - desc: '好的好的',  
30 - createTime: '2021-11-20',  
31 - },  
32 - {  
33 - id: '10002',  
34 - name: '史芳',  
35 - act: 1,  
36 - stu: '停用',  
37 - desc: '好的好的',  
38 - createTime: '2021-11-20',  
39 - },  
40 - {  
41 - id: '10003', 28 +/**
  29 + * 新增场景联动
  30 + * @param params pageSize page name
  31 + */
  32 +export const screenLinkPageAddApi = (params: ScreenAddModel) => {
  33 + return defHttp.post<ScreenLinkPageTableQueryParam>({
  34 + url: ScreenManagerApi.SCREEN_ADD_URL,
  35 + params,
  36 + });
  37 +};
42 38
43 - name: '程强',  
44 - act: 1,  
45 - stu: '启用',  
46 - desc: '好的好的',  
47 - createTime: '2021-11-20',  
48 - },  
49 - {  
50 - id: '10004',  
51 - name: '罗敏',  
52 - act: 1,  
53 - stu: '停用',  
54 - desc: '好的好的',  
55 - createTime: '2021-11-20',  
56 - },  
57 - {  
58 - id: '10005',  
59 - name: '蔡杰',  
60 - act: 1,  
61 - stu: '停用',  
62 - desc: '好的好的',  
63 - createTime: '2021-11-20', 39 +/**
  40 + * 更新场景联动
  41 + * @param params pageSize page name
  42 + */
  43 +export const screenLinkPageUpdateApi = (params: ScreenUpdateModel) => {
  44 + return defHttp.post<ScreenLinkPageTableQueryParam>({
  45 + url: ScreenManagerApi.SCREEN_UPDATE_URL,
  46 + params,
  47 + });
  48 +};
  49 +
  50 +/**
  51 + * 删除场景联动
  52 + * @param params pageSize page name
  53 + */
  54 +export const screenLinkPageDeleteApi = (ids: string[]) => {
  55 + return defHttp.delete({
  56 + url: ScreenManagerApi.SCREEN_DELETE_URL,
  57 + data: {
  58 + ids: ids,
64 }, 59 },
65 - ]; 60 + });
66 }; 61 };
1 -import {defHttp} from '/@/utils/http/axios';  
2 -import {getMenuListResultModel} from './model/menuModel';  
3 -import {useUserStore} from '/@/store/modules/user';  
4 -import {RoleEnum} from '/@/enums/roleEnum'; 1 +import { defHttp } from '/@/utils/http/axios';
  2 +import { getMenuListResultModel } from './model/menuModel';
  3 +import { useUserStore } from '/@/store/modules/user';
  4 +import { RoleEnum } from '/@/enums/roleEnum';
5 5
6 enum Api { 6 enum Api {
7 BaseMenuUrl = '/menu', 7 BaseMenuUrl = '/menu',
8 GetMenuList = '/menu/me/menus', 8 GetMenuList = '/menu/me/menus',
9 SysAdminMenuList = '/admin/me/menus', 9 SysAdminMenuList = '/admin/me/menus',
10 - GetMenuIdsByRoleId = '/menu/getMenuIdsByRoleId/' 10 + GetMenuIdsByRoleId = '/menu/getMenuIdsByRoleId/',
11 } 11 }
12 12
13 /** 13 /**
@@ -17,17 +17,17 @@ enum Api { @@ -17,17 +17,17 @@ enum Api {
17 export const getMenuList = () => { 17 export const getMenuList = () => {
18 const userStore = useUserStore(); 18 const userStore = useUserStore();
19 let url = Api.GetMenuList; 19 let url = Api.GetMenuList;
20 - if (userStore.getRoleList.find(v => v == RoleEnum.ROLE_SYS_ADMIN)) { 20 + if (userStore.getRoleList.find((v) => v == RoleEnum.ROLE_SYS_ADMIN)) {
21 url = Api.SysAdminMenuList; 21 url = Api.SysAdminMenuList;
22 } 22 }
23 - return defHttp.get<getMenuListResultModel>({url: url}); 23 + return defHttp.get<getMenuListResultModel>({ url: url });
24 }; 24 };
25 25
26 export const delMenu = (menuIds: string[]) => { 26 export const delMenu = (menuIds: string[]) => {
27 let url = Api.BaseMenuUrl; 27 let url = Api.BaseMenuUrl;
28 - return defHttp.delete({url: url, data: menuIds})  
29 -} 28 + return defHttp.delete({ url: url, data: menuIds });
  29 +};
30 export const getMenusIdsByRoleId = (roleId: string) => { 30 export const getMenusIdsByRoleId = (roleId: string) => {
31 let url = Api.GetMenuIdsByRoleId + roleId; 31 let url = Api.GetMenuIdsByRoleId + roleId;
32 - return defHttp.get<Array<string>>({url: url});  
33 -} 32 + return defHttp.get<Array<string>>({ url: url });
  33 +};
@@ -16,10 +16,31 @@ @@ -16,10 +16,31 @@
16 <SaleRadar :loading="loading" class="enter-y" /> 16 <SaleRadar :loading="loading" class="enter-y" />
17 </div> 17 </div>
18 </div> 18 </div>
  19 + <BasicModal
  20 + @register="register"
  21 + v-bind="$attrs"
  22 + :mask="true"
  23 + :showCancelBtn="false"
  24 + :showOkBtn="false"
  25 + :canFullscreen="false"
  26 + :closable="false"
  27 + :maskStyle="maskColor"
  28 + :height="600"
  29 + :width="1500"
  30 + :maskClosable="false"
  31 + title="请修改密码"
  32 + :helpMessage="['请您修改密码']"
  33 + >
  34 + <PasswordDialog />
  35 + </BasicModal>
19 </PageWrapper> 36 </PageWrapper>
20 </template> 37 </template>
21 <script lang="ts" setup> 38 <script lang="ts" setup>
22 - import { ref } from 'vue'; 39 + import PasswordDialog from '/@/views/system/password/index.vue';
  40 + import { BasicModal, useModal } from '/@/components/Modal';
  41 + import { getAuthCache } from '/@/utils/auth';
  42 + import { USER_INFO_KEY } from '/@/enums/cacheEnum';
  43 + import { ref, onMounted } from 'vue';
23 import { Card } from 'ant-design-vue'; 44 import { Card } from 'ant-design-vue';
24 import { PageWrapper } from '/@/components/Page'; 45 import { PageWrapper } from '/@/components/Page';
25 import WorkbenchHeader from './components/WorkbenchHeader.vue'; 46 import WorkbenchHeader from './components/WorkbenchHeader.vue';
@@ -28,8 +49,23 @@ @@ -28,8 +49,23 @@
28 import DynamicInfo from './components/DynamicInfo.vue'; 49 import DynamicInfo from './components/DynamicInfo.vue';
29 import SaleRadar from './components/SaleRadar.vue'; 50 import SaleRadar from './components/SaleRadar.vue';
30 51
31 - const loading = ref(true);  
32 - 52 + const maskColor = ref({ backgroundColor: 'grey' });
  53 + const statusModel = ref(false);
  54 + const [register, { openModal }] = useModal();
  55 + onMounted(() => {
  56 + const userInfo: object = getAuthCache(USER_INFO_KEY);
  57 + if (userInfo.needSetPwd == true) {
  58 + statusModel.value = true;
  59 + openModal(statusModel.value);
  60 + } else if (userInfo.needSetPwd == false) {
  61 + openModal(statusModel.value);
  62 + }
  63 + });
  64 + //Yunteng123456!!!
  65 + //Password123456!
  66 + //System123456!
  67 + //Testrole123456!
  68 + const loading = ref(false);
33 setTimeout(() => { 69 setTimeout(() => {
34 loading.value = false; 70 loading.value = false;
35 }, 1500); 71 }, 1500);
@@ -15,7 +15,7 @@ export const columns: BasicColumn[] = [ @@ -15,7 +15,7 @@ export const columns: BasicColumn[] = [
15 }, 15 },
16 { 16 {
17 title: '状态', 17 title: '状态',
18 - dataIndex: 'stu', 18 + dataIndex: 'status',
19 width: 200, 19 width: 200,
20 component: 'RadioButtonGroup', 20 component: 'RadioButtonGroup',
21 defaultValue: 0, 21 defaultValue: 0,
@@ -28,7 +28,7 @@ export const columns: BasicColumn[] = [ @@ -28,7 +28,7 @@ export const columns: BasicColumn[] = [
28 }, 28 },
29 { 29 {
30 title: '描述', 30 title: '描述',
31 - dataIndex: 'desc', 31 + dataIndex: 'description',
32 width: 200, 32 width: 200,
33 }, 33 },
34 { 34 {
@@ -50,7 +50,7 @@ export const formSchema: FormSchema[] = [ @@ -50,7 +50,7 @@ export const formSchema: FormSchema[] = [
50 }, 50 },
51 }, 51 },
52 { 52 {
53 - field: 'org', 53 + field: 'organizationId',
54 label: '所属组织', 54 label: '所属组织',
55 required: true, 55 required: true,
56 colProps: { span: 20 }, 56 colProps: { span: 20 },
@@ -65,7 +65,7 @@ export const formSchema: FormSchema[] = [ @@ -65,7 +65,7 @@ export const formSchema: FormSchema[] = [
65 }, 65 },
66 }, 66 },
67 { 67 {
68 - field: 'desc', 68 + field: 'description',
69 label: '描述', 69 label: '描述',
70 // colProps: { span: 20 }, 70 // colProps: { span: 20 },
71 component: 'InputTextArea', 71 component: 'InputTextArea',
@@ -77,7 +77,7 @@ export const formSchema: FormSchema[] = [ @@ -77,7 +77,7 @@ export const formSchema: FormSchema[] = [
77 77
78 export const searchFormSchema: FormSchema[] = [ 78 export const searchFormSchema: FormSchema[] = [
79 { 79 {
80 - field: 'org', 80 + field: 'organizationId',
81 label: '所属组织', 81 label: '所属组织',
82 component: 'ApiTreeSelect', 82 component: 'ApiTreeSelect',
83 componentProps: { 83 componentProps: {
@@ -86,7 +86,7 @@ export const searchFormSchema: FormSchema[] = [ @@ -86,7 +86,7 @@ export const searchFormSchema: FormSchema[] = [
86 colProps: { span: 7 }, 86 colProps: { span: 7 },
87 }, 87 },
88 { 88 {
89 - field: 'name1', 89 + field: 'name',
90 label: '名称', 90 label: '名称',
91 component: 'Input', 91 component: 'Input',
92 colProps: { span: 8 }, 92 colProps: { span: 8 },
@@ -95,7 +95,7 @@ export const searchFormSchema: FormSchema[] = [ @@ -95,7 +95,7 @@ export const searchFormSchema: FormSchema[] = [
95 }, 95 },
96 }, 96 },
97 { 97 {
98 - field: 's1', 98 + field: 'status',
99 label: '状态', 99 label: '状态',
100 component: 'ApiSelect', 100 component: 'ApiSelect',
101 componentProps: { 101 componentProps: {
@@ -41,7 +41,12 @@ @@ -41,7 +41,12 @@
41 import SceneLinkAgeDrawer from './useDrawer.vue'; 41 import SceneLinkAgeDrawer from './useDrawer.vue';
42 import { columns, searchFormSchema } from './config.d'; 42 import { columns, searchFormSchema } from './config.d';
43 import { useMessage } from '/@/hooks/web/useMessage'; 43 import { useMessage } from '/@/hooks/web/useMessage';
44 - import { screenLinkPageApiList } from '/@/api/ruleengine/ruleengineApi'; 44 + import {
  45 + screenLinkPageGetApi,
  46 + screenLinkPageAddApi,
  47 + screenLinkPageUpdateApi,
  48 + screenLinkPageDeleteApi,
  49 + } from '/@/api/ruleengine/ruleengineApi';
45 50
46 export default defineComponent({ 51 export default defineComponent({
47 name: 'DeviceManagement', 52 name: 'DeviceManagement',
@@ -52,7 +57,7 @@ @@ -52,7 +57,7 @@
52 const { createMessage } = useMessage(); 57 const { createMessage } = useMessage();
53 const [registerTable, { reload }] = useTable({ 58 const [registerTable, { reload }] = useTable({
54 title: '', 59 title: '',
55 - api: screenLinkPageApiList, 60 + api: screenLinkPageGetApi,
56 columns, 61 columns,
57 formConfig: { 62 formConfig: {
58 labelWidth: 120, 63 labelWidth: 120,
@@ -3,12 +3,12 @@ @@ -3,12 +3,12 @@
3 <!-- register 用于注册 useTable,如果需要使用useTable提供的 api,必须将 register 传入组件的 onRegister--> 3 <!-- register 用于注册 useTable,如果需要使用useTable提供的 api,必须将 register 传入组件的 onRegister-->
4 <!-- @fetch-success接口请求成功后触发 --> 4 <!-- @fetch-success接口请求成功后触发 -->
5 <BasicTable @register="registerTable" @fetch-success="onFetchSuccess"> 5 <BasicTable @register="registerTable" @fetch-success="onFetchSuccess">
6 -  
7 <!-- 通过模板,加载工具栏 --> 6 <!-- 通过模板,加载工具栏 -->
8 <template #toolbar> 7 <template #toolbar>
9 <a-button type="primary" @click="handleCreate"> 8 <a-button type="primary" @click="handleCreate">
10 {{ getI18nCreateMenu }} 9 {{ getI18nCreateMenu }}
11 - </a-button> <!-- 新增菜单--> 10 + </a-button>
  11 + <!-- 新增菜单-->
12 </template> 12 </template>
13 13
14 <!-- 表格单项,操作 --> 14 <!-- 表格单项,操作 -->
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 icon: 'ant-design:delete-outlined', 23 icon: 'ant-design:delete-outlined',
24 color: 'error', 24 color: 'error',
25 popConfirm: { 25 popConfirm: {
26 - title: getDeleteTitle(),//是否确认删除//getDeleteTitle() 26 + title: getDeleteTitle(), //是否确认删除//getDeleteTitle()
27 confirm: handleDelete.bind(null, record), 27 confirm: handleDelete.bind(null, record),
28 }, 28 },
29 }, 29 },
@@ -33,135 +33,135 @@ @@ -33,135 +33,135 @@
33 </BasicTable> 33 </BasicTable>
34 34
35 <!-- 弹出框 --> 35 <!-- 弹出框 -->
36 - <MenuDrawer @register="registerDrawer" @success="handleSuccess"/> 36 + <MenuDrawer @register="registerDrawer" @success="handleSuccess" />
37 </div> 37 </div>
38 </template> 38 </template>
39 <script lang="ts"> 39 <script lang="ts">
40 -//导入所需插件  
41 -import {computed, defineComponent, nextTick} from 'vue';  
42 -  
43 -// 导入表格组件,表格事件  
44 -import {BasicTable, useTable, TableAction} from '/@/components/Table';  
45 -  
46 -// 加载表格数据  
47 -import {getMenuList, delMenu} from '/@/api/sys/menu';  
48 -// 加载自定义侧边弹出框 组件  
49 -import {useDrawer} from '/@/components/Drawer';  
50 -  
51 -// 导入子页面【新增、修改】  
52 -import MenuDrawer from './MenuDrawer.vue';  
53 -  
54 -// 导入列 属性,和搜索栏内容  
55 -import {columns, searchFormSchema} from './menu.data';  
56 -import {useI18n} from "/@/hooks/web/useI18n";  
57 -import {notification} from "ant-design-vue";  
58 -  
59 -// 自定义表格组件和属性  
60 -export default defineComponent({  
61 - name: 'MenuManagement',  
62 - components: {BasicTable, MenuDrawer, TableAction},  
63 - setup() {  
64 - const [registerDrawer, {openDrawer}] = useDrawer();//使用右侧弹出框  
65 - const {t} = useI18n(); //加载国际化  
66 - // 新增菜单  
67 - const getI18nCreateMenu = computed(() => t('routes.common.system.pageSystemTitleCreateMenu'));  
68 -  
69 - const [registerTable, {reload, expandAll}] = useTable({  
70 - title: t('routes.common.system.pageSystemTitleMenuList'),//'菜单列表'  
71 - api: getMenuList, //加载数据  
72 - columns, //加载列  
73 - // formConfig: {  
74 - // labelWidth: 120,  
75 - // schemas: searchFormSchema,  
76 - // },  
77 - isTreeTable: true,  
78 - pagination: false,  
79 - striped: false,  
80 - // useSearchForm: true,  
81 - showTableSetting: true,  
82 - bordered: true,  
83 - showIndexColumn: false,  
84 - canResize: false,  
85 - actionColumn: {  
86 - width: 80,  
87 - title: t('routes.common.system.pageSystemTitleOperation'),//操作  
88 - dataIndex: 'action',  
89 - slots: {customRender: 'action'},  
90 - fixed: undefined,  
91 - },  
92 - });  
93 -  
94 - /**  
95 - * 获得删除提示框的文字  
96 - */  
97 - function getDeleteTitle(): string {  
98 - let labelText = t('routes.common.system.pageSystemTitleWhetherDelete');  
99 - return labelText  
100 - }  
101 -  
102 - /**  
103 - * 打开新增菜单  
104 - */  
105 - function handleCreate() {  
106 - openDrawer(true, {  
107 - isUpdate: false, 40 + //导入所需插件
  41 + import { computed, defineComponent, nextTick } from 'vue';
  42 +
  43 + // 导入表格组件,表格事件
  44 + import { BasicTable, useTable, TableAction } from '/@/components/Table';
  45 +
  46 + // 加载表格数据
  47 + import { getMenuList, delMenu } from '/@/api/sys/menu';
  48 + // 加载自定义侧边弹出框 组件
  49 + import { useDrawer } from '/@/components/Drawer';
  50 +
  51 + // 导入子页面【新增、修改】
  52 + import MenuDrawer from './MenuDrawer.vue';
  53 +
  54 + // 导入列 属性,和搜索栏内容
  55 + import { columns, searchFormSchema } from './menu.data';
  56 + import { useI18n } from '/@/hooks/web/useI18n';
  57 + import { notification } from 'ant-design-vue';
  58 +
  59 + // 自定义表格组件和属性
  60 + export default defineComponent({
  61 + name: 'MenuManagement',
  62 + components: { BasicTable, MenuDrawer, TableAction },
  63 + setup() {
  64 + const [registerDrawer, { openDrawer }] = useDrawer(); //使用右侧弹出框
  65 + const { t } = useI18n(); //加载国际化
  66 + // 新增菜单
  67 + const getI18nCreateMenu = computed(() => t('routes.common.system.pageSystemTitleCreateMenu'));
  68 + console.log(111);
  69 + const [registerTable, { reload, expandAll }] = useTable({
  70 + title: t('routes.common.system.pageSystemTitleMenuList'), //'菜单列表'
  71 + api: getMenuList, //加载数据
  72 + columns, //加载列
  73 + // formConfig: {
  74 + // labelWidth: 120,
  75 + // schemas: searchFormSchema,
  76 + // },
  77 + isTreeTable: true,
  78 + pagination: false,
  79 + striped: false,
  80 + // useSearchForm: true,
  81 + showTableSetting: true,
  82 + bordered: true,
  83 + showIndexColumn: false,
  84 + canResize: false,
  85 + actionColumn: {
  86 + width: 80,
  87 + title: t('routes.common.system.pageSystemTitleOperation'), //操作
  88 + dataIndex: 'action',
  89 + slots: { customRender: 'action' },
  90 + fixed: undefined,
  91 + },
108 }); 92 });
109 - }  
110 93
111 - /**  
112 - * 打开 编辑菜单  
113 - * @param record  
114 - */  
115 - function handleEdit(record: Recordable) {  
116 - console.log("----------------------------333-------------"+record.parentId);  
117 - openDrawer(true, {  
118 - record,  
119 - isUpdate: true,  
120 - });  
121 - } 94 + /**
  95 + * 获得删除提示框的文字
  96 + */
  97 + function getDeleteTitle(): string {
  98 + let labelText = t('routes.common.system.pageSystemTitleWhetherDelete');
  99 + return labelText;
  100 + }
122 101
123 - /**  
124 - * 执行 删除操作  
125 - * @param record  
126 - */  
127 - async function handleDelete(record: Recordable) {  
128 - try {  
129 - let ids = [record.id,];  
130 - await delMenu(ids);  
131 - notification.success({  
132 - message: "成功",  
133 - description: "删除菜单成功",  
134 - duration: 3, 102 + /**
  103 + * 打开新增菜单
  104 + */
  105 + function handleCreate() {
  106 + openDrawer(true, {
  107 + isUpdate: false,
135 }); 108 });
136 - await reload();  
137 - } catch (e) {  
138 - return Promise.reject(e);  
139 } 109 }
140 - }  
141 110
142 - /**  
143 - * 操作成功,重新加载页面  
144 - */  
145 - function handleSuccess() {  
146 - reload();  
147 - } 111 + /**
  112 + * 打开 编辑菜单
  113 + * @param record
  114 + */
  115 + function handleEdit(record: Recordable) {
  116 + console.log('----------------------------333-------------' + record.parentId);
  117 + openDrawer(true, {
  118 + record,
  119 + isUpdate: true,
  120 + });
  121 + }
148 122
149 - function onFetchSuccess() {  
150 - // 演示默认展开所有表项  
151 - nextTick(expandAll);  
152 - } 123 + /**
  124 + * 执行 删除操作
  125 + * @param record
  126 + */
  127 + async function handleDelete(record: Recordable) {
  128 + try {
  129 + let ids = [record.id];
  130 + await delMenu(ids);
  131 + notification.success({
  132 + message: '成功',
  133 + description: '删除菜单成功',
  134 + duration: 3,
  135 + });
  136 + await reload();
  137 + } catch (e) {
  138 + return Promise.reject(e);
  139 + }
  140 + }
  141 +
  142 + /**
  143 + * 操作成功,重新加载页面
  144 + */
  145 + function handleSuccess() {
  146 + reload();
  147 + }
  148 +
  149 + function onFetchSuccess() {
  150 + // 演示默认展开所有表项
  151 + nextTick(expandAll);
  152 + }
153 153
154 - return {  
155 - getDeleteTitle,  
156 - getI18nCreateMenu,  
157 - registerTable,  
158 - registerDrawer,  
159 - handleCreate,  
160 - handleEdit,  
161 - handleDelete,  
162 - handleSuccess,  
163 - onFetchSuccess,  
164 - };  
165 - },  
166 -}); 154 + return {
  155 + getDeleteTitle,
  156 + getI18nCreateMenu,
  157 + registerTable,
  158 + registerDrawer,
  159 + handleCreate,
  160 + handleEdit,
  161 + handleDelete,
  162 + handleSuccess,
  163 + onFetchSuccess,
  164 + };
  165 + },
  166 + });
167 </script> 167 </script>
@@ -10,18 +10,18 @@ @@ -10,18 +10,18 @@
10 </PageWrapper> 10 </PageWrapper>
11 </template> 11 </template>
12 <script lang="ts"> 12 <script lang="ts">
13 - import { defineComponent } from 'vue'; 13 + import { defineComponent, ref } from 'vue';
14 import { PageWrapper } from '/@/components/Page'; 14 import { PageWrapper } from '/@/components/Page';
15 import { BasicForm, useForm } from '/@/components/Form'; 15 import { BasicForm, useForm } from '/@/components/Form';
16 - import {USER_INFO_KEY} from "/@/enums/cacheEnum";  
17 - import {getAuthCache} from "/@/utils/auth"; 16 + import { USER_INFO_KEY } from '/@/enums/cacheEnum';
  17 + import { getAuthCache } from '/@/utils/auth';
18 import { formSchema } from './pwd.data'; 18 import { formSchema } from './pwd.data';
19 - import {resetPassword} from "/@/api/system/system";  
20 - import {useMultipleTabStore} from "/@/store/modules/multipleTab";  
21 - import {useUserStore} from "/@/store/modules/user";  
22 - import {useAppStore} from "/@/store/modules/app";  
23 - import {usePermissionStore} from "/@/store/modules/permission";  
24 - import {useMessage} from "/@/hooks/web/useMessage"; 19 + import { resetPassword } from '/@/api/system/system';
  20 + import { useMultipleTabStore } from '/@/store/modules/multipleTab';
  21 + import { useUserStore } from '/@/store/modules/user';
  22 + import { useAppStore } from '/@/store/modules/app';
  23 + import { usePermissionStore } from '/@/store/modules/permission';
  24 + import { useMessage } from '/@/hooks/web/useMessage';
25 export default defineComponent({ 25 export default defineComponent({
26 name: 'ChangePassword', 26 name: 'ChangePassword',
27 components: { BasicForm, PageWrapper }, 27 components: { BasicForm, PageWrapper },
@@ -36,35 +36,35 @@ @@ -36,35 +36,35 @@
36 const userStore = useUserStore(); 36 const userStore = useUserStore();
37 const appStore = useAppStore(); 37 const appStore = useAppStore();
38 const permissionStore = usePermissionStore(); 38 const permissionStore = usePermissionStore();
39 - const {createMessage} = useMessage(); 39 + const { createMessage } = useMessage();
40 const userInfo = getAuthCache(USER_INFO_KEY); 40 const userInfo = getAuthCache(USER_INFO_KEY);
41 - console.log(userInfo,"userInfo") 41 + // console.log(userInfo, 'userInfo');
42 async function handleSubmit() { 42 async function handleSubmit() {
43 try { 43 try {
44 const values = await validate(); 44 const values = await validate();
45 const { passwordOld, passwordNew } = values; 45 const { passwordOld, passwordNew } = values;
46 const params = { 46 const params = {
47 - userId:userInfo.userId,  
48 - password:passwordOld,  
49 - resetPassword:passwordNew 47 + userId: userInfo.userId,
  48 + password: passwordOld,
  49 + resetPassword: passwordNew,
50 }; 50 };
51 51
52 - await resetPassword(params).then((result)=>{  
53 - if(result.data){  
54 - createMessage.success("修改成功");  
55 - setTimeout(function (){  
56 - localStorage.clear();  
57 - appStore.resetAllState();  
58 - permissionStore.resetState();  
59 - tabStore.resetState();  
60 - userStore.resetState();  
61 - location.reload();  
62 - },500)  
63 - } 52 + await resetPassword(params).then((result) => {
  53 + if (result.data) {
  54 + createMessage.success('修改成功');
  55 + // /dashboard/analysis
  56 + setTimeout(function () {
  57 + localStorage.clear();
  58 + appStore.resetAllState();
  59 + permissionStore.resetState();
  60 + tabStore.resetState();
  61 + userStore.resetState();
  62 + location.reload();
  63 + }, 500);
  64 + }
64 }); 65 });
65 } catch (error) {} 66 } catch (error) {}
66 } 67 }
67 -  
68 return { register, resetFields, handleSubmit }; 68 return { register, resetFields, handleSubmit };
69 }, 69 },
70 }); 70 });
@@ -112,7 +112,6 @@ @@ -112,7 +112,6 @@
112 } 112 }
113 }); 113 });
114 }); 114 });
115 - console.log(roleMenus.value);  
116 proxy.$refs.tree.setCheckedKeys(roleMenus.value); 115 proxy.$refs.tree.setCheckedKeys(roleMenus.value);
117 roleId.value = data.record.id; 116 roleId.value = data.record.id;
118 } 117 }
@@ -145,6 +144,7 @@ @@ -145,6 +144,7 @@
145 } 144 }
146 // Tree check事件 145 // Tree check事件
147 const handleCheckClick = (_, e) => { 146 const handleCheckClick = (_, e) => {
  147 + allCheckedKeys.value = [];
148 let nodes = e.checkedNodes; 148 let nodes = e.checkedNodes;
149 let halfKeys = e.halfCheckedKeys; 149 let halfKeys = e.halfCheckedKeys;
150 nodes.map((node) => { 150 nodes.map((node) => {
@@ -156,12 +156,6 @@ @@ -156,12 +156,6 @@
156 }); 156 });
157 allCheckedKeys.value.push(...halfKeys); 157 allCheckedKeys.value.push(...halfKeys);
158 }; 158 };
159 - // const handleCheckClick = (checkedKeys: string[], { halfCheckedKeys }) => {  
160 - // allCheckedKeys.value = [...checkedKeys, ...halfCheckedKeys];  
161 - // // 父节点  
162 - // roleHalfCheckedKeys.value = halfCheckedKeys;  
163 - // };  
164 -  
165 return { 159 return {
166 allCheckedKeys, 160 allCheckedKeys,
167 registerDrawer, 161 registerDrawer,