Browse Source

1.0.0

master
许孟阳 3 months ago
parent
commit
309c06212d
  1. 4
      package.json
  2. 10
      packages/base/data/list-table.vue
  3. 17
      packages/base/item/input.vue
  4. 2
      packages/manage/views/log.vue
  5. 5
      packages/manage/views/role.vue
  6. 2
      plugs/api/dictionary.ts
  7. 2
      plugs/api/log.ts
  8. 12
      plugs/element/rule.ts
  9. 2
      plugs/i18n/zh.ts
  10. 1
      plugs/index.ts
  11. 52
      plugs/websocket.ts

4
package.json

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

10
packages/base/data/list-table.vue

@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
<el-table ref="table" :size="state.size.size" :data="page ? data.data : data" :border="border"
@selection-change="selectionChange" @row-click="emit('row-click', $event)"
:height="height || (page ? state.size.pTableHeight : state.size.tableHeight)" highlight-current-row
:row-key="rowKey" :tree-porps="treeProps" :lazy="lazy" :load="load">
:row-key="rowKey" :tree-porps="treeProps" :lazy="lazy" :load="load" :row-class-name="rowClassName" :empty-text="emptyText">
<el-table-column v-for="item in props" :key="item.code" :prop="item.code" :label="item.name || t(item.i18n)"
:type="item.type" :min-width="item.width" :width="item.type ? item.width : ''" :fixed="item.fixed"
@ -80,6 +80,14 @@ const prop = defineProps({ @@ -80,6 +80,14 @@ const prop = defineProps({
type: Boolean,
default: false,
},
rowClassName: {
type: Function, String,
default: null,
},
emptyText: {
type: String,
default: null,
},
});
const emit = defineEmits(["query", "selection-change", "row-click"]);

17
packages/base/item/input.vue

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
<template>
<el-input :size="state.size.size" :class="['form-item', prop.class, full && 'full']" v-model="myValue" :type="type"
:placeholder="placeholder || t('rule.pleaseEnter')" :disabled="disabled" :clearable="clearable">
:placeholder="placeholder || t('rule.pleaseEnter')" :disabled="disabled" :clearable="clearable"
@input="handleInput">
<template v-if="label" #prepend>{{ label }}</template>
</el-input>
</template>
@ -44,7 +45,15 @@ const prop = defineProps({ @@ -44,7 +45,15 @@ const prop = defineProps({
},
width: {
type: Number
}
},
trim: {
type: Boolean,
default: true,
},
noSpace: {
type: Boolean,
default: false,
},
});
const emit = defineEmits(["update:modelValue"]);
const myValue = ref(null);
@ -65,6 +74,10 @@ watch(() => prop.modelValue, (n, o) => { @@ -65,6 +74,10 @@ watch(() => prop.modelValue, (n, o) => {
watch(() => state.size, (n, o) => {
setWidth();
})
const handleInput = value => {
prop.trim && (myValue.value = value.trim())
prop.noSpace && (myValue.value = value.replace(/\s+/g, ''))
}
onMounted(() => {
prop.modelValue && (myValue.value = prop.modelValue);
setWidth();

2
packages/manage/views/log.vue

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
<SearchRow :title="t('log.title')" :add="false" :del="false" @query="query">
<NoobInput v-model="example.userId" :placeholder="t('log.prop.1')" />
<NoobDate v-model="example.startTime" :placeholder="t('log.start')" />
<NoobDate v-model="example.stopTime" :placeholder="t('log.stop')" />
<NoobDate v-model="example.endTime" :placeholder="t('log.stop')" />
</SearchRow>
<ListTable @query="query" :props="props" :example="example" :page="true" :data="result"></ListTable>
</template>

5
packages/manage/views/role.vue

@ -57,12 +57,13 @@ const form = ref(); @@ -57,12 +57,13 @@ const form = ref();
const permissionTree = ref();
const role = ref<any>({});
const permissions = ref<any>([]);
const halfWidth = window.innerHeight / 2 + 'px';
const props = [
{ i18n: 'role.prop.0', code: 'roleCode', width: 120 },
{ i18n: 'role.prop.1', code: 'roleName', width: 120 },
{ i18n: 'role.prop.2', code: 'roleDesc', width: 180 },
{ i18n: 'role.prop.3', code: 'roleStatus', dict: 'role_status', width: 180 },
// { i18n: 'role.prop.3', code: 'roleStatus', dict: 'role_status', width: 180 },
{ i18n: 'role.prop.4', code: 'action', slot: true, width: 180, fixed: 'right' }
]
@ -152,6 +153,6 @@ onMounted(() => { @@ -152,6 +153,6 @@ onMounted(() => {
<style lang="scss" scoped>
//@import url(); css
.permissionTree {
min-height: 500px;
min-height: v-bind('halfWidth');
}
</style>

2
plugs/api/dictionary.ts

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
import { delate } from '../http/axios';
import { queryPage, save, update } from './base';
const root = 'dict';
const root = 'dictionary';
export const list = (example) => {
return queryPage(root, example);

2
plugs/api/log.ts

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
import { queryPage } from './base';
const root = 'log/action';
const root = 'log';
export const list = (example) => {
return queryPage(root, example);
};

12
plugs/element/rule.ts

@ -217,8 +217,8 @@ export class IdCard { @@ -217,8 +217,8 @@ export class IdCard {
export class SimplePassword {
required: boolean = true;
trigger = 'blur';
min?: Number = 8;
max?: Number = 16;
min?: Number = 6;
max?: Number = 18;
validator = (rule: any, value: any, callback: any) => {
if (value == null || value === '') {
callback(new Error(t('rule.pleaseEnter') + t('pwd.pwd').toLowerCase()));
@ -234,11 +234,11 @@ export class SimplePassword { @@ -234,11 +234,11 @@ export class SimplePassword {
export class Username {
required: boolean = true;
trigger = 'blur';
min?: Number = 4;
max?: Number = 16;
min?: Number = 8;
max?: Number = 30;
validator = (rule: any, value: any, callback: any) => {
if (value != null && value.length != 0) {
if (!new RegExp('^[a-zA-Z0-9]{4,16}$').test(value)) {
if (!new RegExp('^[a-zA-Z0-9]{8,30}$').test(value)) {
callback(new Error(t('rule.username.0')));
}
if (/(^\_)|(\__)|(\_+$)/.test(value)) {
@ -256,7 +256,7 @@ export class Password { @@ -256,7 +256,7 @@ export class Password {
required: boolean = true;
trigger = 'blur';
min?: Number = 8;
max?: Number = 16;
max?: Number = 20;
validator = (rule: any, value: any, callback: any) => {
if (value == null || value === '') {
callback(new Error(t('rule.pleaseEnter') + t('pwd.pwd').toLowerCase()));

2
plugs/i18n/zh.ts

@ -73,7 +73,7 @@ export default class Zh { @@ -73,7 +73,7 @@ export default class Zh {
birth: '你输入的身份证出生日期非法',
error: '你输入的身份证号非法',
},
username: ['用户名由字母,数字组成,长度4-16之间', "用户名首尾不能出现下划线'_'", '用户名不能包含空格'],
username: ['用户名由字母,数字组成,长度8-30之间', "用户名首尾不能出现下划线'_'", '用户名不能包含空格'],
name: '姓名由汉字或字母组成,且长度不超过10',
};

1
plugs/index.ts

@ -4,4 +4,5 @@ export * as Store from './store'; @@ -4,4 +4,5 @@ export * as Store from './store';
export * as Http from './http';
export * as Lang from './i18n';
export * as Api from './api';
export * as WebSocket from './websocket';
export * from './constant';

52
plugs/websocket.ts

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
let websocket: WebSocket;
const msgHandlersMap = {};
let lastUrl;
let closeFlag = false;
export const closeWebSocket = () => {
closeFlag = false;
websocket?.close();
};
export const sendSocketMsg = (msg) => {
websocket?.send(JSON.stringify(msg));
};
export const openWebSocket = (url) => {
if (websocket && websocket.readyState === WebSocket.OPEN) {
if (lastUrl == url) {
return;
}
closeWebSocket();
}
websocket = new WebSocket(url);
lastUrl = url;
websocket.onopen = () => {
console.log('websocket已连接');
closeFlag = true;
};
websocket.onmessage = (msg) => {
const event = JSON.parse(msg.data);
const handlers = msgHandlersMap[event.type];
if (!handlers) {
return;
}
Object.values(handlers).forEach((handler: any) => {
handler(event.data);
});
};
websocket.onclose = () => {
console.log('websocket已断开');
if (closeFlag) {
setTimeout(() => {
openWebSocket(url);
}, 2000);
}
};
};
export const registerHandler = (type, key, handler) => {
const handlers = msgHandlersMap[type] || {};
handlers[key] = handler;
msgHandlersMap[type] = handlers;
};
Loading…
Cancel
Save