Skip to content

Commit 31fa1f4

Browse files
committed
调整 crud 部分写法
1 parent 83859b6 commit 31fa1f4

File tree

10 files changed

+84
-109
lines changed

10 files changed

+84
-109
lines changed

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "front-next",
3-
"version": "5.8.1",
3+
"version": "5.9.0",
44
"scripts": {
55
"dev": "vite --host",
66
"build": "vite build",
@@ -11,7 +11,7 @@
1111
"dependencies": {
1212
"@codemirror/lang-javascript": "^6.0.1",
1313
"@codemirror/theme-one-dark": "^6.0.0",
14-
"@cool-vue/crud": "^5.4.0",
14+
"@cool-vue/crud": "^5.5.4",
1515
"@element-plus/icons-vue": "^2.0.6",
1616
"@vueuse/core": "^9.1.0",
1717
"@wangeditor/editor": "^5.1.14",

src/modules/base/components/editor/wang.vue

+2
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,9 @@ onBeforeUnmount(() => {
136136
<style lang="scss" scoped>
137137
.cl-editor-wang {
138138
border: 1px solid var(--el-border-color);
139+
border-radius: var(--el-border-radius-base);
139140
box-sizing: border-box;
141+
overflow: hidden;
140142
141143
:deep(.w-e-toolbar) {
142144
border-bottom: 1px solid var(--el-border-color);

src/modules/base/views/components/dept/check.vue

+11-25
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
label: 'name',
1515
children: 'children'
1616
}"
17-
:default-checked-keys="checked"
1817
:filter-node-method="filterNode"
1918
:check-strictly="checkStrictly"
2019
@check="onCheckChange"
@@ -24,10 +23,10 @@
2423
</template>
2524

2625
<script lang="ts" name="dept-check" setup>
27-
import { onMounted, ref, watch } from "vue";
26+
import { ref, watch } from "vue";
2827
import { deepTree } from "/@/cool/utils";
29-
import { ElMessage } from "element-plus";
3028
import { useCool } from "/@/cool";
29+
import { useUpsert } from "@cool-vue/crud";
3130
3231
const props = defineProps({
3332
modelValue: {
@@ -45,24 +44,16 @@ const { service } = useCool();
4544
const Tree = ref();
4645
4746
// 树形列表
48-
const list = ref<any[]>([]);
49-
50-
// 已选列表
51-
const checked = ref();
47+
const list = ref();
5248
5349
// 关键字搜素
5450
const keyword = ref("");
5551
5652
// 刷新树形列表
57-
function refresh() {
58-
service.base.sys.department
59-
.list()
60-
.then((res) => {
61-
list.value = deepTree(res);
62-
})
63-
.catch((err) => {
64-
ElMessage.error(err.message);
65-
});
53+
async function refresh() {
54+
return service.base.sys.department.list().then((res) => {
55+
list.value = deepTree(res);
56+
});
6657
}
6758
6859
// 过滤节点
@@ -81,16 +72,11 @@ watch(keyword, (val: string) => {
8172
Tree.value.filter(val);
8273
});
8374
84-
// 监听值
85-
watch(
86-
() => props.modelValue,
87-
(val) => {
88-
checked.value = val || [];
75+
useUpsert({
76+
async onOpened() {
77+
await refresh();
78+
Tree.value.setCheckedKeys(props.modelValue || []);
8979
}
90-
);
91-
92-
onMounted(() => {
93-
refresh();
9480
});
9581
</script>
9682

src/modules/base/views/components/menu/check.vue

+16-28
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
label: 'name',
1313
children: 'children'
1414
}"
15-
:default-checked-keys="checked"
1615
:filter-node-method="filterNode"
1716
@check="onCheckChange"
1817
/>
@@ -21,10 +20,10 @@
2120
</template>
2221

2322
<script lang="ts" name="menu-check" setup>
24-
import { onMounted, ref, watch } from "vue";
25-
import { ElMessage } from "element-plus";
23+
import { ref, watch } from "vue";
2624
import { deepTree } from "/@/cool/utils";
2725
import { useCool } from "/@/cool";
26+
import { useUpsert } from "@cool-vue/crud";
2827
2928
const props = defineProps({
3029
modelValue: {
@@ -37,28 +36,20 @@ const emit = defineEmits(["update:modelValue"]);
3736
3837
const { service } = useCool();
3938
40-
// 树形列表
41-
const list = ref<any[]>([]);
39+
// el-tree 组件
40+
const Tree = ref();
4241
43-
// 已选列表
44-
const checked = ref<any[]>([]);
42+
// 树形列表
43+
const list = ref();
4544
4645
// 搜索关键字
4746
const keyword = ref("");
4847
49-
// el-tree 组件
50-
const Tree = ref();
51-
5248
// 刷新列表
53-
function refresh() {
54-
service.base.sys.menu
55-
.list()
56-
.then((res) => {
57-
list.value = deepTree(res);
58-
})
59-
.catch((err) => {
60-
ElMessage.error(err.message);
61-
});
49+
async function refresh() {
50+
return service.base.sys.menu.list().then((res) => {
51+
list.value = deepTree(res);
52+
});
6253
}
6354
6455
// 过滤节点
@@ -77,16 +68,13 @@ watch(keyword, (val: string) => {
7768
Tree.value.filter(val);
7869
});
7970
80-
// 刷新监听
81-
watch(
82-
() => props.modelValue,
83-
(val) => {
84-
checked.value = (val || []).filter((e) => Tree.value.getNode(e)?.isLeaf);
71+
useUpsert({
72+
async onOpened() {
73+
await refresh();
74+
Tree.value.setCheckedKeys(
75+
(props.modelValue || []).filter((e) => Tree.value.getNode(e)?.isLeaf)
76+
);
8577
}
86-
);
87-
88-
onMounted(() => {
89-
refresh();
9078
});
9179
</script>
9280

src/modules/base/views/param.vue

+7-10
Original file line numberDiff line numberDiff line change
@@ -114,24 +114,21 @@ const Upsert = useUpsert({
114114
prop: "name",
115115
label: "名称",
116116
span: 12,
117+
required: true,
117118
component: {
118119
name: "el-input"
119-
},
120-
required: true
120+
}
121121
},
122122
{
123123
prop: "keyName",
124124
label: "keyName",
125125
span: 12,
126+
required: true,
126127
component: {
127128
name: "el-input",
128129
props: {
129130
placeholder: "请输入Key"
130131
}
131-
},
132-
rules: {
133-
required: true,
134-
message: "Key不能为空"
135132
}
136133
},
137134
{
@@ -155,14 +152,14 @@ const Upsert = useUpsert({
155152
}
156153
],
157154
158-
onOpened(isEdit, data) {
155+
onOpened(data) {
159156
tab.index = null;
160157
161158
nextTick(() => {
162-
if (isEdit) {
163-
tab.index = /<*>/g.test(data.data) ? 1 : 0;
164-
} else {
159+
if (Upsert.value?.mode == "add") {
165160
tab.index = 1;
161+
} else {
162+
tab.index = /<*>/g.test(data.data) ? 1 : 0;
166163
}
167164
});
168165
}

src/modules/base/views/role.vue

+12-5
Original file line numberDiff line numberDiff line change
@@ -103,19 +103,26 @@ const Upsert = useUpsert({
103103
},
104104
{
105105
label: "数据权限",
106+
prop: "relevance",
107+
flex: false,
108+
component: {
109+
name: "slot-relevance"
110+
}
111+
},
112+
{
113+
label: "",
106114
prop: "departmentIdList",
107115
value: [],
108116
component: {
109117
vm: DeptCheck,
110-
props: {}
111-
},
112-
append: {
113-
name: "slot-relevance"
118+
style: {
119+
marginTop: "-10px"
120+
}
114121
}
115122
}
116123
],
117124
118-
onOpened(_, data) {
125+
onOpened(data) {
119126
onRelevanceChange(data.relevance || 0);
120127
}
121128
});

src/modules/base/views/user.vue

+22-29
Original file line numberDiff line numberDiff line change
@@ -214,24 +214,26 @@ const Upsert = useUpsert({
214214
name: "el-input"
215215
}
216216
},
217-
{
218-
prop: "password",
219-
label: "密码",
220-
span: 12,
221-
required: true,
222-
component: {
223-
name: "el-input",
224-
props: {
225-
type: "password"
226-
}
227-
},
228-
rules: [
229-
{
230-
min: 6,
231-
max: 16,
232-
message: "密码长度在 6 到 16 个字符"
233-
}
234-
]
217+
() => {
218+
return {
219+
prop: "password",
220+
label: "密码",
221+
span: 12,
222+
required: Upsert.value?.mode == "add",
223+
component: {
224+
name: "el-input",
225+
props: {
226+
type: "password"
227+
}
228+
},
229+
rules: [
230+
{
231+
min: 6,
232+
max: 16,
233+
message: "密码长度在 6 到 16 个字符"
234+
}
235+
]
236+
};
235237
},
236238
{
237239
prop: "roleIdList",
@@ -294,14 +296,14 @@ const Upsert = useUpsert({
294296
}
295297
],
296298
297-
onSubmit(_, data, { next }) {
299+
onSubmit(data, { next }) {
298300
next({
299301
...data,
300302
departmentId: selects.dept?.id
301303
});
302304
},
303305
304-
async onOpen(isEdit) {
306+
async onOpen() {
305307
const list = await service.base.sys.role.list();
306308
307309
// 设置权限列表
@@ -314,15 +316,6 @@ const Upsert = useUpsert({
314316
};
315317
})
316318
);
317-
318-
// 编辑密码不必填
319-
if (isEdit) {
320-
Upsert.value?.setData("password", {
321-
rules: {
322-
required: false
323-
}
324-
});
325-
}
326319
}
327320
});
328321

src/modules/demo/views/crud.vue

+4-4
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,13 @@ const Upsert = useUpsert({
119119
// done({ name: "🐑" });
120120
// close();
121121
},
122-
onSubmit(isEdit, data, { next }) {
123-
console.log(isEdit, data);
122+
onSubmit(data, { next }) {
123+
console.log(data);
124124
next(data);
125125
// Upsert.value?.close();
126126
},
127-
onOpen(isEdit, data) {
128-
console.log(isEdit, data);
127+
onOpen(data) {
128+
console.log(data);
129129
},
130130
onClose(done) {
131131
console.log("onclose");

src/modules/dict/store/dict.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { defineStore } from "pinia";
2-
import { computed, reactive } from "vue";
2+
import { computed, reactive, toRaw } from "vue";
33
import { isDev, service } from "/@/cool";
44

55
declare interface Data {
@@ -36,7 +36,9 @@ export const useDictStore = defineStore("dict", () => {
3636
Object.assign(data, d);
3737

3838
if (isDev) {
39-
console.log("字典数据", data);
39+
console.group("字典数据");
40+
console.log(toRaw(data));
41+
console.groupEnd();
4042
}
4143

4244
return data;

yarn.lock

+4-4
Original file line numberDiff line numberDiff line change
@@ -1052,10 +1052,10 @@
10521052
style-mod "^4.0.0"
10531053
w3c-keyname "^2.2.4"
10541054

1055-
"@cool-vue/crud@^5.4.0":
1056-
version "5.4.0"
1057-
resolved "https://registry.npmjs.org/@cool-vue/crud/-/crud-5.4.0.tgz#2c174c9184ad7bd34fb4faf981e3406d3ef05bf0"
1058-
integrity sha512-7su1XhOMaRZbwbmVb9UOxxsyUB5bug7BRtu3Gpz/2sOVkolCsJJBqDqF8K5wiLmx1/ZXtjbzK797AywoMIpzyA==
1055+
"@cool-vue/crud@^5.5.4":
1056+
version "5.5.4"
1057+
resolved "https://registry.npmjs.org/@cool-vue/crud/-/crud-5.5.4.tgz#f6874c46fa76494a9255249d64656ab9f22c7554"
1058+
integrity sha512-Z5s+OL/DQiFfKmhSns6g84MdVKlnatLnlGXFFJr9Y/WpCsbnLzdjIQsA7YKNzVGWuKVCPxc2Zd18QjYwWu97WA==
10591059
dependencies:
10601060
array.prototype.flat "^1.2.4"
10611061
core-js "^3.21.1"

0 commit comments

Comments
 (0)