Commit 8b8a956b by zhangleyuan

feat:解决合并代码后的冲突

parents 559d02c0 16af0617
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module.exports = { module.exports = {
isWeiXin() { isWeiXin() {
const ua = navigator.userAgent.toLowerCase(); const ua = navigator.userAgent.toLowerCase();
return ua.indexOf('micromessenger') > 0; return (ua.indexOf('micromessenger') > 0) && !(/wxwork/i.test(navigator.userAgent));
}, },
isWorkWx (){ isWorkWx (){
return /wxwork/i.test(navigator.userAgent) return /wxwork/i.test(navigator.userAgent)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: wufan * @Author: wufan
* @Date: 2021-05-11 10:21:37 * @Date: 2021-05-11 10:21:37
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-08-11 17:27:32 * @LastEditTime: 2021-08-12 15:02:18
* @Description: 企业微信api * @Description: 企业微信api
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* *
...@@ -12,72 +12,35 @@ import Platform from '@/common/js/platform'; ...@@ -12,72 +12,35 @@ import Platform from '@/common/js/platform';
import User from '@/common/js/user'; import User from '@/common/js/user';
import Service from '@/common/js/service'; import Service from '@/common/js/service';
console.log(wx.agentConfig,' console.log(wx.agentConfig) ')
export default class WechatApi { export default class WechatApi {
static async initConfig(params = { isAgentConfig: false, url: '' }) { static initConfig(params = { isAgentConfig: false, url: '' }) {
if (Platform.isWorkWx()) { if (Platform.isWorkWx()) {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
console.log(1111111111111111111111111111111111) console.log(1111111111111111111111111111111111)
Service.Hades('anon/hades/getWxCorpJSAPISignature', { Service.Hades('anon/hades/getWxCorpJSAPISignature', {
storeId: User.getStoreId(), storeId: User.getStoreId(),
url: params.url, url: window.location.href.split('#')[0],
}).then((result) => { }).then((result) => {
const res = result.result; const res = result.result;
this.config({ wx.config({
beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题 beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: res.appId, // 必填,企业微信的corpID appId: res.appId, // 必填,企业微信的corpID
timestamp: res.timestamp, // 必填,生成签名的时间戳 timestamp: res.timestamp, // 必填,生成签名的时间戳
nonceStr: res.nonceStr, // 必填,生成签名的随机串 nonceStr: res.nonceStr, // 必填,生成签名的随机串
signature: res.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法 signature: res.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: ['chooseImage', 'shareToExternalContact', 'selectExternalContact', 'selectEnterpriseContact'], jsApiList: ['scanQRCode'],
}).then(() => { });
console.log(2222222222222222222222222222222222222222) })
Service.Hades('anon/hades/getWxWorkJSAPISignature', { wx.ready(() => {
storeId: User.getStoreId(),
url: params.url,
}).then((result2) => {
console.log(333333333333333333333333333333333)
const res2 = result2.result;
this.agentConfig({
corpid: res2.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: res2.agentid, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: res2.timestamp, // 必填,生成签名的时间戳
nonceStr: res2.nonceStr, // 必填,生成签名的随机串
signature: res2.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ['selectExternalContact', 'getCurExternalContact', 'getContext', 'shareToExternalContact', 'sendChatMessage', 'shareToExternalChat', 'startLiving', 'replayLiving'],
success: (res) => {
console.log(res, 'res-agentconfig');
console.info('window.WWOpenData', window.WWOpenData);
resolve(res);
},
fail: (err) => {
console.log(1213545344545)
console.log(err, 'err-agentconfig');
reject(err);
},
});
});
})
.catch((err)=> {
console.log("GGGGGGGGGGGGG",err)
})
});
})
} else {
if (params.isAgentConfig) {
console.log(32132132, 'cesgu')
return new Promise(async (resolve, reject) => {
Service.Hades('anon/hades/getWxWorkJSAPISignature', { Service.Hades('anon/hades/getWxWorkJSAPISignature', {
storeId: User.getStoreId(), storeId: User.getStoreId(),
url: params.url, url: window.location.href.split('#')[0],
}).then((result2) => { }).then((result2) => {
const res2 = result2.result; const res2 = result2.result;
this.agentConfig({ wx.agentConfig({
corpid: res2.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 corpid: res2.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: res2.agentid, // 必填,企业微信的应用id (e.g. 1000247) agentid: res2.agentid, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: res2.timestamp, // 必填,生成签名的时间戳 timestamp: res2.timestamp, // 必填,生成签名的时间戳
...@@ -85,58 +48,55 @@ export default class WechatApi { ...@@ -85,58 +48,55 @@ export default class WechatApi {
signature: res2.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法 signature: res2.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ['selectExternalContact', 'getCurExternalContact', 'getContext', 'shareToExternalContact', 'sendChatMessage', 'shareToExternalChat', 'startLiving', 'replayLiving'], jsApiList: ['selectExternalContact', 'getCurExternalContact', 'getContext', 'shareToExternalContact', 'sendChatMessage', 'shareToExternalChat', 'startLiving', 'replayLiving'],
success: (res) => { success: (res) => {
console.log(res, 'res-agentconfig'); console.log(res, 'agentConfig 成功', 'res-agentconfig');
console.info('window.WWOpenData', window.WWOpenData);
resolve(res); resolve(res);
}, },
fail: (err) => { fail: (err) => {
console.log(1213545344545) console.log(1213545344545)
console.log(err, 'err-agentconfig'); console.log(err, 'err-agentconfig');
reject(err);
}, },
}); });
}); });
}); });
} wx.error((err) => {
} console.log('getWxCorpJSAPISignature', err)
});
} })
static async config(config) {
return new Promise((resolve, reject) => {
console.info('wx.config', config);
wx.config(config);
wx.ready(resolve);
wx.error(reject);
}).then(
() => {
console.info('wx.ready');
},
(error) => {
console.error('wx.error', error);
throw error;
}
);
}
static async agentConfig(config) { } else {
wx.agentConfig({ ...config });
}
static getCurExternalContact() { return new Promise(async (resolve, reject) => {
return new Promise((resolve, reject) => { Service.Hades('anon/hades/getWxWorkJSAPISignature', {
wx.ready(() => { storeId: User.getStoreId(),
wx.invoke('getCurExternalContact', {}, function (res) { url: window.location.href.split('#')[0],
if (res.err_msg == 'getCurExternalContact:ok') { }).then((result2) => {
resolve(res.userId); //返回当前外部联系人userId const res2 = result2.result;
} else { wx.agentConfig({
reject(res.err_msg); //错误处理 corpid: res2.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
} agentid: res2.agentid, // 必填,企业微信的应用id (e.g. 1000247)
timestamp: res2.timestamp, // 必填,生成签名的时间戳
nonceStr: res2.nonceStr, // 必填,生成签名的随机串
signature: res2.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ['selectExternalContact', 'getCurExternalContact', 'getContext', 'shareToExternalContact', 'sendChatMessage', 'shareToExternalChat', 'startLiving', 'replayLiving'],
success: (res) => {
console.log(res, 'agentConfig 成功', 'res-agentconfig');
resolve(res);
},
fail: (err) => {
console.log(1213545344545)
console.log(err, 'err-agentconfig');
},
});
}); });
}); });
}); }
} }
static getContext() { static getContext() {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
wx.ready(() => { wx.ready(() => {
...@@ -156,13 +116,13 @@ export default class WechatApi { ...@@ -156,13 +116,13 @@ export default class WechatApi {
wx.ready(() => { wx.ready(() => {
wx.invoke('startLiving', { wx.invoke('startLiving', {
"livingId": id, "livingId": id,
}, function(res) { }, function (res) {
if (res.err_msg === "startLiving:ok") { if (res.err_msg === "startLiving:ok") {
resolve(true) resolve(true)
} else { } else {
reject(res.err_msg); //错误处理 reject(res.err_msg); //错误处理
} }
}); });
}); });
}) })
} }
...@@ -171,8 +131,7 @@ export default class WechatApi { ...@@ -171,8 +131,7 @@ export default class WechatApi {
wx.ready(() => { wx.ready(() => {
wx.invoke('replayLiving', { wx.invoke('replayLiving', {
"livingId": id, "livingId": id,
}, function(res) { }, function (res) {
console.log("WorkWXAPI 进入直播间",res)
if (res.err_msg === "replayLiving:ok") { if (res.err_msg === "replayLiving:ok") {
resolve(true) resolve(true)
} else { } else {
...@@ -196,7 +155,7 @@ export default class WechatApi { ...@@ -196,7 +155,7 @@ export default class WechatApi {
} }
reject(err); //错误处理 reject(err); //错误处理
} }
}); });
}); });
}) })
} }
......
/* /*
* @Author: 陈剑宇 * @Author: 陈剑宇
* @Date: 2020-05-07 14:43:01 * @Date: 2020-05-07 14:43:01
* @LastEditTime: 2021-06-22 16:49:06 * @LastEditTime: 2021-08-11 22:52:04
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: * @Description:
* @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts * @FilePath: /wheat-web-demo/src/domains/basic-domain/constants.ts
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-20 09:21:40 * @Date: 2020-08-20 09:21:40
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-06-11 15:17:56 * @LastEditTime: 2021-08-11 22:50:48
* @Description: * @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-24 12:20:57 * @Date: 2020-08-24 12:20:57
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-08-11 21:22:26 * @LastEditTime: 2021-08-12 15:01:57
* @Description: * @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
--> -->
...@@ -40,17 +40,25 @@ ...@@ -40,17 +40,25 @@
work correctly both with client-side routing and a non-root public URL. work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`. Learn how to configure a non-root public URL by running `npm run build`.
--> -->
<title>小麦企学院</title> <script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
<script type="text/javascript" src="https://image.xiaomaiketang.com/xm/iscroll-zoom-min.js"></script> <script type="text/javascript" src="https://image.xiaomaiketang.com/xm/iscroll-zoom-min.js"></script>
<script type="text/javascript" src="https://image.xiaomaiketang.com/xm/hammer.min.js"></script> <script type="text/javascript" src="https://image.xiaomaiketang.com/xm/hammer.min.js"></script>
<script type="text/javascript" src="https://image.xiaomaiketang.com/xm/lrz.all.bundle.js"></script> <script type="text/javascript" src="https://image.xiaomaiketang.com/xm/lrz.all.bundle.js"></script>
<script type="text/javascript" src="https://image.xiaomaiketang.com/xm/PhotoClip.js"></script> <script type="text/javascript" src="https://image.xiaomaiketang.com/xm/PhotoClip.js"></script>
<script type="text/javascript" charset="utf-8" src="//g.alicdn.com/sd/ncpc/nc.js?t=2015052012"></script> <script type="text/javascript" charset="utf-8" src="//g.alicdn.com/sd/ncpc/nc.js?t=2015052012"></script>
<script type="text/javascript" src="https://xiaomai-js.oss-cn-hangzhou.aliyuncs.com/loghub-xm-0.0.1-beta.js"></script> <script type="text/javascript" src="https://xiaomai-js.oss-cn-hangzhou.aliyuncs.com/loghub-xm-0.0.1-beta.js"></script>
<script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script type="text/javascript" src="//open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>
</head> </head>
<body> <body>
<script>
setTimeout(()=>{
if(!wx.agentConfig){
window.location.reload()
}
},100)
</script>
<noscript>You need to enable JavaScript to run this app.</noscript> <noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div> <div id="root"></div>
<!-- <!--
......
import React, { useEffect, useState } from "react"; import React, { useEffect, useState, useRef } from "react";
import { withRouter } from "react-router-dom"; import { withRouter } from "react-router-dom";
import { Tree, Input, Dropdown, Menu,Button,Modal,message,AutoComplete,Tooltip} from "antd"; import { Tree, Input, Dropdown, Menu, Button, Modal, message, AutoComplete, Tooltip } from "antd";
import AddOrEditPostGroupModal from "../modal/AddOrEditPostGroupModal"; import AddOrEditPostGroupModal from "../modal/AddOrEditPostGroupModal";
import User from '@/common/js/user' import User from '@/common/js/user'
import StoreService from "@/domains/store-domain/storeService"; import StoreService from "@/domains/store-domain/storeService";
import { DepType } from '@/domains/store-domain/constants'; import { DepType } from '@/domains/store-domain/constants';
import Bus from '@/core/bus'; import Bus from '@/core/bus';
import WWOpenDataCom from '@/components/WWOpenDataCom'; import WWOpenDataCom from '@/components/WWOpenDataCom';
import "./LeftStructureTree.less"; import "./LeftStructureTree.less";
...@@ -13,51 +13,59 @@ const { Search } = Input; ...@@ -13,51 +13,59 @@ const { Search } = Input;
const { DirectoryTree } = Tree; const { DirectoryTree } = Tree;
const { Option } = AutoComplete; const { Option } = AutoComplete;
function LeftStructureTree(props) { function LeftStructureTree(props) {
const {treeType} = props; const { treeType } = props;
const [treeData,setTreeData]=useState([]); const [treeData, setTreeData] = useState([]);
const [addOrEditPostGroupShow, setAddOrEditPostGroupShow] = useState(false); const [addOrEditPostGroupShow, setAddOrEditPostGroupShow] = useState(false);
const [postGroupModalLevel, setPostGroupModalLevel] = useState(""); const [postGroupModalLevel, setPostGroupModalLevel] = useState("");
const [operatePostGroupModalType,setOperatePostGroupModalType] = useState(""); const [operatePostGroupModalType, setOperatePostGroupModalType] = useState("");
const [postGroupModalTitle,setPostGroupModalTitle] = useState(""); const [postGroupModalTitle, setPostGroupModalTitle] = useState("");
const [postGroupModalLable,setPostGroupModalLable] = useState(""); const [postGroupModalLable, setPostGroupModalLable] = useState("");
const [postGroupName, setPostGroupName] = useState(""); const [postGroupName, setPostGroupName] = useState("");
const [currentGroupData,setCurrentGroupData] = useState({}); const [currentGroupData, setCurrentGroupData] = useState({});
const [completeOptions,setCompleteOption] = useState([]); const [completeOptions, setCompleteOption] = useState([]);
const [selectedKeys,setSelectedKeys]= useState([]); // 设置选中的部门key值 const [selectedKeys, setSelectedKeys] = useState([]); // 设置选中的部门key值
const [queryName,setQueryName] = useState(''); // 搜索框内的值 const [queryName, setQueryName] = useState(''); // 搜索框内的值
const [selctQueryName,setSelctQueryName]= useState(''); // 搜索出结果后最终选择的名字 const [selctQueryName, setSelctQueryName] = useState(''); // 搜索出结果后最终选择的名字
const [postGroupTreeData,setPostGroupTreeData] = useState([]); // 为了判定创建和编辑时的数据会不会重明 const [postGroupTreeData, setPostGroupTreeData] = useState([]); // 为了判定创建和编辑时的数据会不会重明
const [open,setOpen]=useState(false); const [open, setOpen] = useState(false);
const timer = useRef(null)
useEffect(()=>{ const queryNameRef = useRef(null)
useEffect(() => {
queryNameRef.current = queryName
}, [
queryName
])
useEffect(() => {
setQueryName(''); //切换tab时搜索置空 setQueryName(''); //切换tab时搜索置空
setCompleteOption([]); setCompleteOption([]);
setOpen(false); //切换tab时搜索的下拉框置为空 setOpen(false); //切换tab时搜索的下拉框置为空
getTreeData().then((res)=>{ getTreeData().then((res) => {
const _defaultSelectedKeys = []; const _defaultSelectedKeys = [];
if(res.length > 0){ if (res.length > 0) {
_defaultSelectedKeys.push(res[0].id); _defaultSelectedKeys.push(res[0].id);
setSelectedKeys(_defaultSelectedKeys); setSelectedKeys(_defaultSelectedKeys);
props.onChangeSelectDep(res[0]) props.onChangeSelectDep(res[0])
props.searchUserList(res[0],treeType,1); props.searchUserList(res[0], treeType, 1);
}else{ } else {
props.searchUserList({id:null},treeType,1); props.searchUserList({ id: null }, treeType, 1);
} }
}); });
},[props.treeType]); }, [props.treeType]);
useEffect(()=>{ useEffect(() => {
Bus.bind("addCustomer",(record)=>{addCustomer(record.treeType,record.query)}) Bus.bind("addCustomer", (record) => { addCustomer(record.treeType, record.query) })
},[]); }, []);
useEffect(()=>{ useEffect(() => {
Bus.bind("changeTreeData",(record)=>{getTreeData(record.treeType)}) Bus.bind("changeTreeData", (record) => { getTreeData(record.treeType) })
},[]); }, []);
const renderTitle = (title) => ( const renderTitle = (title) => (
<span className="catalog-title"> <span className="catalog-title">
{title} {title}
</span> </span>
); );
const renderItem = (record,type) => ({ const renderItem = (record, type) => ({
value: record.userName || record.name, value: record.userName || record.name,
label: ( label: (
<div <div
...@@ -70,28 +78,28 @@ function LeftStructureTree(props) { ...@@ -70,28 +78,28 @@ function LeftStructureTree(props) {
type={type} type={type}
> >
{type === 'user'? {type === 'user' ?
<div className="search-result-item__left"> <div className="search-result-item__left">
<span className="icon iconfont title-icon">&#xe603;</span> <span className="icon iconfont title-icon">&#xe603;</span>
<WWOpenDataCom type="userName" openid={record.userName}/> <WWOpenDataCom type="userName" openid={record.userName} />
</div> </div>
: :
<div className="search-result-item__left"> <div className="search-result-item__left">
{props.treeType === 'departMentTab' ? {props.treeType === 'departMentTab' ?
<WWOpenDataCom type="departmentName" openid={record.name}/> <WWOpenDataCom type="departmentName" openid={record.name} />
: :
<span>{record.name}</span> <span>{record.name}</span>
} }
</div> </div>
} }
{type === 'user' && ( {type === 'user' && (
<div className="search-result-item__right"> <div className="search-result-item__right">
<Tooltip title={<div>{handleDepName(record.depNamesList)}</div>} placement='top' arrowPointAtCenter> <Tooltip title={<div>{handleDepName(record.depNamesList)}</div>} placement='top' arrowPointAtCenter>
{record.depNamesList.map((item,index)=>{ {record.depNamesList.map((item, index) => {
return <span><WWOpenDataCom type="departmentName" openid={item}/>{index<(record.depNamesList.length -1)?';':''}</span> return <span><WWOpenDataCom type="departmentName" openid={item} />{index < (record.depNamesList.length - 1) ? ';' : ''}</span>
})} })}
</Tooltip> </Tooltip>
</div> </div>
)} )}
{type === 'post' && {type === 'post' &&
...@@ -101,155 +109,155 @@ function LeftStructureTree(props) { ...@@ -101,155 +109,155 @@ function LeftStructureTree(props) {
), ),
}); });
const notFoundContentNode = ()=>{ const notFoundContentNode = () => {
return <div className="empty-con"> return <div className="empty-con">
<img src="https://image.xiaomaiketang.com/xm/wRDrb2pJFb.png" className="empty-img"/> <img src="https://image.xiaomaiketang.com/xm/wRDrb2pJFb.png" className="empty-img" />
<div className="empty-text">暂无数据</div> <div className="empty-text">暂无数据</div>
</div> </div>
} }
function handleDepName(depArray){ function handleDepName(depArray) {
const depArrayDom = depArray.map((item, index) => { const depArrayDom = depArray.map((item, index) => {
return <span><WWOpenDataCom type="departmentName" openid={item}/></span> return <span><WWOpenDataCom type="departmentName" openid={item} /></span>
}); });
return depArrayDom; return depArrayDom;
}; };
function handlePlaceHolder(){ function handlePlaceHolder() {
let placeholder = ''; let placeholder = '';
switch (props.treeType){ switch (props.treeType) {
case 'departMentTab': case 'departMentTab':
placeholder = '搜索学员姓名、部门'; placeholder = '搜索学员姓名、部门';
break; break;
case 'postGrouptab': case 'postGrouptab':
placeholder = '搜索学员姓名/岗位/岗位组'; placeholder = '搜索学员姓名/岗位/岗位组';
break; break;
case 'customGroupTab': case 'customGroupTab':
placeholder = '搜索学员姓名/自定义分组集合/自定义分组'; placeholder = '搜索学员姓名/自定义分组集合/自定义分组';
break; break;
default: default:
break; break;
} }
return placeholder return placeholder
} }
function confirmSearchSelect(value,option){ function confirmSearchSelect(value, option) {
const param = {} const param = {}
setOpen(false); setOpen(false);
setQueryName(value); setQueryName(value);
if(option.label.props.type === 'user'){ if (option.label.props.type === 'user') {
param.queryName = value; param.queryName = value;
}else{ } else {
param.id = option.label.props.depId; param.id = option.label.props.depId;
} }
props.searchUserList(param,treeType,1); props.searchUserList(param, treeType, 1);
} }
// 获取关键词的搜索结果 // 获取关键词的搜索结果
function getCompleteOptionData(value){ function getCompleteOptionData(value) {
// setQueryName(value); // setQueryName(value);
setCompleteOption([]); setCompleteOption([]);
if(!value){ if (!value) {
return return
} }
const params = { const params = {
depType:DepType[props.treeType], depType: DepType[props.treeType],
queryName:value, queryName: value,
enterpriseId:User.getEnterpriseId(), enterpriseId: User.getEnterpriseId(),
source:0,//0代表来自企培 source: 0,//0代表来自企培
storeId:User.getStoreId(), storeId: User.getStoreId(),
userId:User.getUserId(), userId: User.getUserId(),
whetherCount:false, whetherCount: false,
distinct:false, distinct: false,
queryType:'CUSTOMER' queryType: 'CUSTOMER'
} }
StoreService.getDepartmentUser(params).then((res) => { StoreService.getDepartmentUser(params).then((res) => {
const _completeOptions = []; const _completeOptions = [];
const userObj = {}; const userObj = {};
const departmentGroupObj = {}; const departmentGroupObj = {};
const postobj = {}; const postobj = {};
const { result = {}} = res; const { result = {} } = res;
const {departmentUserVOList=[],departmentVOList=[],subLevelDepartmentVOList=[]} = result; const { departmentUserVOList = [], departmentVOList = [], subLevelDepartmentVOList = [] } = result;
if(departmentUserVOList.length>0){ if (departmentUserVOList.length > 0) {
userObj.label=renderTitle('学员'); userObj.label = renderTitle('学员');
userObj.options=departmentUserVOList.map((item,index)=>{ userObj.options = departmentUserVOList.map((item, index) => {
return renderItem(item,'user'); return renderItem(item, 'user');
}) })
} }
if(departmentVOList.length>0){ if (departmentVOList.length > 0) {
switch (props.treeType){ switch (props.treeType) {
case 'departMentTab': case 'departMentTab':
departmentGroupObj.label=renderTitle('部门'); departmentGroupObj.label = renderTitle('部门');
break; break;
case 'postGrouptab': case 'postGrouptab':
departmentGroupObj.label=renderTitle('岗位组'); departmentGroupObj.label = renderTitle('岗位组');
break; break;
case 'customGroupTab': case 'customGroupTab':
departmentGroupObj.label=renderTitle('分组集合'); departmentGroupObj.label = renderTitle('分组集合');
break; break;
default: default:
break; break;
} }
departmentGroupObj.options=departmentVOList.map((item,index)=>{ departmentGroupObj.options = departmentVOList.map((item, index) => {
return renderItem(item,'group'); return renderItem(item, 'group');
}) })
} }
if(subLevelDepartmentVOList.length>0){ if (subLevelDepartmentVOList.length > 0) {
switch (props.treeType){ switch (props.treeType) {
case 'postGrouptab': case 'postGrouptab':
postobj.label=renderTitle('岗位'); postobj.label = renderTitle('岗位');
break; break;
case 'customGroupTab': case 'customGroupTab':
postobj.label=renderTitle('分组'); postobj.label = renderTitle('分组');
break; break;
default: default:
break; break;
} }
postobj.options=subLevelDepartmentVOList.map((item,index)=>{ postobj.options = subLevelDepartmentVOList.map((item, index) => {
return renderItem(item,'post'); return renderItem(item, 'post');
}) })
} }
if(Object.keys(userObj).length !==0){ if (Object.keys(userObj).length !== 0) {
_completeOptions.push(userObj); _completeOptions.push(userObj);
} }
if(Object.keys(departmentGroupObj).length !==0){ if (Object.keys(departmentGroupObj).length !== 0) {
_completeOptions.push(departmentGroupObj); _completeOptions.push(departmentGroupObj);
} }
if(Object.keys(postobj).length !==0){ if (Object.keys(postobj).length !== 0) {
_completeOptions.push(postobj); _completeOptions.push(postobj);
} }
setCompleteOption(_completeOptions); setCompleteOption(_completeOptions);
}); });
} }
async function addCustomer(treeType,query){ async function addCustomer(treeType, query) {
await getTreeData(treeType); await getTreeData(treeType);
props.searchUserList(query,treeType,1); props.searchUserList(query, treeType, 1);
} }
function getTreeData(treeType){ function getTreeData(treeType) {
return new Promise((resolve,reject)=>{ return new Promise((resolve, reject) => {
const params = { const params = {
departmentTypeEnum:DepType[treeType] || DepType[props.treeType], departmentTypeEnum: DepType[treeType] || DepType[props.treeType],
enterpriseId:User.getEnterpriseId(), enterpriseId: User.getEnterpriseId(),
source:0,//0代表来自企培 source: 0,//0代表来自企培
storeId:User.getStoreId(), storeId: User.getStoreId(),
userId:User.getUserId(), userId: User.getUserId(),
whetherCount:true whetherCount: true
} }
StoreService.queryDepartmentTree(params).then((res) => { StoreService.queryDepartmentTree(params).then((res) => {
const { result = []} = res const { result = [] } = res
let { departmentVOList=[] } =result; let { departmentVOList = [] } = result;
let _treeData = handleData(result); let _treeData = handleData(result);
setTreeData(_treeData); setTreeData(_treeData);
resolve(result); resolve(result);
}); });
}) })
} }
function handleData(dataArray){ function handleData(dataArray) {
const _dataArray = dataArray.map((item,index)=>{ const _dataArray = dataArray.map((item, index) => {
item.title = ""; item.title = "";
item.key=item.id; item.key = item.id;
if(item.sonDepartmentVOList){ if (item.sonDepartmentVOList) {
item.children = item.sonDepartmentVOList; item.children = item.sonDepartmentVOList;
handleData(item.sonDepartmentVOList) handleData(item.sonDepartmentVOList)
} }
...@@ -265,24 +273,24 @@ function LeftStructureTree(props) { ...@@ -265,24 +273,24 @@ function LeftStructureTree(props) {
const moreOpenGroupOperate = (record) => ( const moreOpenGroupOperate = (record) => (
<Menu> <Menu>
<Menu.Item key="edit"> <Menu.Item key="edit">
<span onClick={()=>{props.treeType==='postGrouptab'?editPostGroup(record):editCustomGroup(record)}}>编辑</span> <span onClick={() => { props.treeType === 'postGrouptab' ? editPostGroup(record) : editCustomGroup(record) }}>编辑</span>
</Menu.Item> </Menu.Item>
{record.depLevel ===0 && {record.depLevel === 0 &&
<Menu.Item key="add" > <Menu.Item key="add" >
<span onClick={()=>{props.treeType==='postGrouptab'?addPostGroup(1,record):addCustomGroup(1,record)}}> <span onClick={() => { props.treeType === 'postGrouptab' ? addPostGroup(1, record) : addCustomGroup(1, record) }}>
{props.treeType==='postGrouptab' && {props.treeType === 'postGrouptab' &&
<span>新建岗位</span> <span>新建岗位</span>
} }
{props.treeType==='customGroupTab' && {props.treeType === 'customGroupTab' &&
<span>新建分组</span> <span>新建分组</span>
} }
</span> </span>
</Menu.Item> </Menu.Item>
} }
{/* { (record.departmentCount === 0 || !record.departmentCount) && */} {/* { (record.departmentCount === 0 || !record.departmentCount) && */}
<Menu.Item key="del"> <Menu.Item key="del">
<span onClick={()=>{props.treeType==='postGrouptab'?delPostGroup(record):delCustomGroup(record)}}>删除</span> <span onClick={() => { props.treeType === 'postGrouptab' ? delPostGroup(record) : delCustomGroup(record) }}>删除</span>
</Menu.Item> </Menu.Item>
{/* } */} {/* } */}
</Menu> </Menu>
); );
...@@ -293,75 +301,75 @@ function LeftStructureTree(props) { ...@@ -293,75 +301,75 @@ function LeftStructureTree(props) {
} }
//添加岗位组/岗位 //添加岗位组/岗位
function addPostGroup(level,record) { function addPostGroup(level, record) {
if(level===0){ if (level === 0) {
if (treeData.length > 9) { if (treeData.length > 9) {
message.error("岗位组数量已达10个上限"); message.error("岗位组数量已达10个上限");
return; return;
} }
} }
if(level===1){ if (level === 1) {
if(record.sonDepartmentVOList){ if (record.sonDepartmentVOList) {
if(record.sonDepartmentVOList.length > 19){ if (record.sonDepartmentVOList.length > 19) {
message.error("岗位数量已达20个上限"); message.error("岗位数量已达20个上限");
return; return;
} }
} }
} }
setCurrentGroupData({}); setCurrentGroupData({});
setAddOrEditPostGroupShow(true); setAddOrEditPostGroupShow(true);
setOperatePostGroupModalType("add"); setOperatePostGroupModalType("add");
setPostGroupModalLevel(level); setPostGroupModalLevel(level);
setCurrentGroupData(record); setCurrentGroupData(record);
console.log('treeData',record); console.log('treeData', record);
if(level===0){ if (level === 0) {
setPostGroupModalTitle('添加岗位组'); setPostGroupModalTitle('添加岗位组');
setPostGroupModalLable('岗位组'); setPostGroupModalLable('岗位组');
setPostGroupTreeData(treeData); setPostGroupTreeData(treeData);
}else{ } else {
setPostGroupModalTitle('添加岗位'); // sub代表岗位 setPostGroupModalTitle('添加岗位'); // sub代表岗位
setPostGroupModalLable('岗位'); setPostGroupModalLable('岗位');
setPostGroupTreeData(record.sonDepartmentVOList || []); setPostGroupTreeData(record.sonDepartmentVOList || []);
} }
} }
//编辑岗位组/岗位 //编辑岗位组/岗位
function editPostGroup(record){ function editPostGroup(record) {
setAddOrEditPostGroupShow(true); setAddOrEditPostGroupShow(true);
setOperatePostGroupModalType("edit"); setOperatePostGroupModalType("edit");
//level为0的时候编辑的是岗位组 大于0的时候 //level为0的时候编辑的是岗位组 大于0的时候
setPostGroupModalLevel(record.depLevel); setPostGroupModalLevel(record.depLevel);
setCurrentGroupData(record); setCurrentGroupData(record);
console.log('treeData',record); console.log('treeData', record);
if(record.depLevel===0){ if (record.depLevel === 0) {
setPostGroupModalTitle('编辑岗位组'); setPostGroupModalTitle('编辑岗位组');
setPostGroupModalLable('岗位组'); setPostGroupModalLable('岗位组');
setPostGroupTreeData(treeData); setPostGroupTreeData(treeData);
}else{ } else {
setPostGroupModalTitle('编辑岗位'); setPostGroupModalTitle('编辑岗位');
setPostGroupModalLable('岗位'); setPostGroupModalLable('岗位');
setPostGroupTreeData(getParentChildernData(record.parentId)); setPostGroupTreeData(getParentChildernData(record.parentId));
} }
} }
// 获取父节点下的所有的子级数据 // 获取父节点下的所有的子级数据
function getParentChildernData(parentId){ function getParentChildernData(parentId) {
let _parentChildernData = [] let _parentChildernData = []
treeData.map((item,index)=>{ treeData.map((item, index) => {
if( parentId=== item.id){ if (parentId === item.id) {
_parentChildernData = item.sonDepartmentVOList _parentChildernData = item.sonDepartmentVOList
} }
}) })
return _parentChildernData return _parentChildernData
} }
function delPostGroup(record){ function delPostGroup(record) {
let title = '确认删除该岗位组吗?'; let title = '确认删除该岗位组吗?';
let content= '删除后,该岗位组下的岗位及也将全部删除。'; let content = '删除后,该岗位组下的岗位及也将全部删除。';
if(record.departmentCount && record.departmentCount>0 ){ if (record.departmentCount && record.departmentCount > 0) {
title = '删除失败'; title = '删除失败';
if(record.depLevel>0){ if (record.depLevel > 0) {
content = `${record.name}存在学员,不能删除该岗位`; content = `${record.name}存在学员,不能删除该岗位`;
}else{ } else {
content = `${record.name}存在学员,不能删除该岗位组`; content = `${record.name}存在学员,不能删除该岗位组`;
} }
Modal.warning({ Modal.warning({
...@@ -372,29 +380,29 @@ function LeftStructureTree(props) { ...@@ -372,29 +380,29 @@ function LeftStructureTree(props) {
}) })
return return
} }
if(record.level>0){ if (record.level > 0) {
title = '确认删除该岗位吗?'; title = '确认删除该岗位吗?';
content = '删除后,不可恢复'; content = '删除后,不可恢复';
} }
Modal.confirm({ Modal.confirm({
title, title,
content, content,
icon: <span className='icon iconfont default-confirm-icon'>&#xe6f4;</span>, icon: <span className='icon iconfont default-confirm-icon'>&#xe6f4;</span>,
okText: '确定', okText: '确定',
okType: 'danger', okType: 'danger',
cancelText: '取消', cancelText: '取消',
onOk: () => { onOk: () => {
delGroup(record); delGroup(record);
}, },
}); });
} }
function delGroup(record){ function delGroup(record) {
let parmas = { let parmas = {
departmentId:record.id, departmentId: record.id,
enterpriseId:User.getEnterpriseId(), enterpriseId: User.getEnterpriseId(),
source:0, source: 0,
storeId:User.getStoreId(), storeId: User.getStoreId(),
userId:User.getUserId() userId: User.getUserId()
} }
StoreService.delDepartment(parmas).then((res) => { StoreService.delDepartment(parmas).then((res) => {
message.success(`删除成功`) message.success(`删除成功`)
...@@ -405,16 +413,16 @@ function LeftStructureTree(props) { ...@@ -405,16 +413,16 @@ function LeftStructureTree(props) {
//添加自定义分组集合/分组 //添加自定义分组集合/分组
function addCustomGroup(level,record) { function addCustomGroup(level, record) {
if(level===0){ if (level === 0) {
if (treeData.length > 9) { if (treeData.length > 9) {
message.error("自定义分组集合数量已达10个上限"); message.error("自定义分组集合数量已达10个上限");
return; return;
} }
} }
if(level===1){ if (level === 1) {
if(record.sonDepartmentVOList){ if (record.sonDepartmentVOList) {
if(record.sonDepartmentVOList.length > 19){ if (record.sonDepartmentVOList.length > 19) {
message.error("自定义分组数量已达20个上限"); message.error("自定义分组数量已达20个上限");
return; return;
} }
...@@ -425,41 +433,41 @@ function LeftStructureTree(props) { ...@@ -425,41 +433,41 @@ function LeftStructureTree(props) {
setOperatePostGroupModalType("add"); setOperatePostGroupModalType("add");
setPostGroupModalLevel(level); setPostGroupModalLevel(level);
setCurrentGroupData(record) setCurrentGroupData(record)
if(level===0){ if (level === 0) {
setPostGroupModalTitle('添加分组集合'); setPostGroupModalTitle('添加分组集合');
setPostGroupModalLable('分组集合'); setPostGroupModalLable('分组集合');
setPostGroupTreeData(treeData); setPostGroupTreeData(treeData);
}else{ } else {
setPostGroupModalTitle('添加分组'); // sub代表岗位 setPostGroupModalTitle('添加分组'); // sub代表岗位
setPostGroupModalLable('分组'); setPostGroupModalLable('分组');
setPostGroupTreeData(record.sonDepartmentVOList || []); setPostGroupTreeData(record.sonDepartmentVOList || []);
} }
} }
//编辑自定义分组集合/分组 //编辑自定义分组集合/分组
function editCustomGroup(record){ function editCustomGroup(record) {
setAddOrEditPostGroupShow(true); setAddOrEditPostGroupShow(true);
setOperatePostGroupModalType("edit"); setOperatePostGroupModalType("edit");
setPostGroupModalLevel(record.level); setPostGroupModalLevel(record.level);
setCurrentGroupData(record) setCurrentGroupData(record)
//level为0的时候编辑的是岗位组 大于0的时候 //level为0的时候编辑的是岗位组 大于0的时候
if(record.depLevel===0){ if (record.depLevel === 0) {
setPostGroupModalTitle('编辑分组集合'); setPostGroupModalTitle('编辑分组集合');
setPostGroupModalLable('分组集合'); setPostGroupModalLable('分组集合');
setPostGroupTreeData(treeData); setPostGroupTreeData(treeData);
}else{ } else {
setPostGroupModalTitle('编辑分组'); setPostGroupModalTitle('编辑分组');
setPostGroupModalLable('分组'); setPostGroupModalLable('分组');
setPostGroupTreeData(getParentChildernData(record.parentId)); setPostGroupTreeData(getParentChildernData(record.parentId));
} }
} }
function delCustomGroup(record){ function delCustomGroup(record) {
let title = '确认删除该分组集合吗?'; let title = '确认删除该分组集合吗?';
let content= '删除后,该分组集合下的岗位及也将全部删除。'; let content = '删除后,该分组集合下的岗位及也将全部删除。';
if(record.departmentCount && record.departmentCount>0 ){ if (record.departmentCount && record.departmentCount > 0) {
title = '删除失败'; title = '删除失败';
if(record.level>0){ if (record.level > 0) {
content = `${record.name}存在学员,不能删除该分组`; content = `${record.name}存在学员,不能删除该分组`;
}else{ } else {
content = `${record.name}存在学员,不能删除该分组集合`; content = `${record.name}存在学员,不能删除该分组集合`;
} }
Modal.warning({ Modal.warning({
...@@ -470,22 +478,22 @@ function LeftStructureTree(props) { ...@@ -470,22 +478,22 @@ function LeftStructureTree(props) {
}) })
return return
} }
if(record.level>0){ if (record.level > 0) {
title = '确认删除该分组吗?'; title = '确认删除该分组吗?';
content = '删除后,不可恢复'; content = '删除后,不可恢复';
} }
Modal.confirm({ Modal.confirm({
title, title,
content, content,
icon: <span className='icon iconfont default-confirm-icon'>&#xe6f4;</span>, icon: <span className='icon iconfont default-confirm-icon'>&#xe6f4;</span>,
okText: '确定', okText: '确定',
okType: 'danger', okType: 'danger',
cancelText: '取消', cancelText: '取消',
onOk: () => { onOk: () => {
delGroup(record) delGroup(record)
}, },
}); });
} }
function confirmAddOrEditPostGroup() { function confirmAddOrEditPostGroup() {
...@@ -493,70 +501,79 @@ function LeftStructureTree(props) { ...@@ -493,70 +501,79 @@ function LeftStructureTree(props) {
getTreeData() getTreeData()
} }
function selectUserList(record,e){ function selectUserList(record, e) {
const _selectKeys = []; const _selectKeys = [];
_selectKeys.push(e.selectedNodes[0].id) _selectKeys.push(e.selectedNodes[0].id)
setSelectedKeys(_selectKeys); setSelectedKeys(_selectKeys);
props.onChangeSelectDep(e.selectedNodes[0]); props.onChangeSelectDep(e.selectedNodes[0]);
props.searchUserList(e.selectedNodes[0],treeType,1); props.searchUserList(e.selectedNodes[0], treeType, 1);
} }
function changeName(value) {
setQueryName(value); setOpen(true);
clearTimeout(timer.current)
timer.current = setTimeout(() => {
getCompleteOptionData(queryNameRef.current)
}, 500)
}
return ( return (
<div className="left-structure-tree"> <div className="left-structure-tree">
<div className="organization"> <div className="organization">
<div className="search-con"> <div className="search-con">
{/* <Complete/> */} {/* <Complete/> */}
<AutoComplete <AutoComplete
dropdownClassName="certain-category-search-dropdown" dropdownClassName="certain-category-search-dropdown"
dropdownMatchSelectWidth={250} dropdownMatchSelectWidth={250}
allowClear allowClear
onChange={(value)=>{setQueryName(value);setOpen(true);getCompleteOptionData(value)}} onChange={changeName}
// onSearch={(value)=>{getCompleteOptionData(value)}} // onSearch={(value)=>{getCompleteOptionData(value)}}
notFoundContent={notFoundContentNode()} notFoundContent={notFoundContentNode()}
value={queryName} value={queryName}
open={open} open={open}
onFocus={()=>{setOpen(true)}} onFocus={() => { setOpen(true) }}
onBlur={()=>{setOpen(false)}} onBlur={() => { setOpen(false) }}
style={{ style={{
width: 250, width: 250,
}} }}
options={completeOptions} options={completeOptions}
onSelect={confirmSearchSelect} onSelect={confirmSearchSelect}
placeholder={handlePlaceHolder()} placeholder={handlePlaceHolder()}
> >
<Search <Search
style={{ width: 250 }} style={{ width: 250 }}
enterButton={<span className='icon iconfont'>&#xe832;</span>} enterButton={<span className='icon iconfont'>&#xe832;</span>}
/> />
</AutoComplete> </AutoComplete>
</div>
{(props.treeType === 'postGrouptab' || props.treeType === 'customGroupTab') && (
<div className="operate">
{props.treeType === 'postGrouptab' &&
<Button
className="add-btn"
onClick={() => {
addPostGroup(0)
}}
>
添加岗位组
</Button>
}
{props.treeType === 'customGroupTab' &&
<Button
className="add-btn"
onClick={() => {
addCustomGroup(0)
}}
>
添加自定义分组
</Button>
}
</div> </div>
{ (props.treeType==='postGrouptab' || props.treeType=== 'customGroupTab') && ( )}
<div className="operate">
{props.treeType==='postGrouptab' &&
<Button
className="add-btn"
onClick={() => {
addPostGroup(0)
}}
>
添加岗位组
</Button>
}
{props.treeType==='customGroupTab' &&
<Button
className="add-btn"
onClick={() => {
addCustomGroup(0)
}}
>
添加自定义分组
</Button>
}
</div>
)}
<div className="tree-con"> <div className="tree-con">
{!selctQueryName ? {!selctQueryName ?
<DirectoryTree <DirectoryTree
defaultExpandAll defaultExpandAll
showIcon={false} showIcon={false}
treeData={treeData} treeData={treeData}
...@@ -567,7 +584,7 @@ function LeftStructureTree(props) { ...@@ -567,7 +584,7 @@ function LeftStructureTree(props) {
<div <div
className="node-title-div" className="node-title-div"
onMouseOver={(e) => { onMouseOver={(e) => {
if((props.treeType==='postGrouptab' || props.treeType=== 'customGroupTab')){ if ((props.treeType === 'postGrouptab' || props.treeType === 'customGroupTab')) {
if (nodeData.key === "null") return; if (nodeData.key === "null") return;
let moreDiv = e.currentTarget.getElementsByClassName( let moreDiv = e.currentTarget.getElementsByClassName(
"item-more" "item-more"
...@@ -584,7 +601,7 @@ function LeftStructureTree(props) { ...@@ -584,7 +601,7 @@ function LeftStructureTree(props) {
} }
}} }}
onMouseOut={(e) => { onMouseOut={(e) => {
if((props.treeType==='postGrouptab' || props.treeType=== 'customGroupTab')){ if ((props.treeType === 'postGrouptab' || props.treeType === 'customGroupTab')) {
if (nodeData.key === "null") return; if (nodeData.key === "null") return;
let moreDiv = e.currentTarget.getElementsByClassName( let moreDiv = e.currentTarget.getElementsByClassName(
"item-more" "item-more"
...@@ -602,7 +619,7 @@ function LeftStructureTree(props) { ...@@ -602,7 +619,7 @@ function LeftStructureTree(props) {
}} }}
> >
<div className="item-icon"> <div className="item-icon">
<span className="icon iconfont title-icon">&#xe604;</span> <span className="icon iconfont title-icon">&#xe604;</span>
</div> </div>
<div <div
className="item-title" className="item-title"
...@@ -611,18 +628,18 @@ function LeftStructureTree(props) { ...@@ -611,18 +628,18 @@ function LeftStructureTree(props) {
leftBoxWidth <= "240px" leftBoxWidth <= "240px"
? "35%" ? "35%"
: leftBoxWidth <= "304px" : leftBoxWidth <= "304px"
? "60%" ? "60%"
: "78%", : "78%",
}} }}
> >
{ props.treeType==='departMentTab'? {props.treeType === 'departMentTab' ?
<span><WWOpenDataCom type="departmentName" openid={nodeData.name}/></span> <span><WWOpenDataCom type="departmentName" openid={nodeData.name} /></span>
: :
<span>{nodeData.name}</span> <span>{nodeData.name}</span>
} }
</div> </div>
<div className="item-count">({nodeData.departmentCount || 0})</div> <div className="item-count">({nodeData.departmentCount || 0})</div>
{ (props.treeType==='postGrouptab' || props.treeType=== 'customGroupTab') && ( {(props.treeType === 'postGrouptab' || props.treeType === 'customGroupTab') && (
<Dropdown overlay={moreOpenGroupOperate(nodeData)}> <Dropdown overlay={moreOpenGroupOperate(nodeData)}>
<div className="item-more icon iconfont">&#xe927;</div> <div className="item-more icon iconfont">&#xe927;</div>
</Dropdown> </Dropdown>
...@@ -634,13 +651,13 @@ function LeftStructureTree(props) { ...@@ -634,13 +651,13 @@ function LeftStructureTree(props) {
: :
<div> <div>
{/* { (props.treeType==='departMentTab') && */} {/* { (props.treeType==='departMentTab') && */}
<div> <div>
{ selctQueryName.type==='userName'? {selctQueryName.type === 'userName' ?
<WWOpenDataCom type="userName" openid={selctQueryName.openid}/> <WWOpenDataCom type="userName" openid={selctQueryName.openid} />
: :
<WWOpenDataCom type="departmentName" openid={selctQueryName.openid}/> <WWOpenDataCom type="departmentName" openid={selctQueryName.openid} />
} }
</div> </div>
{/* } */} {/* } */}
{/* { (props.treeType==='postGrouptab' || props.treeType=== 'customGroupTab') && {/* { (props.treeType==='postGrouptab' || props.treeType=== 'customGroupTab') &&
...@@ -655,7 +672,7 @@ function LeftStructureTree(props) { ...@@ -655,7 +672,7 @@ function LeftStructureTree(props) {
} */} } */}
</div> </div>
} }
</div> </div>
</div> </div>
......
...@@ -64,7 +64,6 @@ function MemberTree(props) { ...@@ -64,7 +64,6 @@ function MemberTree(props) {
_selectNodes.push(item); _selectNodes.push(item);
} }
}) })
console.log('_selectNodes',_selectNodes);
props.onSelect(_selectNodes); props.onSelect(_selectNodes);
} }
return ( return (
......
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
} }
} }
.ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover::before, .ant-tree.ant-tree-directory .ant-tree-treenode-selected::before{ .ant-tree.ant-tree-directory .ant-tree-treenode-selected:hover::before, .ant-tree.ant-tree-directory .ant-tree-treenode-selected::before{
background: none; background:transparent;
}
.ant-tree.ant-tree-directory .ant-tree-treenode-selected .ant-tree-switcher{
color:#000;
} }
} }
\ No newline at end of file
...@@ -64,7 +64,6 @@ function SearchUser(props) { ...@@ -64,7 +64,6 @@ function SearchUser(props) {
onFocus={(e)=>{onFocus(e)}} onFocus={(e)=>{onFocus(e)}}
onChange={(e)=>{onChange(e)}} onChange={(e)=>{onChange(e)}}
className="search-input-item" className="search-input-item"
// onBlur={()=>{onBlur()}}
/> />
{dropDownVisible && {dropDownVisible &&
<div className="drop-down"> <div className="drop-down">
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
} }
.container-left-body-table{ .container-left-body-table{
width: 300px; width: 300px;
height: 330px; max-height: 380px;
overflow: scroll; overflow: scroll;
.ant-table { .ant-table {
border: none; border: none;
......
...@@ -106,6 +106,7 @@ class AddLiveBasic extends React.Component { ...@@ -106,6 +106,7 @@ class AddLiveBasic extends React.Component {
<span className='label'> <span className='label'>
<span className='require'>*</span>课程名称: <span className='require'>*</span>课程名称:
</span> </span>
<div id="courseName" style={{display:"inline-block"}}>
<Input <Input
className={_.find(this.props.exItems,(item)=>{return item === "courseName"})?"err":""} className={_.find(this.props.exItems,(item)=>{return item === "courseName"})?"err":""}
value={courseName} value={courseName}
...@@ -116,6 +117,7 @@ class AddLiveBasic extends React.Component { ...@@ -116,6 +117,7 @@ class AddLiveBasic extends React.Component {
this.props.onChange('courseName', e.target.value) this.props.onChange('courseName', e.target.value)
}} }}
/> />
</div>
</div> </div>
<div className='course-cover'> <div className='course-cover'>
<span className='label'>封面图:</span> <span className='label'>封面图:</span>
...@@ -146,6 +148,7 @@ class AddLiveBasic extends React.Component { ...@@ -146,6 +148,7 @@ class AddLiveBasic extends React.Component {
<span className='label'> <span className='label'>
<span className='require'>*</span>课程分类: <span className='require'>*</span>课程分类:
</span> </span>
<div id="categoryId" style={{display:"inline-block"}}>
<CourseCatalogSelect <CourseCatalogSelect
className={_.find(this.props.exItems,(item)=>{return item === "categoryId"})?"err":""} className={_.find(this.props.exItems,(item)=>{return item === "categoryId"})?"err":""}
value={categoryId} value={categoryId}
...@@ -153,6 +156,7 @@ class AddLiveBasic extends React.Component { ...@@ -153,6 +156,7 @@ class AddLiveBasic extends React.Component {
this.handleChangeCatalogList(value, label) this.handleChangeCatalogList(value, label)
}} }}
/> />
</div>
</div> </div>
{showSelectFileModal && ( {showSelectFileModal && (
<SelectPrepareFileModal <SelectPrepareFileModal
......
...@@ -248,7 +248,7 @@ class LiveCourseList extends React.Component { ...@@ -248,7 +248,7 @@ class LiveCourseList extends React.Component {
}, },
{ {
title: '课件管理', title: '课件管理',
width: '8%', width: '75px',
key: 'courseware', key: 'courseware',
dataIndex: 'courseware', dataIndex: 'courseware',
render: (val, item) => { render: (val, item) => {
...@@ -895,7 +895,7 @@ class LiveCourseList extends React.Component { ...@@ -895,7 +895,7 @@ class LiveCourseList extends React.Component {
}) })
return return
} }
if (item.startTime + 15*60*1000 < new Date().getTime()) { if (item.startTime + 15*24*60*60*1000 < new Date().getTime()) {
Modal.warning({ Modal.warning({
title: '提示', title: '提示',
content: "该直播课的回放视频已失效", content: "该直播课的回放视频已失效",
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2019-07-10 10:30:49 * @Date: 2019-07-10 10:30:49
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @LastEditTime: 2021-08-11 17:22:58 * @LastEditTime: 2021-08-12 15:02:50
* @Description: * @Description:
*/ */
import React, { useContext, useEffect, useState } from 'react'; import React, { useContext, useEffect, useState } from 'react';
...@@ -16,11 +16,10 @@ import User from '@/common/js/user'; ...@@ -16,11 +16,10 @@ import User from '@/common/js/user';
import BaseService from "@/domains/basic-domain/baseService"; import BaseService from "@/domains/basic-domain/baseService";
import moment from 'moment'; import moment from 'moment';
import { VersionContext, VersionInfo, XMContext } from '@/store/context'; import { VersionContext, VersionInfo, XMContext } from '@/store/context';
import WechatApi from '@/common/js/wechatApi';
import { setStoreGroupPermission, setStorePermission, setStoreGroupList, setStoreList, setWechatLogin } from '@/store/actions/index'; import { setStoreGroupPermission, setStorePermission, setStoreGroupList, setStoreList, setWechatLogin } from '@/store/actions/index';
import Service from "@/common/js/service"; import Service from "@/common/js/service";
import Bus from '@/core/tbus'; import Bus from '@/core/tbus';
import WechatApi from '@/common/js/wechatApi';
import { func } from 'prop-types';
const { Footer, Sider, Content } = Layout; const { Footer, Sider, Content } = Layout;
...@@ -40,7 +39,6 @@ const App: React.FC = (props: any) => { ...@@ -40,7 +39,6 @@ const App: React.FC = (props: any) => {
useEffect(() => { useEffect(() => {
getStorePermission(); getStorePermission();
initWechatConfig(); initWechatConfig();
getStoreAndUserInfo(); getStoreAndUserInfo();
getVersion(); getVersion();
if (window.location.hash === "#/") { if (window.location.hash === "#/") {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment