activity.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. /*******************************************************************************
  2. * Copyright(c) 2022 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:活动(用于续费、注册)
  5. * 编辑履历:
  6. * 作者 日期 版本 修改内容
  7. * 周兴 2024-5-15 1.00 新建
  8. *******************************************************************************/
  9. const Constants = require('@/utils/Constants.js');
  10. const util = require('@/utils/util.js')
  11. const mixins = require('@/mixins/index.js');
  12. const app = getApp()
  13. Page({
  14. mixins: [mixins],
  15. /**
  16. * 页面的初始数据
  17. */
  18. data: {
  19. // 企业名称
  20. companyName: null,
  21. staffName: null,
  22. staffPhone: null,
  23. webMaxNum: null,
  24. wxMaxNum: null,
  25. cpEndDate: null,
  26. activityTable: null,
  27. readFlag: false,
  28. staffCount: {
  29. maxNum: 1,
  30. webMaxNum: 0,
  31. wxMaxNum: 0
  32. },
  33. curentAdItem: null,
  34. summaryInfo: {},
  35. routeObjName: 'company',
  36. pageFlag: false,
  37. //按钮
  38. buttonSaveList: [
  39. { code: 'save', title: mixins.$t('save'), width: '120rpx' }
  40. ],
  41. noticeInfo: {
  42. title: '注册须知:',
  43. cpName: '用于登录系统时显示公司信息。',
  44. contact: '负责人和联系电话:用于开通系统电话确认核实信息。',
  45. cpSize: '公司规模及门店规模:用于开通系统配置基础档案。'
  46. }
  47. },
  48. /**
  49. * @desc : 选择活动明细
  50. * @author : 周兴
  51. * @date : 2024/4/1
  52. */
  53. chooseAdItem(e) {
  54. let item = e.currentTarget.dataset.item;
  55. let summaryInfo = this.data.summaryInfo
  56. // 计算截止日期
  57. let months = item.validLong + item.extraLong
  58. let endDate = app.globalData.company.endDate
  59. endDate = new Date(endDate).addMonths(months)
  60. summaryInfo.endDate = endDate.toDateStr();
  61. this.setData({
  62. curentAdItem: item,
  63. summaryInfo: summaryInfo
  64. })
  65. // 计算金额
  66. this.countSummaryAmount(item);
  67. },
  68. /**
  69. * @desc : 勾选已阅读表示
  70. * @author : 周兴
  71. * @date : 2024/5/17
  72. */
  73. handleChangeCheckbox(e) {
  74. console.log('ee', e);
  75. this.setData({
  76. readFlag: e.detail
  77. })
  78. },
  79. /**
  80. * @desc : 计算金额
  81. * @author : 周兴
  82. * @date : 2024/4/1
  83. */
  84. countSummaryAmount() {
  85. let item = this.data.curentAdItem;
  86. let staffCount = this.data.staffCount;
  87. let summaryInfo = this.data.summaryInfo
  88. let amount = 0;
  89. // 先清空
  90. summaryInfo.amountInfo = '';
  91. // 共通用户
  92. if (staffCount.maxNum) {
  93. summaryInfo.amountInfo = item.stdPrice + '(打包价格)*' + staffCount.maxNum
  94. amount += item.stdPrice * staffCount.maxNum
  95. }
  96. // 手机端用户
  97. if (staffCount.wxMaxNum) {
  98. if (summaryInfo.amountInfo) {
  99. summaryInfo.amountInfo += ' + '
  100. }
  101. summaryInfo.amountInfo += item.wxPrice + '(手机端价格)*' + staffCount.wxMaxNum
  102. amount += item.wxPrice * staffCount.wxMaxNum
  103. }
  104. // 电脑端用户
  105. if (staffCount.webMaxNum) {
  106. if (summaryInfo.amountInfo) {
  107. summaryInfo.amountInfo += ' + '
  108. }
  109. summaryInfo.amountInfo += item.webPrice + '(电脑端价格)*' + staffCount.webMaxNum
  110. amount += item.webPrice * staffCount.webMaxNum
  111. }
  112. if (summaryInfo.amountInfo) {
  113. summaryInfo.amountInfo += ' = ' + amount + '(元)'
  114. summaryInfo.amount = amount;
  115. }
  116. this.setData({
  117. summaryInfo: summaryInfo
  118. })
  119. // 统计两端用户数
  120. this.countStaffInfo();
  121. },
  122. /**
  123. * @desc : 统计电脑端和手机端的用户数
  124. * @author : 周兴
  125. * @date : 2024/4/1
  126. */
  127. countStaffInfo() {
  128. let summaryInfo = this.data.summaryInfo;
  129. let staffCount = this.data.staffCount;
  130. if (!staffCount) {
  131. return;
  132. }
  133. let webNum = staffCount.webMaxNum + staffCount.maxNum
  134. let wxNum = staffCount.wxMaxNum + staffCount.maxNum
  135. summaryInfo.staffInfo = '可配置手机端授权' + wxNum + '个;电脑端授权' + webNum + '个(包含当前用户)'
  136. summaryInfo.webMaxNum = webNum
  137. summaryInfo.wxMaxNum = wxNum
  138. summaryInfo.buyBeginDate = new Date(this.data.cpEndDate).addDays(1).toDateStr();
  139. summaryInfo.extendDays = new Date(summaryInfo.endDate).dayDiff(new Date(this.data.cpEndDate).addDays(1));
  140. // 计算一授权一天的单价
  141. let price = (summaryInfo.amount / (webNum + wxNum) / summaryInfo.extendDays).toFixed(2);
  142. summaryInfo.priceInfo = price
  143. this.setData({
  144. summaryInfo: summaryInfo
  145. })
  146. },
  147. /**
  148. * @desc : 修改用户数
  149. * @author : 周兴
  150. * @date : 2024/4/1
  151. */
  152. changeStaffCount(e) {
  153. let staffCount = this.data.staffCount
  154. let ds = e.currentTarget.dataset
  155. if (ds.type == 'wx') {
  156. staffCount.wxMaxNum = e.detail
  157. } else if (ds.type == 'web') {
  158. staffCount.webMaxNum = e.detail
  159. } else {
  160. staffCount.maxNum = e.detail
  161. }
  162. this.setData({
  163. staffCount: staffCount
  164. })
  165. // 计算金额
  166. this.countSummaryAmount();
  167. },
  168. /**
  169. * @desc : 保存
  170. * @author : 周兴
  171. * @date : 2024/4/1
  172. */
  173. handleSave() {
  174. let summaryInfo = this.data.summaryInfo
  175. let staffInfo = [{ wxMaxNum: this.data.wxMaxNum, webMaxNum: this.data.webMaxNum, title: '当前授权', wxTitle: '手机授权', webTitle: '电脑授权' },{wxMaxNum: summaryInfo.wxMaxNum, webMaxNum: summaryInfo.webMaxNum, title: '续费授权', wxTitle: '手机授权', webTitle: '电脑授权'}]
  176. this.save({ saveFlag: false, url: '/package-basic-data/pages/activity/detail/detail?staffInfo=' + JSON.stringify(staffInfo) });
  177. },
  178. /**
  179. * @desc : 校验
  180. * @author : 周兴
  181. * @date : 2024/4/1
  182. */
  183. validData() {
  184. if (!this.data.readFlag) {
  185. util.showToast('请勾选阅读须知');
  186. return false;
  187. }
  188. let curentAdItem = this.data.curentAdItem;
  189. if (!curentAdItem) {
  190. util.showToast('未选择活动');
  191. return false
  192. }
  193. return true;
  194. },
  195. /**
  196. * @desc : 设置保存参数
  197. * @author : 周兴
  198. * @date : 2024/4/1
  199. */
  200. setParams(params) {
  201. let summaryInfo = this.data.summaryInfo
  202. let curentAdItem = this.data.curentAdItem
  203. let cpEndDate = this.data.cpEndDate
  204. if (!summaryInfo || !cpEndDate) return;
  205. params.webMaxNum = summaryInfo.webMaxNum
  206. params.wxMaxNum = summaryInfo.wxMaxNum
  207. params.endDate = summaryInfo.endDate
  208. params.gradeCode = app.globalData.company.gradeCode
  209. params.cpId = app.globalData.company.cpId
  210. params.tradeNo = this.generateRandomNo();
  211. params.wxUserId = app.globalData.user.userId
  212. params.tradeAmount = summaryInfo.amount
  213. console.log('cpEndDate', cpEndDate);
  214. params.buyBeginDate = summaryInfo.buyBeginDate;
  215. params.buyEndDate = summaryInfo.endDate
  216. params.extendDays = summaryInfo.extendDays;
  217. params.buyLong = curentAdItem.activityItemName
  218. return params;
  219. },
  220. /**
  221. * @desc : 保存数据
  222. * @author : 周兴
  223. * @date : 2024/5/17
  224. */
  225. saveData(params) {
  226. return this.excute(this.data.service, this.data.service.reNewCompany, this.data.params).then(res => {
  227. if (res.data.code == Constants.SUCESS_CODE) {
  228. // 成功后跳转支付
  229. this.toPay(res.data.data);
  230. }
  231. })
  232. },
  233. /**
  234. * @desc : 查询活动
  235. * @author : 周兴
  236. * @date : 2024/4/1
  237. */
  238. getActivity() {
  239. let params = {
  240. appCode: Constants.APP_CODE,
  241. activityTypeList: [Constants.kindCode.activityGrade, Constants.kindCode.activityMenu],
  242. gradeCode: app.globalData.company.gradeCode
  243. }
  244. let service = app.globalData['activityService']
  245. this.excute(service, service.selectActivityItems, params).then(res => {
  246. if (res.data.code == Constants.SUCESS_CODE) {
  247. if (res.data && res.data.data) {
  248. let activityTable = res.data.data;
  249. this.setData({
  250. activityTable: activityTable
  251. })
  252. }
  253. }
  254. });
  255. },
  256. /**
  257. * 生命周期函数--监听页面加载
  258. */
  259. onLoad(options) {
  260. this.setData({
  261. companyName: app.globalData.company.cpName,
  262. staffName: app.globalData.user.staffName,
  263. cpEndDate: app.globalData.company.endDate,
  264. webMaxNum: app.globalData.company.webMaxNum,
  265. wxMaxNum: app.globalData.company.wxMaxNum,
  266. })
  267. // 获取活动
  268. this.getActivity();
  269. },
  270. })