insert.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. let _Http = getApp().globalData.http,
  2. getTime = require("../../utils/getTime");
  3. Page({
  4. data: {
  5. loading: false,
  6. showAll: false,
  7. content: {
  8. sat_campaignid: 0
  9. },
  10. disabled: true,
  11. otheramount: 0,
  12. otheramount1: '0.00',
  13. trainingCost: '0.00',
  14. allCost: '0.00',
  15. list: []
  16. },
  17. onLoad(options) {
  18. let form = [{
  19. label: "活动名称",
  20. error: false,
  21. errMsg: "",
  22. type: "textarea",
  23. value: "",
  24. placeholder: "活动名称",
  25. valueName: "name",
  26. checking: "base",
  27. required: true
  28. }, {
  29. label: "活动类型",
  30. error: false,
  31. errMsg: "",
  32. type: "option",
  33. optionNmae: "campaigntype",
  34. optionType: "radio", //复选 radio 单选
  35. value: "",
  36. placeholder: "活动类型",
  37. valueName: "type",
  38. checking: "base",
  39. required: true
  40. }, {
  41. label: "承办医院",
  42. error: false,
  43. errMsg: "",
  44. type: "route",
  45. url: "/prsx/select/hospital/index",
  46. value: "",
  47. placeholder: "承办医院",
  48. valueName: "sa_customersid",
  49. checking: "base",
  50. required: true,
  51. params: {
  52. "content": {
  53. "pageNumber": 1,
  54. "pageSize": 20,
  55. "where": {
  56. "condition": ""
  57. }
  58. },
  59. "id": 2025102814083902,
  60. },
  61. query: "&radio=true",
  62. required: false,
  63. interrupt: true
  64. }, {
  65. label: "科室",
  66. error: false,
  67. errMsg: "",
  68. type: "route",
  69. url: "/prsx/select/department/index",
  70. value: "",
  71. placeholder: "请先选择承办医院",
  72. valueName: "sa_hospitaldepid",
  73. checking: "base",
  74. disabled: true,
  75. params: {
  76. "content": {
  77. "pageNumber": 1,
  78. "pageSize": 20,
  79. "where": {
  80. "condition": ""
  81. }
  82. },
  83. "id": 2025102310143002,
  84. },
  85. query: "&radio=true",
  86. required: false
  87. }, {
  88. label: "开始日期",
  89. error: false,
  90. errMsg: "",
  91. type: "date",
  92. start: '',
  93. value: '',
  94. placeholder: "开始日期",
  95. valueName: "begdate",
  96. checking: "base",
  97. required: true,
  98. interrupt: true
  99. }, {
  100. label: "结束日期",
  101. error: false,
  102. errMsg: "",
  103. type: "date",
  104. start: '',
  105. value: "",
  106. placeholder: "结束时间",
  107. valueName: "enddate",
  108. checking: "base",
  109. required: false
  110. }, {
  111. label: "活动性质",
  112. error: false,
  113. errMsg: "",
  114. type: "option",
  115. optionNmae: "activitytype",
  116. optionType: "radio", //复选 radio 单选
  117. value: "",
  118. placeholder: "活动性质",
  119. valueName: "activitytype",
  120. checking: "base",
  121. required: false
  122. }, {
  123. label: "活动形式",
  124. error: false,
  125. errMsg: "",
  126. type: "option",
  127. optionNmae: "activityformat",
  128. optionType: "radio", //复选 radio 单选
  129. value: "",
  130. placeholder: "活动形式",
  131. valueName: "activityformat",
  132. checking: "base",
  133. required: true
  134. }, {
  135. label: "申请金额",
  136. error: false,
  137. errMsg: "",
  138. type: "digit",
  139. value: "",
  140. placeholder: "申请金额",
  141. valueName: "amount",
  142. checking: "base",
  143. required: false
  144. }, {
  145. label: "备注",
  146. error: false,
  147. errMsg: "",
  148. type: "textarea",
  149. value: "",
  150. placeholder: "请填写",
  151. valueName: "remarks",
  152. required: false,
  153. checking: "base"
  154. }, {
  155. label: "其他费用",
  156. error: false,
  157. errMsg: "",
  158. type: "digit",
  159. value: "",
  160. placeholder: "其他费用",
  161. valueName: "otheramount",
  162. checking: "base",
  163. required: false,
  164. interrupt: true
  165. }]
  166. if (options.data) {
  167. let data = JSON.parse(options.data);
  168. let sa_customersid = data.sa_customersid;
  169. data.sa_hospitaldepid = data.sa_hospitaldepid ? [data.hospitaldepname, [data.sa_hospitaldepid]] : ''
  170. data.sa_customersid = data.sa_hospitaldepid ? [data.hospitalname, [data.sa_customersid]] : ''
  171. form = form.map(v => {
  172. v.value = data[v.valueName] || "";
  173. console.log("v.valueName", v.label)
  174. if (v.label == '科室' && sa_customersid) {
  175. v.params.content.sa_customersid = sa_customersid;
  176. v.disabled = false;
  177. v.placeholder = '选择科室';
  178. }
  179. return v
  180. })
  181. this.setData({
  182. disabled: false,
  183. content: {
  184. sat_campaignid: data.sat_campaignid,
  185. },
  186. form
  187. })
  188. }
  189. this.setData({
  190. form
  191. })
  192. getApp().globalData.Language.getLanguagePackage(this, options.data ? '编辑市场活动' : '新建市场活动');
  193. },
  194. interrupt({
  195. detail
  196. }) {
  197. let index = ''
  198. switch (detail.temporary.item.label) {
  199. case '承办医院':
  200. index = detail.form.findIndex(v => v.label == '承办医院')
  201. if (index != -1) {
  202. detail.form[index].value = detail.data.value;
  203. detail.form[index + 1].params.content.sa_customersid = detail.data.id[0];
  204. detail.form[index + 1].disabled = false;
  205. detail.form[index + 1].placeholder = '选择科室';
  206. }
  207. wx.navigateBack()
  208. break;
  209. case '开始日期':
  210. index = detail.form.findIndex(v => v.label == '开始日期')
  211. if (index != -1) {
  212. detail.form[index + 1].start = detail.data.value;
  213. if (new Date(detail.form[index + 1].value) < new Date(detail.data.value)) {
  214. detail.form[index + 1].value = '';
  215. }
  216. }
  217. break;
  218. case '其他费用':
  219. this.data.otheramount = detail.data.value;
  220. this.calculatePrice()
  221. break;
  222. }
  223. this.setData({
  224. form: detail.form
  225. })
  226. },
  227. calculatePrice() {
  228. const otheramount = this.data.otheramount,
  229. trainingCost = this.data.list.reduce((sum, item) => {
  230. return sum + (parseFloat(item.amount) || 0);
  231. }, 0);
  232. this.setData({
  233. otheramount1: _Http.formatMoney(otheramount, 2, '', false),
  234. trainingCost: _Http.formatMoney(trainingCost, 2, '', false),
  235. allCost: _Http.formatMoney(((trainingCost - 0) + (otheramount - 0)), 2, '', false)
  236. });
  237. },
  238. /* 表单必填项是否完成 */
  239. onConfirm({
  240. detail
  241. }) {
  242. this.setData({
  243. disabled: detail
  244. })
  245. },
  246. // 是否显示全部
  247. onChange({
  248. detail
  249. }) {
  250. this.setData({
  251. showAll: detail,
  252. })
  253. },
  254. async submit() {
  255. this.setData({
  256. loading: true
  257. })
  258. let data = this.selectComponent("#Form").submit(),
  259. content = this.data.content
  260. data.sa_customersid = data.sa_customersid.length ? data.sa_customersid[1][0] : 0;
  261. data.sa_hospitaldepid = data.sa_hospitaldepid.length ? data.sa_hospitaldepid[1][0] : 0;
  262. data.doctors = this.data.list.map(v => {
  263. return {
  264. "sat_campaign_doctorid": 0,
  265. "sa_doctorid": v.sa_doctorid,
  266. "amount": v.amount
  267. }
  268. });
  269. _Http.basic({
  270. "classname": "webmanage.saletool.orderclue.ordercluecampaign",
  271. "method": "insertormodify_campaign",
  272. "content": {
  273. ...content,
  274. ...data,
  275. }
  276. }).then(res => {
  277. this.setData({
  278. loading: false
  279. })
  280. wx.showToast({
  281. title: res.code != '1' ? res.msg : '保存成功',
  282. icon: "none",
  283. mask: res.code == '1'
  284. })
  285. if (res.code != '1') return;
  286. getCurrentPages().forEach(v => {
  287. if (v.route == 'prsx/activity/detail') v.getDetail()
  288. })
  289. setTimeout(() => {
  290. if (content.sat_campaignid == 0) {
  291. wx.redirectTo({
  292. url: '/prsx/activity/detail?id=' + res.data.sat_campaignid,
  293. })
  294. } else {
  295. wx.navigateBack()
  296. }
  297. }, 300)
  298. })
  299. },
  300. insetr() {
  301. let params = {
  302. "id": 2025103013523102,
  303. "content": {
  304. "sat_campaignid": 0,
  305. pageNumber: 1,
  306. pageSize: 20,
  307. "where": {
  308. "condition": ""
  309. }
  310. }
  311. };
  312. wx.navigateTo({
  313. url: '/prsx/select/docter/index?params=' + JSON.stringify(params) + '&radio=true',
  314. })
  315. let that = this;
  316. getApp().globalData.handleSelect = function ({
  317. item
  318. }) {
  319. wx.showModal({
  320. content: `是否确定添加“${item.doctorname}”`,
  321. complete: ({
  322. confirm
  323. }) => {
  324. if (confirm) {
  325. if (!this.data.list.some(v => v.sa_doctorid == item.sa_doctorid)) {
  326. item.amount = 0
  327. that.setData({
  328. list: this.data.list.concat([item])
  329. })
  330. }
  331. wx.showToast({
  332. title: '添加成功',
  333. icon: "none"
  334. })
  335. }
  336. }
  337. })
  338. }.bind(this)
  339. },
  340. deleteItem(e) {
  341. const {
  342. item
  343. } = e.currentTarget.dataset,
  344. that = this;
  345. wx.showModal({
  346. content: `是否确定删除“${item.doctorname}”`,
  347. complete: ({
  348. confirm
  349. }) => {
  350. if (confirm) {
  351. that.setData({
  352. list: that.data.list.filter(v => v.sa_doctorid != item.sa_doctorid)
  353. })
  354. this.calculatePrice();
  355. }
  356. }
  357. })
  358. },
  359. toSearch() {
  360. if (this.data.showSearch && this.data.content.where.condition) {
  361. this.data.content.where.condition = '';
  362. this.getList("", true);
  363. } else if (this.data.condition) {
  364. this.data.content.where.condition = this.data.condition;
  365. this.setData({
  366. condition: this.data.condition
  367. })
  368. this.getList("", true);
  369. }
  370. this.setData({
  371. showSearch: !this.data.showSearch
  372. })
  373. setTimeout(() => {
  374. this.setData({
  375. focus: this.data.showSearch
  376. })
  377. }, 300)
  378. },
  379. // onChange({
  380. // detail
  381. // }) {
  382. // this.data.condition = detail;
  383. // },
  384. onSearch({
  385. detail
  386. }) {
  387. this.data.content.where.condition = detail;
  388. this.getList("", true)
  389. },
  390. changeAmount(e) {
  391. let value = e.detail.value,
  392. index = e.currentTarget.dataset.index;
  393. this.data.list[index].amount = value;
  394. this.calculatePrice();
  395. }
  396. })