🔱: [client] sync upgrade with 21 commits [trident-sync]

perf: 优化antdv4 示例授权页面tree的样式
build: publish success
chore: 1
chore: 1
chore: 1
fix: getFileName支持item参数

https://github.com/fast-crud/fast-crud/issues/385
fix: fs-form独立使用支持插槽

https://github.com/fast-crud/fast-crud/issues/389
fix: 修复三级以上路由页面无法缓存的问题

https://github.com/fast-crud/fast-crud/issues/394
perf: form.wrapper.buttons支持compute动态计算
feat: 表单支持变更关闭前提醒保存,form.wrapper支持beforeClose事件
fix: 修复图片裁剪按钮上下和左右相反的bug

https://github.com/fast-crud/fast-crud/issues/402
perf: alioss getAuthorization接口支持后台返回key

https://github.com/fast-crud/fast-crud/issues/405
perf: alioss getAuthorization接口支持后台返回key

https://github.com/fast-crud/fast-crud/issues/405
perf: fs-dict-tree支持插槽

https://github.com/fast-crud/fast-crud/issues/407
perf: 单选、多选、select、tree-select、table-select 都提供selected-change事件,可以获取选中的dict选项
feat: table-select 支持查看模式

https://github.com/fast-crud/fast-crud/issues/413
perf: 优化fs-admin可以在手机上操作
chore: pnpm workspace问题优化
docs: 1
chore: antdv4 支持主题色选择
...
This commit is contained in:
GitHub Actions Bot
2024-06-15 18:32:36 +00:00
parent 9caa4cd1d4
commit ad360e81cb
173 changed files with 3386 additions and 1108 deletions
@@ -2,7 +2,7 @@ import * as api from "./api";
import { dict, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, UserPageQuery, UserPageRes, EditReq, DelReq, AddReq } from "@fast-crud/fast-crud";
import EditableRowSub from "/@/views/crud/editable/sub-crud/row/index.vue";
export default function (props: CreateCrudOptionsProps): CreateCrudOptionsRet {
const { crudBinding,crudRef } = props.crudExpose;
const { crudBinding, crudRef } = props.crudExpose;
const { crudExpose } = props;
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
return await api.GetList(query);
@@ -32,7 +32,7 @@ export default function (props: CreateCrudOptionsProps): CreateCrudOptionsRet {
form: {
wrapper: {
width: "80%"
},
}
},
columns: {
id: {
@@ -50,7 +50,7 @@ export default function (props: CreateCrudOptionsProps): CreateCrudOptionsRet {
dict: dict({
url: "/mock/dicts/OpenStatusEnum?single"
}),
form:{
form: {
rules: [{ required: true, message: "请选择状态" }]
}
},
@@ -60,25 +60,25 @@ export default function (props: CreateCrudOptionsProps): CreateCrudOptionsRet {
form: {
component: {
name: EditableRowSub,
id:compute(({form})=>{
return form.id
id: compute(({ form }) => {
return form.id;
}),
on:{
async saveMain({form}){
on: {
async saveMain({ form }) {
//保存主表
const formRef = crudExpose.getFormRef()
const ret = await formRef.submit()
const formRef = crudExpose.getFormRef();
const ret = await formRef.submit();
//将form改为编辑模式
let formWrapperRef = crudExpose.getFormWrapperRef();
formWrapperRef.setFormData(ret.res)
crudRef.value.formWrapperRef.formOptions.mode = "edit"
crudRef.value.formWrapperRef.title="编辑"
const formWrapperRef = crudExpose.getFormWrapperRef();
formWrapperRef.setFormData(ret.res);
crudRef.value.formWrapperRef.formOptions.mode = "edit";
crudRef.value.formWrapperRef.title = "编辑";
}
}
},
col: {
span: 24
},
}
},
column: {
formatter: ({ row }) => {
@@ -18,7 +18,7 @@
<script lang="ts">
import { defineComponent, onMounted } from "vue";
import createCrudOptions from "./crud";
import { useFs } from "@fast-crud/fast-crud";
import { useFs, utils } from "@fast-crud/fast-crud";
import { message } from "ant-design-vue";
export default defineComponent({
@@ -35,7 +35,7 @@ export default defineComponent({
crudBinding,
crudRef,
log() {
console.log("table data:", crudBinding.value.data);
utils.logger.info("table data:", crudBinding.value.data);
}
};
}
@@ -1,16 +1,8 @@
import {
AddReq,
CreateCrudOptionsProps,
CreateCrudOptionsRet, DelReq,
dict,
EditReq,
UserPageQuery,
UserPageRes
} from "@fast-crud/fast-crud";
import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud";
import * as api from "./api";
export default function ({ crudExpose,context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
export default function ({ crudExpose, context }: CreateCrudOptionsProps): CreateCrudOptionsRet {
const { crudBinding } = crudExpose;
const {parentIdRef} = context
const { parentIdRef } = context;
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
return await api.GetList(query);
};
@@ -48,8 +40,8 @@ export default function ({ crudExpose,context }: CreateCrudOptionsProps): Create
},
search: {
show: false,
initialForm:{
parentId:parentIdRef
initialForm: {
parentId: parentIdRef
}
},
toolbar: {
@@ -63,7 +55,7 @@ export default function ({ crudExpose,context }: CreateCrudOptionsProps): Create
editable: {
enabled: true,
mode: "row",
activeDefault:false,
activeDefault: false
}
},
// pagination: { show: false, pageSize: 9999999 },
@@ -83,8 +75,8 @@ export default function ({ crudExpose,context }: CreateCrudOptionsProps): Create
dict: dict({
url: "/mock/dicts/OpenStatusEnum?single"
}),
form:{
value:'1',
form: {
value: "1"
}
},
name: {
@@ -97,16 +89,16 @@ export default function ({ crudExpose,context }: CreateCrudOptionsProps): Create
]
}
},
parentId:{
parentId: {
title: "父Id",
type: "number",
search:{
show:true,
search: {
show: true
},
form:{
value:parentIdRef,
component:{
disabled:true
form: {
value: parentIdRef,
component: {
disabled: true
}
}
},
@@ -1,20 +1,16 @@
<template>
<div class="sub-table">
<div v-if="id>0" style="height: 500px; position: relative">
<fs-crud ref="crudRef" v-bind="crudBinding"> </fs-crud>
</div>
<div v-else>
<fs-button @click="saveMain">保存</fs-button> 保存后即可编辑子表
</div>
<div v-if="id > 0" style="height: 500px; position: relative">
<fs-crud ref="crudRef" v-bind="crudBinding"> </fs-crud>
</div>
<div v-else><fs-button @click="saveMain">保存</fs-button> 保存后即可编辑子表</div>
</div>
</template>
<script lang="ts">
import { defineComponent, onMounted, watch,ref } from "vue";
import { defineComponent, onMounted, watch, ref } from "vue";
import createCrudOptions from "./crud";
import { useFs, useUi } from "@fast-crud/fast-crud";
import { useFs, useUi, utils } from "@fast-crud/fast-crud";
export default defineComponent({
name: "EditableSubCrudTarget",
@@ -22,50 +18,50 @@ export default defineComponent({
/**
* 主表id
*/
id:{
type:Number,
default:0
id: {
type: Number,
default: 0
},
disabled:{
type:Boolean,
default:false
},
readonly:{
type:Boolean,
default:false
disabled: {
type: Boolean,
default: false
},
readonly: {
type: Boolean,
default: false
}
},
emits: ["save-main"],
setup(props, ctx) {
const parentIdRef = ref(props.id)
const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions ,context:{parentIdRef}});
// eslint-disable-next-line vue/no-setup-props-destructure
const parentIdRef = ref(props.id);
const { crudBinding, crudRef, crudExpose } = useFs({ createCrudOptions, context: { parentIdRef } });
const { ui } = useUi();
let formItemContext = ui.formItem.injectFormItemContext();
function emit(data:any) {
console.log("emit:", data);
function emit(data: any) {
utils.logger.info("emit:", data);
formItemContext.onBlur();
formItemContext.onChange();
}
function saveMain(){
ctx.emit("save-main",true)
function saveMain() {
ctx.emit("save-main", true);
}
watch(
() => {
return props.id;
},
(value: any) => {
if(value>0){
if (value > 0) {
crudExpose.setSearchFormData({
form:{parentId:value},
mergeForm:true,
triggerSearch:true
})
parentIdRef.value = value
form: { parentId: value },
mergeForm: true,
triggerSearch: true
});
parentIdRef.value = value;
}
},
{
@@ -76,24 +72,27 @@ export default defineComponent({
// 页面打开后获取列表数据
onMounted(() => {
crudExpose.doRefresh();
watch(()=>{
return props.disabled || props.readonly
},(value)=>{
if(value){
crudBinding.value.table.editable.readonly=true
crudBinding.value.actionbar.buttons.addRow.show=false
crudBinding.value.rowHandle.show=false
}else{
crudBinding.value.table.editable.readonly=false
crudBinding.value.actionbar.buttons.addRow.show=true
crudBinding.value.rowHandle.show=true
watch(
() => {
return props.disabled || props.readonly;
},
(value) => {
if (value) {
crudBinding.value.table.editable.readonly = true;
crudBinding.value.actionbar.buttons.addRow.show = false;
crudBinding.value.rowHandle.show = false;
} else {
crudBinding.value.table.editable.readonly = false;
crudBinding.value.actionbar.buttons.addRow.show = true;
crudBinding.value.rowHandle.show = true;
}
},
{
immediate: true
}
},{
immediate:true
})
);
});
return {
crudBinding,
crudRef,