feat: integrate upload components into form by default

This commit is contained in:
vben 2020-11-18 23:10:29 +08:00
parent 99303a9987
commit be2b8a7e17
5 changed files with 15 additions and 15 deletions

View File

@ -8,6 +8,7 @@
- 新增个人页 - 新增个人页
- 新增表单页 - 新增表单页
- 新增详情页 - 新增详情页
- 将上传组件默认集成到 form
### 🎫 Chores ### 🎫 Chores

View File

@ -158,7 +158,7 @@ export default defineComponent({
) { ) {
rule.type = 'object'; rule.type = 'object';
} }
if (component.includes('RangePicker')) { if (component.includes('RangePicker') || component.includes('Upload')) {
rule.type = 'array'; rule.type = 'array';
} }
if (component.includes('InputNumber')) { if (component.includes('InputNumber')) {

View File

@ -18,6 +18,7 @@ import {
TreeSelect, TreeSelect,
} from 'ant-design-vue'; } from 'ant-design-vue';
import RadioButtonGroup from './components/RadioButtonGroup.vue'; import RadioButtonGroup from './components/RadioButtonGroup.vue';
import { BasicUpload } from '/@/components/Upload';
const componentMap = new Map<ComponentType, any>(); const componentMap = new Map<ComponentType, any>();
@ -48,6 +49,8 @@ componentMap.set('RangePicker', DatePicker.RangePicker);
componentMap.set('WeekPicker', DatePicker.WeekPicker); componentMap.set('WeekPicker', DatePicker.WeekPicker);
componentMap.set('TimePicker', TimePicker); componentMap.set('TimePicker', TimePicker);
componentMap.set('Upload', BasicUpload);
export function add(compName: ComponentType, component: Component) { export function add(compName: ComponentType, component: Component) {
componentMap.set(compName, component); componentMap.set(compName, component);
} }

View File

@ -1,7 +1,10 @@
import type { BasicColumn, ActionItem } from '/@/components/Table';
import { FileItem, PreviewFileItem, UploadResultStatus } from './types';
import { checkImgType, isImgTypeByName } from './utils'; import { checkImgType, isImgTypeByName } from './utils';
import { Progress, Tag } from 'ant-design-vue'; import { Progress, Tag } from 'ant-design-vue';
import { FileItem, PreviewFileItem, UploadResultStatus } from './types';
import { BasicColumn, ActionItem, TableAction } from '/@/components/Table/index'; import TableAction from '/@/components/Table/src/components/TableAction';
// 文件上传列表 // 文件上传列表
export function createTableColumns(): BasicColumn[] { export function createTableColumns(): BasicColumn[] {

View File

@ -9,31 +9,24 @@
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, h } from 'vue'; import { defineComponent } from 'vue';
import { BasicUpload } from '/@/components/Upload'; import { BasicUpload } from '/@/components/Upload';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import { BasicForm, FormSchema, useForm } from '/@/components/Form/index'; import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
import { uploadApi } from '/@/api/sys/upload'; import { uploadApi } from '/@/api/sys/upload';
// import { Alert } from 'ant-design-vue';
const schemas: FormSchema[] = [ const schemas: FormSchema[] = [
{ {
field: 'field1', field: 'field1',
component: 'Input', component: 'Upload',
label: '字段1', label: '字段1',
colProps: { colProps: {
span: 8, span: 8,
}, },
rules: [{ required: true, type: 'array', message: '请选择上传文件' }], rules: [{ required: true, message: '请选择上传文件' }],
render: ({ model, field }) => { componentProps: {
return h(BasicUpload, {
value: model[field],
api: uploadApi, api: uploadApi,
onChange: (val: string[]) => {
model[field] = val;
},
});
}, },
}, },
]; ];