Ffast-FE vue iview 백그라운드 관리 시스템 기반 프런트엔드 빠른 솔루션 개발

13333 단어 vue.jsiview
Github 주소https://github.com/ZhiYiDai/F...스타를 환영합니다.
Ffast-FE
vue iview 백엔드 관리 시스템 기반 전단 빠른 개발 솔루션
설치하다.
# install dependencies
npm install or yarn

# serve with hot reload at localhost:8000
npm run dev

# build for production with minification
npm run build

간단한 소개
Ffast-FE는 vue iview 백엔드 관리 시스템을 기반으로 하는 전단 빠른 개발 솔루션으로 대량의 상용 구성 요소 레이아웃을 봉인했다.기본적인 시스템 관리 페이지가 구현되었습니다. 구성 요소로 웹 페이지를 신속하게 개발할 수 있습니다.이미 실현된 페이지(전체 레이아웃 인터페이스, 사용자 관리, 역할 관리, 사전 관리, 권한 메뉴, 인터페이스 테스트, 시스템 로그) 개발 중인 페이지(코드 생성) 프레젠테이션 주소http://demo.ffast.cn/대체 주소http://39.107.104.190/ffast
간단한 첨삭 수정 표 페이지


  /**
   *        
   */
  const tableEditOptions = {
    //            ,   false           
    editPage: true,
    //      
    width: 600,
    //       
    labelWidth: 70,
    //     
    dynamic: [
      [
        {name: 'id', hidden: true},
        {
          name: 'name',
          type: 'text',
          span: 12,
          label: '   ',
          rules: {required: true}
        },
        {name: 'parentId', type: 'treeSelect', dataFromTree: true, span: 12, label: '   '}
      ],
      [
        {name: 'url', type: 'text', span: 24, label: '  Url'}
      ],
      [
        {name: 'identity', type: 'text', span: 12, label: '   '},
        {name: 'icon', type: 'text', span: 12, label: '  '}

      ],
      [
        {name: 'weight', type: 'text', span: 12, label: '  '}
      ],
      [
        {
          name: 'status',
          openText: '  ',
          closeText: '  ',
          type: 'switch',
          span: 12,
          label: '  ',
          value: 1,
          trueValue: 1,
          falseValue: 0
        },
        {
          name: 'resType',
          type: 'radio',
          span: 12,
          label: '  ',
          value: 1,
          data: [{label: '  ', value: 1}, {label: '  ', value: 2}],
          rules: {required: true, type: 'number'}
        }
      ],
      [
        {
          name: 'addBaseCrud',
          type: 'switch',
          openText: ' ',
          closeText: ' ',
          span: 12,
          label: '      ',
          value: false
        }
      ]
    ]
  }
  /**
   *    
   */
  const treeOptions = {
    title: '    ',
    //        
    dataUrl: '/sys/res/list',
    //          
    createUrl: '/sys/res/create',
    //          
    deleteUrl: '/sys/res/delete',
    //          
    updateUrl: '/sys/res/update',
    //        
    showToolbar: true,
    editOptions: tableEditOptions
  }
  /**
   *     
   */
  const tableOptions = {
    editOptions: tableEditOptions,
    selection: [],
    pageSize: 20,
    //       
    title: '    ',
    //     
    permsPrefix: 'res',
    //       
    dataUrl: '/sys/res/list',
    //         
    createUrl: '/sys/res/create',
    //         
    deleteUrl: '/sys/res/delete',
    //         
    updateUrl: '/sys/res/update',
    //       
    param: {},
    //      
    columns: [
      {type: 'selection', width: 60, align: 'center'},
      {key: 'name', title: '   ', minWidth: 160, maxWidth: 280},
      {
        key: 'resType',
        width: 80,
        title: '  ',
        //     (    (id)       value)
        enum: [{value: '  ', id: 1, el: 'strong'}, {value: '  ', id: 2}]
      },
      {key: 'identity', title: '   ', width: 200},
      {key: 'url', title: '  Url', minWidth: 200, maxWidth: 400},
      {key: 'parentId', title: '   ', width: 160, dataFromTree: true},
      {
        key: 'icon',
        width: 100,
        title: '    ',
        render: (h, params) => {
          const row = params.row
          return h('Icon', {
            props: {
              type: row.icon
            }
          })
        }
      },
      {key: 'weight', title: '  ', width: 80},
      {
        key: 'status',
        width: 80,
        title: '  ',
        enum: ['  ', '  ']
      }
    ],
    //       
    searchDynamic: [
      [
        {name: 'name', label: '   ', span: 4, type: 'text'},
        {name: 'identity', label: '   ', span: 4, type: 'text'},
        {name: 'url', label: 'Url', span: 4, type: 'text'},
        {name: 'status', label: '  ', span: 3, type: 'text'},
        {
          name: 'resType',
          type: 'select',
          data: [{label: '  ', value: 1}, {label: '  ', value: 2}],
          span: 3,
          label: '  '
        }
      ]
    ]
  }

  import CrudView from 'components/views/CrudView'

  export default {
    data() {
      return {
        tableOptions,
        treeOptions
      }
    },
    computed: {},
    methods: {},
    mounted() {
    },
    components: {CrudView}
  }


