revive 4 年之前
父節點
當前提交
c95645a269
共有 12 個檔案被更改,包括 7306 行新增7311 行删除
  1. +10
    -0
      dist/static/css/main.css
  2. +1
    -0
      package.json
  3. +9
    -0
      src/services/system.js
  4. +0
    -23
      src/services/user.js
  5. +15
    -11
      src/store/index.js
  6. +2
    -1
      src/utils/request.js
  7. +192
    -145
      src/views/components_web/newProj/newProj.vue
  8. +9
    -2
      src/views/main_web/index/index.vue
  9. +1
    -0
      src/views/main_web/workspace/index.js
  10. +6918
    -7124
      src/views/main_web/workspace/workspace.vue
  11. +4
    -3
      vue.config.js
  12. +145
    -2
      yarn.lock

+ 10
- 0
dist/static/css/main.css 查看文件

@@ -3657,6 +3657,16 @@ button:focus {
bottom: 4px;
left: 10px;
}
.listUpdateBtn.editCoverBtn{
width: 40px;
height: 20px;
border-radius: 4px !important;
border: 0.5px solid rgba(227, 227, 227, 1);
line-height: 20px;
bottom: 10px;
font-size: 12px;
background-color: #fff;
}
.listUpdateBtn .webuploader-pick{
width: 80px;
height: 20px;


+ 1
- 0
package.json 查看文件

@@ -25,6 +25,7 @@
"lodash": "^4.17.20",
"sass": "^1.26.11",
"sass-loader": "^10.0.2",
"socket.io-client": "^2.3.1",
"vue": "^2.6.11",
"vue-lazyload": "^1.3.3",
"vue-router": "^3.4.5",


+ 9
- 0
src/services/system.js 查看文件

@@ -2,18 +2,26 @@
* 模拟客户端back server
* 目前还不知道back的API及具体实现,暂时先抑制代码报错
*/
import io from 'socket.io-client';

export const isClient = process.env.IS_CLIENT;

let socket;
const noop = () => {};

const safeCall = f => isClient ? f : noop;
const safeSocket = f => (...args) => socket && f(...args);

const system = {
isClient,
test: safeCall(() => {
console.log('客户端 electron API 检测:', global.electron);
system.initalSocket();
}),
initalSocket: () => {
socket = io('http://10.240.32.243:3000');
socket.on('connect', () => { console.log('本地socket服务连接成功') });
},
/**
* 系统打开只当文件
*/
@@ -21,6 +29,7 @@ const system = {
const { shell } = global.electron;
shell.openPath(filePath);
}),
// todo
}




+ 0
- 23
src/services/user.js 查看文件

