Commit 6d490341 by yuananting

fix:解决合并代码的冲突

parents 402be304 1d5170d0
/* /*
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2020-08-31 09:34:25 * @Date: 2020-08-31 09:34:25
* @LastEditors: Please set LastEditors * @LastEditors: yuananting
* @LastEditTime: 2021-07-20 17:41:20 * @LastEditTime: 2021-08-17 19:20:33
* @Description: * @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有 * @Copyright: 杭州杰竞科技有限公司 版权所有
*/ */
import Storage from './storage'; import Storage from './storage';
import { PREFIX, USER_PREFIX } from '@/domains/basic-domain/constants'; import { PREFIX, USER_PREFIX } from '@/domains/basic-domain/constants';
declare var window:any; declare var window: any;
class User { class User {
getExpirationTime() { getExpirationTime() {
return Storage.get(`${PREFIX}_expiration_time`) return Storage.get(`${PREFIX}_expiration_time`);
} }
getVersion() { getVersion() {
return Storage.getObj(`${PREFIX}_version`) return Storage.getObj(`${PREFIX}_version`);
} }
getStoreId(){ getStoreId() {
return window.currentStoreUserInfo.storeId || Storage.get(`${PREFIX}_storeId`) return window.currentStoreUserInfo.storeId || Storage.get(`${PREFIX}_storeId`);
} }
getEnterpriseId() { getEnterpriseId() {
...@@ -40,18 +39,22 @@ class User { ...@@ -40,18 +39,22 @@ class User {
return window.currentStoreUserInfo.storeUserId || Storage.get(`${PREFIX}_storeUserId`); return window.currentStoreUserInfo.storeUserId || Storage.get(`${PREFIX}_storeUserId`);
} }
getStoreUserName() {
return Storage.get(`${PREFIX}_storeUserName`);
}
getCustomerId() { getCustomerId() {
return Storage.get(`${PREFIX}_customerId`); return Storage.get(`${PREFIX}_customerId`);
} }
getUserId() { getUserId() {
return window.currentStoreUserInfo.userId || Storage.get(`${PREFIX}_userId`); return window.currentStoreUserInfo.userId || Storage.get(`${PREFIX}_userId`);
} }
getAvatar(){ getAvatar() {
return Storage.get(`${PREFIX}_avatar`); return Storage.get(`${PREFIX}_avatar`);
} }
getUserRole() { getUserRole() {
return Storage.get(`${PREFIX}_userRole`); return Storage.get(`${PREFIX}_userRole`);
} }
...@@ -64,16 +67,16 @@ class User { ...@@ -64,16 +67,16 @@ class User {
return Storage.get(`${PREFIX}_isAdmin`); return Storage.get(`${PREFIX}_isAdmin`);
} }
setExpirationTime(value:number) { setExpirationTime(value: number) {
return Storage.set(`${PREFIX}_expiration_time`,value) return Storage.set(`${PREFIX}_expiration_time`, value);
} }
setVersion(value:any) { setVersion(value: any) {
return Storage.setObj(`${PREFIX}_version`,value) return Storage.setObj(`${PREFIX}_version`, value);
} }
setStoreId(value:any){ setStoreId(value: any) {
return Storage.set(`${PREFIX}_storeId`,value) return Storage.set(`${PREFIX}_storeId`, value);
} }
setEnterpriseId(value: any) { setEnterpriseId(value: any) {
...@@ -92,6 +95,10 @@ class User { ...@@ -92,6 +95,10 @@ class User {
return Storage.set(`${PREFIX}_storeUserId`, value); return Storage.set(`${PREFIX}_storeUserId`, value);
} }
setStoreUserName(value: any) {
return Storage.set(`${PREFIX}_storeUserName`, value);
}
setCustomerId(value: any) { setCustomerId(value: any) {
return Storage.set(`${PREFIX}_customerId`, value); return Storage.set(`${PREFIX}_customerId`, value);
} }
......
/* /*
* @Author: 吴文洁 * @Author: 吴文洁
* @Date: 2019-09-10 18:26:03 * @Date: 2019-09-10 18:26:03
* @LastEditors: Please set LastEditors * @LastEditors: yuananting
* @LastEditTime: 2021-08-11 20:26:53 * @LastEditTime: 2021-08-17 19:19:42
* @Description: * @Description:
*/ */
import React, { useRef, useContext, useEffect, useState } from 'react'; import React, { useRef, useContext, useEffect, useState } from 'react';
...@@ -53,12 +53,12 @@ function Header(props) { ...@@ -53,12 +53,12 @@ function Header(props) {
setStoreName(value); setStoreName(value);
}); });
getStoreList(); getStoreList();
}, []); }, [getStoreList, handleConvertShortUrl, htmlUrl]);
useEffect(() => { useEffect(() => {
storeUserId && getUserInfo(); storeUserId && getUserInfo();
enterpriseId ? getEnterpriseUser() : User.setIsAdmin(false); enterpriseId ? getEnterpriseUser() : User.setIsAdmin(false);
}, [storeUserId]); }, [enterpriseId, getEnterpriseUser, storeUserId]);
useEffect(() => { useEffect(() => {
if (!messageHelpRef.current) { if (!messageHelpRef.current) {
...@@ -81,6 +81,7 @@ function Header(props) { ...@@ -81,6 +81,7 @@ function Header(props) {
setPhone(phone); setPhone(phone);
setAvatar(res.result.avatar); setAvatar(res.result.avatar);
User.setAvatar(res.result.avatar); User.setAvatar(res.result.avatar);
User.setStoreUserName(weChatAccount);
}); });
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-07-29 13:57:03 * @Date: 2021-07-29 13:57:03
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-17 18:21:35 * @LastEditTime: 2021-08-17 19:14:55
* @Description: 任务中心-培训任务-新建页面 * @Description: 任务中心-培训任务-新建页面
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
...@@ -23,17 +23,23 @@ import Bus from '@/core/bus'; ...@@ -23,17 +23,23 @@ import Bus from '@/core/bus';
import $ from 'jquery'; import $ from 'jquery';
function AddTrainTask() { function AddTrainTask() {
const type = getParameterByName('type'); const type = window.getParameterByName('type');
const taskId = getParameterByName('taskId'); const taskId = window.getParameterByName('taskId');
const taskState = getParameterByName('taskState'); const taskState = window.getParameterByName('taskState');
const defaultCover = 'https://image.xiaomaiketang.com/xm/rEAetaTEh3.png'; const defaultCover = 'https://image.xiaomaiketang.com/xm/rEAetaTEh3.png';
const DEFAULT_BASIC_INFO = { const DEFAULT_BASIC_INFO = {
createId: User.getStoreUserId(),
taskName: '', // 培训任务名称 taskName: '', // 培训任务名称
coverUrl: defaultCover, coverUrl: defaultCover,
coverId: null, coverId: null,
helpStoreUserIds: [], // 指定协同者id helpStoreUserIds: [
{
checkedId: User.getStoreUserId(),
checkedName: User.getStoreUserName()
},
], // 指定协同者id
timeType: 'FOREVER', // 培训时间,默认永久有效 timeType: 'FOREVER', // 培训时间,默认永久有效
startTime: null, // 固定时间段-开始时间 startTime: null, // 固定时间段-开始时间
endTime: null, // 固定时间段-结束时间 endTime: null, // 固定时间段-结束时间
...@@ -199,7 +205,7 @@ function AddTrainTask() { ...@@ -199,7 +205,7 @@ function AddTrainTask() {
// 确认保存新建 // 确认保存新建
function submitRemote(introduceId, issue) { function submitRemote(introduceId, issue) {
const { assignList, endTime, helpStoreUserIds, learnType, startTime, taskName, timeType, coverId } = basicInfo; const { createId, assignList, endTime, helpStoreUserIds, learnType, startTime, taskName, timeType, coverId } = basicInfo;
let _scheduleMediaRequests = []; let _scheduleMediaRequests = [];
...@@ -241,7 +247,7 @@ function AddTrainTask() { ...@@ -241,7 +247,7 @@ function AddTrainTask() {
const commonParams = { const commonParams = {
assignList: _assignList, assignList: _assignList,
createId: User.getStoreUserId(), createId,
endTime, endTime,
helpStoreUserIds: _helpStoreUserIds, // 协同者集合 helpStoreUserIds: _helpStoreUserIds, // 协同者集合
issueState: issue, // 是否发布 issueState: issue, // 是否发布
......
...@@ -24,9 +24,9 @@ const { RangePicker } = DatePicker; ...@@ -24,9 +24,9 @@ const { RangePicker } = DatePicker;
const FormItem = Form.Item; const FormItem = Form.Item;
function BasicInfo(props) { function BasicInfo(props) {
const taskState = getParameterByName('taskState'); const taskState = window.getParameterByName('taskState');
const type = getParameterByName('type'); const type = window.getParameterByName('type');
const originTimeType = getParameterByName('timeType'); const originTimeType = window.getParameterByName('timeType');
const { basicInfo, startCheck } = props; const { basicInfo, startCheck } = props;
const { createId, taskName, coverUrl, helpStoreUserIds, timeType, startTime, endTime, learnType, assignList, introduce, loadintroduce } = basicInfo; const { createId, taskName, coverUrl, helpStoreUserIds, timeType, startTime, endTime, learnType, assignList, introduce, loadintroduce } = basicInfo;
......
...@@ -86,6 +86,11 @@ ...@@ -86,6 +86,11 @@
font-size: 14px; font-size: 14px;
color: #cccccc; color: #cccccc;
} }
.disabled {
color: #ccc !important;
cursor: not-allowed !important;
pointer-events: none !important;
}
} }
.learning-model-tips { .learning-model-tips {
......
...@@ -16,6 +16,7 @@ import WWOpenDataCom from '@/components/WWOpenDataCom'; ...@@ -16,6 +16,7 @@ import WWOpenDataCom from '@/components/WWOpenDataCom';
import _ from 'underscore'; import _ from 'underscore';
import './ChooseAssignorModal.less'; import './ChooseAssignorModal.less';
import $ from 'jquery'; import $ from 'jquery';
import LottieIcon from '@/components/LottieIcon';
const { TabPane } = Tabs; const { TabPane } = Tabs;
const { DirectoryTree } = Tree; const { DirectoryTree } = Tree;
...@@ -412,36 +413,43 @@ function ChooseAssignorModal(props) { ...@@ -412,36 +413,43 @@ function ChooseAssignorModal(props) {
<TabPane key='customGroupTab' tab='自定义分组'></TabPane> <TabPane key='customGroupTab' tab='自定义分组'></TabPane>
</Tabs> </Tabs>
<div className='tree-con'> <div className='tree-con'>
<DirectoryTree <Choose>
defaultExpandAll <When condition={structureData.length > 0}>
checkable <DirectoryTree
checkStrictly defaultExpandAll
showIcon={false} checkable
treeData={structureData} checkStrictly
checkedKeys={checkedAssignorKeys} showIcon={false}
onCheck={(key, e) => onCheckAssignor(key, e)} treeData={structureData}
titleRender={(nodeData) => { checkedKeys={checkedAssignorKeys}
return ( onCheck={(key, e) => onCheckAssignor(key, e)}
<div className='node-title-div'> titleRender={(nodeData) => {
{nodeData.checkedType === 'CUSTOMER' ? ( return (
<div> <div className='node-title-div'>
<span className='icon iconfont title-icon'>&#xe603;</span> {nodeData.checkedType === 'CUSTOMER' ? (
<span className='title-name'> <div>
<WWOpenDataCom type='userName' openid={nodeData.checkedName} /> <span className='icon iconfont title-icon'>&#xe603;</span>
</span> <span className='title-name'>
</div> <WWOpenDataCom type='userName' openid={nodeData.checkedName} />
) : ( </span>
<div> </div>
<span className='icon iconfont title-icon'>&#xe604;</span> ) : (
<span className='title-name'> <div>
<WWOpenDataCom type='departmentName' openid={nodeData.checkedName} /> <span className='icon iconfont title-icon'>&#xe604;</span>
</span> <span className='title-name'>
<WWOpenDataCom type='departmentName' openid={nodeData.checkedName} />
</span>
</div>
)}
</div> </div>
)} );
</div> }}
); />
}} </When>
/> <Otherwise>
<LottieIcon title='搜索无结果' type='search' size={150} />
</Otherwise>
</Choose>
</div> </div>
</div> </div>
</div> </div>
...@@ -453,36 +461,44 @@ function ChooseAssignorModal(props) { ...@@ -453,36 +461,44 @@ function ChooseAssignorModal(props) {
</span> </span>
</div> </div>
<div className='data-body'> <div className='data-body'>
{checkedAssignorList.map((item, index) => { <Choose>
return ( <When condition={checkedAssignorList.length > 0}>
<div className='selected-item'> {checkedAssignorList.map((item, index) => {
<span className='item-title'> return (
{item.checkedType === 'CUSTOMER' ? ( <div className='selected-item'>
<div> <span className='item-title'>
<span className='icon iconfont title-icon'>&#xe603;</span> {item.checkedType === 'CUSTOMER' ? (
<Tooltip title={<WWOpenDataCom type='userName' openid={item.checkedName} />}> <div>
<span className='title-name'> <span className='icon iconfont title-icon'>&#xe603;</span>
<WWOpenDataCom type='userName' openid={item.checkedName} /> <Tooltip title={<WWOpenDataCom type='userName' openid={item.checkedName} />}>
</span> <span className='title-name'>
</Tooltip> <WWOpenDataCom type='userName' openid={item.checkedName} />
</div> </span>
) : ( </Tooltip>
<div> </div>
<span className='icon iconfont title-icon'>&#xe604;</span> ) : (
<Tooltip title={<WWOpenDataCom type='departmentName' openid={item.checkedName} />}> <div>
<span className='title-name'> <span className='icon iconfont title-icon'>&#xe604;</span>
<WWOpenDataCom type='departmentName' openid={item.checkedName} /> <Tooltip title={<WWOpenDataCom type='departmentName' openid={item.checkedName} />}>
</span> <span className='title-name'>
</Tooltip> <WWOpenDataCom type='departmentName' openid={item.checkedName} />
</div> </span>
)} </Tooltip>
</span> </div>
<span className='icon iconfont clear-icon' onClick={() => removeCheckedAssignor(item)}> )}
&#xe717; </span>
</span> <span className='icon iconfont clear-icon' onClick={() => removeCheckedAssignor(item)}>
</div> &#xe717;
); </span>
})} </div>
);
})}
</When>
<Otherwise>
<LottieIcon title='暂无数据' type='college' size={150} />
</Otherwise>
</Choose>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -78,6 +78,12 @@ ...@@ -78,6 +78,12 @@
font-size: 14px !important; font-size: 14px !important;
} }
} }
.lottie-icon {
margin-top: 64px;
.lottie-icon__title {
color: #666666;
}
}
.tree-con { .tree-con {
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
...@@ -137,6 +143,12 @@ ...@@ -137,6 +143,12 @@
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
max-height: 370px; max-height: 370px;
.lottie-icon {
margin-top: 76px;
.lottie-icon__title {
color: #666666;
}
}
.selected-item { .selected-item {
padding: 12px 12px 12px 16px; padding: 12px 12px 12px 16px;
display: flex; display: flex;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: yuananting * @Author: yuananting
* @Date: 2021-08-12 16:27:38 * @Date: 2021-08-12 16:27:38
* @LastEditors: yuananting * @LastEditors: yuananting
* @LastEditTime: 2021-08-13 19:39:34 * @LastEditTime: 2021-08-17 19:10:02
* @Description: 新建培训任务-选择协同人员 * @Description: 新建培训任务-选择协同人员
* @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
* @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有 * @@Copyrigh: © 2020 杭州杰竞科技有限公司 版权所有
...@@ -10,14 +10,10 @@ ...@@ -10,14 +10,10 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Modal, Input, Tooltip, List, Checkbox } from 'antd'; import { Modal, Input, Tooltip, List, Checkbox } from 'antd';
import { XMTable } from '@/components';
import college from '@/common/lottie/college.json';
import Service from '@/common/js/service';
import User from '@/common/js/user';
import StoreService from '@/domains/store-domain/storeService'; import StoreService from '@/domains/store-domain/storeService';
import search from '@/common/lottie/search';
import './ChooseCollaboratorModal.less'; import './ChooseCollaboratorModal.less';
import WWOpenDataCom from '@/components/WWOpenDataCom'; import WWOpenDataCom from '@/components/WWOpenDataCom';
import LottieIcon from '@/components/LottieIcon';
import _ from 'underscore'; import _ from 'underscore';
...@@ -186,36 +182,43 @@ function ChooseCollaboratorModal(props) { ...@@ -186,36 +182,43 @@ function ChooseCollaboratorModal(props) {
enterButton={<span className='icon iconfont'>&#xe832;</span>} enterButton={<span className='icon iconfont'>&#xe832;</span>}
/> />
<div className='data-body'> <div className='data-body'>
<List <Choose>
header={ <When condition={employeeList.length > 0}>
<Checkbox checked={allChecked} onChange={handleCheckedAll}> <List
全部 header={
</Checkbox> <Checkbox checked={allChecked} onChange={handleCheckedAll}>
} 全部
dataSource={employeeList} </Checkbox>
renderItem={(item, index) => ( }
<List.Item> dataSource={employeeList}
<Checkbox renderItem={(item, index) => (
checked={item.checked} <List.Item>
value={item} <Checkbox
key={item.checkedId} checked={item.checked}
disabled={item.checkedId === props.createId} value={item}
onChange={handleCheckedCollaborator}> key={item.checkedId}
<div className='employee-item'> disabled={item.checkedId === props.createId}
<span className='item-title'> onChange={handleCheckedCollaborator}>
<span className='icon iconfont title-icon'>&#xe84a;</span> <div className='employee-item'>
<Tooltip title={<WWOpenDataCom type='userName' openid={item.checkedName} />}> <span className='item-title'>
<span className='title-name'> <span className='icon iconfont title-icon'>&#xe84a;</span>
<WWOpenDataCom type='userName' openid={item.checkedName} /> <Tooltip title={<WWOpenDataCom type='userName' openid={item.checkedName} />}>
<span className='title-name'>
<WWOpenDataCom type='userName' openid={item.checkedName} />
</span>
</Tooltip>
</span> </span>
</Tooltip> <span className='dep-info'>{renderDepItem(item)}</span>
</span> </div>
<span className='dep-info'>{renderDepItem(item)}</span> </Checkbox>
</div> </List.Item>
</Checkbox> )}
</List.Item> />
)} </When>
/> <Otherwise>
<LottieIcon title='搜索无结果' type='search' size={150} />
</Otherwise>
</Choose>
</div> </div>
</div> </div>
<div className='right-list'> <div className='right-list'>
......
...@@ -12,6 +12,12 @@ ...@@ -12,6 +12,12 @@
overflow-x: hidden; overflow-x: hidden;
max-height: 370px; max-height: 370px;
padding-right: 16px; padding-right: 16px;
.lottie-icon {
margin-top: 76px;
.lottie-icon__title {
color: #666666;
}
}
.ant-list { .ant-list {
.ant-list-item:hover { .ant-list-item:hover {
background-color: #f3f6fa; background-color: #f3f6fa;
......
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