mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2024-11-01 14:10:27 +08:00
优化
This commit is contained in:
parent
d8d360b334
commit
7bfd30373b
@ -9,7 +9,7 @@
|
|||||||
"lint:eslint": "eslint \"{src}/**/*.{vue,ts,tsx}\" --fix"
|
"lint:eslint": "eslint \"{src}/**/*.{vue,ts,tsx}\" --fix"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cool-vue/crud": "^7.0.1-beta9",
|
"@cool-vue/crud": "^7.0.1-beta14",
|
||||||
"@element-plus/icons-vue": "^2.1.0",
|
"@element-plus/icons-vue": "^2.1.0",
|
||||||
"@vueuse/core": "^10.4.0",
|
"@vueuse/core": "^10.4.0",
|
||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
|
1
packages/crud/index.d.ts
vendored
1
packages/crud/index.d.ts
vendored
@ -329,6 +329,7 @@ declare namespace ClTable {
|
|||||||
dict: DictOptions | Vue.Ref<DictOptions>;
|
dict: DictOptions | Vue.Ref<DictOptions>;
|
||||||
dictFormatter: (values: DictOptions) => string;
|
dictFormatter: (values: DictOptions) => string;
|
||||||
dictColor: boolean;
|
dictColor: boolean;
|
||||||
|
dictSeparator: string;
|
||||||
buttons: OpButton | ((options: { scope: obj }) => OpButton);
|
buttons: OpButton | ((options: { scope: obj }) => OpButton);
|
||||||
align: "left" | "center" | "right";
|
align: "left" | "center" | "right";
|
||||||
label: string | Vue.Ref<string>;
|
label: string | Vue.Ref<string>;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@cool-vue/crud",
|
"name": "@cool-vue/crud",
|
||||||
"version": "7.0.1-beta11",
|
"version": "7.0.1-beta14",
|
||||||
"private": false,
|
"private": false,
|
||||||
"main": "./dist/index.umd.min.js",
|
"main": "./dist/index.umd.min.js",
|
||||||
"typings": "types/index.d.ts",
|
"typings": "types/index.d.ts",
|
||||||
@ -10,6 +10,7 @@
|
|||||||
"dist": "tsc && yarn build --target lib --name index ./src/index.ts"
|
"dist": "tsc && yarn build --target lib --name index ./src/index.ts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@cool-vue/crud": "^7.0.1-beta14",
|
||||||
"array.prototype.flat": "^1.2.4",
|
"array.prototype.flat": "^1.2.4",
|
||||||
"core-js": "^3.21.1",
|
"core-js": "^3.21.1",
|
||||||
"element-plus": "^2.3.9",
|
"element-plus": "^2.3.9",
|
||||||
|
@ -26,6 +26,9 @@ export function parseTableDict(value: any, item: ClTable.Column) {
|
|||||||
// 选项列表
|
// 选项列表
|
||||||
const options: DictOptions = cloneDeep(getValue(item.dict || []));
|
const options: DictOptions = cloneDeep(getValue(item.dict || []));
|
||||||
|
|
||||||
|
// 字符串分隔符
|
||||||
|
const separator = item.dictSeparator === undefined ? "," : item.dictSeparator;
|
||||||
|
|
||||||
// 设置颜色
|
// 设置颜色
|
||||||
if (item.dictColor) {
|
if (item.dictColor) {
|
||||||
options.forEach((e, i) => {
|
options.forEach((e, i) => {
|
||||||
@ -36,22 +39,36 @@ export function parseTableDict(value: any, item: ClTable.Column) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 绑定值
|
// 绑定值
|
||||||
const values = (isArray(value) ? value : [value]).filter(
|
let values = [];
|
||||||
(e) => e !== undefined && e !== null && e !== ""
|
|
||||||
);
|
// 格式化值
|
||||||
|
if (isArray(value)) {
|
||||||
|
values = value;
|
||||||
|
} else if (isString(value)) {
|
||||||
|
if (separator) {
|
||||||
|
values = value.split(separator);
|
||||||
|
} else {
|
||||||
|
values = [value];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
values = [value];
|
||||||
|
}
|
||||||
|
|
||||||
// 返回值
|
// 返回值
|
||||||
const list = values.map((v) => {
|
const list = values
|
||||||
|
.filter((e) => e !== undefined && e !== null && e !== "")
|
||||||
|
.map((v) => {
|
||||||
const d = deepFind(v, options) || { label: v, value: v };
|
const d = deepFind(v, options) || { label: v, value: v };
|
||||||
delete d.children;
|
delete d.children;
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 是否格式化
|
// 格式化返回
|
||||||
if (item.dictFormatter) {
|
if (item.dictFormatter) {
|
||||||
return item.dictFormatter(list);
|
return item.dictFormatter(list);
|
||||||
} else {
|
} else {
|
||||||
|
// tag 返回
|
||||||
return list.map((e) => {
|
return list.map((e) => {
|
||||||
return h(
|
return h(
|
||||||
<el-tag disable-transitions effect="dark" style="margin: 2px; border: 0" />,
|
<el-tag disable-transitions effect="dark" style="margin: 2px; border: 0" />,
|
||||||
|
@ -56,6 +56,7 @@ export declare function useTable(props: any): {
|
|||||||
};
|
};
|
||||||
dictFormatter: (values: DictOptions) => string;
|
dictFormatter: (values: DictOptions) => string;
|
||||||
dictColor: boolean;
|
dictColor: boolean;
|
||||||
|
dictSeparator: string;
|
||||||
buttons: ((options: {
|
buttons: ((options: {
|
||||||
scope: obj;
|
scope: obj;
|
||||||
}) => ClTable.OpButton) | ("info" | "delete" | "edit" | `slot-${string}` | {
|
}) => ClTable.OpButton) | ("info" | "delete" | "edit" | `slot-${string}` | {
|
||||||
|
@ -961,6 +961,19 @@
|
|||||||
"@babel/helper-validator-identifier" "^7.19.1"
|
"@babel/helper-validator-identifier" "^7.19.1"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
|
"@cool-vue/crud@^7.0.1-beta14":
|
||||||
|
version "7.0.1-beta14"
|
||||||
|
resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.1-beta14.tgz#5e6b28d67090fc36118cf3b79da2ccbe7db56266"
|
||||||
|
integrity sha512-/fM382tuvdS2xOVCfnBx/ZdltwJrKdmcXJcZufWf3y0SYv9TU/QSNB91vBJlxLvv2N3VabjeYgfn8TB86HT3gg==
|
||||||
|
dependencies:
|
||||||
|
array.prototype.flat "^1.2.4"
|
||||||
|
core-js "^3.21.1"
|
||||||
|
element-plus "^2.3.9"
|
||||||
|
lodash "^4.17.21"
|
||||||
|
lodash-es "^4.17.21"
|
||||||
|
mitt "^3.0.1"
|
||||||
|
vue "^3.3.4"
|
||||||
|
|
||||||
"@ctrl/tinycolor@^3.4.1":
|
"@ctrl/tinycolor@^3.4.1":
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz#53fa5fe9c34faee89469e48f91d51a3766108bc8"
|
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz#53fa5fe9c34faee89469e48f91d51a3766108bc8"
|
||||||
|
@ -43,6 +43,7 @@ const { app } = useBase();
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 26px;
|
font-size: 26px;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
|
line-height: 1;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,16 +29,32 @@
|
|||||||
<cl-svg :name="scope.row.icon" size="16px" style="margin-top: 5px" />
|
<cl-svg :name="scope.row.icon" size="16px" style="margin-top: 5px" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 权限 -->
|
<!-- 是否显示 -->
|
||||||
<template #column-perms="{ scope }">
|
<template #column-isShow="{ scope }">
|
||||||
<el-tag
|
<cl-switch
|
||||||
v-for="(item, index) in scope.row.permList"
|
v-model="scope.row.isShow"
|
||||||
:key="index"
|
:active-value="true"
|
||||||
effect="plain"
|
:inactive-value="false"
|
||||||
size="small"
|
:scope="scope.row"
|
||||||
style="margin: 2px; letter-spacing: 0.5px"
|
:column="scope.column"
|
||||||
>{{ item }}</el-tag
|
v-if="scope.row.type != 2"
|
||||||
>
|
/>
|
||||||
|
|
||||||
|
<span v-else></span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<!-- 图标 -->
|
||||||
|
<template #column-keepAlive="{ scope }">
|
||||||
|
<cl-switch
|
||||||
|
v-model="scope.row.keepAlive"
|
||||||
|
:active-value="true"
|
||||||
|
:inactive-value="false"
|
||||||
|
:scope="scope.row"
|
||||||
|
:column="scope.column"
|
||||||
|
v-if="scope.row.type == 1"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<span v-else></span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 路由 -->
|
<!-- 路由 -->
|
||||||
@ -49,15 +65,6 @@
|
|||||||
<span v-else>{{ scope.row.router }}</span>
|
<span v-else>{{ scope.row.router }}</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 路由缓存 -->
|
|
||||||
<template #column-keepAlive="{ scope }">
|
|
||||||
<el-icon v-if="scope.row.type == 1">
|
|
||||||
<check v-if="scope.row.keepAlive" />
|
|
||||||
<close v-else />
|
|
||||||
</el-icon>
|
|
||||||
<span v-else></span>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<!-- 行新增 -->
|
<!-- 行新增 -->
|
||||||
<template #slot-add="{ scope }">
|
<template #slot-add="{ scope }">
|
||||||
<el-button
|
<el-button
|
||||||
@ -92,7 +99,6 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" name="sys-menu" setup>
|
<script lang="ts" name="sys-menu" setup>
|
||||||
import { Check, Close } from "@element-plus/icons-vue";
|
|
||||||
import { setFocus, useCrud, useTable, useUpsert } from "@cool-vue/crud";
|
import { setFocus, useCrud, useTable, useUpsert } from "@cool-vue/crud";
|
||||||
import { useCool } from "/@/cool";
|
import { useCool } from "/@/cool";
|
||||||
import { deepTree } from "/@/cool/utils";
|
import { deepTree } from "/@/cool/utils";
|
||||||
@ -145,17 +151,7 @@ const Table = useTable({
|
|||||||
{
|
{
|
||||||
prop: "isShow",
|
prop: "isShow",
|
||||||
label: "是否显示",
|
label: "是否显示",
|
||||||
width: 100,
|
width: 100
|
||||||
component: {
|
|
||||||
name: "cl-switch",
|
|
||||||
props: {
|
|
||||||
activeValue: true,
|
|
||||||
inactiveValue: false,
|
|
||||||
onChange() {
|
|
||||||
menu.get();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: "icon",
|
prop: "icon",
|
||||||
@ -204,7 +200,8 @@ const Table = useTable({
|
|||||||
prop: "perms",
|
prop: "perms",
|
||||||
label: "权限",
|
label: "权限",
|
||||||
headerAlign: "center",
|
headerAlign: "center",
|
||||||
minWidth: 300
|
minWidth: 300,
|
||||||
|
dict: []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
prop: "orderNum",
|
prop: "orderNum",
|
||||||
@ -359,10 +356,6 @@ const Crud = useCrud(
|
|||||||
service: service.base.sys.menu,
|
service: service.base.sys.menu,
|
||||||
onRefresh(_, { render }) {
|
onRefresh(_, { render }) {
|
||||||
service.base.sys.menu.list().then((list) => {
|
service.base.sys.menu.list().then((list) => {
|
||||||
list.map((e) => {
|
|
||||||
e.permList = e.perms ? e.perms.split(",") : [];
|
|
||||||
});
|
|
||||||
|
|
||||||
render(deepTree(list));
|
render(deepTree(list));
|
||||||
menu.get();
|
menu.get();
|
||||||
});
|
});
|
||||||
|
@ -282,10 +282,10 @@
|
|||||||
"@babel/helper-validator-identifier" "^7.22.20"
|
"@babel/helper-validator-identifier" "^7.22.20"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@cool-vue/crud@^7.0.1-beta9":
|
"@cool-vue/crud@^7.0.1-beta14":
|
||||||
version "7.0.1-beta9"
|
version "7.0.1-beta14"
|
||||||
resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.1-beta9.tgz#caacb1eab03f48bc6789209242b198ebd06435f5"
|
resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.1-beta14.tgz#5e6b28d67090fc36118cf3b79da2ccbe7db56266"
|
||||||
integrity sha512-PnukV6Q1sPsXZS2li2BrmCDmYKJdqFumE/wA2kaSTOcrIgmjYmrS/oa2c3C5BKXrwDD9561kq0q8vsKBTpGQxQ==
|
integrity sha512-/fM382tuvdS2xOVCfnBx/ZdltwJrKdmcXJcZufWf3y0SYv9TU/QSNB91vBJlxLvv2N3VabjeYgfn8TB86HT3gg==
|
||||||
dependencies:
|
dependencies:
|
||||||
array.prototype.flat "^1.2.4"
|
array.prototype.flat "^1.2.4"
|
||||||
core-js "^3.21.1"
|
core-js "^3.21.1"
|
||||||
|
Loading…
Reference in New Issue
Block a user