productColumns.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. import { getClassifyList } from '@/api/goods'
  2. import { getDataDictionary } from '@/api/dataDictionary.js'
  3. import { required, mobileRequired, mobile, httpUrl, email } from '@/components/template/rules_verify.js'
  4. export default {
  5. data() {
  6. return {
  7. orderBrands: [],
  8. classifyList: [],
  9. classifyListLv2: []
  10. }
  11. },
  12. computed: {
  13. productColumns() {
  14. return [
  15. {
  16. columnAttributes: {
  17. label: '产品品牌',
  18. prop: 'brandId'
  19. },
  20. render: (h, { row, column, index }) => {
  21. return <div class="redbordererr">
  22. <el-form-item label="" label-width="0px" prop={`punishOrderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
  23. <el-select
  24. value={row[column.columnAttributes.prop]}
  25. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  26. onChange={(val) => {
  27. if (val) {
  28. var data = this.orderBrands.find(item => item.value == val)
  29. row.brandName = data.label
  30. } else {
  31. row.brandName = ""
  32. }
  33. }}
  34. placeholder="请选择"
  35. disabled={this.formData.status == "OK"}>
  36. {this.orderBrands.map((item, index_) => <el-option key={index_} label={item.label} value={item.value}></el-option>)}
  37. </el-select>
  38. </el-form-item>
  39. </div>
  40. }
  41. },
  42. {
  43. columnAttributes: {
  44. label: '产品大类',
  45. prop: 'mainId'
  46. },
  47. render: (h, { row, column, index }) => {
  48. return <div class="redbordererr">
  49. <el-form-item label="" label-width="0px" prop={`punishOrderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
  50. <el-select
  51. value={row[column.columnAttributes.prop]}
  52. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  53. onChange={(val) => {
  54. row.smallId = ""
  55. row.smallName = ""
  56. if (val) {
  57. var data = this.classifyList.find(item => item.categoryId == val)
  58. row.mainName = data.name
  59. } else {
  60. row.mainName = ""
  61. }
  62. }}
  63. placeholder="请选择"
  64. disabled={this.formData.status == "OK"}>
  65. {this.classifyList.map((item, index_) => <el-option key={index_} label={item.name} value={item.categoryId}></el-option>)}
  66. </el-select>
  67. </el-form-item>
  68. </div>
  69. }
  70. },
  71. {
  72. columnAttributes: {
  73. label: '产品小类',
  74. prop: 'smallId'
  75. },
  76. render: (h, { row, column, index }) => {
  77. return <div class="redbordererr">
  78. <el-form-item label="" label-width="0px" prop={`punishOrderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
  79. <el-select
  80. value={row[column.columnAttributes.prop]}
  81. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  82. onChange={(val) => {
  83. if (val) {
  84. var data = this.classifyListLv2.find(item => item.categoryId == val)
  85. console.log(data)
  86. row.smallName = data.name
  87. row.imgUrl = data.imgUrl
  88. } else {
  89. row.smallName = ""
  90. row.imgUrl = ""
  91. }
  92. }}
  93. placeholder="请选择"
  94. disabled={this.formData.status == "OK"}>
  95. {this.classifyListLv2.filter(item => item.parentId === row.mainId).map((item, index_) => <el-option key={index_} label={item.name} value={item.categoryId}></el-option>)}
  96. </el-select>
  97. </el-form-item>
  98. </div>
  99. }
  100. },
  101. {
  102. columnAttributes: {
  103. label: '产品机型',
  104. prop: 'specsName'
  105. },
  106. render: (h, { row, column, index }) => {
  107. return <div class="redbordererr">
  108. <el-form-item label="" label-width="0px" prop={`punishOrderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
  109. <el-input
  110. value={row[column.columnAttributes.prop]}
  111. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  112. placeholder="请输入内容"
  113. disabled={this.formData.status == "OK"}
  114. >
  115. </el-input>
  116. </el-form-item>
  117. </div>
  118. }
  119. },
  120. {
  121. columnAttributes: {
  122. label: '内机条码',
  123. prop: 'insideCode'
  124. },
  125. render: (h, { row, column, index }) => {
  126. return <div class="redbordererr">
  127. <el-form-item label="" label-width="0px" prop={`punishOrderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
  128. <el-input
  129. value={row[column.columnAttributes.prop]}
  130. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  131. placeholder="请输入内容"
  132. disabled={this.formData.status == "OK"}
  133. >
  134. </el-input>
  135. </el-form-item>
  136. </div>
  137. }
  138. },
  139. {
  140. columnAttributes: {
  141. label: '外机条码',
  142. prop: 'outCode'
  143. },
  144. render: (h, { row, column, index }) => {
  145. return <div class="redbordererr">
  146. <el-form-item label="" label-width="0px" prop={`punishOrderProducts.${index}.${column.columnAttributes.prop}`} rules={required}>
  147. <el-input
  148. value={row[column.columnAttributes.prop]}
  149. onInput={(val) => { row[column.columnAttributes.prop] = val }}
  150. placeholder="请输入内容"
  151. disabled={this.formData.status == "OK"}
  152. >
  153. </el-input>
  154. </el-form-item>
  155. </div>
  156. }
  157. },
  158. ]
  159. },
  160. product() {
  161. return [{
  162. name: 'slot-component',
  163. md: 24,
  164. formItemAttributes: {
  165. label: '',
  166. 'label-width': '0px',
  167. prop: 'punishOrderProducts',
  168. errLabel: '产品信息',
  169. rules: [...required],
  170. },
  171. render: (h, { props }) => {
  172. return (
  173. <div>
  174. <zj-table
  175. columns={this.productColumns}
  176. table-data={this.formData.punishOrderProducts}
  177. />
  178. </div>
  179. )
  180. }
  181. }]
  182. },
  183. },
  184. methods: {
  185. getProductSel() {
  186. // 获取品牌
  187. getDataDictionary({ "pageNum": 1, "pageSize": -1, "params": [{ "param": "a.status", "compare": "=", "value": "ON" }, { "param": "a.dict_type", "compare": "=", "value": "BRAND" }] }).then(res => {
  188. this.orderBrands = res.data.records.map(item => ({
  189. value: item.dictCode,
  190. label: item.dictValue
  191. }))
  192. })
  193. // 获取产品大类小类
  194. getClassifyList({ type: 2, status: true }).then(res => {
  195. var classifyListLv2 = []
  196. this.classifyList = res.data.map(item => {
  197. var { children, ...data } = item
  198. classifyListLv2.push(...(children || []))
  199. return {
  200. ...data
  201. }
  202. });
  203. this.classifyListLv2 = classifyListLv2
  204. })
  205. }
  206. },
  207. }