advertForm.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <a-spin :spinning="confirmLoading">
  3. <j-form-container :disabled="formDisabled">
  4. <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
  5. <a-row>
  6. <a-col :span="24">
  7. <a-form-model-item label="标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="title">
  8. <a-input v-model="model.title" placeholder="请输入标题" ></a-input>
  9. </a-form-model-item>
  10. </a-col>
  11. <a-col :span="24">
  12. <a-form-model-item label="投放位置" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type">
  13. <!-- <a-input-number v-model="model.type" placeholder="请输入投放类型" style="width: 100%" />-->
  14. <!-- <a-select placeholder="请选择投放位置" v-model="model.type">-->
  15. <!-- <a-select-option :value="1">小程序首页</a-select-option>-->
  16. <!-- <a-select-option :value="2">后台登录</a-select-option>-->
  17. <!-- <a-select-option :value="3">商城首页</a-select-option>-->
  18. <!-- </a-select>-->
  19. <j-dict-select-tag v-model="model.type" placeholder="请选择投放位置" dictCode="advert_site"/>
  20. </a-form-model-item>
  21. </a-col>
  22. <a-col :span="24">
  23. <!-- <a-form-model-item label="广告图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="logo">-->
  24. <!-- <a-input v-model="model.logo" placeholder="请输入广告图片" ></a-input>-->
  25. <!-- </a-form-model-item>-->
  26. <!-- <a-form-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="logo">-->
  27. <!-- <j-image-upload class="avatar-uploader" text="上传"-->
  28. <!-- v-decorator="['logo', { rules: [{ required: true, message: '请上传图片!' }] }]"></j-image-upload>-->
  29. <!-- </a-form-item>-->
  30. <a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="logo">
  31. <j-image-upload text="上传" v-model="model.logo"></j-image-upload>
  32. </a-form-model-item>
  33. </a-col>
  34. <a-col :span="24">
  35. <a-form-model-item label="链接" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="src">
  36. <a-input v-model="model.src" placeholder="请输入链接" ></a-input>
  37. </a-form-model-item>
  38. </a-col>
  39. <a-col :span="24">
  40. <a-form-model-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderBy">
  41. <a-input-number v-model="model.orderBy" placeholder="请输入排序" style="width: 100%" />
  42. </a-form-model-item>
  43. </a-col>
  44. </a-row>
  45. </a-form-model>
  46. </j-form-container>
  47. </a-spin>
  48. </template>
  49. <script>
  50. import { httpAction, getAction } from '@/api/manage'
  51. import { validateDuplicateValue } from '@/utils/util'
  52. export default {
  53. name: 'advertForm',
  54. components: {
  55. },
  56. props: {
  57. //表单禁用
  58. disabled: {
  59. type: Boolean,
  60. default: false,
  61. required: false
  62. }
  63. },
  64. data () {
  65. return {
  66. model:{
  67. },
  68. labelCol: {
  69. xs: { span: 24 },
  70. sm: { span: 5 },
  71. },
  72. wrapperCol: {
  73. xs: { span: 24 },
  74. sm: { span: 16 },
  75. },
  76. confirmLoading: false,
  77. validatorRules: {
  78. title: [
  79. { required: true, message: '请输入广告标题!'},
  80. ],
  81. logo: [
  82. { required: true, message: '请上传图片!'},
  83. ],
  84. src: [
  85. { required: true, message: '请输入链接地址!'},
  86. ],
  87. orderBy: [
  88. { required: true, message: '请输入序号!'},
  89. ],
  90. },
  91. url: {
  92. add: "/business/busAdvert/add",
  93. edit: "/business/busAdvert/edit",
  94. queryById: "/business/busAdvert/queryById"
  95. }
  96. }
  97. },
  98. computed: {
  99. formDisabled(){
  100. return this.disabled
  101. },
  102. },
  103. created () {
  104. //备份model原始值
  105. this.modelDefault = JSON.parse(JSON.stringify(this.model));
  106. },
  107. methods: {
  108. add () {
  109. this.edit(this.modelDefault);
  110. },
  111. edit (record) {
  112. this.model = Object.assign({}, record);
  113. this.visible = true;
  114. },
  115. submitForm () {
  116. const that = this;
  117. // 触发表单验证
  118. this.$refs.form.validate(valid => {
  119. if (valid) {
  120. that.confirmLoading = true;
  121. let httpurl = '';
  122. let method = '';
  123. if(!this.model.id){
  124. httpurl+=this.url.add;
  125. var info = JSON.parse(localStorage.getItem("storeInfo"));
  126. this.model.hotelId = info.id;
  127. method = 'post';
  128. }else{
  129. httpurl+=this.url.edit;
  130. method = 'put';
  131. }
  132. if(this.model.type === ''){
  133. this.model.type = null
  134. }
  135. httpAction(httpurl,this.model,method).then((res)=>{
  136. if(res.success){
  137. that.$message.success(res.message);
  138. that.$emit('ok');
  139. }else{
  140. that.$message.warning(res.message);
  141. }
  142. }).finally(() => {
  143. that.confirmLoading = false;
  144. })
  145. }
  146. })
  147. },
  148. }
  149. }
  150. </script>