This commit is contained in:
神仙都没用 2024-12-17 13:01:46 +08:00
parent bf19501818
commit 9ac391e723
10 changed files with 4372 additions and 3346 deletions

View File

@ -33,7 +33,7 @@
" </cl-crud>", " </cl-crud>",
"</template>", "</template>",
"", "",
"<script lang=\"ts\" name=\"菜单名称\" setup>", "<script lang=\"ts\" name=\"$1\" setup>",
"import { useCrud, useTable, useUpsert } from \"@cool-vue/crud\";", "import { useCrud, useTable, useUpsert } from \"@cool-vue/crud\";",
"import { useCool } from \"/@/cool\";", "import { useCool } from \"/@/cool\";",
"", "",
@ -52,7 +52,7 @@
"// cl-crud", "// cl-crud",
"const Crud = useCrud(", "const Crud = useCrud(",
" {", " {",
" service: service.demo.goods", " service: service$2",
" },", " },",
" (app) => {", " (app) => {",
" app.refresh();", " app.refresh();",

View File

@ -22,7 +22,7 @@
"core-js": "^3.38.1", "core-js": "^3.38.1",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"echarts": "^5.5.1", "echarts": "^5.5.1",
"element-plus": "2.8.4", "element-plus": "2.8.8",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"marked": "^14.1.3", "marked": "^14.1.3",
@ -64,7 +64,7 @@
"npm-run-all2": "^6.2.3", "npm-run-all2": "^6.2.3",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"rollup-plugin-visualizer": "^5.12.0", "rollup-plugin-visualizer": "^5.12.0",
"sass": "1.77.0", "sass": "1.81.0",
"terser": "^5.36.0", "terser": "^5.36.0",
"typescript": "~5.5.4", "typescript": "~5.5.4",
"vite": "^5.4.8", "vite": "^5.4.8",

View File

