Browse Source

update

master
许孟阳 1 year ago
parent
commit
15090df880
  1. 45
      examples/App.vue
  2. 2
      package.json
  3. 15
      packages/manage/router/index.vue
  4. 35
      packages/manage/views/permission.vue
  5. 1
      packages/manage/views/status.vue
  6. 18
      plugs/api/user.ts
  7. 59
      plugs/element/index.ts
  8. 3
      plugs/store/index.ts

45
examples/App.vue

@ -10,28 +10,29 @@ import { Index, Views } from "noob-mengyxu";
const store = useStore(); const store = useStore();
const { buff, dictionary, config, permission, role, user, status, log } = Views.menus; const { buff, dictionary, config, permission, role, user, status, log } = Views.menus;
const menus = [ // const menus = [
{ // {
i18n: "menu.home", path: "home", icon: "HomeFilled" // i18n: "menu.home", path: "home", icon: "HomeFilled"
}, // },
{ // {
i18n: "menu.operator", path: "operator", icon: "Platform", children: [ // i18n: "menu.operator", path: "operator", icon: "Platform", children: [
buff, dictionary, config, permission, role, user, status, log // buff, dictionary, config, permission, role, user, status, log
] // ]
}, // },
{ // {
i18n: "menu.base", path: "base", icon: "House", children: [ // i18n: "menu.base", path: "base", icon: "House", children: [
{ i18n: "menu.table", path: "table", icon: "List" }, // { i18n: "menu.table", path: "table", icon: "List" },
{ i18n: "menu.form", path: "form", icon: "Postcard" }, // { i18n: "menu.form", path: "form", icon: "Postcard" },
] // ]
}, // },
{ // {
i18n: "menu.tool", path: "tool", icon: "Tools", children: [ // i18n: "menu.tool", path: "tool", icon: "Tools", children: [
{ i18n: "menu.terminal", path: "terminal", icon: "Platform" }, // { i18n: "menu.terminal", path: "terminal", icon: "Platform" },
{ i18n: "menu.color", path: "color", icon: "MagicStick" }, // { i18n: "menu.color", path: "color", icon: "MagicStick" },
] // ]
} // }
] // ]
const menus = null;
onMounted(() => { }); onMounted(() => { });

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "noob-mengyxu", "name": "noob-mengyxu",
"version": "0.2.11", "version": "0.3.0",
"main": "index.ts", "main": "index.ts",
"module": "index.ts", "module": "index.ts",
"keywords": [ "keywords": [

15
packages/manage/router/index.vue

@ -2,9 +2,8 @@
<el-container :style="appMain" ref="main" v-show="!flag.loading"> <el-container :style="appMain" ref="main" v-show="!flag.loading">
<el-header v-show="state.size.headHeight != '0px'" class="app-head" :height="state.size.headHeight"> <el-header v-show="state.size.headHeight != '0px'" class="app-head" :height="state.size.headHeight">
<Head :title="title" @updatePwd="pwd => emit('updatePwd', pwd)" @logout="emit('logout')" :styleAble="styleAble" <Head :title="title" @updatePwd="updatePwd" @logout="onLogout" :styleAble="styleAble" :sizeAble="sizeAble"
:sizeAble="sizeAble" :langAble="langAble" :center="center" :username="username" :closeAble="closeAble" :langAble="langAble" :center="center" :username="username" :closeAble="closeAble" :logo="logo" />
:logo="logo" />
</el-header> </el-header>
<el-container id="container"> <el-container id="container">
<el-aside v-show="state.size.asideWidth != '0px'" :width="state.size.asideWidth"> <el-aside v-show="state.size.asideWidth != '0px'" :width="state.size.asideWidth">
@ -22,6 +21,7 @@ import { reactive, onMounted, ref, onBeforeUnmount } from "vue";
import { useStore } from "vuex"; import { useStore } from "vuex";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { MenuTree, Head, Api } from "noob-mengyxu" import { MenuTree, Head, Api } from "noob-mengyxu"
import md5 from "js-md5";
const { state, commit, dispatch } = useStore(); const { state, commit, dispatch } = useStore();
const emit = defineEmits(['updatePwd', 'logout']); const emit = defineEmits(['updatePwd', 'logout']);
@ -112,8 +112,17 @@ const onLogout = () => {
}); });
} }
const updatePwd = pwd => {
pwd.old = md5(pwd.old);
pwd.new = md5(pwd.new);
pwd.reNew = md5(pwd.reNew);
emit('updatePwd', pwd);
Api.user.updatePwd(pwd);
}
onMounted(() => { onMounted(() => {
router.push("/") router.push("/")
dispatch("getMenus");
getUser(true); getUser(true);
interval = setInterval(getUser, 5000); interval = setInterval(getUser, 5000);
window.onresize = onResize; window.onresize = onResize;

35
packages/manage/views/permission.vue

@ -4,15 +4,8 @@
</SearchRow> </SearchRow>
<ListTable @query="query" :props="props" :example="example" :data="result" rowKey="id" <ListTable @query="query" :props="props" :example="example" :data="result" rowKey="id"
:treeProps="{ children: 'children' }"> :treeProps="{ children: 'children' }">
<template #status="{ row }"> <template #desc="{ row }">
<div slot="reference" class="name-wrapper"> <component class="icon" :is="row.desc"></component>
<NoobTag v-if="row.status == 'A'">
{{ t('base.active') }}
</NoobTag>
<NoobTag v-else type="danger">
{{ t('base.inactive') }}
</NoobTag>
</div>
</template> </template>
<template #action="{ row }"> <template #action="{ row }">
<TableAction :add="row.parent == null" @modify="modify(row)" @del="delate(row)" @add="addPermission(row)" /> <TableAction :add="row.parent == null" @modify="modify(row)" @del="delate(row)" @add="addPermission(row)" />
@ -27,6 +20,16 @@
<NoobInput v-model="permission.id" full :placeholder="t('rule.pleaseEnter') + t('permission.prop.1')" <NoobInput v-model="permission.id" full :placeholder="t('rule.pleaseEnter') + t('permission.prop.1')"
:disabled="!flag.add" /> :disabled="!flag.add" />
</template> </template>
<template #desc>
<el-select-v2 :size="state.size.size" class="form-item full" v-model="permission.desc" filterable
:options="icons.map(i => ({ value: i, label: i }))"
:placeholder="t('rule.pleaseSelect') + t('permission.prop.2')">
<template #default="{ item }">
<component class="icon" :is="item.value"></component>
{{ item.value }}
</template>
</el-select-v2>
</template>
<template #perOrder> <template #perOrder>
<NoobSelect v-model="permission.perOrder" full :max-value="99" <NoobSelect v-model="permission.perOrder" full :max-value="99"
:placeholder="t('rule.pleaseSelect') + t('permission.prop.4')" /> :placeholder="t('rule.pleaseSelect') + t('permission.prop.4')" />
@ -41,7 +44,7 @@ import { reactive, onMounted, ref } from "vue";
import { Api, PageExample, ListTable, SearchRow, NoobInput, TableAction, NoobTag, NoobSelect, ModifyForm, Element } from "noob-mengyxu"; import { Api, PageExample, ListTable, SearchRow, NoobInput, TableAction, NoobTag, NoobSelect, ModifyForm, Element } from "noob-mengyxu";
import { useI18n } from "vue3-i18n"; import { useI18n } from "vue3-i18n";
const { t } = useI18n(); const { t } = useI18n();
const { SimpleRequired } = Element; const { SimpleRequired, icons } = Element;
const { state, dispatch } = useStore(); const { state, dispatch } = useStore();
const { list, add, set, del } = Api.permission; const { list, add, set, del } = Api.permission;
const result = ref([]); const result = ref([]);
@ -65,7 +68,7 @@ const props = [
{ i18n: 'permission.prop.2', code: 'desc', slot: true, width: 80 }, { i18n: 'permission.prop.2', code: 'desc', slot: true, width: 80 },
{ i18n: 'permission.prop.3', code: 'perLevel', dict: 'per_level', width: 80 }, { i18n: 'permission.prop.3', code: 'perLevel', dict: 'per_level', width: 80 },
{ i18n: 'permission.prop.4', code: 'perOrder', width: 80 }, { i18n: 'permission.prop.4', code: 'perOrder', width: 80 },
{ i18n: 'permission.prop.5', code: 'status', dict: 'able_status', width: 80 }, { i18n: 'permission.prop.5', code: 'perStatus', dict: 'able_status', width: 80 },
{ i18n: 'permission.prop.6', code: 'perContent', width: 230 }, { i18n: 'permission.prop.6', code: 'perContent', width: 230 },
{ i18n: 'permission.prop.7', code: 'action', slot: true, width: 180, fixed: 'right' }, { i18n: 'permission.prop.7', code: 'action', slot: true, width: 180, fixed: 'right' },
] ]
@ -76,7 +79,7 @@ const items = [
{ i18n: 'permission.prop.3', code: 'perLevel', dict: 'per_level', disabled: true }, { i18n: 'permission.prop.3', code: 'perLevel', dict: 'per_level', disabled: true },
{ i18n: 'permission.prop.0', code: 'name' }, { i18n: 'permission.prop.0', code: 'name' },
{ i18n: 'permission.prop.6', code: 'perContent' }, { i18n: 'permission.prop.6', code: 'perContent' },
{ i18n: 'permission.prop.2', code: 'desc' }, { i18n: 'permission.prop.2', code: 'desc', slot: true },
{ i18n: 'permission.prop.4', code: 'perOrder', slot: true }, { i18n: 'permission.prop.4', code: 'perOrder', slot: true },
{ i18n: 'permission.prop.5', code: 'perStatus', dict: 'able_status' }, { i18n: 'permission.prop.5', code: 'perStatus', dict: 'able_status' },
] ]
@ -134,4 +137,12 @@ onMounted(() => {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
//@import url(); css //@import url(); css
.icon {
// margin-left: -15px;
margin-right: 10px;
width: 18px;
height: 18px;
// width: v-bind('state.size.menuIconSize');
// height: v-bind('state.size.menuIconSize');
}
</style> </style>

1
packages/manage/views/status.vue

@ -1,4 +1,5 @@
<template> <template>
<h1>功能待添加</h1>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>

18
plugs/api/user.ts

@ -1,5 +1,6 @@
import { get, post, put, delate } from '../http/axios'; import { get, post, put, delate } from '../http/axios';
const root = 'user'; const root = 'user';
const pwdUrl = 'user/password';
export const list = (example) => { export const list = (example) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -35,6 +36,23 @@ export const add = (user) => {
}); });
}; };
export const updatePwd = (pwd) => {
return new Promise((resolve, reject) => {
put(pwdUrl, pwd).then(
(rsp: any) => {
if (rsp) {
resolve(rsp);
} else {
resolve(false);
}
},
(err) => {
resolve(false);
}
);
});
};
export const set = (user) => { export const set = (user) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
put(root, user).then( put(root, user).then(

59
plugs/element/index.ts

@ -1,2 +1,57 @@
export * from "./message"; export * from './message';
export * from "./rule"; export * from './rule';
export const icons = [
'Search',
'Female',
'House',
'Link',
'Service',
'Pointer',
'Star',
'Notification',
'Connection',
'ChatDotRound',
'Setting',
'Clock',
'Position',
'View',
'Hide',
'Unlock',
'Lock',
'Refresh',
'Bell',
'User',
'UserFilled',
'CircleCheck',
'Warning',
'WarningFilled',
'WarnTriangleFilled',
'Filter',
'EditPen',
'Edit',
'Message',
'Tools',
'HomeFilled',
'Histogram',
'Document',
'Notebook',
'Tickets',
'Collection',
'Postcard',
'DataBoard',
'DataAnalysis',
'DataLine',
'TrendCharts',
'Files',
'Folder',
'List',
'Monitor',
'Iphone',
'Platform',
'OfficeBuilding',
'School',
'Cpu',
'MagicStick',
'Coin',
];

3
plugs/store/index.ts

@ -55,9 +55,6 @@ export class Actions {
getMenus = ({ state, commit }) => { getMenus = ({ state, commit }) => {
getMenus().then((rsp) => commit('updateState', ['menus', rsp])); getMenus().then((rsp) => commit('updateState', ['menus', rsp]));
}; };
logout = ({ state, commit }) => {
logout().then((rsp) => window.location.reload());
};
} }
export class Mutations { export class Mutations {

Loading…
Cancel
Save