推广小程序后台代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
11 KiB

4 months ago
5 months ago
  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="enTitle">
  13. <a-input v-model="model.enTitle" placeholder="请输入英文-活动标题" ></a-input>
  14. </a-form-model-item>
  15. </a-col>
  16. <a-col :span="24">
  17. <a-form-model-item label="活动类型" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="type">
  18. <j-dict-select-tag type="list" v-model="model.type" dictCode="no_type" placeholder="请选择活动类型" />
  19. </a-form-model-item>
  20. </a-col>
  21. <a-col :span="24">
  22. <a-form-model-item label="活动封面" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="image">
  23. <j-image-upload isMultiple v-model="model.image" ></j-image-upload>
  24. </a-form-model-item>
  25. </a-col>
  26. <a-col :span="24">
  27. <a-form-model-item label="活动时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="startTime">
  28. <j-date placeholder="请选择活动时间" v-model="model.startTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
  29. </a-form-model-item>
  30. </a-col>
  31. <a-col :span="24">
  32. <a-form-model-item label="中文-活动地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="address">
  33. <a-input v-model="model.address" placeholder="请输入中文-活动地址" ></a-input>
  34. </a-form-model-item>
  35. </a-col>
  36. <a-col :span="24">
  37. <a-form-model-item label="英文-活动地址" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enAddress">
  38. <a-input v-model="model.enAddress" placeholder="请输入英文-活动地址" ></a-input>
  39. </a-form-model-item>
  40. </a-col>
  41. <a-col :span="24">
  42. <a-form-model-item label="活动人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sum">
  43. <a-input-number v-model="model.sum" placeholder="请输入活动人数" style="width: 100%" />
  44. </a-form-model-item>
  45. </a-col>
  46. <a-col :span="24">
  47. <a-form-model-item label="报名人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="num">
  48. <a-input-number v-model="model.num" placeholder="请输入报名人数" style="width: 100%" disabled/>
  49. </a-form-model-item>
  50. </a-col>
  51. <a-col :span="24">
  52. <a-form-model-item label="报名费用" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="price">
  53. <a-input-number v-model="model.price" placeholder="请输入报名费用" style="width: 100%" />
  54. </a-form-model-item>
  55. </a-col>
  56. <a-col :span="24">
  57. <a-form-model-item label="主理人" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="adminUser">
  58. <j-search-select-tag v-model="model.adminUser" dict="han_hai_member,nick_name,id" />
  59. </a-form-model-item>
  60. </a-col>
  61. <!-- <a-col :span="24">-->
  62. <!-- <a-form-model-item label="签到人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="openNum">-->
  63. <!-- <a-input-number v-model="model.openNum" placeholder="请输入签到人数" style="width: 100%" />-->
  64. <!-- </a-form-model-item>-->
  65. <!-- </a-col>-->
  66. <a-col :span="24">
  67. <a-form-model-item label="签到人数" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="doNum">
  68. <a-input-number v-model="model.doNum" placeholder="请输入签到人数" style="width: 100%" disabled/>
  69. </a-form-model-item>
  70. </a-col>
  71. <a-col :span="24">
  72. <a-form-model-item label="是否上架" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isOpen">
  73. <j-switch v-model="model.isOpen" ></j-switch>
  74. </a-form-model-item>
  75. </a-col>
  76. <a-col :span="24">
  77. <a-form-model-item label="活动状态" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="state">
  78. <j-dict-select-tag type="list" v-model="model.state" dictCode="no_state" placeholder="请选择活动状态" />
  79. </a-form-model-item>
  80. </a-col>
  81. <a-col :span="24">
  82. <a-form-model-item label="活动详情" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="details">
  83. <j-editor v-model="model.details" />
  84. </a-form-model-item>
  85. </a-col>
  86. <a-col :span="24">
  87. <a-form-model-item label="英文-活动详情" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enDetails">
  88. <j-editor v-model="model.enDetails" />
  89. </a-form-model-item>
  90. </a-col>
  91. <a-col :span="24">
  92. <a-form-model-item label="中文-注意事项" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="precautions">
  93. <j-editor v-model="model.precautions" />
  94. </a-form-model-item>
  95. </a-col>
  96. <a-col :span="24">
  97. <a-form-model-item label="英文-注意事项" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enPrecautions">
  98. <j-editor v-model="model.enPrecautions" />
  99. </a-form-model-item>
  100. </a-col>
  101. <a-col :span="24">
  102. <a-form-model-item label="早鸟票" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="birdPrice">
  103. <a-input-number v-model="model.birdPrice" placeholder="请输入早鸟票" style="width: 100%" />
  104. </a-form-model-item>
  105. </a-col>
  106. <a-col :span="24">
  107. <a-form-model-item label="单人票" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="personPrice">
  108. <a-input-number v-model="model.personPrice" placeholder="请输入单人票" style="width: 100%" />
  109. </a-form-model-item>
  110. </a-col>
  111. <a-col :span="24">
  112. <a-form-model-item label="尊享票" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="expensivePrice">
  113. <a-input-number v-model="model.expensivePrice" placeholder="请输入尊享票" style="width: 100%" />
  114. </a-form-model-item>
  115. </a-col>
  116. <a-col :span="24">
  117. <a-form-model-item label="经度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="longitude">
  118. <a-input v-model="model.longitude" placeholder="请输入经度" disabled ></a-input>
  119. </a-form-model-item>
  120. </a-col>
  121. <a-col :span="24">
  122. <a-form-model-item label="纬度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="latitude">
  123. <a-input v-model="model.latitude" placeholder="请输入纬度" disabled ></a-input>
  124. </a-form-model-item>
  125. </a-col>
  126. <a-col :span="24">
  127. <a-form-model-item label="地图选择位置" :labelCol="labelCol" :wrapperCol="wrapperCol">
  128. <TencentMapPicker
  129. :latitude="model.latitude"
  130. :longitude="model.longitude"
  131. @onLocationSelected="handleLocationSelected"
  132. />
  133. </a-form-model-item>
  134. </a-col>
  135. <a-col :span="24">
  136. <a-form-model-item label="活动需知" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="orderDetails">
  137. <j-editor v-model="model.orderDetails" />
  138. </a-form-model-item>
  139. </a-col>
  140. <a-col :span="24">
  141. <a-form-model-item label="活动城市" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cityId">
  142. <j-search-select-tag v-model="model.cityId" dict="popularize_city,city,id" />
  143. </a-form-model-item>
  144. </a-col>
  145. </a-row>
  146. </a-form-model>
  147. </j-form-container>
  148. </a-spin>
  149. </template>
  150. <script>
  151. import { httpAction, getAction } from '@/api/manage'
  152. import { validateDuplicateValue } from '@/utils/util'
  153. import TencentMapPicker from './TencentMapPicker.vue';
  154. export default {
  155. name: 'PopularizeActivityForm',
  156. components: {
  157. TencentMapPicker
  158. },
  159. props: {
  160. //表单禁用
  161. disabled: {
  162. type: Boolean,
  163. default: false,
  164. required: false
  165. }
  166. },
  167. data () {
  168. return {
  169. model:{
  170. },
  171. labelCol: {
  172. xs: { span: 24 },
  173. sm: { span: 5 },
  174. },
  175. wrapperCol: {
  176. xs: { span: 24 },
  177. sm: { span: 16 },
  178. },
  179. confirmLoading: false,
  180. validatorRules: {
  181. adminUser: [
  182. { required: true, message: '请输入主理人!'},
  183. ],
  184. },
  185. url: {
  186. add: "/popularizeActivity/popularizeActivity/add",
  187. edit: "/popularizeActivity/popularizeActivity/edit",
  188. queryById: "/popularizeActivity/popularizeActivity/queryById"
  189. }
  190. }
  191. },
  192. computed: {
  193. formDisabled(){
  194. return this.disabled
  195. },
  196. },
  197. created () {
  198. //备份model原始值
  199. this.modelDefault = JSON.parse(JSON.stringify(this.model));
  200. },
  201. methods: {
  202. handleLocationSelected({latitude, longitude}) {
  203. console.log('event11',latitude, longitude)
  204. this.model.latitude = latitude;
  205. this.model.longitude = longitude;
  206. },
  207. add () {
  208. this.edit(this.modelDefault);
  209. },
  210. edit (record) {
  211. this.model = Object.assign({}, record);
  212. this.visible = true;
  213. },
  214. submitForm () {
  215. const that = this;
  216. // 触发表单验证
  217. this.$refs.form.validate(valid => {
  218. if (valid) {
  219. that.confirmLoading = true;
  220. let httpurl = '';
  221. let method = '';
  222. if(!this.model.id){
  223. httpurl+=this.url.add;
  224. method = 'post';
  225. }else{
  226. httpurl+=this.url.edit;
  227. method = 'put';
  228. }
  229. httpAction(httpurl,this.model,method).then((res)=>{
  230. if(res.success){
  231. that.$message.success(res.message);
  232. that.$emit('ok');
  233. }else{
  234. that.$message.warning(res.message);
  235. }
  236. }).finally(() => {
  237. that.confirmLoading = false;
  238. })
  239. }
  240. })
  241. },
  242. }
  243. }
  244. </script>