formItems.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. import {
  2. serviceCategoryAdd,
  3. serviceCategoryUpdate,
  4. serviceCategoryDel,
  5. serviceCategoryDetail
  6. } from '@/api/tradeInConfig.js'
  7. import ImageUpload from '@/components/file-upload'
  8. import { required } from '@/components/template/rules_verify.js'
  9. export default {
  10. components: { ImageUpload },
  11. data() {
  12. return {
  13. formDialog: false,
  14. formData: {
  15. level: 0,
  16. name: '',
  17. parentId: 0,
  18. sortNum: 0,
  19. status: true,
  20. typeAttribute: '',
  21. typeOption: '',
  22. // type: '',
  23. // indexSort: 0,
  24. // imgUrl: []
  25. }
  26. }
  27. },
  28. computed: {
  29. formItems() {
  30. return [
  31. {
  32. isShow: !!~[2, 3].indexOf(this.formData.level),
  33. name: 'el-select',
  34. md: 24,
  35. formItemAttributes: {
  36. label: '上级名称',
  37. prop: 'parentId',
  38. rules: [...required]
  39. },
  40. options: this.list.map(item => ({ label: item.name, value: item.categoryId })),
  41. attributes: { disabled: true, clearable: true, filterable: true, placeholder: '请选择' }
  42. },
  43. {
  44. name: 'el-input',
  45. md: 24,
  46. attributes: { disabled: false, placeholder: '请输入', maxlength: 11 },
  47. formItemAttributes: {
  48. label: "类型名称",
  49. prop: 'name',
  50. rules: [...required]
  51. }
  52. },
  53. // {
  54. // md: 24,
  55. // isShow: !!~[2].indexOf(this.formData.level),
  56. // name: 'slot-component',
  57. // formItemAttributes: {
  58. // prop: 'imgUrl',
  59. // label: '分类图片',
  60. // rules: [...required]
  61. // },
  62. // render: (h, { props, onInput }) => {
  63. // var { value } = props
  64. // return <ImageUpload fileList={this.formData.imgUrl} limit={1} isEdit={true} />
  65. // }
  66. // },
  67. {
  68. isShow: !!~[3].indexOf(this.formData.level),
  69. md: 24,
  70. name: 'el-radio',
  71. options: [
  72. { label: '单选', value: 'SIGIN' },
  73. { label: '多选', value: 'MANY' }
  74. ],
  75. attributes: { disabled: this.formData.id ? true : false },
  76. formItemAttributes: {
  77. label: '选项属性',
  78. prop: 'typeOption',
  79. rules: [...required]
  80. }
  81. },
  82. {
  83. isShow: !!~[3].indexOf(this.formData.level),
  84. md: 24,
  85. name: 'el-radio',
  86. options: [
  87. { label: '规格', value: 'SPEC' },
  88. // { label: '增减参考金额', value: 'DED' },
  89. { label: '其他', value: 'OTHER' }
  90. ],
  91. attributes: { disabled: this.formData.id ? true : false },
  92. formItemAttributes: {
  93. label: '属性类型',
  94. prop: 'typeAttribute',
  95. rules: [...required]
  96. }
  97. },
  98. {
  99. md: 24,
  100. name: 'el-radio',
  101. options: [
  102. { label: '有效', value: true },
  103. { label: '无效', value: false }
  104. ],
  105. attributes: {},
  106. formItemAttributes: {
  107. label: '状态',
  108. prop: 'status',
  109. rules: [...required]
  110. }
  111. },
  112. {
  113. name: 'el-input',
  114. md: 12,
  115. attributes: { disabled: false, placeholder: '请输入', maxlength: 11 },
  116. formItemAttributes: {
  117. label: '排序',
  118. prop: 'sortNum',
  119. rules: []
  120. }
  121. },
  122. // {
  123. // isShow: !!~[2].indexOf(this.formData.level),
  124. // name: 'el-input',
  125. // md: 12,
  126. // attributes: { disabled: false, placeholder: '请输入', maxlength: 11 },
  127. // formItemAttributes: {
  128. // label: '首页顺序',
  129. // prop: 'indexSort',
  130. // rules: []
  131. // }
  132. // }
  133. ]
  134. }
  135. },
  136. methods: {
  137. // 添加一级
  138. addL1Class() {
  139. this.formData.level = 1
  140. this.formDialog = true
  141. },
  142. // 添加二三级
  143. addChClass(row) {
  144. this.formData.level = row.level + 1
  145. this.formData.parentId = row.categoryId
  146. this.formDialog = true
  147. },
  148. // 编辑
  149. editClass(row) {
  150. serviceCategoryDetail({ categoryId: row.categoryId }).then(res => {
  151. Object.assign(
  152. this.formData,
  153. { ...res.data },
  154. // {
  155. // imgUrl: res.data.imgUrl ? res.data.imgUrl.split(',').map(u => ({ imgUrl: u })) : [],
  156. // children: undefined
  157. // }
  158. )
  159. this.formDialog = true
  160. })
  161. },
  162. // 删除
  163. handleDelete(row) {
  164. serviceCategoryDel({ categoryId: row.categoryId }).then(res => {
  165. this.$message({
  166. type: 'success',
  167. message: `删除成功!`
  168. })
  169. this.getList()
  170. })
  171. },
  172. // 关闭窗口
  173. formCancel() {
  174. this.$refs?.formRef?.$refs?.inlineForm?.clearValidate()
  175. this.$data.formData = this.$options.data().formData
  176. this.formDialog = false
  177. },
  178. // 确定保存
  179. formConfirm() {
  180. this.$refs.formRef.validate((valid, invalidFields, errLabels) => {
  181. if (valid) {
  182. ;[serviceCategoryAdd, serviceCategoryUpdate]
  183. [this.formData.id ? 1 : 0]({
  184. ...this.formData,
  185. // imgUrl: this.formData.imgUrl.map(item => item.imgUrl).join(','),
  186. // ...(() => {
  187. // if (this.formData.level == 3) {
  188. // return {
  189. // categoryType: 'A'
  190. // }
  191. // } else {
  192. // return {}
  193. // }
  194. // })()
  195. })
  196. .then(res => {
  197. this.$message({
  198. type: 'success',
  199. message: `保存成功!`
  200. })
  201. this.formCancel()
  202. this.getList()
  203. })
  204. }
  205. })
  206. }
  207. }
  208. }