create.html 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <el-card shadow="never" style="border: 0;">
  3. <yun-form
  4. :steps="['设置基础资料','设置扩展文件','添加菜单与数据']"
  5. @submit="onSubmit"
  6. :data="rows"
  7. :columns="columns">
  8. <template #default>
  9. {:token_field()}
  10. </template>
  11. <template #tables="{step,rows}">
  12. <el-form-item label="{:__('选择表')}:" v-if="step==2">
  13. <el-select v-model="rows.tables" placeholder="请选择" multiple filterable style="width: 100%">
  14. {foreach $table as $value}
  15. <el-option value="{$value}">{$value}</el-option>
  16. {/foreach}
  17. </el-select>
  18. </el-form-item>
  19. </template>
  20. <template #config="{step,rows}">
  21. <el-form-item label="{:__('选择配置')}:" v-if="step==2">
  22. <el-select v-model="rows.config" placeholder="请选择" multiple filterable style="width: 100%">
  23. {foreach $sonfig as $key=>$value}
  24. <el-option :value="{$key}" label="{$value.name}-{$value.title}"></el-option>
  25. {/foreach}
  26. </el-select>
  27. </el-form-item>
  28. </template>
  29. <template #menu="{step,rows}">
  30. <el-form-item label="{:__('选择菜单')}:" v-if="step==2">
  31. <el-tree ref="tree" :props="{children:'childlist',label:'title'}" node-key="id" show-checkbox :default-checked-keys="checkedKey" :data="treedata" style="width: 100%;"></el-tree>
  32. </el-form-item>
  33. </template>
  34. </yun-form>
  35. </el-card>
  36. </template>
  37. <script>
  38. import form from "@components/Form.js";
  39. import {copyObj} from "@util.js";
  40. export default {
  41. components:{'YunForm':form},
  42. data:{
  43. checkedKey:[],
  44. columns:[
  45. {"field":"id","title":"ID",width:80,"edit":"hidden"},
  46. {
  47. field:"pack",
  48. title:"包名",
  49. edit:{form: 'input',type:'text',placeholder: '请输入包名,包名只能由小写字母、数字、下划线组成'},
  50. step:0,
  51. rules: {
  52. required:true,
  53. validator:function(rule, value, callback){
  54. if(!/^[a-z0-9_]+$/.test(value)){
  55. callback(new Error(__('包名必须为小写字母、数字、下划线组成')));
  56. }
  57. callback();
  58. },
  59. trigger: 'blur'
  60. },
  61. },
  62. {field:"name",title:"扩展名称",edit:'text',step:0,rules:'required;length(2~30)'},
  63. {field:"type",title:"扩展类型",searchList:Yunqi.data.type,edit:{form:'select',value:'plugin'},step:0,rules:'required'},
  64. {field:"author",title:"作者",edit:'text',step:0},
  65. {field:"price",title:"价格",edit:{form:'input',type:'number',append:'元'},step:0,rules:'required;range(0~)'},
  66. {field:"version",title:"版本号",edit:{form:'input',type:'number',placeholder: '请输入100到1999之间的数字,对应版本号为1.0.0或19.9.9'},rules:'required;range(100~1999)',step:0},
  67. {field:"document",title:"说明文档",edit:{form:'input',type:'text',placeholder:'请输入文档链接'},step:0},
  68. {field:"description",title:"简介",edit:'textarea',step:0},
  69. {field: "files",title:'扩展文件',edit:{form:'input',type:'textarea',rows:3,placeholder:'请输入扩展文件目录或扩展文件,相对系统根目录路径,每一行一个目录或文件'},step:1,rules:'required'},
  70. {field: "unpack",title:'过滤文件',edit:{form:'input',type:'textarea',rows:3,placeholder:'请输入打包时需要过滤掉的目录或文件,每一行一个目录或文件'},step:1},
  71. {field: "require",title:'依赖文件',edit:{form:'input',type:'textarea',rows:3,placeholder:'请输入依赖的composer类,每一行一个完整类名,如\\Yansongda\\Pay\\Pay'},step:1},
  72. {field: "addons",title:'依赖扩展',edit:{form:'input',type:'textarea',rows:3,placeholder:'请输入依赖的扩展,每一行一个扩展的包名,如qqmap'},step:1},
  73. {field: "tables",title:'选择表',edit:'slot',step:2},
  74. {field: "config",title:'选择配置',edit:'slot',step:2},
  75. {field: "menu",title:'选择菜单',edit:'slot',step:2},
  76. ],
  77. rows:Yunqi.data.rows,
  78. treedata:[],
  79. },
  80. onShow:function (){
  81. this.checkedKey = copyObj(Yunqi.data.rows.menu);
  82. Yunqi.ajax.get('auth/group/roletree',{groupid:1},false,false,true).then(res=>{
  83. this.treedata=res;
  84. });
  85. },
  86. methods: {
  87. onSubmit:function (row){
  88. let s1=this.$refs.tree.getCheckedKeys();
  89. let s2=this.$refs.tree.getHalfCheckedKeys();
  90. row.menu=s2.concat(s1).join(',');
  91. return true;
  92. }
  93. }
  94. }
  95. </script>
  96. <style>
  97. </style>