org.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  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. },
  82. /**
  83. * @desc : 按钮点击事件回调
  84. * @date : 2024/2/1 15:49
  85. * @author : 王英杰
  86. */
  87. open(e) {
  88. let code = e.detail.name
  89. if (code == "newStaff") { //跳转员工
  90. this.toAddStaff()
  91. }
  92. if (code == "newSubOrg") { //跳转部门
  93. this.toadd()
  94. }
  95. },
  96. /**
  97. * @desc :底部按钮 过滤停用启用
  98. * @date : 2024/2/1 15:49
  99. * @author : 王英杰
  100. */
  101. onEnableChange() {
  102. this.searchData()
  103. },
  104. /**
  105. * @desc :暂时提示信息
  106. * @date : 2024/5/7 15:49
  107. * @author : 周兴
  108. */
  109. showBusinessTip(e){
  110. util.showToast('业务部门');
  111. },
  112. /**
  113. * @desc :设置查询参数
  114. * @date : 2024/2/1 15:49
  115. * @author : 王英杰
  116. */
  117. setSearchParams(params) {
  118. let btnFormData = JSON.parse(this.data.btnFormData)
  119. params.pageSize = 100000
  120. params.currentPage = 1
  121. params.flgValid = btnFormData.flag
  122. return params
  123. },
  124. /**
  125. * @desc :打开新建
  126. * @date : 2024/2/1 15:49
  127. * @author : 王英杰
  128. */
  129. toadd() {
  130. let form = {}
  131. form.editFlag = false
  132. // 给上级部门添加默认值
  133. let topOrg = this.data.topOrg
  134. if(topOrg){
  135. form.parentId = topOrg.orgId
  136. form.parentName = topOrg.orgName
  137. }
  138. this.setData({
  139. showPop: true,
  140. editFlag: false,
  141. popTitle:this.$t('newDepartment'),
  142. form: JSON.stringify(form)
  143. })
  144. },
  145. /**
  146. * @desc :关闭新建框(弹出的popup)
  147. * @date : 2024/2/1 15:49
  148. * @author : 王英杰
  149. */
  150. onClosePopup() {
  151. // 使用 setTimeout 添加一秒钟延迟
  152. setTimeout(() => {
  153. this.setData({
  154. readonly: false,
  155. });
  156. }, 1000); // 延迟 1000 毫秒,即 1 秒
  157. },
  158. /**
  159. * @desc : 关闭Pop后修改数据
  160. * @author : 王英杰
  161. * @date : 2024/1/26 11:46
  162. */
  163. editItems(data) {
  164. console.log('data', data);
  165. let params = {
  166. ...this.data.params,
  167. ...data.detail.form
  168. };
  169. let macList = []
  170. if (params.accountOut_data) {
  171. params.accountOut_data.forEach(element => {
  172. let item = {}
  173. item.macId = element.macId
  174. item.ownerFlag = element.flgDefault
  175. macList.push(item)
  176. });
  177. params.macList = macList
  178. }
  179. let warehouseList = []
  180. if (params.whId_data) {
  181. params.whId_data.forEach(element => {
  182. let item = {}
  183. item.whId = element.whId
  184. item.ownerFlag = element.flgDefault
  185. warehouseList.push(item)
  186. });
  187. params.warehouseList = warehouseList
  188. }
  189. console.log("save", params);
  190. if (this.data.editFlag) {
  191. this.excute(this.data.service, this.data.service.update, params,true).then(res=>{
  192. if(res.data.code === Constants.SUCESS_CODE){
  193. // 保存成功清空数据
  194. this.setData({
  195. form:null
  196. })
  197. // 刷新数据
  198. this.searchData();
  199. }
  200. });
  201. } else {
  202. this.excute(this.data.service, this.data.service.insert, params,true).then(res=>{
  203. if(res.data.code === Constants.SUCESS_CODE){
  204. // 保存成功清空数据
  205. this.setData({
  206. form:null
  207. })
  208. // 刷新数据
  209. this.searchData();
  210. }
  211. });
  212. }
  213. },
  214. /**
  215. * @desc :打开选择客户
  216. * @date : 2024/2/1 15:49
  217. * @author : 王英杰
  218. */
  219. openChooseOrg() {
  220. let that = this
  221. let addForm = that.data.addForm
  222. wx.navigateTo({
  223. // url: "./add/add",
  224. url: this.data.route.toAdd.url,
  225. events: {
  226. bindData: function (e) {
  227. addForm.parentOrgName = e.data.name
  228. addForm.parentId = e.data.id
  229. that.setData({
  230. addForm
  231. })
  232. }
  233. },
  234. success: function (res) {
  235. res.eventChannel.emit('params-org', {
  236. url: ''
  237. })
  238. }
  239. })
  240. },
  241. /**
  242. * @desc : 跳转员工新建
  243. * @date : 2024/2/1 15:49
  244. * @author : 王英杰
  245. */
  246. toAddStaff() {
  247. let _this = this
  248. wx.navigateTo({
  249. url: this.data.route.staffAdd.url,
  250. events: {
  251. // 回调后,在这里给页面赋值
  252. bandData: function (e) {
  253. _this.getData()
  254. }
  255. },
  256. success: function (res) {
  257. // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
  258. res.eventChannel.emit('params', {})
  259. }
  260. })
  261. },
  262. /**
  263. * @desc : 查询
  264. * @date : 2024/2/1 15:49
  265. * @author : 王英杰
  266. */
  267. getData(params) {
  268. this.setData({
  269. showFlag: false
  270. }) //listByTree selectByCond
  271. this.excute(this.data.service, this.data.service.listByTree, params).then(res => {
  272. if (res.data.code === Constants.SUCESS_CODE) {
  273. let data = res.data.data;
  274. // 获取顶级部门
  275. let filters = data.filter(it => !it.parentId);
  276. if (filters && filters.length > 0) {
  277. this.setData({
  278. topOrg: { ...filters[0] },
  279. })
  280. }
  281. data = data.filter(it=>it.parentId)
  282. if(data && data.length > 0){
  283. // 处理数据
  284. this.handleSearchData(data);
  285. }
  286. }
  287. });
  288. },
  289. /**
  290. * @desc : 查询 后续处理
  291. * @date : 2024/2/1 15:49
  292. * @author : 王英杰
  293. */
  294. handleSearchData(data) {
  295. let tableData = []
  296. // 把二级的parentId去掉
  297. data.forEach(it=>{
  298. if(it.levelNo == 2){
  299. it.parentId = null;
  300. let tempData = util.convertToChildren(data.filter(t=>(t.parentId == it.orgId || t.orgId == it.orgId)), "parentId", "orgId", null);
  301. if(tempData && tempData.length > 0){
  302. tableData.push(tempData[0])
  303. }
  304. }
  305. })
  306. let topOrg = this.data.topOrg;
  307. if(topOrg){
  308. tableData.forEach(it=>{
  309. it.parentId = topOrg.orgId
  310. })
  311. }
  312. this.setData({
  313. tableData: tableData,
  314. })
  315. setTimeout(() => {
  316. this.setData({
  317. showFlag: true
  318. })
  319. }, 500)
  320. },
  321. /**
  322. * @desc :保存接口的 后续处理方法
  323. * @date : 2024/2/1 15:49
  324. * @author : 王英杰
  325. */
  326. handleData(data) {
  327. this.setData({
  328. showPop: false,
  329. })
  330. this.searchData()
  331. },
  332. /**
  333. * @desc :初始化
  334. * @date : 2024/2/1 15:49
  335. * @author : 王英杰
  336. */
  337. loadInit() {
  338. this.setData({
  339. orgName: app.globalData.user.orgName
  340. })
  341. },
  342. /**
  343. * @desc :列表收起 打开 下拉
  344. * @date : 2024/2/1 15:49
  345. * @author : 王英杰
  346. */
  347. onchange(e) {
  348. let index = e.currentTarget.dataset.index;
  349. let open = e.currentTarget.dataset.open;
  350. let tableData = this.data.tableData
  351. tableData[index].open = !open
  352. this.setData({
  353. tableData: tableData,
  354. })
  355. },
  356. /**
  357. * @desc : 跳转跳转三级部门
  358. * @date : 2024/2/1 15:49
  359. * @author : 王英杰
  360. */
  361. toSubOrg(e) {
  362. let _this = this
  363. let dataset = e.currentTarget.dataset;
  364. let chooseOrgSort = this.data.orgName + " > " + dataset.item.orgName + " > " + dataset.item_.orgName
  365. wx.navigateTo({
  366. url: this.data.route.subOrgChoose.url,
  367. events: {
  368. // 回调后,在这里给页面赋值
  369. bandData: function (e) {
  370. // _this.getData()
  371. }
  372. },
  373. success: function (res) {
  374. // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取
  375. res.eventChannel.emit('params', {
  376. item: {
  377. parentId: dataset.item_.orgId,
  378. parentName:dataset.item_.orgName,
  379. orgId_social:dataset.item_.orgId,
  380. parentId_social:dataset.item_.parentId,
  381. chooseOrgSort: chooseOrgSort
  382. }
  383. })
  384. }
  385. })
  386. },
  387. /**
  388. * @desc : 点击页面的三级部门名称 查询对应详细
  389. * @date : 2024/2/1 15:49
  390. * @author : 王英杰
  391. */
  392. clickName(e) {
  393. let item = e.currentTarget.dataset.item
  394. // let param = {}
  395. // param.orgId = item.orgId
  396. let excute = this.excute(this.data.service, this.data.service.getbyid + "/" + item.orgId, {});
  397. excute.then(res => {
  398. if (res.data.code === Constants.SUCESS_CODE) {
  399. let form = {}
  400. let data = res.data.data
  401. // form.orgId = data.orgId
  402. // form.orgCode = data.orgCode
  403. // form.parentId = data.parentId
  404. // form.parentName = data.parentName
  405. // form.orgName = data.orgName
  406. // form.remarks = data.remarks
  407. form = {...data}
  408. // 记录原始的部门Id
  409. form.orgId_social = form.orgId
  410. form.orgName_socail = form.levelName
  411. form.parentId_social = form.parentId
  412. // 部门
  413. if (data.warehouseBeanList) {
  414. let whId_data = []
  415. let names = []
  416. data.warehouseBeanList.forEach(element => {
  417. let item = {}
  418. item.whId = element.whId
  419. item.flgDefault = element.flgDefault
  420. whId_data.push(item)
  421. names.push(element['whName'])
  422. });
  423. form.whId_data = whId_data
  424. form.whName = names.join(',')
  425. }
  426. // 资金账户
  427. if (data.macBeanList) {
  428. let accountOut_data = []
  429. let names = []
  430. data.macBeanList.forEach(element => {
  431. let item = {}
  432. item.macId = element.macId
  433. item.flgDefault = element.flgDefault
  434. accountOut_data.push(item)
  435. names.push(element['macName'])
  436. });
  437. form.accountOut_data = accountOut_data
  438. form.accountOutName = names.join(',')
  439. }
  440. let form_ = {...form}
  441. form_.editFlag = false
  442. this.setData({
  443. form: JSON.stringify(form_),
  444. popTitle : this.$t('org'),
  445. showPop: true,
  446. editFlag: false,
  447. readonly: true,
  448. })
  449. }
  450. })
  451. return excute;
  452. },
  453. /**
  454. * @desc : 编辑
  455. * @date : 2024/2/1 15:49
  456. * @author : 王英杰
  457. */
  458. toEdit() {
  459. // 控制业务部门标识不允许编辑
  460. let form = JSON.parse(this.data.form)
  461. form.flgBusinessControl = form.flgBusiness
  462. form.editFlag = true
  463. this.setData({
  464. showPop: false,
  465. readonly: false,
  466. popTitle: this.$t('editDepartment'),
  467. editFlag: true,
  468. });
  469. setTimeout(() => {
  470. this.setData({
  471. showPop: true,
  472. form: JSON.stringify(form)
  473. });
  474. }, 200);
  475. },
  476. })