chore: 小修改

This commit is contained in:
xiaojunnuo
2025-06-29 00:25:08 +08:00
parent acaa8b1731
commit a761989f3e
8 changed files with 205 additions and 200 deletions

View File

@@ -189,6 +189,7 @@ watch(
const input = pluginType === "plugin" ? form.input : form;
const watches = {};
for (const key of props.watches) {
//@ts-ignore
watches[key] = input[key];
}
return {
@@ -198,10 +199,11 @@ watch(
},
async (value, oldValue) => {
const { form } = value;
const oldForm = oldValue.form;
const oldForm = oldValue?.form;
let changed = oldForm == null || optionsRef.value.length == 0;
for (const key of props.watches) {
if (form[key] != oldForm[key]) {
//@ts-ignore
if (oldForm && form[key] != oldForm[key]) {
changed = true;
break;
}

View File

@@ -89,7 +89,7 @@ function loadLocalesMapFromDir(regexp: RegExp, modules: Record<string, () => Pro
* @param locale
*/
function setI18nLanguage(locale: Locale) {
// setAntdvLocale(locale);
setAntdvLocale(locale);
//@ts-ignore
i18n.global.locale.value = locale;

View File

@@ -5,140 +5,140 @@ import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, Edi
import { useI18n } from "vue-i18n";
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
const { t } = useI18n();
const { crudBinding } = crudExpose;
const { props, ctx, api } = context;
const lastResRef = ref();
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
return await context.api.GetList(query);
};
const editRequest = async (req: EditReq) => {
const { form, row } = req;
form.id = row.id;
form.type = props.type;
const res = await context.api.UpdateObj(form);
lastResRef.value = res;
return res;
};
const delRequest = async (req: DelReq) => {
const { row } = req;
return await context.api.DelObj(row.id);
};
const { t } = useI18n();
const { crudBinding } = crudExpose;
const { props, ctx, api } = context;
const lastResRef = ref();
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
return await context.api.GetList(query);
};
const editRequest = async (req: EditReq) => {
const { form, row } = req;
form.id = row.id;
form.type = props.type;
const res = await context.api.UpdateObj(form);
lastResRef.value = res;
return res;
};
const delRequest = async (req: DelReq) => {
const { row } = req;
return await context.api.DelObj(row.id);
};
const addRequest = async (req: AddReq) => {
const { form } = req;
form.type = props.type;
const res = await context.api.AddObj(form);
lastResRef.value = res;
return res;
};
const addRequest = async (req: AddReq) => {
const { form } = req;
form.type = props.type;
const res = await context.api.AddObj(form);
lastResRef.value = res;
return res;
};
const selectedRowKey = ref([props.modelValue]);
const selectedRowKey = ref([props.modelValue]);
const onSelectChange = (changed: any) => {
selectedRowKey.value = changed;
ctx.emit("update:modelValue", changed[0]);
};
const onSelectChange = (changed: any) => {
selectedRowKey.value = changed;
ctx.emit("update:modelValue", changed[0]);
};
const typeRef = ref("aliyun");
context.typeRef = typeRef;
const commonColumnsDefine = getCommonColumnDefine(crudExpose, typeRef, api);
commonColumnsDefine.type.form.component.disabled = true;
return {
typeRef,
crudOptions: {
request: {
pageRequest,
addRequest,
editRequest,
delRequest,
},
toolbar: {
show: false,
},
search: {
show: false,
},
form: {
wrapper: {
width: "1050px",
},
},
rowHandle: {
width: 200,
},
table: {
scroll: {
x: 800,
},
rowSelection: {
type: "radio",
selectedRowKeys: selectedRowKey,
onChange: onSelectChange,
},
customRow: (record: any) => {
return {
onClick: () => {
onSelectChange([record.id]);
}, // 点击行
};
},
},
columns: {
id: {
title: "ID",
key: "id",
type: "number",
column: {
width: 50,
},
form: {
show: false,
},
},
name: {
title: t("certd.name"),
search: {
show: true,
},
type: ["text"],
form: {
rules: [{ required: true, message: t("certd.pleaseEnterName") }],
helper: t("certd.nameHelper"),
},
column: {
width: 200,
},
},
from: {
title: t("certd.level"),
type: "dict-select",
dict: dict({
data: [
{ label: t("certd.system"), value: "sys" },
{ label: t("certd.usera"), value: "user" },
],
}),
search: {
show: false,
},
form: {
show: false,
},
column: {
width: 100,
align: "center",
component: {
color: "auto",
},
order: 10,
},
valueBuilder: ({ row, key, value }) => {
row[key] = row.userId > 0 ? "user" : "sys";
},
},
...commonColumnsDefine,
},
},
};
const typeRef = ref("aliyun");
context.typeRef = typeRef;
const commonColumnsDefine = getCommonColumnDefine(crudExpose, typeRef, api);
commonColumnsDefine.type.form.component.disabled = true;
return {
typeRef,
crudOptions: {
request: {
pageRequest,
addRequest,
editRequest,
delRequest,
},
toolbar: {
show: false,
},
search: {
show: false,
},
form: {
wrapper: {
width: "1050px",
},
},
rowHandle: {
width: 200,
},
table: {
scroll: {
x: 800,
},
rowSelection: {
type: "radio",
selectedRowKeys: selectedRowKey,
onChange: onSelectChange,
},
customRow: (record: any) => {
return {
onClick: () => {
onSelectChange([record.id]);
}, // 点击行
};
},
},
columns: {
id: {
title: "ID",
key: "id",
type: "number",
column: {
width: 50,
},
form: {
show: false,
},
},
name: {
title: t("certd.name"),
search: {
show: true,
},
type: ["text"],
form: {
rules: [{ required: true, message: t("certd.pleaseEnterName") }],
helper: t("certd.nameHelper"),
},
column: {
width: 200,
},
},
from: {
title: t("certd.level"),
type: "dict-select",
dict: dict({
data: [
{ label: t("certd.system"), value: "sys" },
{ label: t("certd.usera"), value: "user" },
],
}),
search: {
show: false,
},
form: {
show: false,
},
column: {
width: 100,
align: "center",
component: {
color: "auto",
},
order: 10,
},
valueBuilder: ({ row, key, value }) => {
row[key] = row.userId > 0 ? "user" : "sys";
},
},
...commonColumnsDefine,
},
},
};
}

View File

@@ -15,13 +15,13 @@ export default defineComponent({
props: {
type: {
type: String,
default: "aliyun"
default: "aliyun",
},
from: {
type: String, //user | sys
default: "user"
default: "user",
},
modelValue: {}
modelValue: {},
},
emits: ["update:modelValue"],
setup(props, ctx) {
@@ -39,7 +39,7 @@ export default defineComponent({
() => {
return props.type;
},
(value) => {
value => {
console.log("access type changed:", value);
onTypeChanged(value);
}
@@ -51,9 +51,9 @@ export default defineComponent({
return {
crudBinding,
crudRef
crudRef,
};
}
},
});
</script>
<style lang="less">

View File

@@ -6,7 +6,7 @@
<script lang="ts" setup>
import { computed, inject, ref } from "vue";
defineOptions({
name: "SecretPlainGetter"
name: "SecretPlainGetter",
});
const props = defineProps<{

View File

@@ -28,28 +28,28 @@ export default defineComponent({
props: {
modelValue: {
type: [Number, String],
default: null
default: null,
},
type: {
type: String,
default: "aliyun"
default: "aliyun",
},
placeholder: {
type: String,
default: "请选择"
default: "请选择",
},
size: {
type: String,
default: "middle"
default: "middle",
},
from: {
type: String, //user | sys
default: "user"
default: "user",
},
disabled: {
type: Boolean,
default: false
}
default: false,
},
},
emits: ["update:modelValue", "change", "selectedChange"],
setup(props, ctx) {
@@ -92,7 +92,7 @@ export default defineComponent({
() => {
return props.modelValue;
},
async (value) => {
async value => {
selectedId.value = null;
target.value = null;
if (value == null) {
@@ -101,7 +101,7 @@ export default defineComponent({
await refreshTarget(value);
},
{
immediate: true
immediate: true,
}
);
@@ -114,11 +114,11 @@ export default defineComponent({
() => {
return props.type;
},
async (value) => {
async value => {
await refreshProviderDefine(value);
},
{
immediate: true
immediate: true,
}
);
@@ -134,7 +134,7 @@ export default defineComponent({
console.log("choose ok:", selectedId.value);
emitValue(selectedId.value);
chooseForm.show = false;
}
},
});
return {
@@ -142,9 +142,9 @@ export default defineComponent({
target,
selectedId,
providerDefine,
chooseForm
chooseForm,
};
}
},
});
</script>
<style lang="less">

View File

@@ -95,9 +95,12 @@ export function getCommonColumnDefine(crudExpose: any, typeRef: any, api: any) {
},
renderLabel(item: any) {
return (
<span class={"flex-o"}>
<fs-icon icon={item.icon} class={"mr-5 fs-16 color-blue"} />
{item.label}
<span class={"flex flex-between items-center"}>
<span class={"flex items-center"}>
<fs-icon icon={item.icon} class={"mr-5 fs-16 color-blue"} />
{item.label}
</span>
<span>{item.value}</span>
</span>
);
},