유연하고 풍부한 동적 양식 구성 요소(FormDynamic)
10가지 폼 구성 요소 지원: 1.input text (단일 입력 상자) 2.input textarea 3.선택 상자 아래로 4.라디오checkbox (다중 선택 상자) 6.트리 선택 7.숫자 입력 상자 8.날짜 선택 9.날짜 시간 선택날짜 시간대 선택이미지 업로드 양식 구성 요소 12.editor(vue-quill-editor 풍부한 텍스트 기반) 13.팝업 선택
코드 예제


  import {FormDynamic, PopupEdit, PopupSelect} from 'components/';
  let self = null;
  const dynamic1 = [
      [
        {type: 'title', span: 24, text: 'Input'}
      ],
      [
        {
          name: 'numberData',
          type: 'number',
          span: 6,
          //    
          min:1,
          //    
          max:80010
          label: 'Number'
        },
        {
          name: 'textData',
          type: 'text',
          span: 6,
          label: 'text',
          value: 'DefaultValue',
          rules: {required: true, type: 'string'}
        },
        {
          name: 'passwordData',
          type: 'text',
          span: 6,
          password: true,
          label: 'PasswordText',
          rules: {required: true, type: 'string', message: '      '}
        },
        {
          name: 'textarea',
          type: 'text',
          placeholder: '       ',
          span: 6,
          label: 'TextareaLabel',
          textarea: {minRows: 1, maxRows: 6}
        }
      ], [
        {type: 'title', span: 24, text: 'date'}
      ], [
        {name: 'date1', type: 'date', span: 6, label: 'DateLabel'},
        {name: 'date2', type: 'datetime', span: 6, label: 'DateTimeLabel'},
        {name: 'date3', type: 'datetimerange', span: 6, label: 'Datetimerange'}
      ],
      [
        {type: 'title', span: 24, text: 'DataSelect'}
      ],
      [
        {
          name: 'selectData',
          type: 'select',
          span: 8,
          value: 0,
          label: 'SelectLabel',
          data: [
            {label: '  1', value: 0}, {label: '  2', value: 1},
            {label: '  3', value: 2}, {label: '  4', value: 3}
          ],
          onChange: (val, from, data) => {
            alert('onChange');
          }
        },
        {
          name: 'selectData2',
          type: 'select',
          span: 6,
          value: 0,
          label: 'URLSelectLabel',
          // value    
          valField: 'id',
          // label    
          textField: 'name',
          //       url      
          dataUrl: '/sys/dict/get?type=job',
          onChange: (val, from, data) => {
            alert('onChange');
          }
        },
        {
          name: 'selectData3',
          type: 'select',
          span: 6,
          value: 0,
          label: 'DictSelectLabel',
          //        
          dict: 'job',
          onChange: (val, from, data) => {
            alert('onChange');
          }
        }
      ], [
        {type: 'title', span: 24, text: 'Title'}
      ], [
        {
          name: 'radioData',
          type: 'radio',
          span: 6,
          value: 0,
          label: 'RadioLabel',
          data: [
            {label: '  1', value: 0}, {label: '  2', value: 1},
            {label: '  3', value: 2}, {label: '  4', value: 3}
          ],
          onChange: (val, from, data) => {
            alert('onChange');
          }
        },
        {
          name: 'checkboxData',
          type: 'checkbox',
          span: 8,
          label: 'CheckboxLabel',
          data: [
            {label: '  1', value: 0}, {label: '  2', value: 1},
            {label: '  3', value: 2}, {label: '  4', value: 3}
          ],
          enableCheckAll: true,
          checkAllLabel: '  ',
          checkAll: true,
          onChange: (val, from, data) => {
            alert('onChange');
          }
        },
        {
          name: 'deviceTypeId',
          type: 'treeSelect',
          span: 8,
          label: 'TreeSelectLabel',
          //    CrudView           ,select      
          dataFromTree: true,
          textField: 'name',
          valField: 'id',
          dataUrl: '/sys/res/list',
          onChange: (val, from, data) => {
            alert('onChange');
          }
        },
        {
          name: 'popSelectId',
          span:
            8,
          label:
            'PopupSelectLabel',
          type:
            'popText',
          textField:
            'popSelectName',
          onClick(fromData) {
            self.$refs['popSelect'].open((selection) => {
              console.log(selection[0].id);
              self.$set(fromData, 'popSelectId', selection[0].id);
              self.$set(fromData, 'popSelectName', selection[0].username);
            })
          }
        }
      ],
      [
        {
          name: 'imgData',
          //       2 
          max: 2,
          type: 'imgUpload',
          span: 24,
          label: 'ImgUploadLabel'
        },
        {name: 'editor', type: 'editor', span: 24, label: 'EditorLabel', placeholder: '      '}
      ],
      [
        {
          name: 'button', type: 'buttons',
          span: 24,
          data: [
            {
              label: 'SetData',
              onClick() {
                //        
                self.$refs.dynamic1.setFormData({numberData: 10001, textData: 'SetData'})
              }
            },
            {
              label: 'GetFormData',
              onClick() {
                self.$refs.dynamic1.submit((param) => {
                  console.log(param);
                  alert(JSON.stringify(param))
                }, (res) => {
                  //       
                });
              }
            },
            {
              //         
              label: 'PopupWindow',
              onClick() {
                self.$refs.popupEdit.open({
                  title: 'PopupEditWindow',
                  //     url
                  postUrl: null
                }, self.fromData);
              }
            },
            {
              label: 'GotoEditPage',
              onClick() {
                self.editOptions.editSuccess = self.editSuccess;
                let action = {
                  //     
                  title: 'title',
                  //       url
                  postUrl: ''
                }
                self.$router.push({
                  path: self.$router.currentRoute.path + '/edit',
                  query: {options: self.editOptions, action: action, data: self.fromData}
                })
              }
            }
          ]
        }
      ]
    ];
  /**
   *        
   */
  const editOptions = {
    width: 1200,
    labelWidth: 120,
    dynamic: dynamic1
  };

  export default {
    data() {
      return {
        editOptions,
        dynamic1,
        fromData: {}
      }
    },
    computed: {
      //       
      userPage() {
        return import('pages/sys/user');
      }
    },
    methods: {
      //     
      editSuccess(res) {
        console.log(res);
      }
    },
    mounted() {
      self = this;
    },
    components: {
      FormDynamic, PopupEdit, PopupSelect
    }
  }


