mirror of
https://github.com/certd/certd.git
synced 2026-05-16 21:27:34 +08:00
🔱: [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:
@@ -57,7 +57,7 @@ export function UpdateCell(id: number, key: string, value: any) {
|
||||
data: { id, key, value }
|
||||
});
|
||||
}
|
||||
export function UpdateColumn(data) {
|
||||
export function UpdateColumn(data: any) {
|
||||
return request({
|
||||
url: apiPrefix + "/columnUpdate",
|
||||
method: "post",
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import * as api from "./api";
|
||||
import { dict, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, UserPageQuery, UserPageRes, EditReq, DelReq, AddReq } from "@fast-crud/fast-crud";
|
||||
import { computed, reactive, ref } from "vue";
|
||||
import _ from "lodash-es";
|
||||
import { EditableEachCellsOpts } from "@fast-crud/fast-crud";
|
||||
import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditableEachCellsOpts, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud";
|
||||
import { reactive, ref } from "vue";
|
||||
|
||||
export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet {
|
||||
const { crudBinding } = crudExpose;
|
||||
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
|
||||
@@ -46,7 +45,6 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
editing: false,
|
||||
loading: false,
|
||||
onSubmit: async () => {
|
||||
console.log("onSubmit");
|
||||
radioColumnEditor.loading = true;
|
||||
try {
|
||||
const data: any[] = [];
|
||||
@@ -61,7 +59,6 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
}
|
||||
},
|
||||
onCancel: () => {
|
||||
console.log("cancel");
|
||||
crudExpose.editable.cancel();
|
||||
radioColumnEditor.editing = false;
|
||||
},
|
||||
@@ -111,7 +108,7 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
mode: "cell",
|
||||
exclusive: true,
|
||||
//排他式激活效果,将其他行的编辑状态触发保存
|
||||
exclusiveEffect: "save",
|
||||
exclusiveEffect: "save", //自动保存其他行编辑状态,cancel = 自动关闭其他行编辑状态
|
||||
async updateCell(opts) {
|
||||
const { row, key, value } = opts;
|
||||
//如果是添加,需要返回{[rowKey]:xxx},比如:{id:2}
|
||||
@@ -160,7 +157,10 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
type: "dict-radio",
|
||||
dict: radioDictRef,
|
||||
column: {
|
||||
width: 300
|
||||
width: 300,
|
||||
valueChange({ value, getComponentRef }) {
|
||||
console.log("value changed:", value, getComponentRef("radio"));
|
||||
}
|
||||
}
|
||||
},
|
||||
name: {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
单元格编辑
|
||||
<span class="sub">单元格修改确认后直接提交到后台</span>
|
||||
</div>
|
||||
<div class="more"></div>
|
||||
<div class="more"><a target="_blank" href="http://fast-crud.docmirror.cn/api/crud-options/table.html#editable">文档</a></div>
|
||||
</template>
|
||||
<fs-crud ref="crudRef" v-bind="crudBinding">
|
||||
<template #actionbar-right>
|
||||
@@ -38,7 +38,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({
|
||||
@@ -57,17 +57,14 @@ export default defineComponent({
|
||||
crudBinding,
|
||||
crudRef,
|
||||
active() {
|
||||
crudExpose.editable.active();
|
||||
crudExpose.editable.active({});
|
||||
},
|
||||
inactive() {
|
||||
crudExpose.editable.inactive();
|
||||
},
|
||||
save() {
|
||||
crudExpose.getTableRef().editable.submit(({ changed, removed, setData }: any) => {
|
||||
console.log("changed", changed);
|
||||
console.log("removed", removed);
|
||||
|
||||
console.log("table data:", crudBinding.value.data, crudExpose.getTableData());
|
||||
utils.logger.info("table data:", crudBinding.value.data, crudExpose.getTableData());
|
||||
// setData({ 0: {id:1} }); //设置data
|
||||
message.success("保存,修改行:" + JSON.stringify(changed) + ";删除行:" + JSON.stringify(removed));
|
||||
});
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import * as api from "./api";
|
||||
import { dict, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, UserPageQuery, UserPageRes, EditReq, DelReq, AddReq } from "@fast-crud/fast-crud";
|
||||
import { AddReq, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud";
|
||||
|
||||
export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet {
|
||||
const { crudBinding } = crudExpose;
|
||||
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
|
||||
@@ -37,9 +38,18 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
}
|
||||
}
|
||||
},
|
||||
mode: {
|
||||
//本地模式
|
||||
name: "local",
|
||||
isMergeWhenUpdate: true,
|
||||
isAppendWhenAdd: true
|
||||
},
|
||||
table: {
|
||||
editable: {
|
||||
mode: "free"
|
||||
enabled: true,
|
||||
mode: "free",
|
||||
activeDefault: true,
|
||||
showAction: false
|
||||
}
|
||||
},
|
||||
pagination: {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<fs-page>
|
||||
<template #header>
|
||||
<div class="title">可编辑</div>
|
||||
<div class="more"><a target="_blank" href="http://fast-crud.docmirror.cn/api/expose.html">文档</a></div>
|
||||
<div class="more"><a target="_blank" href="http://fast-crud.docmirror.cn/api/crud-options/table.html#editable">文档</a></div>
|
||||
</template>
|
||||
<fs-crud ref="crudRef" v-bind="crudBinding">
|
||||
<template #actionbar-right>
|
||||
@@ -11,10 +11,14 @@
|
||||
<a-radio-button :value="true">启用编辑</a-radio-button>
|
||||
<a-radio-button :value="false">退出编辑</a-radio-button>
|
||||
</a-radio-group>
|
||||
<!-- <a-radio-group class="ml-1" v-model="crudBinding.table.editable.mode">-->
|
||||
<!-- <a-radio-button label="free">自由模式</a-radio-button>-->
|
||||
<!-- <a-radio-button label="row">行编辑模式</a-radio-button>-->
|
||||
<!-- </a-radio-group>-->
|
||||
<a-radio-group v-model:value="crudBinding.table.editable.showAction" class="ml-1">
|
||||
<a-radio-button :value="true">显示操作按钮</a-radio-button>
|
||||
<a-radio-button :value="false">不显示</a-radio-button>
|
||||
</a-radio-group>
|
||||
<a-radio-group v-model:value="crudBinding.table.editable.activeDefault" class="ml-1">
|
||||
<a-radio-button :value="true">默认激活</a-radio-button>
|
||||
<a-radio-button :value="false">默认不激活</a-radio-button>
|
||||
</a-radio-group>
|
||||
<template v-if="crudBinding.table.editable.enabled">
|
||||
<fs-button class="ml-5" @click="save">保存</fs-button>
|
||||
<fs-button class="ml-5" @click="log">log</fs-button>
|
||||
@@ -25,9 +29,9 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, onMounted } from "vue";
|
||||
import { defineComponent, onMounted, ref } 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({
|
||||
@@ -38,14 +42,14 @@ export default defineComponent({
|
||||
// 页面打开后获取列表数据
|
||||
onMounted(() => {
|
||||
crudExpose.doRefresh();
|
||||
crudExpose.editable.enable({ mode: "free", activeDefault: true });
|
||||
crudExpose.editable.enable({ mode: "free" });
|
||||
});
|
||||
|
||||
return {
|
||||
crudBinding,
|
||||
crudRef,
|
||||
active() {
|
||||
crudExpose.editable.active();
|
||||
crudExpose.editable.active({});
|
||||
},
|
||||
inactive() {
|
||||
crudExpose.editable.inactive();
|
||||
@@ -54,12 +58,13 @@ export default defineComponent({
|
||||
const res = await crudExpose.editable.validate();
|
||||
if (res !== true) {
|
||||
console.error("validate error:", res);
|
||||
message.error("validate error:" + JSON.stringify(res));
|
||||
return;
|
||||
}
|
||||
message.success("保存,修改行:" + JSON.stringify(crudBinding.value.data));
|
||||
},
|
||||
log() {
|
||||
console.log("table data:", crudBinding.value.data, crudExpose.getTableData());
|
||||
utils.logger.info("table data:", crudBinding.value.data, crudExpose.getTableData());
|
||||
},
|
||||
cancel() {
|
||||
crudExpose.editable.resume();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import * as api from "./api";
|
||||
import { AddReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes } from "@fast-crud/fast-crud";
|
||||
import { AddReq, compute, CreateCrudOptionsProps, CreateCrudOptionsRet, DelReq, dict, EditReq, UserPageQuery, UserPageRes, utils } from "@fast-crud/fast-crud";
|
||||
export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet {
|
||||
const pageRequest = async (query: UserPageQuery): Promise<UserPageRes> => {
|
||||
return await api.GetList(query);
|
||||
@@ -31,7 +31,9 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
table: {
|
||||
editable: {
|
||||
enabled: true,
|
||||
mode: "row"
|
||||
mode: "row",
|
||||
exclusive: true, //排他式激活
|
||||
exclusiveEffect: "save" //排他式激活时,其他行的编辑状态的处理方式
|
||||
}
|
||||
},
|
||||
columns: {
|
||||
@@ -68,7 +70,7 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
form: {
|
||||
rules: {
|
||||
async asyncValidator(context) {
|
||||
console.log("context", context);
|
||||
utils.logger.info("context", context);
|
||||
return true;
|
||||
},
|
||||
message: "远程校验测试"
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
行编辑模式
|
||||
<span class="sub">在表格内编辑每行数据</span>
|
||||
</div>
|
||||
<div class="more"><a target="_blank" href="http://fast-crud.docmirror.cn/api/expose.html">文档</a></div>
|
||||
<div class="more"><a target="_blank" href="http://fast-crud.docmirror.cn/api/crud-options/table.html#editable">文档</a></div>
|
||||
</template>
|
||||
<fs-crud ref="crudRef" v-bind="crudBinding">
|
||||
<template #actionbar-right>
|
||||
@@ -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";
|
||||
|
||||
export default defineComponent({
|
||||
name: "EditableRow",
|
||||
@@ -28,14 +28,14 @@ export default defineComponent({
|
||||
// 页面打开后获取列表数据
|
||||
onMounted(() => {
|
||||
crudExpose.doRefresh();
|
||||
crudExpose.editable.enable();
|
||||
// crudExpose.editable.enable({});
|
||||
});
|
||||
|
||||
return {
|
||||
crudBinding,
|
||||
crudRef,
|
||||
log() {
|
||||
console.log("table data:", crudBinding.value.data, crudExpose.getTableData());
|
||||
utils.logger.info("table data:", crudBinding.value.data, crudExpose.getTableData());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -67,6 +67,10 @@ export default function (props: CreateCrudOptionsProps): CreateCrudOptionsRet {
|
||||
},
|
||||
col: {
|
||||
span: 24
|
||||
},
|
||||
valueResolve({ form }) {
|
||||
//重要,移除$editable_id字段,返回干净的tableData数据
|
||||
form.subTable = crudExpose.editable.getTableData(form.subTable);
|
||||
}
|
||||
},
|
||||
column: {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { CreateCrudOptionsProps, CreateCrudOptionsRet, dict } from "@fast-crud/fast-crud";
|
||||
import { compute, CreateCrudOptionsProps, CreateCrudOptionsRet, dict } from "@fast-crud/fast-crud";
|
||||
import createCrudOptionsText from "/@/views/crud/component/text/crud";
|
||||
import * as textTableApi from "/@/views/crud/component/text/api";
|
||||
|
||||
export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOptionsRet {
|
||||
const { crudBinding } = crudExpose;
|
||||
@@ -33,7 +35,9 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
table: {
|
||||
editable: {
|
||||
enabled: true,
|
||||
mode: "free"
|
||||
mode: "free",
|
||||
activeDefault: true,
|
||||
showAction: false
|
||||
}
|
||||
},
|
||||
pagination: { show: false, pageSize: 9999999 },
|
||||
@@ -64,6 +68,27 @@ export default function ({ crudExpose }: CreateCrudOptionsProps): CreateCrudOpti
|
||||
]
|
||||
}
|
||||
},
|
||||
tableSelect: {
|
||||
title: "tableSelect",
|
||||
type: "table-select",
|
||||
dict: dict({
|
||||
value: "id",
|
||||
label: "name",
|
||||
//重要,根据value懒加载数据
|
||||
getNodesByValues: async (values: any[]) => {
|
||||
return await textTableApi.GetByIds(values);
|
||||
}
|
||||
}),
|
||||
form: {
|
||||
show: compute(({ form }) => {
|
||||
return form.dynamicShow;
|
||||
}),
|
||||
component: {
|
||||
crossPage: true,
|
||||
createCrudOptions: createCrudOptionsText
|
||||
}
|
||||
}
|
||||
},
|
||||
createdAt: {
|
||||
column: {
|
||||
show: false
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<script lang="ts">
|
||||
import { defineComponent, onMounted, watch } from "vue";
|
||||
import createCrudOptions from "./crud";
|
||||
import { useFs, useUi } from "@fast-crud/fast-crud";
|
||||
import { useFs, useUi, utils } from "@fast-crud/fast-crud";
|
||||
import { message } from "ant-design-vue";
|
||||
|
||||
export default defineComponent({
|
||||
@@ -18,6 +18,14 @@ export default defineComponent({
|
||||
default() {
|
||||
return undefined;
|
||||
}
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
emits: ["update:modelValue"],
|
||||
@@ -26,8 +34,8 @@ export default defineComponent({
|
||||
const { ui } = useUi();
|
||||
let formItemContext = ui.formItem.injectFormItemContext();
|
||||
|
||||
function emit(data) {
|
||||
console.log("emit:", data);
|
||||
function emit(data: any) {
|
||||
utils.logger.info("emit:", data);
|
||||
ctx.emit("update:modelValue", data);
|
||||
formItemContext.onBlur();
|
||||
formItemContext.onChange();
|
||||
@@ -36,6 +44,7 @@ export default defineComponent({
|
||||
// 页面打开后获取列表数据
|
||||
onMounted(() => {
|
||||
// crudExpose.doRefresh();
|
||||
|
||||
watch(
|
||||
() => {
|
||||
return props.modelValue;
|
||||
@@ -53,7 +62,26 @@ export default defineComponent({
|
||||
}
|
||||
);
|
||||
|
||||
crudExpose.editable.enable({ mode: "free", activeDefault: 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
|
||||
}
|
||||
);
|
||||
// crudExpose.editable.enable({ mode: "free", activeDefault: true });
|
||||
});
|
||||
|
||||
async function validate() {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
<template>
|
||||
<fs-page>
|
||||
<template #header>
|
||||
<div class="title">vModel编辑</div>
|
||||
<div class="more"><a target="_blank" href="http://fast-crud.docmirror.cn/api/expose.html">文档</a></div>
|
||||
<div class="title">
|
||||
vModel编辑
|
||||
<span class="sub">子表格作为主表的一个字段,整体编辑,整体提交</span>
|
||||
</div>
|
||||
<div class="more"><a target="_blank" href="http://fast-crud.docmirror.cn/api/crud-options/table.html#editable">文档</a></div>
|
||||
</template>
|
||||
<fs-crud ref="crudRef" v-bind="crudBinding">
|
||||
<template #actionbar-right>
|
||||
@@ -15,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({
|
||||
@@ -32,7 +35,7 @@ export default defineComponent({
|
||||
crudBinding,
|
||||
crudRef,
|
||||
log() {
|
||||
console.log("table data:", crudBinding.value.data);
|
||||
utils.logger.info("table data:", crudBinding.value.data);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user