提交 20c05fcc 作者: wk

组织切换组织树优化替换

父级 6199a14c
...@@ -3,16 +3,16 @@ const $config = { ...@@ -3,16 +3,16 @@ const $config = {
loginTemplateNo: "industry-0001", loginTemplateNo: "industry-0001",
systemCode: "buildingSite", systemCode: "buildingSite",
/* 授权码 */ /* 授权码 */
// authCode: "477A0661-EF04-11F7-9D69-0BDD73F06500", authCode: "477A0661-EF04-11F7-9D69-0BDD73F06500",
// authCode: "07EC0FDA-0249-6DB3-7422-0AFFF34E0E90", //测试 // authCode: "07EC0FDA-0249-6DB3-7422-0AFFF34E0E90", //测试
authCode: "D0539533-E169-5338-8ED7-3FAD554F4F62", //正式 // authCode: "D0539533-E169-5338-8ED7-3FAD554F4F62", //正式
pageSize: 20, pageSize: 20,
isPage: 1, isPage: 1,
smsCfg: "industry", smsCfg: "industry",
/* api域名 */ /* api域名 */
// base: "https://dev-console-api.hzdingmao.com", base: "https://dev-console-api.hzdingmao.com",
// base: "https://test-console-api.hzdingmao.com", // base: "https://test-console-api.hzdingmao.com",
base: "https://console-api.hibuilding.cn", // base: "https://console-api.hibuilding.cn",
/* 工地沟通日 */ /* 工地沟通日 */
// gtrBase:"https://cwcd-h5.huizhucloud.com",//测试 // gtrBase:"https://cwcd-h5.huizhucloud.com",//测试
gtrBase: "https://gdt-front-mobile.hibuilding.cn", //生产 gtrBase: "https://gdt-front-mobile.hibuilding.cn", //生产
......
...@@ -321,8 +321,8 @@ ...@@ -321,8 +321,8 @@
} }
.ly-tree-node__icon { .ly-tree-node__icon {
width: 30rpx; width: 40rpx;
height: 30rpx; height: 40rpx;
overflow: hidden; overflow: hidden;
margin-right: 16rpx; margin-right: 16rpx;
} }
...@@ -334,8 +334,8 @@ ...@@ -334,8 +334,8 @@
} }
.ly-tree-node__label { .ly-tree-node__label {
font-size: 32rpx; font-size: 28rpx;
color: #333333; color: #606266;
width: 750rpx; width: 750rpx;
} }
......
...@@ -7,14 +7,24 @@ ...@@ -7,14 +7,24 @@
</template> </template>
<template v-else> <template v-else>
<view v-if="isEmpty || !visible" class="ly-empty"> <view v-if="isEmpty || !visible"
class="ly-empty">
{{emptyText}} {{emptyText}}
</view> </view>
<view :key="updateKey" class="ly-tree" :class="{'is-empty': isEmpty || !visible}" role="tree" <view :key="updateKey"
class="ly-tree"
:class="{'is-empty': isEmpty || !visible}"
role="tree"
name="LyTreeExpand"> name="LyTreeExpand">
<ly-tree-node v-for="nodeId in childNodesId" :nodeId="nodeId" :render-after-expand="renderAfterExpand" <ly-tree-node v-for="nodeId in childNodesId"
:show-checkbox="showCheckbox" :show-radio="showRadio" :check-only-leaf="checkOnlyLeaf" :nodeId="nodeId"
:key="getNodeKey(nodeId)" :indent="indent" :icon-class="iconClass"> :render-after-expand="renderAfterExpand"
:show-checkbox="showCheckbox"
:show-radio="showRadio"
:check-only-leaf="checkOnlyLeaf"
:key="getNodeKey(nodeId)"
:indent="indent"
:icon-class="iconClass">
</ly-tree-node> </ly-tree-node>
</view> </view>
</template> </template>
...@@ -24,9 +34,7 @@ ...@@ -24,9 +34,7 @@
<script> <script>
import Vue from 'vue' import Vue from 'vue'
import TreeStore from './model/tree-store.js'; import TreeStore from './model/tree-store.js';
import { import {getNodeKey} from './tool/util.js';
getNodeKey
} from './tool/util.js';
import LyTreeNode from './ly-tree-node.vue'; import LyTreeNode from './ly-tree-node.vue';
export default { export default {
...@@ -215,9 +223,7 @@ ...@@ -215,9 +223,7 @@
if (this.store.root) { if (this.store.root) {
const childNodes = this.store.root.getChildNodes(this.childNodesId); const childNodes = this.store.root.getChildNodes(this.childNodesId);
return !childNodes || childNodes.length === 0 || childNodes.every(({ return !childNodes || childNodes.length === 0 || childNodes.every(({visible}) => !visible);
visible
}) => !visible);
} }
return true; return true;
...@@ -247,7 +253,7 @@ ...@@ -247,7 +253,7 @@
'store.root.visible'(newVal) { 'store.root.visible'(newVal) {
this.visible = newVal; this.visible = newVal;
}, },
childNodesId() { childNodesId(){
this.$nextTick(() => { this.$nextTick(() => {
this.$emit('ly-tree-render-completed'); this.$emit('ly-tree-render-completed');
}); });
...@@ -344,8 +350,7 @@ ...@@ -344,8 +350,7 @@
setCheckAll(isCheckAll = true) { setCheckAll(isCheckAll = true) {
if (this.showRadio) throw new Error('You set the "show-radio" property, so you cannot select all nodes'); if (this.showRadio) throw new Error('You set the "show-radio" property, so you cannot select all nodes');
if (!this.showCheckbox) console.warn( if (!this.showCheckbox) console.warn('You have not set the property "show-checkbox". Please check your settings');
'You have not set the property "show-checkbox". Please check your settings');
this.store.setCheckAll(isCheckAll); this.store.setCheckAll(isCheckAll);
}, },
...@@ -526,8 +531,8 @@ ...@@ -526,8 +531,8 @@
position: relative; position: relative;
cursor: default; cursor: default;
background: #FFF; background: #FFF;
color: #333333; color: #606266;
padding: 20rpx; padding: 30rpx;
} }
.ly-tree.is-empty { .ly-tree.is-empty {
...@@ -541,7 +546,6 @@ ...@@ -541,7 +546,6 @@
justify-content: center; justify-content: center;
margin-top: 100rpx; margin-top: 100rpx;
} }
/* lyEmpty-end */ /* lyEmpty-end */
/* lyLoader-start */ /* lyLoader-start */
...@@ -583,11 +587,9 @@ ...@@ -583,11 +587,9 @@
left: 1em; left: 1em;
animation-delay: 0.32s; animation-delay: 0.32s;
} }
/* lyLoader-end */ /* lyLoader-end */
@keyframes load { @keyframes load {
0%, 0%,
80%, 80%,
100% { 100% {
......
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
uni.scanCode({ uni.scanCode({
success(res) { success(res) {
let result = res.result let result = res.result
if (result.indexOf("?") != -1) { if (result.indexOf("?") != -1) { //一物一码
let param = result.split("?")[1] let param = result.split("?")[1]
let params = param.replace(/&/g, '","').replace(/=/g, '":"') let params = param.replace(/&/g, '","').replace(/=/g, '":"')
let paramJson = `{"${params}"}` let paramJson = `{"${params}"}`
...@@ -129,7 +129,8 @@ ...@@ -129,7 +129,8 @@
}) })
} }
} else { } else {
that.$toast.showToast("二维码格式不正确") that.orgCode(res)
// that.$toast.showToast("二维码格式不正确")
} }
}, },
fail() { fail() {
...@@ -137,6 +138,36 @@ ...@@ -137,6 +138,36 @@
} }
}) })
}, },
orgCode(res) {
try {
let result = JSON.parse(res.result)
if (result && typeof result == 'object') {
let type = result.type
if (type == "company") {
this.code = result.text
uni.navigateTo({
url: `/pages/login/joinDepartment/joinDepartment?code=${this.code}&type=company`
})
} else if (type == "project") {
this.code = result.text
uni.navigateTo({
url: `/pages/login/joinDepartment/joinDepartment?code=${this.code}&type=project&projectId=${result.ext.id}`
})
} else if (type == "department") {
this.code = result.text
uni.navigateTo({
url: `/pages/login/joinDepartment/joinDepartment?code=${this.code}&type=department`
})
} else {
this.$toast.showToast("二维码格式不正确")
}
} else {
this.$toast.showToast("二维码格式不正确")
}
} catch (e) {
this.$toast.showToast("二维码格式不正确")
}
}
} }
} }
</script> </script>
......
...@@ -473,7 +473,10 @@ ...@@ -473,7 +473,10 @@
"navigationBarTextStyle": "white", "navigationBarTextStyle": "white",
"navigationBarTitleText": "智慧工地一点通", "navigationBarTitleText": "智慧工地一点通",
"navigationBarBackgroundColor": "#3B73FE", "navigationBarBackgroundColor": "#3B73FE",
"backgroundColor": "#3B73FE" "backgroundColor": "#3B73FE",
"usingComponents": {
"ly-tree-node": "/components/ly-tree/ly-tree-node"
}
}, },
"uniIdRouter": {}, "uniIdRouter": {},
"tabBar": { "tabBar": {
......
...@@ -189,7 +189,7 @@ ...@@ -189,7 +189,7 @@
return return
} }
uni.navigateTo({ uni.navigateTo({
url: "/pages/mine/changeOrg/changeOrg" url: "/pagesSub/mine/changeOrg/changeOrg"
}) })
}, },
toIndex(model) { toIndex(model) {
......
...@@ -568,21 +568,17 @@ ...@@ -568,21 +568,17 @@
//如果是工人 获取工人当前项目 //如果是工人 获取工人当前项目
if (this.role == 'PM') { if (this.role == 'PM') {
if (jobs) { if (jobs) {
let currentJob = jobs[0]
uni.setStorageSync("org_no", currentJob.org_no)
uni.setStorageSync("org_id", currentJob.org_id)
//当前岗位 判断当前岗位是项目部还是其他 //当前岗位 判断当前岗位是项目部还是其他
if (this.userInfo.user.dept_type == '2') { //项目级 if (this.userInfo.user.dept_type == '2') { //项目级
this.project_id = uni.getStorageSync("project_id") uni.setStorageSync("org_name", currentJob.dept_name)
console.log("当前组织", this.project_id);
if (!this.project_id) {
this.loadProject()
} else { } else {
this.initData()
}
} else {
let currentJob = jobs[0]
uni.setStorageSync("org_no", currentJob.org_no)
uni.setStorageSync("org_name", currentJob.org_name) uni.setStorageSync("org_name", currentJob.org_name)
this.initData() this.initData()
} }
this.initData()
} }
} else { } else {
this.project_id = uni.getStorageSync("project_id") this.project_id = uni.getStorageSync("project_id")
......
...@@ -11,8 +11,9 @@ ...@@ -11,8 +11,9 @@
<view class="enter">{{isCurrent(item)?"当前组织":""}}</view> <view class="enter">{{isCurrent(item)?"当前组织":""}}</view>
</view> </view>
<view class="job-content" v-if="item.isOpen"> <view class="job-content" v-if="item.isOpen">
<view class="j-item" v-for="(job,jIndex) in item.job_list" :key="jIndex"> <view class="j-item" v-for="(job,jIndex) in item.job_list" :key="jIndex"
<view class="j-name" @click="jobSel(item,job)"> @click="jobSel(item,job)">
<view class="j-name">
{{job.dept_name}}-{{job.job_name}} {{job.dept_name}}-{{job.job_name}}
</view> </view>
<image :src="setSelImage(job)" class="image"></image> <image :src="setSelImage(job)" class="image"></image>
...@@ -221,6 +222,7 @@ ...@@ -221,6 +222,7 @@
.job-content { .job-content {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-left: 40rpx;
.j-item { .j-item {
padding: 30rpx 30rpx 0 30rpx; padding: 30rpx 30rpx 0 30rpx;
......
...@@ -4,16 +4,25 @@ ...@@ -4,16 +4,25 @@
<view class="search"> <view class="search">
<view class="search-content"> <view class="search-content">
<image src="../../../static/ic-search.png" class="image"></image> <image src="../../../static/ic-search.png" class="image"></image>
<input placeholder="搜索" placeholder-class="placeholderStyle" @input="search" class="inputStyle" /> <input placeholder="搜索" placeholder-class="placeholderStyle" @input="search" class="inputStyle"
v-model="key" />
</view> </view>
</view> </view>
<view class="org-content"> <ly-tree :tree-data="trees" :props="treeProps" node-key="id" @node-expand="handleNodeExpand"
@node-click="handleNodeClick" :showRadio="true" ref="tree" :defaultCheckedKeys="currentKeys"
:defaultExpandedKeys="currentKeys" childVisibleForFilterNode="true" :filter-node-method="filterNode"
:checkOnClickNode="true" :childVisibleForFilterNode="true">
</ly-tree>
<view class="uni-group-button">
<view class="uni-blue-button" @click="toSwitch">确认切换该组织</view>
</view>
<!-- 暂时处理 -->
<view class="org-content" v-if="false">
<view class="org-list"> <view class="org-list">
<view class="org-item" v-for="(tree,index) in trees" :key="index"> <view class="org-item" v-for="(tree,index) in trees" :key="index">
<view class="org"> <view class="org">
<image <image v-if="isImgShow(tree)" :src="setImgSrc(tree)" class="image"
:src="tree.isOpen?'../../../static/icon_up_arrow.png':'../../../static/icon_drop_arrow.png'" @click="toNextLevel(tree,index)">
class="image" @click="toNextLevel(tree,index)">
</image> </image>
<view class="name" @click="toNextLevel(tree,index)">{{tree.name}}</view> <view class="name" @click="toNextLevel(tree,index)">{{tree.name}}</view>
<view class=" enter" @click="itemClick(tree)">进入</view> <view class=" enter" @click="itemClick(tree)">进入</view>
...@@ -21,10 +30,8 @@ ...@@ -21,10 +30,8 @@
<view v-if="tree.isOpen" style="margin-top: 20rpx;"> <view v-if="tree.isOpen" style="margin-top: 20rpx;">
<view class="org-item" v-for="(oneLevel,oneIndex) in tree.children_list" :key="oneIndex"> <view class="org-item" v-for="(oneLevel,oneIndex) in tree.children_list" :key="oneIndex">
<view class="org"> <view class="org">
<image <image v-if="isImgShow(oneLevel)" :src="setImgSrc(oneLevel)" class="image"
v-if="!oneLevel.project_id&&oneLevel.children_list&&oneLevel.children_list.length>0" @click="toNextChild(index,oneLevel,oneIndex)"></image>
:src="oneLevel.isOpen?'../../../static/icon_up_arrow.png':'../../../static/icon_drop_arrow.png'"
class="image" @click="toNextChild(index,oneLevel,oneIndex)"></image>
<view class="name" @click="toNextChild(index,oneLevel,oneIndex)">{{oneLevel.name}} <view class="name" @click="toNextChild(index,oneLevel,oneIndex)">{{oneLevel.name}}
</view> </view>
<view class="enter" @click="itemClick(oneLevel)">进入</view> <view class="enter" @click="itemClick(oneLevel)">进入</view>
...@@ -51,14 +58,75 @@ ...@@ -51,14 +58,75 @@
export default { export default {
data() { data() {
return { return {
key: "",
trees: [], trees: [],
temp: [] temp: [],
treeProps: function() {
return {
label: 'name', // 指把数据中的‘personName’当做label也就是节点名称
children: 'children_list' // 指
}
},
currentKeys: []
} }
}, },
onLoad() { onLoad() {
var currentId = uni.getStorageSync("org_id")
if (currentId) {
this.currentKeys.push(currentId)
}
console.log("当前选中", this.currentKey);
this.getOrgTree() this.getOrgTree()
}, },
watch: {
key(val) {
this.$refs.tree.filter(val);
}
},
methods: { methods: {
handleNodeClick(obj) {
// console.log('handleNodeClick', obj);
},
handleNodeExpand(obj) {
},
filterNode(value, data) {
if (!value) return true;
// if (!data.label) return false
return data.name.indexOf(value) != -1;
},
toSwitch() {
var node = this.$refs.tree.getCheckedNodes()
if (node.length < 0) {
this.$toast.showToast("请选择切换的组织")
return
}
let that = this
uni.showModal({
title: '提示',
content: '确定切换到该组织?',
showCancel: true,
confirmText: "切换",
confirmColor: '#1890FF',
success: res => {
if (res.confirm) {
that.switchOrg(node[0])
}
}
})
},
setImgSrc(item) {
return item.isOpen ? '../../../static/icon_up_arrow.png' : '../../../static/icon_drop_arrow.png'
},
isImgShow(level) {
if (level.project_id) {
return false
}
if (level.children_list && level.children_list.length > 0) {
return true
}
return false
},
dealProject(list) { dealProject(list) {
var projects = [] var projects = []
list.forEach((item) => { list.forEach((item) => {
...@@ -73,7 +141,8 @@ ...@@ -73,7 +141,8 @@
Api.getOrgTree({ Api.getOrgTree({
data: { data: {
company_id: uni.getStorageSync("company_id"), company_id: uni.getStorageSync("company_id"),
org_no: getApp().globalData.userInfo.user.org_no org_no: getApp().globalData.userInfo.user.org_no,
show_current_level: 1
} }
}).then((result) => { }).then((result) => {
console.log("组织树", result); console.log("组织树", result);
...@@ -85,11 +154,11 @@ ...@@ -85,11 +154,11 @@
item.dept_no == getApp().globalData.userInfo.user.dept_no item.dept_no == getApp().globalData.userInfo.user.dept_no
) )
} else { } else {
if (list[0].no == '001') { // if (list[0].no == '001') {
this.trees = list[0].children_list // this.trees = list[0].children_list
} else { // } else {
this.trees = list this.trees = list
} // }
} }
this.temp = list[0].children_list this.temp = list[0].children_list
} }
...@@ -156,62 +225,63 @@ ...@@ -156,62 +225,63 @@
}) })
}, },
search(e) { search(e) {
var key = e.detail.value // var key = e.detail.value
if (key) { // this.$refs.tree.filter(key, null)
var list = [] // if (key) {
var sourceData = this.temp // var list = []
console.log("数据源", sourceData); // var sourceData = this.temp
sourceData.forEach((item) => { // console.log("数据源", sourceData);
if (item.name.indexOf(key) != -1) { // sourceData.forEach((item) => {
item.isOpen = true // if (item.name.indexOf(key) != -1) {
list.push(item) // item.isOpen = true
} else { // list.push(item)
var children = item.children_list // } else {
var childrens = [] // var children = item.children_list
if (children) { // var childrens = []
children.forEach((child) => { // if (children) {
if (child.name.indexOf(key) != -1) { // children.forEach((child) => {
child.isOpen = true // if (child.name.indexOf(key) != -1) {
var childs = child.children_list // child.isOpen = true
var childList = [] // var childs = child.children_list
if (childs) { // var childList = []
childs.forEach((childItem) => { // if (childs) {
if (childItem.name.indexOf(key) != -1) { // childs.forEach((childItem) => {
childList.push(childItem) // if (childItem.name.indexOf(key) != -1) {
} // childList.push(childItem)
}) // }
} // })
child.children_list = childList // }
childrens.push(child) // child.children_list = childList
} else { // childrens.push(child)
var childs = child.children_list // } else {
var childList = [] // var childs = child.children_list
if (childs) { // var childList = []
childs.forEach((childItem) => { // if (childs) {
if (childItem.name.indexOf(key) != -1) { // childs.forEach((childItem) => {
childList.push(childItem) // if (childItem.name.indexOf(key) != -1) {
} // childList.push(childItem)
}) // }
} // })
if (childList.length > 0) { // }
child.children_list = childList // if (childList.length > 0) {
child.isOpen = true // child.children_list = childList
childrens.push(child) // child.isOpen = true
} // childrens.push(child)
} // }
}) // }
} // })
if (childrens.length > 0) { // }
item.isOpen = true // if (childrens.length > 0) {
item.children_list = childrens // item.isOpen = true
list.push(item) // item.children_list = childrens
} // list.push(item)
} // }
}) // }
this.trees = list // })
} else { // this.trees = list
this.getOrgTree() // } else {
} // this.getOrgTree()
// }
} }
} }
...@@ -227,7 +297,7 @@ ...@@ -227,7 +297,7 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
margin: 30rpx 30rpx 0 30rpx; margin: 30rpx;
.search-content { .search-content {
display: flex; display: flex;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
Please register or to comment