행렬 규칙
[
  [{}...],//   
  [],     //   
  [],     //   
]
      span:24     


양식 유효성 검사
rules: {
      required: true, //      
      type: 'number', //    
      message: '      '//    
}

구체적으로 보십시오https://github.com/yiminghe/a...
동적 폼 구성 요소를 기반으로 개발한 다른 구성 요소도 사용할 수 있습니다
1. 팝업 편집 양식(PopupEdit) 2.양식 편집 건너뛰기(edit.vue)
또 뭐 있어요?
트리 편집 레이아웃
PhotoViewer(사진 미리 보기 구성 요소)
DataTree(데이터 트리)
DataSelect(사전 ID를 직접 입력할 수 있는 데이터 드롭다운 상자)
DataTable(데이터 테이블)
CrudTree
CrudTable(첨삭 테이블)
PermsValid(권한 검증)
...
참조 관계
CrudView -> CrudTable -> DataTable  -> IView Table
                      -> PopupEdit  -> FormDynamic
                      -> Edit       -> FormDynamic

         -> CrudTree  -> DataTree   -> IView Tree
                      -> PopupEdit  -> FormDynamic
                      -> Edit       -> FormDynamic

백엔드 솔루션
https://github.com/ZhiYiDai/F...(Ffast java) 문서 정리 중...

좋은 웹페이지 즐겨찾기