org.js 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. /*******************************************************************************
  2. * Copyright(c) 2022 dongke All rights reserved. / Confidential
  3. * 类的信息:
  4. * 1.程序名称:
  5. * 2.组织机构列表
  6. * 编辑履历:
  7. * 作者 日期 版本 修改内容
  8. * 王英杰 2024-2-12 1.00
  9. *******************************************************************************/
  10. const Constants = require('@/utils/Constants.js');
  11. const mixins = require('@/mixins/index.js')
  12. const util = require('@/utils/util.js')
  13. const config = require('@/config/config.js');
  14. const app = getApp()
  15. Page({
  16. mixins: [mixins],
  17. /**
  18. * 页面的初始数据
  19. */
  20. data: {
  21. imageUrl: config.image_url + '/static/img/',
  22. // 弹框标题
  23. popTitle: null,
  24. // 顶级部门
  25. topOrg: null,
  26. readonly: false,
  27. // 查询条件
  28. searchContent: [],
  29. form: null, //新建的数据form
  30. // 路由
  31. routeObjName: 'org', // 路由
  32. popContent: [{ //新建的 各个控件信息
  33. code: 'orgCode',
  34. type: 'str',
  35. name: 'orgCode',
  36. required: false,
  37. readonly: true
  38. }, { //上级部门
  39. code: 'parentId',
  40. name: 'parentName',
  41. title: mixins.$t("parentName"),
  42. type: 'choose',
  43. urlKey: 'chooseOrg',
  44. required: true
  45. }, { //部门名称
  46. code: 'orgName',
  47. type: 'str',
  48. name: 'orgName',
  49. required: true
  50. }, { //可用仓库
  51. code: 'whId',
  52. name: 'whName',
  53. title: '可用仓库',
  54. type: 'choose',
  55. urlKey: 'selectWarehouse',
  56. }, { //可用资金账号
  57. code: 'accountOut',
  58. name: 'accountOutName',
  59. title: '可用资金账号',
  60. type: 'choose',
  61. urlKey: 'selectMoneyAccount'
  62. }, { //备注
  63. code: 'remarks',
  64. type: 'str',
  65. title: mixins.$t("remarks"),
  66. required: false
  67. }],
  68. showFlag: true,
  69. // 弹出按钮
  70. buttonList: [{
  71. code: "newSubOrg",
  72. title: mixins.$t('newSubOrg'), //'确定'
  73. }],
  74. contentList: [{
  75. code: 'flag',
  76. title: mixins.$t('enable'), //'启用',
  77. type: 'checkbox'
  78. }],
  79. btnFormData: '{\"flag\":true}',
  80. pageFlag: false,
  81. primaryKey: 'orgId',
  82. routeObjName: 'org'
  83. },
  84. /**
  85. * @desc : 启用停用
  86. * @date : 2024/5/7 15:49
  87. * @author : 周兴
  88. */
  89. deactivateEnable(e) {
  90. if (e.detail == 'right') {
  91. let item = e.currentTarget.dataset.item
  92. //执行接口
  93. this.handleMoreDataIsValid(this.data.service, item, 'orgId')
  94. }
  95. },
  96. /**
  97. * @desc : 按钮点击事件回调
  98. * @date : 2024/2/1 15:49
  99. * @author : 王英杰
  100. */
  101. open(e) {
  102. let code = e.detail.name
  103. if (code == "newStaff") { //跳转员工
  104. this.toAddStaff()
  105. }
  106. if (code == "newSubOrg") { //跳转部门
  107. this.toadd()
  108. }
  109. },
  110. /**
  111. * @desc :底部按钮 过滤停用启用
  112. * @date : 2024/2/1 15:49
  113. * @author : 王英杰
  114. */
  115. onEnableChange() {
  116. this.searchData()
  117. },
  118. /**
  119. * @desc :暂时提示信息
  120. * @date : 2024/5/7 15:49
  121. * @author : 周兴
  122. */
  123. showBusinessTip(e) {
  124. util.showToast('业务部门');
  125. },
  126. /**
  127. * @desc :设置查询参数
  128. * @date : 2024/2/1 15:49
  129. * @author : 王英杰
  130. */
  131. setSearchParams(params) {
  132. let btnFormData = JSON.parse(this.data.btnFormData)
  133. params.pageSize = 100000
  134. params.currentPage = 1
  135. params.flgValid = btnFormData.flag
  136. return params
  137. },
  138. /**
  139. * @desc :打开新建
  140. * @date : 2024/2/1 15:49
  141. * @author : 王英杰
  142. */
  143. toadd() {
  144. let form = {}
  145. form.editFlag = false
  146. // 给上级部门添加默认值
  147. let topOrg = this.data.topOrg
  148. if (topOrg) {
  149. form.parentId = topOrg.orgId
  150. form.parentName = topOrg.orgName
  151. }
  152. let popContent = this.data.popContent
  153. // 新建时过滤掉部门
  154. popContent = popContent.filter(it => it.code != 'orgCode')
  155. this.setData({
  156. popContent: popContent,
  157. showPop: true,
  158. editFlag: false,
  159. popTitle: this.$t('newDepartment'),
  160. form: JSON.stringify(form)
  161. })
  162. },
  163. /**
  164. * @desc :关闭新建框(弹出的popup)
  165. * @date : 2024/2/1 15:49
  166. * @author : 王英杰
  167. */
  168. onClosePopup() {
  169. // 使用 setTimeout 添加一秒钟延迟
  170. setTimeout(() => {
  171. this.setData({
  172. readonly: false,
  173. });
  174. }, 1000); // 延迟 1000 毫秒,即 1 秒
  175. },
  176. /**
  177. * @desc : 关闭Pop后修改数据
  178. * @author : 王英杰
  179. * @date : 2024/1/26 11:46
  180. */
  181. editItems(data) {
  182. console.log('data', data);
  183. let params = {
  184. ...this.data.params,
  185. ...data.detail.form
  186. };
  187. let macList = []
  188. if (params.accountOut_data) {
  189. params.accountOut_data.forEach(element => {
  190. let item = {}
  191. item.macId = element.macId
  192. item.ownerFlag = element.flgDefault
  193. macList.push(item)
  194. });
  195. params.macList = macList
  196. }
  197. let warehouseList = []
  198. if (params.whId_data) {
  199. params.whId_data.forEach(element => {
  200. let item = {}
  201. item.whId = element.whId
  202. item.ownerFlag = element.flgDefault
  203. warehouseList.push(item)
  204. });
  205. params.warehouseList = warehouseList
  206. }
  207. console.log("save", params);
  208. if (this.data.editFlag) {
  209. this.excute(this.data.service, this.data.service.update, params, true).then(res => {
  210. if (res.data.code === Constants.SUCESS_CODE) {
  211. // 保存成功清空数据
  212. this.setData({
  213. form: null
  214. })
  215. // 刷新数据
  216. this.searchData();
  217. }
  218. });
  219. } else {
  220. this.excute(this.data.service, this.data.service.insert, params, true).then(res => {
  221. if (res.data.code === Constants.SUCESS_CODE) {
  222. // 保存成功清空数据
  223. this.setData({
  224. form: null
  225. })
  226. // 刷新数据
  227. this.searchData();
  228. }
  229. });
  230. }
  231. },
  232. /**
  233. * @desc :打开选择客户
  234. * @date : 2024/2/1 15:49
  235. * @author : 王英杰
  236. */
  237. openChooseOrg() {
  238. let that = this
  239. let addForm = that.data.addForm
  240. wx.navigateTo({
  241. // url: "./add/add",
  242. url: this.data.route.toAdd.url,
  243. events: {
  244. bindData: function (e) {
  245. addForm.parentOrgName = e.data.name
  246. addForm.parentId = e.data.id
  247. that.setData({
  248. addForm
  249. })
  250. }
  251. },
  252. success: function (res) {
  253. res.eventChannel.emit('params-org', {
  254. url: ''
  255. })
  256. }
  257. })
  258. },
  259. /**
  260. * @desc : 跳转员工新建
  261. * @date : 2024/2/1 15:49
  262. * @author : 王英杰
  263. */
  264. toAddStaff() {
  265. let _this = this
  266. wx.navigateTo({
  267. url: this.data.route.staffAdd.url,
  268. events: {
  269. // 回调后,在这里给页面赋值
  270. bandData: function (e) {
  271. _this.getData()
  272. }
  273. },
  274. success: function (res) {
  275. // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
  276. res.eventChannel.emit('params', {})
  277. }
  278. })
  279. },
  280. /**
  281. * @desc : 查询
  282. * @date : 2024/2/1 15:49
  283. * @author : 王英杰
  284. */
  285. getData(params) {
  286. this.setData({
  287. showFlag: false
  288. }) //listByTree selectByCond
  289. this.excute(this.data.service, this.data.service.listByTree, params).then(res => {
  290. if (res.data.code === Constants.SUCESS_CODE) {
  291. let data = res.data.data;
  292. // 获取顶级部门
  293. let filters = data.filter(it => !it.parentId);
  294. if (filters && filters.length > 0) {
  295. this.setData({
  296. topOrg: { ...filters[0] },
  297. })
  298. }
  299. data = data.filter(it => it.parentId)
  300. if (data && data.length > 0) {
  301. // 处理数据
  302. this.handleSearchData(data);
  303. }
  304. }
  305. });
  306. },
  307. /**
  308. * @desc : 查询 后续处理
  309. * @date : 2024/2/1 15:49
  310. * @author : 王英杰
  311. */
  312. handleSearchData(data) {
  313. let tableData = []
  314. // 把二级的parentId去掉
  315. data.forEach(it => {
  316. if (it.levelNo == 2) {
  317. it.parentId = null;
  318. let tempData = util.convertToChildren(data.filter(t => (t.parentId == it.orgId || t.orgId == it.orgId)), "parentId", "orgId", null);
  319. if (tempData && tempData.length > 0) {
  320. tableData.push(tempData[0])
  321. }
  322. }
  323. })
  324. let topOrg = this.data.topOrg;
  325. if (topOrg) {
  326. tableData.forEach(it => {
  327. it.parentId = topOrg.orgId
  328. })
  329. }
  330. this.setData({
  331. tableData: tableData,
  332. })
  333. setTimeout(() => {
  334. this.setData({
  335. showFlag: true
  336. })
  337. }, 500)
  338. },
  339. /**
  340. * @desc :保存接口的 后续处理方法
  341. * @date : 2024/2/1 15:49
  342. * @author : 王英杰
  343. */
  344. handleData(data) {
  345. this.setData({
  346. showPop: false,
  347. })
  348. this.searchData()
  349. },
  350. /**
  351. * @desc :初始化
  352. * @date : 2024/2/1 15:49
  353. * @author : 王英杰
  354. */
  355. loadInit() {
  356. this.setData({
  357. orgName: app.globalData.user.orgName
  358. })
  359. },
  360. /**
  361. * @desc :列表收起 打开 下拉
  362. * @date : 2024/2/1 15:49
  363. * @author : 王英杰
  364. */
  365. onchange(e) {
  366. let index = e.currentTarget.dataset.index;
  367. let open = e.currentTarget.dataset.open;
  368. let tableData = this.data.tableData
  369. tableData[index].open = !open
  370. this.setData({
  371. tableData: tableData,
  372. })
  373. },
  374. /**
  375. * @desc : 跳转跳转三级部门
  376. * @date : 2024/2/1 15:49
  377. * @author : 王英杰
  378. */
  379. toSubOrg(e) {
  380. let _this = this
  381. let dataset = e.currentTarget.dataset;
  382. let chooseOrgSort = this.data.orgName + " > " + dataset.item.orgName + " > " + dataset.item_.orgName
  383. wx.navigateTo({
  384. url: this.data.route.subOrgChoose.url,
  385. events: {
  386. // 回调后,在这里给页面赋值
  387. bandData: function (e) {
  388. // _this.getData()
  389. }
  390. },
  391. success: function (res) {
  392. // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
  393. res.eventChannel.emit('params', {
  394. item: {
  395. parentId: dataset.item_.orgId,
  396. parentName: dataset.item_.orgName,
  397. orgId_social: dataset.item_.orgId,
  398. parentId_social: dataset.item_.parentId,
  399. chooseOrgSort: chooseOrgSort
  400. }
  401. })
  402. }
  403. })
  404. },
  405. /**
  406. * @desc : 点击页面的三级部门名称 查询对应详细
  407. * @date : 2024/2/1 15:49
  408. * @author : 王英杰
  409. */
  410. clickName(e) {
  411. let item = e.currentTarget.dataset.item
  412. // let param = {}
  413. // param.orgId = item.orgId
  414. let excute = this.excute(this.data.service, this.data.service.getbyid + "/" + item.orgId, {});
  415. excute.then(res => {
  416. if (res.data.code === Constants.SUCESS_CODE) {
  417. let form = {}
  418. let data = res.data.data
  419. // form.orgId = data.orgId
  420. // form.orgCode = data.orgCode
  421. // form.parentId = data.parentId
  422. // form.parentName = data.parentName
  423. // form.orgName = data.orgName
  424. // form.remarks = data.remarks
  425. form = { ...data }
  426. // 记录原始的部门Id
  427. form.orgId_social = form.orgId
  428. form.orgName_socail = form.levelName
  429. form.parentId_social = form.parentId
  430. // 部门
  431. if (data.warehouseBeanList) {
  432. let whId_data = []
  433. let names = []
  434. data.warehouseBeanList.forEach(element => {
  435. let item = {}
  436. item.whId = element.whId
  437. item.flgDefault = element.flgDefault
  438. whId_data.push(item)
  439. names.push(element['whName'])
  440. });
  441. form.whId_data = whId_data
  442. form.whName = names.join(',')
  443. }
  444. // 资金账户
  445. if (data.macBeanList) {
  446. let accountOut_data = []
  447. let names = []
  448. data.macBeanList.forEach(element => {
  449. let item = {}
  450. item.macId = element.macId
  451. item.flgDefault = element.flgDefault
  452. accountOut_data.push(item)
  453. names.push(element['macName'])
  454. });
  455. form.accountOut_data = accountOut_data
  456. form.accountOutName = names.join(',')
  457. }
  458. let form_ = { ...form }
  459. form_.editFlag = false
  460. let popContent = this.data.popContent
  461. let filters = popContent.filter(it => it.code == 'orgCode');
  462. // 说明部门编码被过滤掉了,需要加回来
  463. if (!filters || filters.length == 0) {
  464. popContent.unshift(
  465. {
  466. code: 'orgCode',
  467. type: 'str',
  468. name: 'orgCode',
  469. required: false,
  470. readonly: true
  471. })
  472. }
  473. this.setData({
  474. popContent:popContent,
  475. form: JSON.stringify(form_),
  476. popTitle: this.$t('org'),
  477. showPop: true,
  478. editFlag: false,
  479. readonly: true,
  480. })
  481. }
  482. })
  483. return excute;
  484. },
  485. /**
  486. * @desc : 编辑
  487. * @date : 2024/2/1 15:49
  488. * @author : 王英杰
  489. */
  490. toEdit() {
  491. // 控制业务部门标识不允许编辑
  492. let form = JSON.parse(this.data.form)
  493. form.flgBusinessControl = form.flgBusiness
  494. form.editFlag = true
  495. this.setData({
  496. showPop: false,
  497. readonly: false,
  498. popTitle: this.$t('editDepartment'),
  499. editFlag: true,
  500. });
  501. setTimeout(() => {
  502. this.setData({
  503. showPop: true,
  504. form: JSON.stringify(form)
  505. });
  506. }, 200);
  507. },
  508. })