docs: 更新二开说明文档

This commit is contained in:
gaoyunqi
2024-04-03 15:54:15 +08:00
parent a8fc30a07f
commit 8a3fd694c9

View File

@ -1,4 +1,6 @@
## 注意事项
### 不要被框架束缚思路
框架只是个代码生成器而已,前后端代码都在你手里,只要不影响其他模块,你想怎么实现怎么实现。
### 设计相关
- 一个表单只能绑定一个流程一个流程也只能绑定一个表单虽然框架支持单流程带多表单但是我们在代码中屏蔽了这部分设计如果表单内容较多建议以子流程、tab页、分区等方式合理显示。
- 一旦某表单绑定了流程,该表单就只能以绑定流程的方式使用(展示一个流程的纯表单部分无意义,用户一定是想和流程一起查看或者审批)
@ -70,3 +72,77 @@ onMounted(async () => {
emits('form-mounted', formProps); // 补上这一句
});
```
## 如何自定义表单字段
一般情况下,字段会和权限绑定,假设你已经解决了字段的权限问题(对于简单的数据结构,可以建一个纯文本字段,然后在前端换成自定义渲染的)。
首先我们定义一个组件这里为了简单起见只用了一个文本框一般情况下你要实现v-model同时接收disabled参数以处理只读模式。注意vue<3.4的版本并不支持defineModel
```vue
<template>
<div class="custom-input">
<input style="width: 100%" v-if="!disabled" :value="props.modelValue" @change="onChange($event)" />
<span v-else style="color: #cc0000">{{ props.modelValue }}</span>
</div>
</template>
<style scoped>
input {
width: 100%;
border: 1px solid #cc0000;
line-height: 30px;
}
</style>
<script setup>
import {defineProps} from 'vue';
const props = defineProps(['modelValue', 'disabled'])
const emit = defineEmits(['update:modelValue'])
function onChange(event) {
emit('update:modelValue', event.target.value);
}
</script>
```
然后在表单页面Form.vue中引入该字段
```vue
<SimpleForm>
<template v-slot:addr="scope">
<FormItem :label-col="{style: {width: '120px'}}" label="出差地点">
<custom-field :disabled="scope.schema.dynamicDisabled" v-model="scope.formModel.chuChaDiDian3876"></custom-field>
</FormItem>
</template>
</SimpleForm>
```
这里需要注意的是自定义字段中需要自行实现label部分所以外层用了一个FormItem如果你需要在表单中间独立成行也可以去掉FormItem这层
最后在config.ts中换掉字段的类型
```javascript
export const formProps: FormProps = {
labelCol: { span: 3, offset: 0 },
labelAlign: 'right',
layout: 'horizontal',
size: 'default',
schemas: [
{
key: '783e504378024a2c9db35b9e741eb5c3',
field: 'chuChaDiDian3876',
label: '出差地点',
type: 'slot', // type和slotName需要换掉
slotName: 'addr' // 和template中的插槽名字对应
}
]
};
```
## 如何自定义列表页字段
列表页的字段定义比较简单首先在columns中补充需要的列或者替换已有的列然后再bodyCell插槽里替换所需的部分接即可
```vue
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'action'">
<TableAction :actions="getActions(record)" />
</template>
<!-- 下面是要定制的列 --->
<template v-if="column.dataIndex === 'chuChaDiDian3876'">
<span style="color: #f00">{{record.chuChaDiDian3876}}</span>
</template>
</template>
```
注意根据antd-vue的文档bodyCell里除了要修改的列不能写其他内容否则会将内容覆盖到所有列上