/******************************************************************************* * Copyright(c) 2022 dongke All rights reserved. / Confidential * 类的信息: * 1.程序名称: * 2.组织机构列表 * 编辑履历: * 作者 日期 版本 修改内容 * 王英杰 2024-2-12 1.00 *******************************************************************************/ const Constants = require('@/utils/Constants.js'); const mixins = require('@/mixins/index.js') const util = require('@/utils/util.js') const config = require('@/config/config.js'); const app = getApp() Page({ mixins: [mixins], /** * 页面的初始数据 */ data: { imageUrl: config.image_url + '/static/img/', // 弹框标题 popTitle: null, // 顶级部门 topOrg: null, readonly: false, // 查询条件 searchContent: [], form: null, //新建的数据form // 路由 routeObjName: 'org', // 路由 popContent: [{ //新建的 各个控件信息 code: 'orgCode', type: 'str', name: 'orgCode', required: false, readonly: true }, { //上级部门 code: 'parentId', name: 'parentName', title: mixins.$t("parentName"), type: 'choose', urlKey: 'chooseOrg', required: true }, { //部门名称 code: 'orgName', type: 'str', name: 'orgName', required: true }, { //可用仓库 code: 'whId', name: 'whName', title: '可用仓库', type: 'choose', urlKey: 'selectWarehouse', }, { //可用资金账号 code: 'accountOut', name: 'accountOutName', title: '可用资金账号', type: 'choose', urlKey: 'selectMoneyAccount' }, { //备注 code: 'remarks', type: 'str', title: mixins.$t("remarks"), required: false }], showFlag: true, // 弹出按钮 buttonList: [{ code: "newSubOrg", title: mixins.$t('newSubOrg'), //'确定' }], contentList: [{ code: 'flag', title: mixins.$t('enable'), //'启用', type: 'checkbox' }], btnFormData: '{\"flag\":true}', pageFlag: false, primaryKey: 'orgId', routeObjName: 'org' }, /** * @desc : 启用停用 * @date : 2024/5/7 15:49 * @author : 周兴 */ deactivateEnable(e) { if (e.detail == 'right') { let item = e.currentTarget.dataset.item //执行接口 this.handleMoreDataIsValid(this.data.service, item, 'orgId') } }, /** * @desc : 按钮点击事件回调 * @date : 2024/2/1 15:49 * @author : 王英杰 */ open(e) { let code = e.detail.name if (code == "newStaff") { //跳转员工 this.toAddStaff() } if (code == "newSubOrg") { //跳转部门 this.toadd() } }, /** * @desc :底部按钮 过滤停用启用 * @date : 2024/2/1 15:49 * @author : 王英杰 */ onEnableChange() { this.searchData() }, /** * @desc :暂时提示信息 * @date : 2024/5/7 15:49 * @author : 周兴 */ showBusinessTip(e) { util.showToast('业务部门'); }, /** * @desc :设置查询参数 * @date : 2024/2/1 15:49 * @author : 王英杰 */ setSearchParams(params) { let btnFormData = JSON.parse(this.data.btnFormData) params.pageSize = 100000 params.currentPage = 1 params.flgValid = btnFormData.flag return params }, /** * @desc :打开新建 * @date : 2024/2/1 15:49 * @author : 王英杰 */ toadd() { let form = {} form.editFlag = false // 给上级部门添加默认值 let topOrg = this.data.topOrg if (topOrg) { form.parentId = topOrg.orgId form.parentName = topOrg.orgName } let popContent = this.data.popContent // 新建时过滤掉部门 popContent = popContent.filter(it => it.code != 'orgCode') this.setData({ popContent: popContent, showPop: true, editFlag: false, popTitle: this.$t('newDepartment'), form: JSON.stringify(form) }) }, /** * @desc :关闭新建框(弹出的popup) * @date : 2024/2/1 15:49 * @author : 王英杰 */ onClosePopup() { // 使用 setTimeout 添加一秒钟延迟 setTimeout(() => { this.setData({ readonly: false, }); }, 1000); // 延迟 1000 毫秒,即 1 秒 }, /** * @desc : 关闭Pop后修改数据 * @author : 王英杰 * @date : 2024/1/26 11:46 */ editItems(data) { let params = { ...this.data.params, ...data.detail.form }; let macList = [] if (params.accountOut_data) { params.accountOut_data.forEach(element => { let item = {} item.macId = element.macId item.ownerFlag = element.flgDefault macList.push(item) }); params.macList = macList } let warehouseList = [] if (params.whId_data) { params.whId_data.forEach(element => { let item = {} item.whId = element.whId item.ownerFlag = element.flgDefault warehouseList.push(item) }); params.warehouseList = warehouseList } if (this.data.editFlag) { this.excute(this.data.service, this.data.service.update, params, true).then(res => { if (res.data.code === Constants.SUCESS_CODE) { // 保存成功清空数据 this.setData({ form: null }) // 刷新数据 this.searchData(); } }); } else { this.excute(this.data.service, this.data.service.insert, params, true).then(res => { if (res.data.code === Constants.SUCESS_CODE) { // 保存成功清空数据 this.setData({ form: null }) // 刷新数据 this.searchData(); } }); } }, /** * @desc :打开选择客户 * @date : 2024/2/1 15:49 * @author : 王英杰 */ openChooseOrg() { let that = this let addForm = that.data.addForm wx.navigateTo({ // url: "./add/add", url: this.data.route.toAdd.url, events: { bindData: function (e) { addForm.parentOrgName = e.data.name addForm.parentId = e.data.id that.setData({ addForm }) } }, success: function (res) { res.eventChannel.emit('params-org', { url: '' }) } }) }, /** * @desc : 跳转员工新建 * @date : 2024/2/1 15:49 * @author : 王英杰 */ toAddStaff() { let _this = this wx.navigateTo({ url: this.data.route.staffAdd.url, events: { // 回调后,在这里给页面赋值 bandData: function (e) { _this.getData() } }, success: function (res) { // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取 res.eventChannel.emit('params', {}) } }) }, /** * @desc : 查询 * @date : 2024/2/1 15:49 * @author : 王英杰 */ getData(params) { this.setData({ showFlag: false }) //listByTree selectByCond this.excute(this.data.service, this.data.service.listByTree, params).then(res => { if (res.data.code === Constants.SUCESS_CODE) { let data = res.data.data; // 获取顶级部门 let filters = data.filter(it => !it.parentId); if (filters && filters.length > 0) { this.setData({ topOrg: { ...filters[0] }, }) } data = data.filter(it => it.parentId) if (data && data.length > 0) { // 处理数据 this.handleSearchData(data); } } }); }, /** * @desc : 查询 后续处理 * @date : 2024/2/1 15:49 * @author : 王英杰 */ handleSearchData(data) { let tableData = [] // 把二级的parentId去掉 data.forEach(it => { if (it.levelNo == 2) { it.parentId = null; let tempData = util.convertToChildren(data.filter(t => (t.parentId == it.orgId || t.orgId == it.orgId)), "parentId", "orgId", null); if (tempData && tempData.length > 0) { tableData.push(tempData[0]) } } }) let topOrg = this.data.topOrg; if (topOrg) { tableData.forEach(it => { it.parentId = topOrg.orgId }) } this.setData({ tableData: tableData, }) setTimeout(() => { this.setData({ showFlag: true }) }, 500) }, /** * @desc :保存接口的 后续处理方法 * @date : 2024/2/1 15:49 * @author : 王英杰 */ handleData(data) { this.setData({ showPop: false, }) this.searchData() }, /** * @desc :初始化 * @date : 2024/2/1 15:49 * @author : 王英杰 */ loadInit() { this.setData({ orgName: app.globalData.user.orgName }) }, /** * @desc :列表收起 打开 下拉 * @date : 2024/2/1 15:49 * @author : 王英杰 */ onchange(e) { let index = e.currentTarget.dataset.index; let open = e.currentTarget.dataset.open; let tableData = this.data.tableData tableData[index].open = !open this.setData({ tableData: tableData, }) }, /** * @desc : 跳转跳转三级部门 * @date : 2024/2/1 15:49 * @author : 王英杰 */ toSubOrg(e) { let _this = this let dataset = e.currentTarget.dataset; let chooseOrgSort = this.data.orgName + " > " + dataset.item.orgName + " > " + dataset.item_.orgName wx.navigateTo({ url: this.data.route.subOrgChoose.url, events: { // 回调后,在这里给页面赋值 bandData: function (e) { // _this.getData() } }, success: function (res) { // 通过eventChannel向被打开页面传送数据 TODO 测试例子url是写死的,实际中,需要从route中读取 res.eventChannel.emit('params', { item: { parentId: dataset.item_.orgId, parentName: dataset.item_.orgName, orgId_social: dataset.item_.orgId, parentId_social: dataset.item_.parentId, chooseOrgSort: chooseOrgSort } }) } }) }, /** * @desc : 点击页面的三级部门名称 查询对应详细 * @date : 2024/2/1 15:49 * @author : 王英杰 */ clickName(e) { let item = e.currentTarget.dataset.item // let param = {} // param.orgId = item.orgId let excute = this.excute(this.data.service, this.data.service.getbyid + "/" + item.orgId, {}); excute.then(res => { if (res.data.code === Constants.SUCESS_CODE) { let form = {} let data = res.data.data // form.orgId = data.orgId // form.orgCode = data.orgCode // form.parentId = data.parentId // form.parentName = data.parentName // form.orgName = data.orgName // form.remarks = data.remarks form = { ...data } // 记录原始的部门Id form.orgId_social = form.orgId form.orgName_socail = form.levelName form.parentId_social = form.parentId // 部门 if (data.warehouseBeanList) { let whId_data = [] let names = [] data.warehouseBeanList.forEach(element => { let item = {} item.whId = element.whId item.flgDefault = element.flgDefault whId_data.push(item) names.push(element['whName']) }); form.whId_data = whId_data form.whName = names.join(',') } // 资金账户 if (data.macBeanList) { let accountOut_data = [] let names = [] data.macBeanList.forEach(element => { let item = {} item.macId = element.macId item.flgDefault = element.flgDefault accountOut_data.push(item) names.push(element['macName']) }); form.accountOut_data = accountOut_data form.accountOutName = names.join(',') } let form_ = { ...form } form_.editFlag = false let popContent = this.data.popContent let filters = popContent.filter(it => it.code == 'orgCode'); // 说明部门编码被过滤掉了,需要加回来 if (!filters || filters.length == 0) { popContent.unshift( { code: 'orgCode', type: 'str', name: 'orgCode', required: false, readonly: true }) } this.setData({ popContent:popContent, form: JSON.stringify(form_), popTitle: this.$t('org'), showPop: true, editFlag: false, readonly: true, }) } }) return excute; }, /** * @desc : 编辑 * @date : 2024/2/1 15:49 * @author : 王英杰 */ toEdit() { // 控制业务部门标识不允许编辑 let form = JSON.parse(this.data.form) form.flgBusinessControl = form.flgBusiness form.editFlag = true this.setData({ showPop: false, readonly: false, popTitle: this.$t('editDepartment'), editFlag: true, }); setTimeout(() => { this.setData({ showPop: true, form: JSON.stringify(form) }); }, 200); }, })