# 一、项目会议
1、规范
    前端规范=>阿里开发规范
    后端规范=>接口
2、技术栈、插件、UI框架 package.json 里面的依赖
3、开发流程

登录页=>登录拦截功能=>全局
      =>表单=>验证
        密码=>加密
      成功=>token的存储=>自动登录
      失败=>限制错误次数

首页=>可订制的大屏（可以自由拖拽、各种图表、表格、视频、轮播图
等等）
    项目亮点：自由拖拽=>1.6.1版本 不能往左下角和右上角缩放的功能=>修改源码
    各种图表=>echarts=>封装相应的组件（饼状图/柱状图/折线图....）以及各自的功能（缩放、下载成图片、可拖拽的轴、一键恢复、响应式...）
    视频=>视频的抓流（相当于看）
    轮播图=>封装成组件
    项目难点：做一个自己的插件，通过自己的插件做lowcode低代码开发 动态表单、表格 CRUD 增删改查
    发布插件

扩展功能：
    文件上传
    富文本编辑

    权限管理
        路由级权限
        按钮级权限
    
    拦截器
        请求拦截
        响应拦截


订制页、计划页、记录页 增删改查

4、功能的划分和工期的分配

5、接口联调



# 二、低代码开发：动态表单组件，名字kdform

## 1、使用方法
```html
<kdform :config="config" :model="model"></kdform>
config 动态表单的配置文件
model  表单绑定的属性
```
## 2、示例
``` javascript
import { reactive } from "vue";
const config = reactive({
  labelWidth: "120px",
  labelPosition: "top",
  rules: {
    tenantId: [{ required: true, message: "客户id是必填项", trigger: "blur" }],
    username: [{ required: true, message: "用户名是必填项", trigger: "blur" }],
    password: [
      { required: true, message: "密码是必填项", trigger: "blur" },
      { min: 3, max: 8, message: "密码最少3位，最大8位", trigger: "blur" },
    ],
    rate: [[{ required: true, message: "评分是必填项", trigger: "blur" }]],
  },
  formRef: "formLogin",
  formItemArr: [
    {
      id: 1,
      label: "客户端",
      prop: "tenantId",
      name: "kdinput",
      beforeSlot: 'beforeInput',
      options: {
        placeholder: "请输入内容",
        size: "small",
        clearable: true,
        modelName: 'input1',
        // slotBefore: (scoped) => {
        //     const a = 1
        //     return `<div>这个是客户端的input${a+scoped}前边插入的内容</div>`
        // },
        inputValue: 123
      },
    },
    {
      id: 10,
      label: "用户名",
      name: "kdinput",
      options: {
        placeholder: "请输入用户名",
        size: "small",
        clearable: true,
        modelName: 'input2'
      },
    },
    {
      id: 2,
      label: "下拉列表",
      prop: "select",
      name: "kdselect",
      options: {
        modelName: 'select',
        placeholder: "please select your zone",
        optionArr: [
          {
            label: "上海",
            value: "shanghai",
          },
          {
            label: "北京",
            value: "beijing",
          },
          {
            label: "天津",
            value: "tianjin",
          },
        ],
      },
    },
    {
      id: 3,
      label: "单选框",
      prop: "radio",
      name: "kdradio",
      afterSlot: 'afterRadio',
      options: {
        modelName: 'radio1',
        optionArr: [
          {
            label: "man",
            text: "男",
          },
          {
            label: "woman",
            text: "女",
          },
        ],
      },
    },
    {
      id: 11,
      label: "单选框222",
      prop: "radio",
      name: "kdradio",
      options: {
        modelName: 'radio2',
        optionArr: [
          {
            label: "man",
            text: "男111",
          },
          {
            label: "woman",
            text: "女222",
          },
        ],
      },
    },
    {
      id: 4,
      label: "评分",
      prop: "rate",
      name: "kdrate",
      options: {
        modelName: 'aaaa',
        allowHalf: true,
      },
    },
    {
      id: 5,
      label: "开关",
      prop: "switch",
      name: "kdswitch",
      options: {
        modelName: 'switch',
        activeText: "开关111",
        inactiveText: "开关222",
        loading: true,
      },
    },
    {
      id: 6,
      label: "虚拟下拉列表",
      name: "kdvselect",
      options: {
        modelName: 'vselect',
        optionArr: [
          { value: "aaa", label: "aaa的文字" },
          { value: "bbb", label: "bbb的文字" },
          { value: "ccc", label: "ccc的文字" },
          { value: "ddd", label: "ddd的文字" },
        ],
        style: "width: 240px; margin-right: 16px; vertical-align: middle",
      },
    },
    {
      id: 7,
      label: "时间选择器",
      name: "kdtimepicker",
      options: {
        modelName: 'timepicker'
      },
    },
  ],
});
export default config;

```
## 3、参数

### a、config = {}

``` js
			属性						   描述					默认值
    	labelWidth：						文字的宽度
    	labelPosition：					文字的位置
    	rules：							验证的规则
    	ref：  							绑定表单
    	formItemArr：					表单的每一项  []	item = {}
            id:    						  标识                     1
            label: 						  文字内容                 '客户端', 
            prop:  						  rules验证规则的属性       'tenantId', 
            name:  						  表单组件的名字            'kdinput',  
            
            options: {                      传入组件的参数
                // input 类型
                placeholder				  文字提示				   ''
                size                        尺寸					  default
                clearable        		   是否一键清除               false
                disabled				  是否禁用				   false
                type					  input类型				text
                maxlength				  最大长度				   --
                minlength				  最小长度				   --
                show-word-limit			  是否显示统计字数			false
                show-password			  是否显示切换密码图标	   false
                prefix-icon				  自定义前缀图标			 --
                suffix-icon				  自定义后缀图标			 --
                rows                       输入框行数，仅 type 为     2
                      					'textarea' 时有效
                readonly                   是否只读                   false
                autofocus                  自动获取焦点                false
                autosize                    extarea 高度是否自适应，   false或{}
                      					仅 type 为 'textarea' 时生效。
                // inputnumber 类型
                step					  步数					1
                min						  最小值				    Infinity
                max						  最大值				    Infinity
                step-strictly			   是否只能输入 step 的倍数	 false
                precision				   数值精度				    --
                size					   尺寸					default
                disabled				   是否禁用				    false
                controls				   是否使用控制按钮			 true
                controls-position			控制按钮位置			   -- right
                label					   输入框关联的 label 文字	 --
                readonly                     是否只读                   false
			   placeholder                  文字提示	               --
			   name                        等价于原生 input name 属性   --
                // radio-group类型
                size					   尺寸					default
    		   disabled					  禁用					false
			   text-color				  文字激活时的颜色		    #ffffff		
			   fill						 激活时的填充色和边框色	 #409EFF
			   validate-event			  输入时是否触发表单的校验  
                optionsArr={                radio标签上的配置           
                	lable                   选中项绑定值               --
                    disabled                是否禁用单选框              false
				   border                  是否显示边框               false
				   size                    Radio 的尺寸               --
				   name                    原生 name 属性             --
            }

```