@ -1,3 +1,4 @@
import Mitt from "mitt";
// vue // vue
declare namespace Vue { declare namespace Vue {
interface Ref<T = any> { interface Ref<T = any> {
@ -249,10 +250,7 @@ declare namespace ClCrud {
event: { event: {
done: fn; done: fn;
next: Service["api"]["page"]; next: Service["api"]["page"];
render: ( render: (data: any | any[], pagination?: Response["page"]["pagination"]) => void;
list: Response["page"]["list"],
pagination?: Response["page"]["pagination"]
) => void;
} }
): void; ): void;
onDelete( onDelete(
@ -266,6 +264,8 @@ declare namespace ClCrud {
interface Ref { interface Ref {
"cl-table": ClTable.Ref; "cl-table": ClTable.Ref;
"cl-upsert": ClUpsert.Ref; "cl-upsert": ClUpsert.Ref;
id: number;
mitt: Mitt;
name: string; name: string;
routePath: string; routePath: string;
permission: Permission; permission: Permission;

View File

@ -70,8 +70,8 @@ export function useHelper({ config, crud, mitt }: Options) {
} }
// 渲染 // 渲染
function render(list: any[], pagination?: any) { function render(data: any | any[], pagination?: any) {
const res = { list, pagination }; const res = isArray(data) ? { list: data, pagination } : data;
done(); done();
success(res); success(res);
mitt.emit("crud.refresh", res); mitt.emit("crud.refresh", res);
@ -87,12 +87,15 @@ export function useHelper({ config, crud, mitt }: Options) {
} }
if (isArray(res)) { if (isArray(res)) {
render(res); res = {
} else { list: res,
render(res.list, res.pagination); pagination: {
total: res.length
}
};
} }
success(res); render(res);
resolve(res); resolve(res);
}) })
.catch((err) => { .catch((err) => {

View File

@ -55,7 +55,9 @@ export default defineComponent({
// 字典 // 字典
dict: {}, dict: {},
// 权限 // 权限
permission: {} permission: {},
// 事件
mitt
}, },
cloneDeep({ dict, permission }) cloneDeep({ dict, permission })
) )

7291
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
export const proxy = { export const proxy = {
'/dev/': { '/dev/': {
target: 'http://127.0.0.1:8001', target: 'https://show.cool-admin.com/api',
// target: 'http://127.0.0.1:8001',
changeOrigin: true, changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/dev/, '') rewrite: (path: string) => path.replace(/^\/dev/, '')
}, },

View File

@ -49,15 +49,15 @@ import { ref } from 'vue';
import { useCool } from '/@/cool'; import { useCool } from '/@/cool';
//service //service
const { service } = useCool(); const { service, route } = useCool();
console.log('service', service); console.log('service', service);
// cl-crud // cl-crud
const Crud = useCrud( const Crud = useCrud(
{ {
// serviceservice.demo.goods // serviceservice.base.sys.user
// service.demo.goods.page // service.base.sys.user.page
service: service.demo.goods service: service.base.sys.user
// 1 service // 1 service
// /src/modules/demo/service/test.ts // /src/modules/demo/service/test.ts
@ -83,7 +83,13 @@ const Crud = useCrud(
// } // }
}, },
app => { app => {
// Crud.value?.refresh()
app.refresh(); app.refresh();
//
// app.refresh({
// userId: route.query.id
// });
} }
); );

View File

@ -14,7 +14,6 @@
<cl-crud ref="Crud"> <cl-crud ref="Crud">
<cl-row> <cl-row>
<cl-refresh-btn /> <cl-refresh-btn />
<cl-add-btn />
<cl-multi-delete-btn /> <cl-multi-delete-btn />
<cl-flex1 /> <cl-flex1 />
@ -53,7 +52,7 @@ const { service } = useCool();
// cl-crud // cl-crud
const Crud = useCrud( const Crud = useCrud(
{ {
service: service.demo.goods service: service.base.sys.user
}, },
app => { app => {
app.refresh(); app.refresh();
@ -61,8 +60,8 @@ const Crud = useCrud(
); );
// cl-table // cl-table
// <Eps.DemoGoodsEntity><{ title: string; price: number }> // <Eps.BaseSysUserEntity>
const Table = useTable<Eps.DemoGoodsEntity>({ const Table = useTable<Eps.BaseSysUserEntity>({
autoHeight: false, autoHeight: false,
contextMenu: ['refresh'], contextMenu: ['refresh'],
@ -71,30 +70,22 @@ const Table = useTable<Eps.DemoGoodsEntity>({
type: 'selection' type: 'selection'
}, },
{ {
label: '商品标题', prop: 'headImg', // BaseSysUserEntity
prop: 'title', // DemoGoodsEntity label: '头像',
component: {
name: 'cl-avatar'
},
minWidth: 140 minWidth: 140
}, },
{ {
label: '主图', prop: 'name',
prop: 'mainImage', label: '姓名',
minWidth: 140, minWidth: 150
component: {
name: 'cl-image',
props: {
size: 60
}
}
}, },
{ {
label: '价格', prop: 'nickName',
prop: 'price', label: '昵称',
minWidth: 120 minWidth: 150
},
{
label: '库存',
prop: 'stock',
minWidth: 120
}, },
{ {
label: '创建时间', label: '创建时间',
@ -109,49 +100,40 @@ const Table = useTable<Eps.DemoGoodsEntity>({
}); });
// cl-upsert // cl-upsert
// <Eps.DemoGoodsEntity><{ title: string; price: number }> // <Eps.BaseSysUserEntity>
const Upsert = useUpsert<Eps.DemoGoodsEntity>({ const Upsert = useUpsert<Eps.BaseSysUserEntity>({
items: [ items: [
{ {
label: '商品标题', prop: 'headImg', // BaseSysUserEntity
prop: 'title', // DemoGoodsEntity label: '头像',
component: {
name: 'cl-upload',
props: {
text: '选择头像'
}
}
},
{
prop: 'name',
label: '姓名',
span: 12,
required: true,
component: { component: {
name: 'el-input' name: 'el-input'
} }
}, },
{ {
label: '主图', prop: 'username',
prop: 'mainImage', label: '用户名',
required: true,
span: 12,
component: { component: {
name: 'cl-upload' name: 'el-input'
}
},
{
label: '价格',
prop: 'price',
hook: 'number',
component: {
name: 'el-input-number',
props: {
min: 0.01,
max: 10000
}
}
},
{
label: '库存',
prop: 'stock',
component: {
name: 'el-input-number',
props: {
min: 0,
max: 1000
}
} }
} }
], ],
onSubmit(data, { next }) { onSubmit(data, { next }) {
// data DemoGoodsEntity // data BaseSysUserEntity
next({ next({
...data, ...data,

View File

@ -46,7 +46,8 @@ export default ({ mode }: ConfigEnv): UserConfig => {
css: { css: {
preprocessorOptions: { preprocessorOptions: {
scss: { scss: {
charset: false charset: false,
api: 'modern-compiler'
} }
} }
}, },