addCompanyCaseForm.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. <template>
  2. <a-modal
  3. title="新增公司案例"
  4. :width="900"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. ok-text="保存"
  8. cancel-text="关闭"
  9. @ok="handleSubmit"
  10. @cancel="handleCancel"
  11. :maskClosable="false"
  12. >
  13. <a-spin :spinning="formLoading">
  14. <a-form :form="form">
  15. <a-form-item label="标题名称" :labelCol="labelCol" :wrapperCol="wrapperCol" has-feedback>
  16. <a-input
  17. placeholder="请输入标题名称"
  18. v-decorator="['companyName', {rules: [{required: true, message: '请输入标题名称!'}]}]"
  19. />
  20. </a-form-item>
  21. <a-form-item
  22. label="描述"
  23. :labelCol="labelCol"
  24. :wrapperCol="wrapperCol"
  25. has-feedback
  26. >
  27. <a-textarea :rows="4" :maxLength="30" placeholder="请输入描述" v-decorator="['companyDescribe']">
  28. <div slot="suffix">ddd</div>
  29. </a-textarea>
  30. </a-form-item>
  31. <a-form-item
  32. :required="true"
  33. label="关联案例"
  34. :labelCol="labelCol"
  35. :wrapperCol="wrapperCol"
  36. has-feedback
  37. >
  38. <a-select
  39. style="width: 100%"
  40. placeholder="请选择产品"
  41. v-decorator="['companyAssociatedCase', {rules: [{ required: true, message: '请选择产品!' }]}]"
  42. >
  43. <a-select-option
  44. v-for="(item,index) in actionClassData"
  45. :key="index"
  46. :value="item"
  47. >{{ item }}</a-select-option>
  48. </a-select>
  49. </a-form-item>
  50. <a-form-item
  51. label="默认图片"
  52. :labelCol="labelCol"
  53. :wrapperCol="wrapperCol"
  54. has-feedback
  55. :required="true"
  56. >
  57. <div>
  58. <upload-component
  59. ref="upLoadDefaultRef"
  60. :remarkTxt="remarkTxt"
  61. @uploadSuccess="uploadSuccessDefault"
  62. v-decorator="[
  63. 'companyDefaultImg',
  64. {
  65. trigger: 'change',
  66. rules: [{ validator: checkimageUrl }]
  67. },
  68. ]"
  69. ></upload-component>
  70. </div>
  71. </a-form-item>
  72. <a-form-item
  73. label="交互图像"
  74. :labelCol="labelCol"
  75. :wrapperCol="wrapperCol"
  76. has-feedback
  77. :required="true"
  78. >
  79. <div>
  80. <upload-component
  81. ref="upLoadExchangeRef"
  82. :remarkTxt="remarkTxt"
  83. @uploadSuccess="uploadSuccessExchange"
  84. v-decorator="[
  85. 'companyExchangeImg',
  86. {
  87. trigger: 'change',
  88. rules: [{ validator: checkimageUrl }]
  89. },
  90. ]"
  91. ></upload-component>
  92. </div>
  93. </a-form-item>
  94. <a-form-item
  95. :labelCol="labelCol"
  96. :wrapperCol="wrapperCol"
  97. label="排序"
  98. :hasFeedback="true"
  99. :required="true"
  100. >
  101. <a-input
  102. placeholder="请输入排序号"
  103. v-decorator="['companySort', {rules: [{validator: checkSortIndex}]}]"
  104. />
  105. </a-form-item>
  106. <a-form-item label="是否上线" :labelCol="labelCol" :wrapperCol="wrapperCol" :required="true">
  107. <a-radio-group name="companyIsLine" v-decorator="['companyIsLine',{ initialValue: 1 }]">
  108. <a-radio :value="1">上线</a-radio>
  109. <a-radio :value="0">下线</a-radio>
  110. </a-radio-group>
  111. </a-form-item>
  112. </a-form>
  113. </a-spin>
  114. </a-modal>
  115. </template>
  116. <script>
  117. import homeApi from '@/api/homeApi'
  118. import uploadComponent from '@/components/upLoad'
  119. export default {
  120. components: { uploadComponent },
  121. data () {
  122. return {
  123. labelCol: {
  124. xs: { span: 24 },
  125. sm: { span: 5 }
  126. },
  127. wrapperCol: {
  128. xs: { span: 24 },
  129. sm: { span: 15 }
  130. },
  131. visible: false,
  132. confirmLoading: false,
  133. actionClassData: [],
  134. bannerType: 3,
  135. formLoading: false,
  136. form: this.$form.createForm(this),
  137. remarkTxt: '请上传320×400规格图像'
  138. }
  139. },
  140. mounted () {
  141. },
  142. methods: {
  143. // 初始化方法
  144. add (record) {
  145. this.visible = true
  146. // this.formLoading = true
  147. // this.getActionClass()
  148. },
  149. /**
  150. * 获取选择器下拉框数据
  151. */
  152. getActionClass () {
  153. homeApi.findArticleContentById().then(res => {
  154. this.formLoading = false
  155. if (res.success) {
  156. this.actionClassData = res.data
  157. } else {
  158. this.$message.error('获取选择器下拉框数据')
  159. }
  160. })
  161. },
  162. handleSubmit () {
  163. const {
  164. form: { validateFields }
  165. } = this
  166. this.confirmLoading = true
  167. validateFields((errors, values) => {
  168. if (!errors) {
  169. values.companySort = parseInt(values.companySort)
  170. values.companyDefaultImg = 'group1/M00/00/4C/rBoAbl-iDrOAdZTxAAk_Z73wLB8030.jpg'
  171. values.companyExchangeImg = 'group1/M00/00/4C/rBoAbl-iDrOAdZTxAAk_Z73wLB8030.jpg'
  172. homeApi.addCompanyCase(values)
  173. .then(res => {
  174. if (res.status === 200) {
  175. this.$message.success('新增成功')
  176. this.visible = false
  177. this.confirmLoading = false
  178. this.$emit('ok', values)
  179. this.form.resetFields()
  180. } else {
  181. this.$message.error('新增失败:' + res.message)
  182. }
  183. })
  184. .finally(res => {
  185. this.confirmLoading = false
  186. })
  187. } else {
  188. this.confirmLoading = false
  189. }
  190. })
  191. },
  192. handleCancel () {
  193. this.form.resetFields()
  194. this.visible = false
  195. },
  196. uploadSuccessDefault (avg) {
  197. if (avg.fileList[0]) {
  198. this.form.setFieldsValue({ 'companyDefaultImg': avg.fileList[0].name })
  199. this.form.resetFields('companyDefaultImg')
  200. }
  201. },
  202. uploadSuccessExchange (avg) {
  203. if (avg.fileList[0]) {
  204. this.form.setFieldsValue({ 'companyExchangeImg': avg.fileList[0].name })
  205. this.form.resetFields('companyExchangeImg')
  206. }
  207. },
  208. checkimageUrl (rule, value, callback) {
  209. callback()
  210. // return false
  211. // if (value && value.length > 0) {
  212. // callback()
  213. // return
  214. // }
  215. // var text = '请上传图片'
  216. // callback(text)
  217. },
  218. checkSortIndex (rule, value, callback) {
  219. var text = '请输入排序号!'
  220. if (!value) {
  221. callback(text)
  222. } else if (/(^[1-9]\d*$)/.test(value)) {
  223. callback()
  224. } else {
  225. text = '请输入数字'
  226. callback(text)
  227. }
  228. }
  229. }
  230. }
  231. </script>