@@ -6,7 +6,6 @@ import dayjs from 'dayjs';
export async function fetchAddressBook(companyId) {

const res = await fetchApi('company/queryCompanyById', { id: companyId });
console.log('firstData',res);
const { company: unfixedCompany = {} } = res.Data || {};
const company = firstCharToLowerCase(unfixedCompany);
const firnode = node('company', company.id, company.companyName, company);
@@ -20,16 +19,6 @@ export async function fetchAddressBook(companyId) {
* @param {string} parentNodeId 若为空,则表示查询根节点
*/
async function fetchNodes(parentNodeId) {
// if (!parentNodeId) { // 查询省级
// const resData = await fetchApi('company/queryProviceTree');
// const dataList = resData.Data || [];
// return dataList.map(({ ProviceID, ProviceName, num }) => node('other', ProviceID, ProviceName, { num }));
// }
// if (!topNodeId) { // 查询省下的一级行业列表
// const resData = await fetchApi('company/queryCompanyByProviceIdAndIndustryId', { proviceId: parentNodeId });
// const dataList = resData.Data || [];
// return dataList.map(({ industry_id, name }) => node('other', industry_id, name, undefined, parentNodeId));
// }
const resData = await fetchApi('dept/queryDeptsByDeptId', { superId: parentNodeId });
const nodes = (resData.Data || []).map(d => {
const data = firstCharToLowerCase(d);
@@ -47,18 +36,6 @@ async function fetchNodes(parentNodeId) {
}
})
}
// const companyList = data.companys || [];
// const indsList = data.industrys || [];
// let nodes = [];
//
// companyList.forEach(({ company_id, company_name }) => {
// nodes.push(node('company', company_id, company_name, undefined, topNodeId, true));
// });

// indsList.forEach(({ industry_id, name }) => {
// nodes.push(node('other', industry_id, name, undefined, topNodeId));
// });

return nodes;
}



+ 15
- 11
src/store/index.js 查看文件

@@ -1,6 +1,7 @@

import { fetchApi } from '@/utils/request';
import { platform, PLATFORM_TYPE, AccessCode } from '@/utils/access';
import { firstCharToLowerCase } from '@/utils/tool';

const initialState = () => ({
isLogin: false,
@@ -10,6 +11,8 @@ const initialState = () => ({
platformList: [],
currentPlatform: {},
currentCompanyId: undefined,
avator: undefined,
userInfo: {},
});

const getBootstrapState = () => {
@@ -49,15 +52,17 @@ export default {
}

this.state.isLogin = true;
const { CompanyId, CnName, Id: accountId, Permission, BackgroundPermission,HeadImgUrl } = loginRes.Data || {};
console.log(loginRes);
const userData = firstCharToLowerCase(loginRes.Data || {});
// 如果以后用到这里面的数据,拍平放到同层级,不再放到userExt字段下
delete userData.userExt;
const { companyId, cnName, id: accountId, permission, backgroundPermission } = userData;
const platformList = [];
const loginData = {
accountId,
accountName: UserName,
userName: CnName,
userName: cnName,
platformList,
HeadImgUrl
userInfo: userData,
};

/**
@@ -67,18 +72,18 @@ export default {
* 3. 企业
*/

const isSuperAdmin = BackgroundPermission === 3;
const isCompanyAdmin = BackgroundPermission === 2;
const isSuperAdmin = backgroundPermission === 3;
const isCompanyAdmin = backgroundPermission === 2;

//
if (isSuperAdmin) { // todo 服务商查询企业列表并生成platformList
// todo 暂时将模板控制台加入到超管账号中
platformList.push(
platform(PLATFORM_TYPE.MANAGE_CENTER, CompanyId, 'LOCKING 总后台', undefined, []),
platform(PLATFORM_TYPE.MANAGE_CENTER, companyId, 'LOCKING 总后台', undefined, []),
// platform(PLATFORM_TYPE.TEMPLATE_CONSOLE, CompanyId, undefined, false, '模版控制台'),
);
} else { // 企业生成自己的企业平台权限
const companyInfoRes = await fetchApi('company/queryFrontDeskCompanyById', { id: CompanyId });
const companyInfoRes = await fetchApi('company/queryFrontDeskCompanyById', { id: companyId });
if (companyInfoRes.Code !== 0) {
return companyInfoRes;
}
@@ -86,8 +91,8 @@ export default {
const { company: { LogoUrl, CompanyName } } = Data;
const accessList = [];
if (isCompanyAdmin) { accessList.push(AccessCode.CompanyConsole); }
if (Permission === 1) { accessList.push(AccessCode.ProjectManager); }
platformList.push(platform(PLATFORM_TYPE.COMPANY, CompanyId, CompanyName, LogoUrl, accessList));
if (permission === 1) { accessList.push(AccessCode.ProjectManager); }
platformList.push(platform(PLATFORM_TYPE.COMPANY, companyId, CompanyName, LogoUrl, accessList));
}

// 存储
@@ -100,7 +105,6 @@ export default {
Code: loginRes.Code,
Data: loginData,
}

},
logout() {
this.state = initialState();


+ 2
- 1
src/utils/request.js 查看文件

@@ -88,7 +88,7 @@ export default axios;

function mapApiPathToFullPath(path) {
const [service] = path.split('/');
const fullpath = `api/${(service === 'template' || service ==='project') ? 'pms' : 'cms'}/${service === 'authentication' ? '' : 'v1/'}${path}`;
const fullpath = `api/${(service === 'template' || service === 'project') ? 'pms' : 'cms'}/${service === 'authentication' ? '' : 'v1/'}${path}`;
let method = 'GET';

switch (path) {
@@ -110,6 +110,7 @@ function mapApiPathToFullPath(path) {
case 'template/createNestedRelevance':
case 'template/deleteNestedRelevance':
case 'project/EditProject':
case 'project/CreateProject':
// case 'template/deleteTemplateNodeModelFile':
method = 'POST';
break;


+ 192
- 145
src/views/components_web/newProj/newProj.vue 查看文件

@@ -31,11 +31,11 @@
<div class="EC_col_8">
<div class="fr mt-26">
<el-button type="primary" round class="fr width_120" @click="goprojInfo" v-show="NewProductDailog == true">下一步</el-button>
<el-button type="primary" round class="fr width_120" @click="godistWork" v-show="ProjInfoDialog == true">下一步</el-button>
<el-button type="primary" round class="fr width_120" @click="createProject" v-show="marchWorkDialog == true"
<el-button type="primary" round class="fr width_120" @click="createProject" v-show="ProjInfoDialog == true" :disabled="isDisableCreate">创建项目</el-button>
<!-- <el-button type="primary" round class="fr width_120" @click="createProject"
:disabled="isDisableCreate">创建项目</el-button>
<el-button type="primary" round class="fr width_120" @click="addUser(nowFolderIndex)" v-show="marchWorkerPalDialog == true">分配职员</el-button>
<el-button type="primary" round class="fr width_120" @click="backdistWork" v-show="marchWorkerDialog == true">完成或跳过</el-button>
<el-button type="primary" round class="fr width_120" @click="backdistWork" v-show="marchWorkerDialog == true">完成或跳过</el-button> -->
</div>
</div>
<div class="clear"></div>
@@ -94,18 +94,21 @@
</el-form-item>
</div>
</div>
<div class="yiyun_col-12 fl" v-for="prop in listTempProp" :key="prop.propertyID">
<!-- 自定义字段显示并输入 -->
<div class="yiyun_col-12 fl" v-for="prop in checkNewProjData.CustomProps" :key="prop.Id">
<div class="yiyunlargeItem">
<el-form-item :label="prop.propertyName">
<el-input v-model="prop.propValue" placeholder="输入" class="labelinputbefore">
<el-form-item :label="prop.PropertyName">
<el-input v-model="prop.PropValue" placeholder="输入" @input="userDefineInput" class="labelinputbefore" :key="prop.Id">
</el-input>
</el-form-item>
</div>
</div>
<div class="clear"></div>
<div class="yiyun_col-12img fl mt-10">
<div class="clear"></div>
<div class="yiyun_col-6">
<div class="pageImgBox">
<img :src="coverSrc | resolveAvator" alt="" />
<file-uploader
@@ -148,10 +151,10 @@
<div class="fl firstPeople">
<!-- 默认添加 -->
<div >
<div class="avtarface" :title="currUser.userName">
<img src="" v-lazy="headSrc+currUser.headImgUrl"/>
<div class="avtarface" :title="currUser.cnName">
<img :src="currUser.headImgUrl | resolveAvator"/>
</div>
<span class="Text_tiny tinyText_wirte">{{currUser.userName}}</span>
<span class="Text_tiny tinyText_wirte">{{currUser.cnName}}</span>
</div>
</div>
<!-- 竖线 -->
@@ -166,9 +169,9 @@
<li v-for="(user,index) in newProjData.projectData.listProjManager" :key="index">
<div v-if="index < 14 || showAll ">
<div class="avtarface" :title="user.userName">
<img src="" v-lazy="headSrc+user.headImgUrl" />
<img :src="user.headImgUrl | resolveAvator" />
</div>
<span class="Text_tiny tinyText_wirte">{{user.userName}}</span>
<span class="Text_tiny tinyText_wirte">{{user.cnName}}</span>
</div>
</li>
</ul>
@@ -209,7 +212,7 @@
<li v-for="(user,index) in folder.manageUser" :key="index">
<div>
<div class="avtarface" title="编辑">
<img src="" v-lazy="headSrc+user.headImgUrl" />
<img :src="user.headImgUrl | resolveAvator" />
<div class="eiditIconimgBox" @click="addUserPal(folderIndex)">
<i class="icon font_family icon-icon_bianji1 eiditIconimg"></i>
</div>
@@ -229,7 +232,7 @@
<li v-for="(user,index) in listUserComputed(folder.listUser)" :key="index">
<div v-if="index < 14 || showAll ">
<div class="avtarface" :title="user.cnName">
<img src="" v-lazy="headSrc+user.headImgUrl" />
<img :src="user.headImgUrl | resolveAvator" />
</div>
<span class="Text_tiny tinyText_wirte">{{user.cnName}}</span>
</div>
@@ -270,7 +273,7 @@
<div class="touxiang_hezuorenBox fl">
<div class="yonghutouxiangBox" v-for="(user,checkIndex) in folder.listUser" :key="checkIndex">
<div class="touxiang_hezuorenBox-item">
<img v-lazy="headSrc+user.headImgUrl" class="imgHead">
<img :src="user.headImgUrl | resolveAvator" class="imgHead">
<i class="icon_delete el-icon-delete" title="删除" @click="deleteNewProjUser(index,checkIndex)"></i>
</div>
<span>{{user.cnName}}</span>
@@ -314,12 +317,14 @@
</span> -->
<span class="btnlabelTitle">{{dept.deptName}} </span>
</template>
<div class="user_info_item" v-for="(user,index) in listUserManager(dept.listUser)" :label="user"
<!-- <div class="user_info_item" v-for="(user,index) in listManagerComputed(dept.listUser)" :label="user"
:key="index"> -->
<div class="user_info_item" v-for="(user,index) in (dept.listUser)" :label="user"
:key="index">
<el-checkbox class="checkBoxCol" v-model="user.selected" @change="handleCheckedOnlyOne(group_index,user,$event)"
:disabled="disabled">
<div class="checkboxlabelitem">
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
<img :src="user.headImgUrl | resolveAvator" alt="" class="user_info_faceImg">
<span class="user_info_name">{{user.cnName}}</span>
<el-popover placement="bottom-start" width="180" trigger="hover">
<ul class="popover_ul popover_ul">
@@ -348,16 +353,20 @@
<span>工作负责人</span>
<div class="yiyun_line"></div>
<!-- 项目负责人选择前 isSlectPal -->
<div class="main_workerBox" v-if="listManagerComputed(selectedUser).length == 0">
<!-- <div class="main_workerBox" v-if="listManagerComputed(selectedUser).length == 0"> -->
<div class="main_workerBox" v-if="(selectedUser).length == 0">
<i class="icon font_family icon-icon_huangguan-weijihuo largehuangguan"></i>
<div class="rentou_alrge"></div>
</div>
<!-- 项目负责人选择后 -->
<div v-if="listManagerComputed(selectedUser).length != 0">
<div class="user_info_item mainpeople_H" v-for="(user,index) in listManagerComputed(selectedUser)"
<!-- <div v-if="listManagerComputed(selectedUser).length != 0"> -->
<div v-if="(selectedUser).length != 0">
<!-- <div class="user_info_item mainpeople_H" v-for="(user,index) in listManagerComputed(selectedUser)"
:key="index"> -->
<div class="user_info_item mainpeople_H" v-for="(user,index) in (selectedUser)"
:key="index">
<i class="icon font_family icon-icon_huangguan-jihuo middlehuangguan fl" title="负责人"></i>
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
<img :src="user.headImgUrl | resolveAvator" alt="" class="user_info_faceImg">
<span class="user_info_name">{{user.cnName}}</span>
<el-popover placement="bottom-start" width="180" trigger="hover">
<ul class="popover_ul popover_ul">
@@ -386,7 +395,7 @@
</div>
<div class="renyuanbox" v-for="(user,index) in listUserComputed(selectedUser)" :key="index">
<div class="user_info_item" v-if="user.deptID ==dept.deptID">
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
<img :src="user.headImgUrl | resolveAvator" alt="" class="user_info_faceImg">
<span class="user_info_name">{{user.cnName}}</span>
<el-popover placement="bottom-start" width="180" trigger="hover">
<ul class="popover_ul popover_ul">
@@ -440,14 +449,16 @@
<span class="quanxuanbtn">
<el-checkbox class="checkBoxCol" v-model="dept.disabled" :key="group_index" @change="handleCheckItemAll(group_index,$event)">全选</el-checkbox>
</span>
<span class="btnlabelTitle">{{dept.data.deptName}} </span>
<span class="btnlabelTitle">{{dept.deptName}} </span>
</template>
<div class="user_info_item" v-for="(user,index) in listUserComputed(dept)" :label="user"
<!-- <div class="user_info_item" v-for="(user,index) in listUserComputed(dept.listUser)" :label="user"
:key="index"> -->
<div class="user_info_item" v-for="(user,index) in (dept.listUser)" :label="user"
:key="index">
<el-checkbox class="checkBoxCol" v-model="user.disabled" @change="handleCheckedOne(group_index,user,$event)"
:disabled="disabled">
<div class="checkboxlabelitem">
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
<img :src="user.headImgUrl | resolveAvator" alt="" class="user_info_faceImg">
<span class="user_info_name">{{user.userName}}</span>
<el-popover placement="bottom-start" width="180" trigger="hover">
<ul class="popover_ul popover_ul">
@@ -476,17 +487,20 @@
<span>工作负责人</span>
<div class="yiyun_line"></div>
<!-- 项目负责人选择前 -->
<div class="main_workerBox" v-if="listManagerComputed(selectedUser).length == 0">
<!-- <div class="main_workerBox" v-if="listManagerComputed(selectedUser).length == 0"> -->
<div class="main_workerBox" v-if="(selectedUser).length == 0">
<i class="icon font_family icon-icon_huangguan-weijihuo largehuangguan"></i>
<div class="rentou_alrge"></div>
</div>
<!-- 项目负责人选择后 -->
<div v-if="listManagerComputed(selectedUser).length != 0">
<div class="user_info_item mainpeople_H" v-for="(user,index) in listManagerComputed(selectedUser)"
<!-- <div class="user_info_item mainpeople_H" v-for="(user,index) in listManagerComputed(selectedUser)"
:key="index"> -->
<div class="user_info_item mainpeople_H" v-for="(user,index) in (selectedUser)"
:key="index">
<i class="icon font_family icon-icon_huangguan-jihuo middlehuangguan fl" title="负责人"></i>
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
<span class="user_info_name">{{user.userName}}</span>
<img :src="user.headImgUrl | resolveAvator" alt="" class="user_info_faceImg">
<span class="user_info_name">{{user.cnName}}</span>
<el-popover placement="bottom-start" width="180" trigger="hover">
<ul class="popover_ul popover_ul">
<li><a href="javascript:;">{{user.roleName}}</a></li>
@@ -503,17 +517,17 @@
</p>
</div>
<div v-if="isShowFirstPeople">
<div class="row_painfr" v-for="dept in listDept" :key="dept.deptID" v-show="dept.listUser.length>0">
<div class="row_painfr" v-for="dept in listDept" :key="dept.id" v-show="dept.listUser.length>0">
<div v-for="deptID in listDeptUserNoZero(selectedUser)" :key="deptID">
<div v-if="deptID ==dept.deptID">
<div v-if="deptID ==dept.id">
<div class="yiyun_line"></div>
<span>{{dept.deptName}}</span>
</div>
</div>
<div class="renyuanbox" v-for="(user,index) in listUserComputed(selectedUser)" :key="index">
<div class="user_info_item" v-if="user.deptID ==dept.deptID">
<div class="renyuanbox" v-for="(user,index) in selectedUser" :key="index">
<div class="user_info_item" v-if="user.deptId == dept.id">
<!-- <i class="huangguan" @click="setManageUser(user)" title="设置负责人"></i> -->
<img v-lazy="headSrc+user.headImgUrl" alt="" class="user_info_faceImg">
<img :src="user.headImgUrl | resolveAvator" alt="" class="user_info_faceImg">
<span class="user_info_name">{{user.userName}}</span>
<el-popover placement="bottom-start" width="180" trigger="hover">
<ul class="popover_ul popover_ul">
@@ -566,6 +580,7 @@
},
data() {
const currentUser = this.$store.state.userInfo;
return {
imgSrc: process.env.API_HOST + 'archives/cover?path=',
headSrc: process.env.API_HOST + 'archives/head?path=',
@@ -585,6 +600,20 @@
selectTemlateData: "", //新建项目时加载的模板
selectTemlateID: "",
diaBodyheight: false,
checkNewProjData: {
"Proj": {
"ProjName":"",
"CompanyId":"",
"Notice":"",
"ShowImgUrl":"",
"TemplateId":"",
"CreateUserId":"",
"ModifyUserId":""
},
"Node": {},
"CustomProps": []
},
newProjData: {
"projectData": {
"projID": "",
@@ -630,7 +659,7 @@
ischeckAll: false, //是否是全部选中
newProjFolderIndex: 1,
// projectCreaterName: sessionStorage.cnName,
projectCreaterName: JSON.parse(sessionStorage.user).userName,
projectCreaterName: currentUser.cnName,
createDate: new Date().toLocaleDateString(),
listNewFolder: [],
listMyPermFolders: [], //获取项目文件夹
@@ -648,7 +677,7 @@
nowFolderIndex: '', //当前分配工作文件夹index
tempIndex: 0,
currSelectData: [],
currUser:JSON.parse(sessionStorage.user),
currUser:currentUser,
isShowManager:true,
/* */
@@ -731,7 +760,7 @@
let temp = [];
for (let i = 0; i < user.length; i++) {
if (user[i].folderPerm != 2) {
temp.push(user[i].deptID);
temp.push(user[i].deptId);
}
}
var x = new Set(temp);
@@ -740,6 +769,12 @@
},
},
methods: {
/**
* 用户自定义字段输入强制刷新 解决无法输入的问题
*/
userDefineInput: function() {
this.$forceUpdate();
},
/**
* 检测bigbody滚动距离添加样式
*/
@@ -864,8 +899,21 @@
},
"listFolder": [],
"listProjProp": [],
"userId": "",
"userId": ""
};
thisApp.checkNewProjData = {
"Proj": {
"ProjName":"",
"CompanyId":"",
"Notice":"",
"ShowImgUrl":"",
"TemplateId":"",
"CreateUserId":"",
"ModifyUserId":""
},
"Node": {},
"CustomProps": []
},
thisApp.$emit("refreshListProj", false);
},
/*
@@ -873,7 +921,7 @@
*/
godistWork: function() {
this.isAllhide();
this.marchWorkDialog = true; //显示分配工作面板
// this.marchWorkDialog = true; //显示分配工作面板
//
// this.newProjData.projectData.listProjManager.push(JSON.parse(sessionStorage.user));
@@ -973,14 +1021,10 @@
this.isShowManager=false;
//左侧选中状态根据右侧人员状态改变
// this.setFolderPerm(this.newProjData.listFolder[parseInt(index)]);
fetchPlainDeptUserList(this.$store.state.currentCompanyId).then(res => {
this.listDept = res[0].children;
// this.$nextTick(() => {
// this.listDept = res[0].children//是一个包含公司部门的对象数组 每一个对象里面有具体的数据
// this.listDept = [...this.listDept];
// console.log('111111111111111111111',this.listDept);
// this.$forceUpdate();
// })
fetchPlainDeptUserList(this.$store.state.currentCompanyId).then(list => {
this.listDept = list;
this.listDept = [...this.listDept];
console.log('1111111111111111111111111',this.listDept);
}).catch(err => {
console.log(err);
})
@@ -1064,19 +1108,19 @@
* e:点击触发的事件
*/
handleCheckItemAll(index, e) {
for (var i = 0; i < this.listDept[index].children.length; i++) {
for (var i = 0; i < this.listDept[index].listUser[i].length; i++) {
if(!this.isShowManager)
{
if(this.currUser.userID == this.listDept[index].children[i].userID)
if(this.currUser.userID == this.listDept[index].listUser[i].id)
{
continue;
}
}
if (e) {
this.handleCheckedOne(index, this.listDept[index].children[i], false);
this.handleCheckedOne(index, this.listDept[index].children[i], e);
this.handleCheckedOne(index, this.listDept[index].listUser[i], false);
this.handleCheckedOne(index, this.listDept[index].listUser[i], e);
} else {
this.handleCheckedOne(index, this.listDept[index].children[i], e);
this.handleCheckedOne(index, this.listDept[index].listUser[i], e);
}
}
},
@@ -1105,10 +1149,10 @@
/*
*选择负责人
*/
// (group_index,user,$event)
handleCheckedOnlyOne(topIndex, user, e) { //三级change事件
if (e) {
//将选中的人员返回给添加合作人页面
this.checkDeptUserName(e, user);
this.setManagerUser(user);
this.isSlectPal = false;
@@ -1126,16 +1170,16 @@
getIsCheckSecondLevel(topIndex) {
var checkCount = 0;
for (var i = 0; i < this.listDept[topIndex].listUser.length; i++) {
if (this.listDept[topIndex].listUser[i].selected == true) {
if (this.listDept[topIndex].listUser[i]['selected'] == true) {
checkCount++;
} else {
checkCount--;
}
}
if (checkCount == this.listDept[topIndex].listUser.length) { //三级级全勾选
this.listDept[topIndex].selected = true
this.listDept[topIndex]['selected'] = true
} else { //三级级全不勾选
this.listDept[topIndex].selected = false
this.listDept[topIndex]['selected'] = false
}
},
/*
@@ -1147,7 +1191,7 @@
for (var j = 0; j < this.listDept.length; j++) { //全选checkbox状态
if (this.listDept[j].listUser.length > 0) {
haveDataCount++;
if (this.listDept[j].selected == true) {
if (this.listDept[j]['selected'] == true) {
checkCount++;
}
}
@@ -1189,12 +1233,12 @@
setFolderPerm: function(data) {
for (var j = 0; j < this.listDept.length; j++) {
for (var k = 0; k < this.listDept[j].listUser.length; k++) {
this.listDept[j].listUser[k].selected = false;
this.listDept[j].listUser[k]['selected'] = false;
this.listDept[j].listUser[k].folderPerm = 0;
for (var i = 0; i < data.listUser.length; i++) {
if (this.listDept[j].listUser[k].userID == data.listUser[i].userID) {
this.listDept[j].listUser[k].folderPerm = data.listUser[i].folderPerm;
this.listDept[j].listUser[k].selected = true;
this.listDept[j].listUser[k]['selected'] = true;
}
}
this.getIsCheckSecondLevel(j);
@@ -1211,11 +1255,11 @@
if (this.selectedUser.length > 0) {
for (var k = 0; k < this.selectedUser.length; k++) {
if (this.listDept[i].listUser[j].userID === this.selectedUser[k].userID) {
this.listDept[i].listUser[j].selected = true;
this.listDept[i].listUser[j]['selected'] = true;
}
}
} else {
this.listDept[i].listUser[j].selected = false;
this.listDept[i].listUser[j]['selected'] = false;
}
this.getIsCheckSecondLevel(i);
}
@@ -1226,7 +1270,7 @@
* 对已选协作人添加和删除
*/
checkDeptUserName: function(checked, item) {
item.selected = checked;
item['selected'] = checked;
if (checked) {
item.folderPerm = 1; // 默认角色为:查看和编辑
var valueUser = JSON.parse(JSON.stringify(item));
@@ -1254,43 +1298,35 @@
this.cancelCheck(this.selectedUser[i].userID);
}
this.getSelectTemplateList(this.selectTemlateID);
},
/**
* 获取模板列表子节点数据
*/
getSelectTemplateList: function(templateID) {
var thisApp = this;
this.$axios({
method: 'get',
url: encodeURI(process.env.API_HOST + "templates/nodes/" + templateID + "/" + templateID),
})
.then(response => {
thisApp.SelectTemplateNodeList = response.data;
thisApp.newProjData.listFolder = [];
for (var i = 0; i < thisApp.SelectTemplateNodeList.length; i++) {
var folder = {
"folderID": "",
"projID": "",
"superID": "",
"levelID": "",
"firstFolderID": "",
"tempNodeID": thisApp.SelectTemplateNodeList[i].nodeID,
"folderName": thisApp.SelectTemplateNodeList[i].nodeName,
"fileCount": 0,
"childCount": 0,
"modifyUserID": "",
"deleted": 0,
"default": true,
"listUser": [],
"manageUser": []
};
thisApp.newProjData.listFolder.push(folder);
}
})
.catch(error => {
console.log(error);
});
async getSelectTemplateList(templateID) {
const { Data } = await templateService.queryTemplateNodeByTemplateId(templateID);
const headNodes = (Data.children || []);
this.newProjData.listFolder = [];
headNodes.forEach(node => {
const folder = {
folderID: "",
projID: "",
superID: "",
levelID: "",
firstFolderID: "",
tempNodeID: node.id,
folderName: node.topic,
fileCount: 0,
childCount: 0,
modifyUserID: "",
deleted: 0,
default: true,
listUser: [],
manageUser: []
};
this.newProjData.listFolder.push(folder);
});
},
/**
* 设置随机封面
@@ -1366,7 +1402,7 @@
for (var i = 0; i < this.listDept.length; i++) {
for (var j = 0; j < this.listDept[i].listUser.length; j++) {
if (this.listDept[i].listUser[j].userID === userID) {
this.listDept[i].listUser[j].selected = false;
this.listDept[i].listUser[j]['selected'] = false;
this.listDept[i].listUser[j].folderPerm = 0;
this.getIsCheckSecondLevel(i);
}
@@ -1388,36 +1424,29 @@
/**
* 新建项目
*/
createProject: function() {
async createProject() {
// this.isAllhide();
this.isDisableCreate = true;
this.newProjData.userId = sessionStorage.userId;
this.newProjData.projectData.templateID = this.selectTemlateID;
var thisApp = this;
if (thisApp.uploadCoverTimes > 1) {
var parm = {
ListFilePath: thisApp.arryUnUseCover
};
this.$axios({
method: 'post',
url: encodeURI(process.env.API_HOST + 'webupload/files/clear'),
data: parm,
})
.then(response => {})
.catch(error => {
console.log(error);
});
}
thisApp.newProjData.listProjProp = thisApp.listTempProp;
this.$axios({
method: 'post',
url: encodeURI(process.env.API_HOST + 'projects'),
data: thisApp.newProjData,
})
.then(response => {
if (response.data.state == 1) {
this.checkNewProjData.Proj.ProjName = this.newProjData.projectData.projName;
this.checkNewProjData.Proj.CompanyId = this.$store.state.currentCompanyId;
this.checkNewProjData.Proj.ShowImgUrl = String(this.newProjData.projectData.showImgUrl);
this.checkNewProjData.Proj.TemplateId = this.selectTemlateID;
this.checkNewProjData.Proj.CreateUserId = sessionStorage.userId;
this.checkNewProjData.Proj.ModifyUserId = sessionStorage.userId;
const res = await templateService.queryTemplateNodeByTemplateId(this.selectTemlateID);
this.checkNewProjData.Node = res.Data;
this.$fetchApi('project/CreateProject', JSON.stringify(this.checkNewProjData)).then(res => {
console.log(res);
if(res.Code === 0) {
thisApp.$notify({
title: "恭喜您",
message: response.data.message,
message: "项目创建成功",
type: "success",
offset: 100,
duration: 2500,
@@ -1425,19 +1454,22 @@
thisApp.reSetDialog();
thisApp.isDisableCreate = false;
thisApp.coverSrc = 'static\\img\\faceImg\\face01.png';
} else {
let timer = setTimeout(() => {
this.$emit('createProjSuccess');
clearTimeout(timer);
},3000)
} else {
thisApp.$notify.error({
title: '温馨提示',
message: response.data.message,
message: res.Msg,
offset: 100,
duration: 5000,
});
thisApp.isDisableCreate = false;
}
})
.catch(error => {
console.log(error);
});
}
}).catch(err => console.log(err));
},
/**
* 获取全部的Dept数据
@@ -1486,20 +1518,20 @@
/**
* 获取模板属性字段
*/
listTempPropLoad: function() {
var templateId = this.newProjData.projectData.templateID;
var thisApp = this;
this.$axios({
method: 'get',
url: encodeURI(process.env.API_HOST + "templates/templateproperty/" + templateId)
})
.then(response => {
thisApp.listTempProp = response.data;
})
.catch(error => {
console.log(error);
});
},
// listTempPropLoad: function() {
// var templateId = this.newProjData.projectData.templateID;
// var thisApp = this;
// this.$axios({
// method: 'get',
// url: encodeURI(process.env.API_HOST + "templates/templateproperty/" + templateId)
// })
// .then(response => {
// thisApp.listTempProp = response.data;
// })
// .catch(error => {
// console.log(error);
// });
// },
/*
*进入项目概况
*/
@@ -1526,7 +1558,22 @@
});
return;
}
this.listTempPropLoad(); // 获取模板属性字段
// this.listTempPropLoad();
// 获取模板属性字段
templateService.queryTemplateById(this.selectTemlateID).then(res => {
res.Data.propertys.forEach((item, index) => {
this.checkNewProjData.CustomProps[index] = {};
this.checkNewProjData.CustomProps[index]['TempPropId'] = item.Id;
this.checkNewProjData.CustomProps[index]['PropertyName'] = item.PropertyName;
this.checkNewProjData.CustomProps[index]['PropValue'] = "";
let temp = this.checkNewProjData.CustomProps;
this.checkNewProjData.CustomProps = [...temp];
})
this.checkNewProjData = [...this.checkNewProjData];
})
this.isAllhide();
this.setSystemCoverRandom();
this.ProjInfoDialog = true; //隐藏新建项目面板
@@ -1561,18 +1608,18 @@
]);
const deptHeadList = treeDeptList[0].children || [];
const oList = plainTreeNodes(deptHeadList, userList);
return oList;
return oList.filter(dept => dept.listUser && dept.listUser.length);
}
function plainTreeNodes(nodesList, userList, outputList = []) {
(nodesList || []).forEach(node => {
// node.id
node.listUser = userList.filter(user => user.deptId === node.id);
outputList.push(node);
const data = node.data;
data.listUser = userList.filter(user => user.deptId === node.id);
outputList.push(data);
if(node.children && node.children.length) {
plainTreeNodes(node.children, userList, outputList);
}
delete node.children;
})
return outputList;
}


+ 9
- 2
src/views/main_web/index/index.vue 查看文件

@@ -21,14 +21,14 @@
<template #left>
{{currentPlatform.orgName}}
</template>
<template #right>
<!-- <template #right>
<span v-on:click="toRecycle">
<i
class="Cicon icon font_family icon-icon_huishouzhan"
title="回收站"
/>
</span>
</template>
</template> -->
</app-header>
<div class="layout_content">
<section class="yiyun_warpContent">
@@ -185,6 +185,7 @@
@refreshListProj="refreshListProj"
@isShowBottom="showzhankai"
:isNewProj="isNewProj"
@createProjSuccess="createProjSuccess"
></NewProj>
</div>
<!-- 分配项目弹框 -->
@@ -324,6 +325,12 @@ export default {
},
});
},
/**
* 新建项目成功后 关闭新建项目的弹窗
*/
createProjSuccess: function() {
this.refreshListProj();
},
/*
* 关闭新建项目弹框
*/


+ 1
- 0
src/views/main_web/workspace/index.js 查看文件

@@ -0,0 +1 @@
export { default } from './workspace';

src/views/main_web/workspace/workspace.vue
文件差異過大導致無法顯示
查看文件


+ 4
- 3
vue.config.js 查看文件

@@ -28,9 +28,10 @@ module.exports = {
],
devServer: {
proxy: {
'/api/pms/v1/template': {
target: 'http://47.104.91.134:8089',
// target: 'http://10.240.32.236:8089',
'/api/pms': {
// target: 'http://47.104.91.134:8089',
target:'http://10.240.32.176:8089',
changeOrigin: true,
secure: false,
},


+ 145
- 2
yarn.lock 查看文件

@@ -1599,6 +1599,11 @@ address@>=0.0.1, address@^1.0.0, address@^1.1.2:
resolved "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6"
integrity sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=

after@0.8.2:
version "0.8.2"
resolved "https://registry.npm.taobao.org/after/download/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f"
integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=

agent-base@4, agent-base@^4.2.0, agent-base@^4.3.0:
version "4.3.0"
resolved "https://registry.npm.taobao.org/agent-base/download/agent-base-4.3.0.tgz?cache=0&sync_timestamp=1593732670803&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fagent-base%2Fdownload%2Fagent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
@@ -1914,6 +1919,11 @@ array-unique@^0.3.2:
resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=

arraybuffer.slice@~0.0.7:
version "0.0.7"
resolved "https://registry.npm.taobao.org/arraybuffer.slice/download/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
integrity sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=

asar@^3.0.0:
version "3.0.3"
resolved "https://registry.npm.taobao.org/asar/download/asar-3.0.3.tgz#1fef03c2d6d2de0cbad138788e4f7ae03b129c7b"
@@ -2107,11 +2117,21 @@ babel-runtime@6.x:
core-js "^2.4.0"
regenerator-runtime "^0.11.0"

backo2@1.0.2:
version "1.0.2"
resolved "https://registry.npm.taobao.org/backo2/download/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=

balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=

base64-arraybuffer@0.1.4:
version "0.1.4"
resolved "https://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812"
integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=

base64-js@^1.0.2, base64-js@^1.2.3:
version "1.3.1"
resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
@@ -2184,6 +2204,11 @@ bindings@^1.5.0:
dependencies:
file-uri-to-path "1.0.0"

blob@0.0.5:
version "0.0.5"
resolved "https://registry.npm.taobao.org/blob/download/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
integrity sha1-1oDu7yX4zZGtUz9bAe7UjmTK9oM=

block-stream@*:
version "0.0.9"
resolved "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
@@ -2975,11 +3000,21 @@ compare-version@^0.1.2:
resolved "https://registry.npm.taobao.org/compare-version/download/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
integrity sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=

component-emitter@^1.2.1:
component-bind@1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/component-bind/download/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=

component-emitter@^1.2.1, component-emitter@~1.3.0:
version "1.3.0"
resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=

component-inherit@0.0.3:
version "0.0.3"
resolved "https://registry.npm.taobao.org/component-inherit/download/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=

compressible@~2.0.16:
version "2.0.18"
resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
@@ -3454,7 +3489,7 @@ debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
dependencies:
ms "2.0.0"

debug@3.1.0:
debug@3.1.0, debug@~3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz?cache=0&sync_timestamp=1600502855763&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdebug%2Fdownload%2Fdebug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=
@@ -3957,6 +3992,34 @@ end-or-error@^1.0.1:
resolved "https://registry.npm.taobao.org/end-or-error/download/end-or-error-1.0.1.tgz#dc7a6210fe78d372fee24a8b4899dbd155414dcb"
integrity sha1-3HpiEP5403L+4kqLSJnb0VVBTcs=

engine.io-client@~3.4.0:
version "3.4.4"
resolved "https://registry.npm.taobao.org/engine.io-client/download/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967"
integrity sha1-d9gAP1ArB4LdeSsHOk0s98pauWc=
dependencies:
component-emitter "~1.3.0"
component-inherit "0.0.3"
debug "~3.1.0"
engine.io-parser "~2.2.0"
has-cors "1.1.0"
indexof "0.0.1"
parseqs "0.0.6"
parseuri "0.0.6"
ws "~6.1.0"
xmlhttprequest-ssl "~1.5.4"
yeast "0.1.2"

engine.io-parser@~2.2.0:
version "2.2.1"
resolved "https://registry.npm.taobao.org/engine.io-parser/download/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7"
integrity sha1-V85WEdk3DulPmWQbWJ+UyX5PXac=
dependencies:
after "0.8.2"
arraybuffer.slice "~0.0.7"
base64-arraybuffer "0.1.4"
blob "0.0.5"
has-binary2 "~1.0.2"

enhanced-resolve@^4.3.0:
version "4.3.0"
resolved "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fenhanced-resolve%2Fdownload%2Fenhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126"
@@ -5395,6 +5458,18 @@ has-ansi@^2.0.0:
dependencies:
ansi-regex "^2.0.0"

has-binary2@~1.0.2:
version "1.0.3"
resolved "https://registry.npm.taobao.org/has-binary2/download/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d"
integrity sha1-d3asYn8+p3JQz8My2rfd9eT10R0=
dependencies:
isarray "2.0.1"

has-cors@1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/has-cors/download/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=

has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz?cache=0&sync_timestamp=1577797756584&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-flag%2Fdownload%2Fhas-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -5818,6 +5893,11 @@ indexes-of@^1.0.1:
resolved "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=

indexof@0.0.1:
version "0.0.1"
resolved "https://registry.npm.taobao.org/indexof/download/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=

infer-owner@^1.0.3, infer-owner@^1.0.4:
version "1.0.4"
resolved "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
@@ -6254,6 +6334,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=

isarray@2.0.1:
version "2.0.1"
resolved "https://registry.npm.taobao.org/isarray/download/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=

isbinaryfile@^3.0.2:
version "3.0.3"
resolved "https://registry.npm.taobao.org/isbinaryfile/download/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80"
@@ -8115,6 +8200,16 @@ parse5@^5.1.1:
resolved "https://registry.npm.taobao.org/parse5/download/parse5-5.1.1.tgz?cache=0&sync_timestamp=1595850971402&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
integrity sha1-9o5OW6GFKsLK3AD0VV//bCq7YXg=

parseqs@0.0.6:
version "0.0.6"
resolved "https://registry.npm.taobao.org/parseqs/download/parseqs-0.0.6.tgz?cache=0&sync_timestamp=1599417638682&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparseqs%2Fdownload%2Fparseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5"
integrity sha1-jku1oZ0c3IRKCKyXTTTic6+mcNU=

parseuri@0.0.6:
version "0.0.6"
resolved "https://registry.npm.taobao.org/parseuri/download/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a"
integrity sha1-4Ulugp46wv9H85pN0ESzKCPEolo=

parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@@ -9699,6 +9794,32 @@ snapdragon@^0.8.1:
source-map-resolve "^0.5.0"
use "^3.1.0"

socket.io-client@^2.3.1:
version "2.3.1"
resolved "https://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.3.1.tgz?cache=0&sync_timestamp=1602758544822&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-2.3.1.tgz#91a4038ef4d03c19967bb3c646fec6e0eaa78cff"
integrity sha1-kaQDjvTQPBmWe7PGRv7G4OqnjP8=
dependencies:
backo2 "1.0.2"
component-bind "1.0.0"
component-emitter "~1.3.0"
debug "~3.1.0"
engine.io-client "~3.4.0"
has-binary2 "~1.0.2"
indexof "0.0.1"
parseqs "0.0.6"
parseuri "0.0.6"
socket.io-parser "~3.3.0"
to-array "0.1.4"

socket.io-parser@~3.3.0:
version "3.3.1"
resolved "https://registry.npm.taobao.org/socket.io-parser/download/socket.io-parser-3.3.1.tgz?cache=0&sync_timestamp=1602755449293&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-parser%2Fdownload%2Fsocket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199"
integrity sha1-8H2cjLP7kmM6qT522Y/TozRiMZk=
dependencies:
component-emitter "~1.3.0"
debug "~3.1.0"
isarray "2.0.1"

sockjs-client@1.4.0:
version "1.4.0"
resolved "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.4.0.tgz?cache=0&sync_timestamp=1596409940223&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsockjs-client%2Fdownload%2Fsockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5"
@@ -10399,6 +10520,11 @@ tmp@^0.0.33:
dependencies:
os-tmpdir "~1.0.2"

to-array@0.1.4:
version "0.1.4"
resolved "https://registry.npm.taobao.org/to-array/download/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA=

to-arraybuffer@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
@@ -11295,6 +11421,13 @@ ws@^6.0.0, ws@^6.2.1:
dependencies:
async-limiter "~1.0.0"

ws@~6.1.0:
version "6.1.4"
resolved "https://registry.npm.taobao.org/ws/download/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9"
integrity sha1-W1yIAK+rkl6UzLKdFTyNAsF3bvk=
dependencies:
async-limiter "~1.0.0"

xml2js@^0.4.16:
version "0.4.23"
resolved "https://registry.npm.taobao.org/xml2js/download/xml2js-0.4.23.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxml2js%2Fdownload%2Fxml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
@@ -11318,6 +11451,11 @@ xmldom@0.1.x:
resolved "https://registry.npm.taobao.org/xmldom/download/xmldom-0.1.31.tgz#b76c9a1bd9f0a9737e5a72dc37231cf38375e2ff"
integrity sha1-t2yaG9nwqXN+WnLcNyMc84N14v8=

xmlhttprequest-ssl@~1.5.4:
version "1.5.5"
resolved "https://registry.npm.taobao.org/xmlhttprequest-ssl/download/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e"
integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=

xregexp@2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/xregexp/download/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
@@ -11415,6 +11553,11 @@ yauzl@^2.10.0:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"

yeast@0.1.2:
version "0.1.2"
resolved "https://registry.npm.taobao.org/yeast/download/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk=

yorkie@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9"


Loading…
取消
儲存