detail.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. loading: true,
  5. isLeader: false, //是否为负责人
  6. tabsActive: 1, //tabs 选中项
  7. },
  8. onLoad(options) {
  9. getApp().globalData.handleClue = null;
  10. const appAuth = wx.getStorageSync('auth').wmarketing_activity;
  11. let tabsList = [{
  12. label: "详细信息",
  13. icon: "icon-tabxiangxixinxi1"
  14. }, {
  15. label: "活动线索",
  16. icon: "icon-tabxiansuo",
  17. model: "#Clue"
  18. }, {
  19. label: "操作",
  20. icon: "icon-tabcaozuojilu1",
  21. model: "#Record"
  22. }]
  23. console.log("appAuth", appAuth)
  24. if (appAuth.isdatafollowup) tabsList.push({
  25. label: "跟进动态",
  26. icon: "icon-tabgenjinjilu",
  27. model: "#Trace"
  28. })
  29. if (appAuth.istask) tabsList.push({
  30. label: "任务",
  31. icon: "icon-tabrenwu",
  32. model: "#Work"
  33. })
  34. this.setData({
  35. sat_campaignid: options.id,
  36. isAdmin: appAuth.options.some(v => v == "admin"), //是否具有管理权限
  37. options: appAuth.options, //权限列表
  38. tabsList,
  39. appAuth
  40. });
  41. this.getDetail();
  42. },
  43. getDetail() {
  44. _Http.basic({
  45. "classname": "webmanage.saletool.orderclue.ordercluecampaign",
  46. "method": "queryCampaignMain",
  47. "version": 1,
  48. "content": {
  49. "nocache": true,
  50. "sat_campaignid": this.data.sat_campaignid
  51. },
  52. }).then(res => {
  53. console.log("市场活动详情", res)
  54. if (res.msg != '成功') return wx.showToast({
  55. title: res.msg,
  56. icon: "none"
  57. });
  58. this.setData({
  59. loading: false,
  60. detail: res.data,
  61. briefs: [{
  62. label: "活动类型",
  63. value: res.data.type
  64. }, {
  65. label: "线索数",
  66. value: res.data.ordercluecount || '0'
  67. }, {
  68. label: "活动负责人",
  69. value: res.data.director
  70. }, {
  71. label: "状态",
  72. value: res.data.status
  73. }],
  74. list1: [{
  75. label: "市场活动名称",
  76. value: res.data.name
  77. }, {
  78. label: "活动类型",
  79. value: res.data.type
  80. }, {
  81. label: "线索数",
  82. value: res.data.ordercluecount || '0'
  83. }, {
  84. label: "活动地点",
  85. value: res.data.address
  86. }, {
  87. label: "状态",
  88. value: res.data.status
  89. }, {
  90. label: "开始时间",
  91. value: res.data.begdate
  92. }, {
  93. label: "结束时间",
  94. value: res.data.enddate
  95. }, {
  96. label: "活动负责人",
  97. value: res.data.director
  98. }, {
  99. label: "负责人",
  100. value: res.data.leader[0].name
  101. }],
  102. list2: [{
  103. label: "创建人",
  104. value: res.data.createby
  105. }, {
  106. label: "创建时间",
  107. value: res.data.createdate
  108. }, {
  109. label: "最近编辑人",
  110. value: res.data.changeby
  111. }, {
  112. label: "最近编辑时间",
  113. value: res.data.changedate
  114. }, {
  115. label: "发布人",
  116. value: res.data.changeby
  117. }, {
  118. label: "发布时间",
  119. value: res.data.followdate
  120. }, {
  121. label: "结束人",
  122. value: res.data.followdate
  123. }, {
  124. label: "转手次数",
  125. value: res.data.leader[0].leadernum
  126. }]
  127. });
  128. let appAuth = this.data.appAuth;
  129. if (appAuth.isdatatag) this.getTags();
  130. if (appAuth.isdatateam) this.getGroup();
  131. this.partialRenewal(true);
  132. this.setTabbarList()
  133. })
  134. },
  135. async setTabbarList() {
  136. let tabbarList = [],
  137. detail = this.data.detail,
  138. isLeader = detail.leader.length ? detail.leader.some(v => v.userid == wx.getStorageSync('userMsg').userid) : false,
  139. status = this.data.detail.status,
  140. editdataleader = isLeader ? 1 : 0;
  141. if (!isLeader) {
  142. let res = await getApp().agentOrNot("sat_campaign", this.data.sat_campaignid),
  143. data = res.msg == '成功' ? res.data : {
  144. editable: 0,
  145. editdataleader: 0
  146. }
  147. if (this.data.appAuth.isdatateam) isLeader = this.selectComponent("#Group").data.editable == 1;
  148. if (!isLeader) isLeader = data.editable == 1;
  149. editdataleader = data.editdataleader;
  150. }
  151. if (isLeader || this.data.isAdmin) {
  152. if (status == '新建') {
  153. tabbarList = [{
  154. icon: "icon-bianji",
  155. label: "编辑"
  156. }, {
  157. icon: "icon-dibu-chengjiao",
  158. label: "发布"
  159. }, {
  160. icon: "icon-dibu-jieshu",
  161. label: "结束"
  162. }]
  163. } else if (status == '发布') {
  164. tabbarList = [{
  165. icon: "icon-dibu-chengjiao",
  166. label: "取消发布"
  167. }, {
  168. icon: "icon-dibu-jieshu",
  169. label: "结束"
  170. }]
  171. };
  172. if ((status == '新建' || status == '结束') && isLeader) getApp().globalData.handleClue = this.isDelete.bind(this);
  173. }
  174. this.setData({
  175. tabbarList,
  176. isLeader
  177. })
  178. },
  179. /**
  180. * 是否可以删除活动
  181. * @param {number} total 数据数量
  182. */
  183. isDelete(total) {
  184. if (total == 0) this.setData({
  185. tabbarList: this.data.tabbarList.concat([{
  186. icon: "icon-guanlian-shanchu",
  187. label: "删除"
  188. }])
  189. })
  190. },
  191. //tabs 切换
  192. tabsChange({
  193. detail
  194. }) {
  195. this.setData({
  196. tabsActive: detail
  197. });
  198. this.partialRenewal();
  199. },
  200. //更新标签
  201. getTags() {
  202. this.selectComponent("#Tags").getTags();
  203. },
  204. //更新团队成员
  205. getGroup() {
  206. this.selectComponent("#Group").getList().then(this.setTabbarList)
  207. },
  208. //局部数据更新 tabs
  209. partialRenewal(init = false) {
  210. let model = this.data.tabsList[this.data.tabsActive].model;
  211. if (model) {
  212. let Component = this.selectComponent(model),
  213. {
  214. total,
  215. pageNumber,
  216. pageTotal
  217. } = Component.data.content,
  218. id = this.data.detail.sat_campaignid;
  219. if (total == null || init) {
  220. Component.getList(id, init);
  221. } else if (pageNumber <= pageTotal) {
  222. Component.getList(id, false);
  223. }
  224. }
  225. },
  226. onReachBottom() {
  227. this.partialRenewal();
  228. },
  229. //详情按钮回调
  230. tabbarOnClick({
  231. detail
  232. }) {
  233. let data = this.data.detail;
  234. switch (detail.label) {
  235. case "编辑":
  236. wx.navigateTo({
  237. url: `/packageA/activity/addActivity?rowData=${JSON.stringify(this.data.detail)}`,
  238. })
  239. break;
  240. case "发布":
  241. wx.showModal({
  242. title: '提示',
  243. content: `是否确认发布该市场活动?`,
  244. complete: ({
  245. confirm
  246. }) => {
  247. if (confirm) _Http.basic({
  248. "classname": "webmanage.saletool.orderclue.ordercluecampaign",
  249. method: 'release',
  250. "content": {
  251. "sat_campaignids": [this.data.detail.sat_campaignid]
  252. }
  253. }).then(res => {
  254. wx.showToast({
  255. title: res.msg == '成功' ? `已发布该活动` : res.msg,
  256. icon: "none"
  257. });
  258. if (res.msg == '成功') this.getDetail()
  259. })
  260. }
  261. })
  262. break;
  263. case "结束":
  264. wx.showModal({
  265. title: '提示',
  266. content: `是否确认结束该市场活动?`,
  267. complete: ({
  268. confirm
  269. }) => {
  270. if (confirm) _Http.basic({
  271. "classname": "webmanage.saletool.orderclue.ordercluecampaign",
  272. method: 'endcampaign',
  273. "content": {
  274. "sat_campaignids": [this.data.detail.sat_campaignid]
  275. }
  276. }).then(res => {
  277. wx.showToast({
  278. title: res.msg == '成功' ? `已结束该活动` : res.msg,
  279. icon: "none"
  280. });
  281. if (res.msg == '成功') {
  282. this.getDetail()
  283. }
  284. })
  285. }
  286. })
  287. break;
  288. case "取消发布":
  289. wx.showModal({
  290. title: '提示',
  291. content: `是否确认取消发布该市场活动?`,
  292. complete: ({
  293. confirm
  294. }) => {
  295. if (confirm) _Http.basic({
  296. "classname": "webmanage.saletool.orderclue.ordercluecampaign",
  297. method: "undercarriage",
  298. "content": {
  299. "sat_campaignids": [this.data.detail.sat_campaignid]
  300. }
  301. }).then(res => {
  302. wx.showToast({
  303. title: res.msg == '成功' ? `已取消该活动` : res.msg,
  304. icon: "none"
  305. });
  306. if (res.msg == '成功') this.getDetail()
  307. })
  308. }
  309. })
  310. break;
  311. case "删除":
  312. wx.showModal({
  313. title: '提示',
  314. content: `是否确认删除该市场活动?`,
  315. complete: ({
  316. confirm
  317. }) => {
  318. if (confirm) _Http.basic({
  319. id: "20230329163504",
  320. "content": {
  321. "sat_campaignid": this.data.detail.sat_campaignid
  322. }
  323. }).then(res => {
  324. wx.showToast({
  325. title: res.msg == '成功' ? `成功删除活动` : res.msg,
  326. icon: "none"
  327. });
  328. if (res.msg == '成功') setTimeout(() => {
  329. wx.navigateBack()
  330. }, 300)
  331. })
  332. }
  333. })
  334. break;
  335. }
  336. },
  337. onUnload() {
  338. const page = getCurrentPages().find(v => v.__route__ == 'packageA/activity/index');
  339. if (!page) return;
  340. let content = JSON.parse(JSON.stringify(page.data.content));
  341. content.pageSize = (content.pageNumber - 1) * content.pageSize;
  342. content.pageNumber = 1;
  343. _Http.basic({
  344. id: '20221101095102',
  345. content
  346. }).then(res => {
  347. console.log("更新市场活动列表", res);
  348. if (res.msg == '成功') page.setData({
  349. list: res.data,
  350. "content.total": res.total
  351. })
  352. })
  353. }
  354. })