No Description

create.js 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  1. const app = getApp()
  2. Page({
  3. /**
  4. * 页面的初始数据
  5. */
  6. data: {
  7. fDeptid: null,
  8. trainAddress: [],
  9. checkall: false, //是否全选
  10. UserAccountList: [], //培训人员
  11. addstaffShow: false,
  12. mapShow: false,
  13. latitude: '',
  14. longitude: '',
  15. checkRoleAll: false,
  16. RoleAccountList: [],
  17. addRoleShow: false,
  18. form: {
  19. fileList: [],
  20. fileDocList: [],
  21. fy: '',
  22. fx: '',
  23. sendWay: '2',
  24. isSend: '0',
  25. isLimit: '0',
  26. distance: '500',
  27. trainUserinfoList: [],
  28. trainRoleinfoList: [],
  29. roleIds: ''
  30. }
  31. },
  32. getLocation: () => new Promise((res, rej) => {
  33. wx.getLocation({
  34. type: 'gcj02',
  35. altitude: true,
  36. isHighAccuracy: true,
  37. fail: err => {
  38. rej(err)
  39. },
  40. success: suc => {
  41. res(suc)
  42. }
  43. })
  44. }),
  45. async setMapShow() {
  46. console.log("setmapShow")
  47. wx.chooseLocation({
  48. success: res => {
  49. console.log(res)
  50. this.setData({
  51. 'form.trainAddress': res.address, //res.address,// res.name+,
  52. 'form.fx': res.latitude,
  53. 'form.fy': res.longitude,
  54. })
  55. },
  56. fail: e => {
  57. console.log(e)
  58. }
  59. })
  60. // if(!this.data.mapShow){
  61. // let {longitude,latitude} = await this.getLocation()
  62. // this.setData({longitude,latitude})
  63. // console.log('地址',{longitude,latitude})
  64. // }
  65. // this.setData({
  66. // mapShow:!this.data.mapShow
  67. // })
  68. },
  69. setAddRoleShow(e) {
  70. let {
  71. affirm
  72. } = e.currentTarget.dataset
  73. if (!this.data.addRoleShow) {
  74. this.data.backups = [JSON.stringify(this.data.RoleAccountList), JSON.stringify(this.data.form.trainRoleinfoList)]
  75. }
  76. console.log(affirm ? '确定' : '取消')
  77. this.setData({
  78. addRoleShow: !this.data.addRoleShow,
  79. RoleAccountList: affirm ? this.data.RoleAccountList : JSON.parse(this.data.backups[0]),
  80. 'form.trainRoleinfoList': affirm ? this.data.RoleAccountList.filter(v => v.checked) : JSON.parse(this.data.backups[1]),
  81. })
  82. },
  83. setAddstaffShow(e) {
  84. let {
  85. affirm
  86. } = e.currentTarget.dataset
  87. if (!this.data.addstaffShow) {
  88. this.data.backups = [JSON.stringify(this.data.UserAccountList), JSON.stringify(this.data.form.trainUserinfoList)]
  89. }
  90. console.log(affirm ? '确定' : '取消')
  91. this.setData({
  92. addstaffShow: !this.data.addstaffShow,
  93. UserAccountList: affirm ? this.data.UserAccountList : JSON.parse(this.data.backups[0]),
  94. 'form.trainUserinfoList': affirm ? this.data.UserAccountList.filter(v => v.checked) : JSON.parse(this.data.backups[1]),
  95. })
  96. },
  97. roleChange(e) {
  98. console.log(e)
  99. let {
  100. name
  101. } = e.currentTarget.dataset;
  102. let {
  103. value
  104. } = e.detail;
  105. let data = {};
  106. if (name === 'checkRoleAll') {
  107. this.data.RoleAccountList.forEach((v, i) => {
  108. this.data.RoleAccountList[i].checked = value[0] === 'checkRoleAll'
  109. })
  110. data['checkRoleAll'] = value[0] === 'checkRoleAll'
  111. data['RoleAccountList'] = this.data.RoleAccountList
  112. } else if (name === 'form.checkedValueList') {
  113. data['checkall'] = this.data.RoleAccountList.length === value.length
  114. this.data.RoleAccountList.forEach((v, i) => {
  115. this.data.RoleAccountList[i].checked = value.indexOf(i + '') != -1
  116. })
  117. data['RoleAccountList'] = this.data.RoleAccountList
  118. } else {
  119. data[name] = value
  120. }
  121. this.setData(data);
  122. this.selectUserAccountList();
  123. },
  124. model(e) {
  125. let {
  126. name
  127. } = e.currentTarget.dataset;
  128. let {
  129. value
  130. } = e.detail;
  131. let data = {};
  132. if (name === 'form.trainAddress') {
  133. data[name] = this.data.trainAddress[value].fAddress
  134. this.data.form.fx = this.data.trainAddress[value].fX
  135. this.data.form.fy = this.data.trainAddress[value].fY
  136. console.log(this.data.trainAddress[value])
  137. } else if (name === 'checkall') {
  138. this.data.UserAccountList.forEach((v, i) => {
  139. this.data.UserAccountList[i].checked = value[0] === 'checkall'
  140. })
  141. data['checkall'] = value[0] === 'checkall'
  142. data['UserAccountList'] = this.data.UserAccountList
  143. } else if (name === 'form.checkedValueList') {
  144. data['checkall'] = this.data.UserAccountList.length === value.length
  145. this.data.UserAccountList.forEach((v, i) => {
  146. this.data.UserAccountList[i].checked = value.indexOf(i + '') != -1
  147. })
  148. data['UserAccountList'] = this.data.UserAccountList
  149. } else {
  150. data[name] = value
  151. }
  152. this.setData(data)
  153. },
  154. verify() {
  155. let {
  156. trainTitle,
  157. date1,
  158. time1,
  159. date2,
  160. time2,
  161. trainAddress,
  162. trainContent,
  163. trainUserinfoList
  164. } = this.data.form
  165. if (!trainTitle || !date1 || !time1 || !date2 || !time2 || !trainAddress || !trainContent || !trainUserinfoList.length) {
  166. wx.showToast({
  167. title: !trainTitle ? '请输入培训标题' : (
  168. !date1 || !time1 ? '请完善开始培训时间' : (
  169. !date2 || !time2 ? '请完善结束培训时间' : (
  170. !trainAddress ? '请选择培训地址' : (
  171. !trainContent ? '请输入培训内容' : '请选择培训人员'
  172. )
  173. ))
  174. ),
  175. icon: 'none'
  176. })
  177. return false
  178. }
  179. this.data.form.startTime = Date.parse(new Date(date1.replace(/-/g, '/') + ' ' + time1 + ':00')) //date1.replace(/-/g,'/') + ' ' + time1 + ':00'
  180. this.data.form.endTime = Date.parse(new Date(date2.replace(/-/g, '/') + ' ' + time2 + ':00')) //date2.replace(/-/g,'/') + ' ' + time2 + ':00'
  181. this.data.form.trainUserinfoList = this.data.form.trainUserinfoList.map(v => Object.assign(v, {
  182. trainStaffId: v.fUserid,
  183. trainStaffName: v.fUsername,
  184. departmentId: v.fDeptid,
  185. yhcompanyId: v.yhCompanyId,
  186. }))
  187. return true
  188. },
  189. async submit(e) {
  190. if (!this.verify()) return
  191. let {
  192. state
  193. } = e.currentTarget.dataset
  194. this.data.form.state = state
  195. console.log(this.data.form)
  196. wx.showLoading({
  197. title: state == '1' ? '保存中' : '提交中',
  198. mask: true
  199. })
  200. let res = await app.sendRequest('post', '/tPubTrain/createTrain', {
  201. data: this.data.form
  202. })
  203. if (!res || res.status != '200') {
  204. wx.hideLoading()
  205. wx.showToast({
  206. title: '异常错误,请重试',
  207. icon: 'none'
  208. })
  209. return
  210. }
  211. wx.showToast({
  212. icon: 'success',
  213. mask: true,
  214. title: state == '1' ? '保存' : '提交' + '成功',
  215. success: (result) => {
  216. wx.navigateBack({
  217. delta: 0,
  218. })
  219. let pages = getCurrentPages();
  220. pages[pages.length - 2].onLoad();
  221. },
  222. })
  223. console.log(res)
  224. },
  225. // async selectTrainAddress(){
  226. // let res = await app.sendRequest('post','/tPubTrain/selectTrainAddress',{data:{}})
  227. // this.setData({
  228. // trainAddress : res.data
  229. // })
  230. // },
  231. async selectRoleAccountList() {
  232. let res = await app.sendRequest('get', '/role/info/list')
  233. console.log(res)
  234. this.setData({
  235. RoleAccountList: res.data
  236. })
  237. console.log(this.data.RoleAccountList)
  238. if (res) {
  239. return Promise.resolve('培训人员加载完成')
  240. } else {
  241. return Promise.reject('err')
  242. }
  243. },
  244. async selectUserAccountList() {
  245. // let res = await app.sendRequest('post','/tPubTrain/selectUserAccountList',{data:{}})
  246. let config = wx.getStorageSync('config');
  247. let fDeptid = wx.getStorageSync('fDeptid');
  248. if (fDeptid == 6) {
  249. let roadId = [];
  250. this.data.RoleAccountList.map(item => {
  251. if (item.checked) {
  252. roadId.push(item.fRoleid)
  253. }
  254. })
  255. this.setData({
  256. 'form.roleIds': roadId.toString()
  257. })
  258. let data = {
  259. roleId: roadId.toString()
  260. };
  261. let res = await app.sendRequest('get', '/sysuseraccount/selectUserAccountByRoleId', {
  262. data
  263. })
  264. this.setData({
  265. UserAccountList: res.data
  266. })
  267. if (res) {
  268. return Promise.resolve('培训人员加载完成')
  269. } else {
  270. return Promise.reject('err')
  271. }
  272. } else {
  273. let data = [27, 1];
  274. // if (fDeptid == 10) {
  275. // data = [26]
  276. // } else {
  277. // data = [
  278. // [15, 16],
  279. // [16],
  280. // [16]
  281. // ][
  282. // ['公园科中心', '公园科中心,绿化科中心', '绿化科中心'].indexOf(config)
  283. // ];
  284. // }
  285. let res = await app.sendRequest('post', '/sysuseraccount/selectUserAccountByDeptId', {
  286. data
  287. })
  288. this.setData({
  289. UserAccountList: res.data,
  290. // UserAccountList2 : res2.data
  291. })
  292. if (res) {
  293. return Promise.resolve('培训人员加载完成')
  294. } else {
  295. return Promise.reject('err')
  296. }
  297. }
  298. },
  299. async selectById(id) {
  300. let res = await app.sendRequest('post', '/tPubTrain/selectById', {
  301. data: {
  302. id
  303. }
  304. })
  305. console.log(res.data)
  306. res.data.fileList = res.data.fileList || []
  307. res.data.fileDocList = res.data.fileDocList || []
  308. this.setData({
  309. form: Object.assign(res.data, {
  310. date1: res.data.startTime.substr(0, 10),
  311. time1: res.data.startTime.substr(11, 5),
  312. date2: res.data.endTime.substr(0, 10),
  313. time2: res.data.endTime.substr(11, 5)
  314. })
  315. })
  316. if (res) {
  317. return Promise.resolve('id获取信息完成')
  318. } else {
  319. return Promise.reject('err')
  320. }
  321. },
  322. /**
  323. * 生命周期函数--监听页面加载
  324. */
  325. onLoad: function (options) {
  326. let fDeptid = wx.getStorageSync('fDeptid');
  327. console.log(fDeptid)
  328. this.setData({
  329. fDeptid: fDeptid
  330. })
  331. if (options.id) {
  332. wx.setNavigationBarTitle({
  333. title: '修改培训',
  334. })
  335. //this.selectById(options.id)
  336. Promise.all([this.selectById(options.id), this.selectRoleAccountList(), this.selectUserAccountList()]).then(arr => {
  337. let trainStaffIdArr = this.data.form.trainUserinfoList.map(v => v.trainStaffId);
  338. let trainRoleIdArr = this.data.form.roleIds;
  339. let RoleAccountList = this.data.RoleAccountList.map(item => {
  340. item.checked = trainRoleIdArr.indexOf(item.fRoleid) != -1
  341. return item
  342. })
  343. let UserAccountList = this.data.UserAccountList.map(item => {
  344. item.checked = trainStaffIdArr.indexOf(item.fUserid) != -1
  345. return item
  346. })
  347. let trainRoleinfoList = this.data.RoleAccountList.filter(v => v.checked);
  348. let trainUserinfoList = this.data.UserAccountList.filter(v => v.checked);
  349. this.setData({
  350. RoleAccountList,
  351. UserAccountList,
  352. 'form.trainRoleinfoList': trainRoleinfoList,
  353. 'form.trainUserinfoList': trainUserinfoList,
  354. checkRoleAll: RoleAccountList.length && RoleAccountList.length === trainRoleinfoList.length,
  355. checkall: UserAccountList.length && UserAccountList.length === trainUserinfoList.length,
  356. })
  357. })
  358. } else {
  359. this.selectRoleAccountList();
  360. this.selectUserAccountList();
  361. let date = new Date();
  362. let dateStr = [date.getFullYear(), date.getMonth() + 1, date.getDate()].join('-')
  363. this.setData({
  364. "form.date1": dateStr,
  365. "form.date2": dateStr
  366. })
  367. }
  368. // this.selectTrainAddress()
  369. },
  370. /**
  371. * 生命周期函数--监听页面初次渲染完成
  372. */
  373. onReady: function () {
  374. },
  375. /**
  376. * 生命周期函数--监听页面显示
  377. */
  378. onShow: function () {
  379. },
  380. /**
  381. * 生命周期函数--监听页面隐藏
  382. */
  383. onHide: function () {
  384. },
  385. /**
  386. * 生命周期函数--监听页面卸载
  387. */
  388. onUnload: function () {
  389. },
  390. /**
  391. * 页面相关事件处理函数--监听用户下拉动作
  392. */
  393. onPullDownRefresh: function () {
  394. },
  395. /**
  396. * 页面上拉触底事件的处理函数
  397. */
  398. onReachBottom: function () {
  399. },
  400. /**
  401. * 用户点击右上角分享
  402. */
  403. onShareAppMessage: function () {
  404. },
  405. uploader() {
  406. var token = wx.getStorageSync("token")
  407. let maxSize = 1024 * 1024 * 5
  408. let maxLength = 5
  409. let flag = true
  410. wx.chooseImage({
  411. count: 5, //最多可以选择的图片总数
  412. sizeType: ["original", "compressed"], // 可以指定是原图还是压缩图,默认二者都有
  413. sourceType: ["album", "camera"], // 可以指定来源是相册还是相机,默认二者都有
  414. success: res => {
  415. wx.showLoading({
  416. title: "正在上传...",
  417. mask: true,
  418. })
  419. console.log('!!!', res)
  420. for (let i = 0; i < res.tempFiles.length; i++) {
  421. if (res.tempFiles[i].size > maxSize) {
  422. flag = false
  423. wx.showModal({
  424. content: "图片太大,不允许上传",
  425. showCancel: false,
  426. success: function (res) {
  427. if (res.confirm) {
  428. ////console.log('用户点击确定')
  429. }
  430. },
  431. })
  432. return
  433. }
  434. }
  435. if (res.tempFiles.length > maxLength) {
  436. wx.showModal({
  437. content: "最多能上传" + maxLength + "张图片",
  438. showCancel: false,
  439. success: function (res) {
  440. if (res.confirm) {
  441. ////console.log('确定');
  442. }
  443. },
  444. })
  445. return
  446. }
  447. if (flag == true && res.tempFiles.length <= maxLength) {
  448. for (var i = 0; i < res.tempFilePaths.length; i++) {
  449. console.log(' res.tempFilePaths[i]', res.tempFilePaths[i])
  450. wx.uploadFile({
  451. url: app.globalData.httpsUrlServer + "/file/uploadPubTrainImage",
  452. filePath: res.tempFilePaths[i],
  453. name: "images",
  454. header: {
  455. "Content-Type": "application/json;charset=UTF-8",
  456. token: token,
  457. fSource: 1,
  458. },
  459. success: res => {
  460. var data = JSON.parse(res.data)
  461. console.log('!!!', data)
  462. this.setData({
  463. 'form.fileList': [...this.data.form.fileList, ...data.data]
  464. })
  465. wx.hideLoading()
  466. setTimeout(() => {
  467. wx.showToast({
  468. title: "图片上传成功",
  469. icon: "success",
  470. duration: 1000,
  471. })
  472. }, 500)
  473. },
  474. fail: function (res) {
  475. wx.hideLoading()
  476. wx.showToast({
  477. title: "上传失败",
  478. icon: "fail",
  479. duration: 2000,
  480. })
  481. },
  482. })
  483. }
  484. }
  485. },
  486. })
  487. },
  488. // 删除图片
  489. clearImg: function (e) {
  490. var that = this
  491. var index = e.currentTarget.dataset.index
  492. var url = app.globalData.httpsUrlServer + "/file/deleteFile"
  493. var data = {
  494. fileDes: this.data.form.fileList[index].fileDes,
  495. }
  496. app.postReq(url, data, (res) => {
  497. if (res.message == "删除成功") {
  498. that.setData({
  499. 'form.fileList': this.data.form.fileList.filter((v, i) => i != index)
  500. })
  501. wx.showToast({
  502. title: "删除成功",
  503. icon: "success",
  504. duration: 2000,
  505. })
  506. } else if (res.status == 600) {
  507. wx.showModal({
  508. title: "登陆失败",
  509. content: "登录信息失效,请重新登录",
  510. success(res) {
  511. if (res.confirm) {
  512. wx.navigateTo({
  513. url: "/pages/login/login",
  514. })
  515. } else if (res.cancel) {
  516. wx.navigateTo({
  517. url: "/pages/login/login",
  518. })
  519. }
  520. },
  521. })
  522. } else {
  523. wx.showModal({
  524. title: "提醒",
  525. content: "删除失败,请重试",
  526. success(res) {},
  527. })
  528. }
  529. })
  530. },
  531. // 预览图片
  532. showImg: function (e) {
  533. //获取当前图片的下标
  534. ////console.log(e)
  535. var index = e.currentTarget.dataset.index
  536. //所有图片
  537. var imgs = this.data.form.fileList.map(item => item.fileUrl)
  538. wx.previewImage({
  539. //当前显示图片
  540. current: imgs[index],
  541. //所有图片
  542. urls: imgs,
  543. })
  544. },
  545. chooseWord() {
  546. var that = this
  547. var token = wx.getStorageSync("token")
  548. wx.chooseMessageFile({
  549. count: 1, //能选择文件的数量
  550. type: "file", //能选择文件的类型,我这里只允许上传文件
  551. success: res => {
  552. var size = res.tempFiles[0].size
  553. var newfilename = res.tempFiles[0].name
  554. //限制了文件的大小和具体文件类型
  555. if (
  556. size < 4194304 &&
  557. (newfilename.indexOf(".doc") != -1 ||
  558. newfilename.indexOf(".docx") != -1 ||
  559. newfilename.indexOf(".xlsx") != -1 ||
  560. newfilename.indexOf(".xls") != -1 ||
  561. newfilename.indexOf(".pdf") != -1)
  562. ) {
  563. // 上传文件,请求接口
  564. for (var i = 0; i < res.tempFiles.length; i++) {
  565. wx.uploadFile({
  566. url: app.globalData.httpsUrlServer + "/file/uploadPubTrainFile",
  567. filePath: res.tempFiles[i].path,
  568. name: res.tempFiles[i].name,
  569. header: {
  570. "Content-Type": "application/json;charset=UTF-8",
  571. token: token,
  572. fSource: 1,
  573. },
  574. success: (res) => {
  575. var data = JSON.parse(res.data)
  576. console.log('2@@@', data)
  577. that.setData({
  578. 'form.fileDocList': [...this.data.form.fileDocList, ...data.data]
  579. })
  580. wx.hideLoading()
  581. setTimeout(() => {
  582. wx.showToast({
  583. title: "文档上传成功",
  584. icon: "success",
  585. duration: 1000,
  586. })
  587. }, 500)
  588. },
  589. fail: function (res) {
  590. wx.showToast({
  591. title: "上传失败",
  592. icon: "fail",
  593. duration: 2000,
  594. })
  595. },
  596. })
  597. }
  598. } else {
  599. wx.showToast({
  600. title: "文件大小不能超过4MB或文档格式不对!",
  601. icon: "none",
  602. duration: 2000,
  603. mask: true,
  604. })
  605. }
  606. },
  607. })
  608. },
  609. openWord(e) {
  610. var index = e.currentTarget.dataset.index;
  611. let {
  612. fileUrl,
  613. fileFormat
  614. } = this.data.form.fileDocList[index]
  615. console.log(this.data.form.fileDocList[index], fileUrl, fileFormat)
  616. wx.downloadFile({
  617. url: fileUrl,
  618. success: res => {
  619. const filePath = res.tempFilePath;
  620. wx.openDocument({
  621. filePath,
  622. fileType: fileFormat.substring(1, fileFormat.length),
  623. success: function (res) {
  624. // console.log("打开文档成功")
  625. },
  626. fail: function (res) {
  627. wx.showToast({
  628. title: '打开文档失败',
  629. icon: 'none',
  630. duration: 2000
  631. })
  632. },
  633. })
  634. },
  635. fail: res => {
  636. console.log(res);
  637. },
  638. });
  639. },
  640. // 删除文档
  641. deleteWord(e) {
  642. console.log('@@')
  643. var that = this
  644. var index = e.currentTarget.dataset.index
  645. var url = app.globalData.httpsUrlServer + "/file/deleteFile"
  646. let data = {
  647. fileDes: this.data.form.fileDocList[index].fileDes,
  648. }
  649. app.postReq(url, data, (res) => {
  650. if (res.status == 200) {
  651. this.setData({
  652. 'form.fileDocList': this.data.form.fileDocList.filter((v, i) => i != index)
  653. })
  654. wx.showToast({
  655. title: "删除成功",
  656. icon: "success",
  657. duration: 2000,
  658. })
  659. } else if (res.data.status == 600) {
  660. wx.showModal({
  661. title: "登陆失败",
  662. content: "登录信息失效,请重新登录",
  663. success(res) {
  664. if (res.confirm) {
  665. wx.navigateTo({
  666. url: "/pages/login/login",
  667. })
  668. } else if (res.cancel) {
  669. wx.navigateTo({
  670. url: "/pages/login/login",
  671. })
  672. }
  673. },
  674. })
  675. } else {
  676. wx.showModal({
  677. title: "提醒",
  678. content: "删除失败,请重试",
  679. success(res) {},
  680. })
  681. }
  682. })
  683. },
  684. })