index.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <template>
  2. <el-form-item :label="formConfig.columnComment" style="display: inline-block;" :prop="formConfig.columnName">
  3. <!-- 输入框 -->
  4. <el-input v-if="formConfig.htmlType == 'input'" v-model="config[formConfig.columnName]" :placeholder="'请输入'+formConfig.columnComment"
  5. clearable @keyup.enter.native="handleQuery" />
  6. <!-- 多行输入框 -->
  7. <el-input v-if="formConfig.htmlType == 'textarea'" type="textarea" v-model="config[formConfig.columnName]" :placeholder="'请输入'+formConfig.columnComment"
  8. clearable @keyup.enter.native="handleQuery" />
  9. <!-- 下拉框 -->
  10. <el-select v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'" filterable :placeholder="'请输入'+formConfig.columnComment">
  11. <el-option v-for="itemChild in formConfig.sysDictData" :key="itemChild.dictValue" :label="itemChild.dictLabel" :value="itemChild.dictValue">
  12. </el-option>
  13. </el-select>
  14. <!-- 复选框 -->
  15. <el-checkbox-group v-model="formConfig.sysDictDatatwo" v-if="formConfig.htmlType == 'checkbox'">
  16. <el-checkbox @change="handleCheckedCitiesChange" v-for="itemChild in formConfig.sysDictData" :key="itemChild.dictValue" :label="itemChild.dictLabel"
  17. :value="itemChild.dictValue" ></el-checkbox>
  18. </el-checkbox-group>
  19. <!-- 单选框 -->
  20. <el-radio-group v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'radio'">
  21. <el-radio v-for="itemChild in formConfig.sysDictData" :key="itemChild.dictValue" :label="itemChild.dictLabel" :value="itemChild.dictValue"></el-radio>
  22. </el-radio-group>
  23. <!-- 时间控件 -->
  24. <el-date-picker v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'datetime'" type="date" :placeholder="'请输入'+formConfig.columnComment">
  25. </el-date-picker>
  26. <!-- 上传图片 -->
  27. <el-upload v-if="formConfig.htmlType == 'imageUpload'" :headers="{Authorization: 'Bearer ' + getToken()}" :action="process + '/boman-file/upload'" list-type="picture-card"
  28. :on-preview="handlePictureCardPreview" :on-remove="handleRemove">
  29. <i class="el-icon-plus"></i>
  30. </el-upload>
  31. <el-dialog :visible.sync="dialogVisible" v-if="formConfig.htmlType == 'imageUpload'">
  32. <img width="100%" :src="dialogImageUrl" alt="">
  33. </el-dialog>
  34. <!-- 上传文件 -->
  35. <el-upload
  36. class="upload-demo"
  37. :headers="{Authorization: 'Bearer ' + getToken()}"
  38. v-if="formConfig.htmlType == 'fileUpload'"
  39. :action="process + '/boman-file/upload'"
  40. :on-change="handleChange"
  41. :file-list="fileList">
  42. <el-button size="small" type="primary">点击上传</el-button>
  43. <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
  44. </el-upload>
  45. <!-- 富文本 -->
  46. <editor v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'editor'" :min-height="192"/>
  47. 123
  48. </el-form-item>
  49. </template>
  50. <script>
  51. const defaultSettings = require('@/settings.js')
  52. import Editor from '@/components/Editor';
  53. import { getToken } from "@/utils/auth";
  54. export default {
  55. data() {
  56. return {
  57. fileList: [],
  58. defaultSettings,
  59. dialogImageUrl: '',
  60. process: process.env.VUE_APP_BASE_API,
  61. dialogVisible: false,
  62. disabled: false,
  63. config: {},
  64. }
  65. },
  66. components: {
  67. Editor
  68. },
  69. props: {
  70. formConfig: {
  71. type: Object,
  72. required: true,
  73. 'default': {
  74. sysDictData: []
  75. }
  76. },
  77. },
  78. created() {
  79. console.log(this.formConfig)
  80. },
  81. mounted() {
  82. },
  83. methods: {
  84. handleChange(file, fileList) {
  85. this.fileList = fileList.slice(-3);
  86. },
  87. getToken() {
  88. return getToken()
  89. },
  90. handleRemove(file, fileList) {
  91. console.log(file, fileList);
  92. },
  93. handlePictureCardPreview(file) {
  94. this.dialogImageUrl = file.url;
  95. this.dialogVisible = true;
  96. },
  97. handleDownload(file) {
  98. console.log(file);
  99. },
  100. handleQuery() {
  101. this.$emit('btns')
  102. },
  103. handleCheckedCitiesChange(value){
  104. console.log(value)
  105. }
  106. }
  107. }
  108. </script>
  109. <style>
  110. </style>