index.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  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]"
  8. :placeholder="'请输入'+formConfig.columnComment" clearable @keyup.enter.native="handleQuery" />
  9. <!-- 下拉框 -->
  10. <el-select v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'&&(!formConfig.fkInfo.fkTableName)"
  11. filterable :placeholder="'请输入'+formConfig.columnComment">
  12. <el-option v-for="itemChild in formConfig.sysDictData" :key="itemChild.dictValue" :label="itemChild.dictLabel"
  13. :value="itemChild.dictValue">
  14. </el-option>
  15. </el-select>
  16. <!-- 下拉框搜索 -->
  17. <el-select v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'&&(formConfig.fkInfo.fkTableName)"
  18. filterable remote :remote-method="remoteMethod" :loading="loading" :placeholder="'请输入'+formConfig.columnComment">
  19. <el-option v-for="itemChild in filterList" :key="itemChild.table_id" :label="itemChild.table_name" :value="itemChild.table_id">
  20. </el-option>
  21. </el-select>
  22. <!-- 复选框 -->
  23. <el-checkbox-group v-model="config" v-if="formConfig.htmlType == 'checkbox'">
  24. <el-checkbox @change="handleCheckedCitiesChange" v-for="itemChild in formConfig.sysDictData" :label="itemChild.dictValue"
  25. :key="itemChild.dictLabel">
  26. {{itemChild.dictLabel}}
  27. </el-checkbox>
  28. </el-checkbox-group>
  29. <!-- 单选框 -->
  30. <el-radio-group v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'radio'">
  31. <el-radio v-for="itemChild in formConfig.sysDictData" :key="itemChild.dictValue" :label="itemChild.dictValue">{{itemChild.dictLabel}}</el-radio>
  32. </el-radio-group>
  33. <!-- 时间控件 -->
  34. <el-date-picker v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'datetime'" type="date"
  35. :placeholder="'请输入'+formConfig.columnComment">
  36. </el-date-picker>
  37. <!-- 上传图片 -->
  38. <el-upload v-if="formConfig.htmlType == 'imageUpload'" :headers="{Authorization: 'Bearer ' + getToken()}" :action="process + '/boman-file/upload'"
  39. :file-list="config" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-success="upImageFn"
  40. :on-remove="reseImage">
  41. <i class="el-icon-plus"></i>
  42. </el-upload>
  43. <el-dialog :visible.sync="dialogVisible" v-if="formConfig.htmlType == 'imageUpload'">
  44. <img width="100%" :src="dialogImageUrl" alt="">
  45. </el-dialog>
  46. <!-- 上传文件 -->
  47. <el-upload class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}" v-if="formConfig.htmlType == 'fileUpload'"
  48. :action="process + '/boman-file/upload'" :on-change="handleChange" :on-success="upImageFn" :on-remove="reseImage"
  49. :file-list="config">
  50. <el-button size="small" type="primary">点击上传</el-button>
  51. <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
  52. </el-upload>
  53. <!-- 富文本 -->
  54. <editor v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'editor'" :min-height="192" />
  55. </el-form-item>
  56. </template>
  57. <script>
  58. const defaultSettings = require('@/settings.js')
  59. import Editor from '@/components/Editor';
  60. import {
  61. listIndexfou
  62. } from "@/api/tool/gen";
  63. import {
  64. getToken
  65. } from "@/utils/auth";
  66. export default {
  67. data() {
  68. return {
  69. fileList: [],
  70. defaultSettings,
  71. dialogImageUrl: '',
  72. process: process.env.VUE_APP_BASE_API,
  73. dialogVisible: false,
  74. disabled: false,
  75. loading: false,
  76. filterList: [],
  77. config: {},
  78. aliemg: {
  79. table: '',
  80. orderBy: 'create_time desc',
  81. pageNo: 1,
  82. pageSize: 10,
  83. fixedData: {
  84. condition: {}
  85. }
  86. },
  87. }
  88. },
  89. components: {
  90. Editor
  91. },
  92. props: {
  93. formConfig: {
  94. type: Object,
  95. required: true,
  96. 'default': {
  97. sysDictData: []
  98. }
  99. },
  100. },
  101. created() {
  102. this.config = {}
  103. this.init()
  104. },
  105. mounted() {},
  106. methods: {
  107. listIndexfouFn() {
  108. listIndexfou(this.aliemg).then(response => {
  109. if (response.data) {
  110. this.filterList = response.data.rows
  111. }
  112. this.loading = false;
  113. })
  114. },
  115. remoteMethod(query) {
  116. if (query !== '') {
  117. this.loading = true;
  118. this.aliemg.fixedData.condition[this.formConfig.fkInfo.dkColumnName] = query
  119. this.listIndexfouFn()
  120. } else {
  121. this.filterList = [];
  122. }
  123. },
  124. upImageFn(res, file) {
  125. this.config.push(res.data);
  126. },
  127. init() {
  128. if (this.formConfig.htmlType == 'checkbox' || this.formConfig.htmlType == 'imageUpload' || this.formConfig.htmlType ==
  129. 'fileUpload') {
  130. this.config = []
  131. } else {
  132. this.$set(this.config, this.formConfig.columnName, (this.formConfig.columnValue || ''))
  133. }
  134. this.aliemg.table = this.formConfig.fkInfo.fkTableName
  135. },
  136. handleChange(file, fileList) {
  137. this.fileList = fileList.slice(-3);
  138. },
  139. getToken() {
  140. return getToken()
  141. },
  142. reseImage(file, fileList) {
  143. let urls = ""
  144. if (file.response) {
  145. urls = file.response.url
  146. } else {
  147. urls = file.url
  148. }
  149. for (let i = this.config.length - 1; i >= 0; i--) {
  150. if (this.config[i].url == urls) {
  151. this.config.splice(i, 1);
  152. }
  153. }
  154. },
  155. reseImage1(file, fileList) {
  156. let urls = ""
  157. if (file.response) {
  158. urls = file.response.url
  159. } else {
  160. urls = file.url
  161. }
  162. for (let i = this.config.length - 1; i >= 0; i--) {
  163. if (this.config[i].url == urls) {
  164. this.config.splice(i, 1);
  165. }
  166. }
  167. },
  168. handlePictureCardPreview(file) {
  169. this.dialogImageUrl = file.url;
  170. this.dialogVisible = true;
  171. },
  172. handleDownload(file) {
  173. console.log(file);
  174. },
  175. handleQuery() {
  176. this.$emit('btns')
  177. },
  178. handleCheckedCitiesChange(value) {
  179. console.log(this.config)
  180. }
  181. }
  182. }
  183. </script>
  184. <style>
  185. </style>