|
@@ -6,6 +6,11 @@ const SHARE_TO = (() => {
|
|
|
CANCEL: 'cancel',
|
|
|
};
|
|
|
|
|
|
+ const PermissionType = {
|
|
|
+ UPDATE_COOPERATE: 1,
|
|
|
+ CANCEL: 2,
|
|
|
+ };
|
|
|
+
|
|
|
// 当前分享的项目ID
|
|
|
let curProjectID;
|
|
|
|
|
@@ -224,13 +229,13 @@ const SHARE_TO = (() => {
|
|
|
let shareData;
|
|
|
let type = ShareType.UPDATE;
|
|
|
if (shareType === ShareType.CREATE) {
|
|
|
- const allowCopy = !!$('#allow-copy').attr('checked');
|
|
|
- const allowCooperate = !!$('#allow-edit').attr('checked');
|
|
|
+ const allowCopy = $('#allow-copy').prop('checked');
|
|
|
+ const allowCooperate = $('#allow-edit').prop('checked');
|
|
|
shareData = [{ userID: receiver, allowCopy, allowCooperate }];
|
|
|
type = ShareType.CREATE; // 上传的服务器的type,删除跟更新是一样的
|
|
|
} else if (shareType === ShareType.UPDATE) {
|
|
|
- const allowCopy = !!$(`[data-user=${receiver}].allow-copy`).attr('checked');
|
|
|
- const allowCooperate = !!$(`[data-user=${receiver}].allow-edit`).attr('checked');
|
|
|
+ const allowCopy = $(`[data-user=${receiver}].allow-copy`).prop('checked');
|
|
|
+ const allowCooperate = $(`[data-user=${receiver}].allow-edit`).prop('checked');
|
|
|
shareData = [{ userID: receiver, allowCopy, allowCooperate }];
|
|
|
} else {
|
|
|
shareData = [{ userID: receiver, isCancel: true }];
|
|
@@ -243,6 +248,8 @@ const SHARE_TO = (() => {
|
|
|
shareData
|
|
|
};
|
|
|
const rst = await ajaxPost('/pm/api/share', postData);
|
|
|
+ // 获取权限变更的类型
|
|
|
+ const permissionType = getPermissionType(shareType, curSharedUsers, shareData[0]);
|
|
|
// 请求成功后刷新视图
|
|
|
if (shareType === ShareType.CREATE || shareType === ShareType.CANCEL) {
|
|
|
if (shareType === ShareType.CREATE) {
|
|
@@ -263,6 +270,15 @@ const SHARE_TO = (() => {
|
|
|
initSharedView(curSharedUsers);
|
|
|
refreshShareTip(curSharedUsers);
|
|
|
refreshTreeView();
|
|
|
+ } else {
|
|
|
+ const matchItem = curSharedUsers.find(item => item._id === receiver);
|
|
|
+ if (matchItem) {
|
|
|
+ matchItem.allowCopy = shareData[0].allowCopy;
|
|
|
+ matchItem.allowCooperate = shareData[0].allowCooperate;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (permissionType !== null) {
|
|
|
+ emitPermissionChange(permissionType, receiver, curProjectID);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
console.log(err);
|
|
@@ -273,6 +289,50 @@ const SHARE_TO = (() => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 获取权限变更的类型
|
|
|
+ function getPermissionType(shareType, cache, curShareData) {
|
|
|
+ if (shareType === ShareType.CANCEL) {
|
|
|
+ return PermissionType.CANCEL;
|
|
|
+ }
|
|
|
+ if (!cache) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ const match = cache.find(item => item._id === curShareData.userID);
|
|
|
+ if (!match) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if (match.allowCooperate !== curShareData.allowCooperate) {
|
|
|
+ return PermissionType.UPDATE_COOPERATE;
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 权限变更消息推送
|
|
|
+ function emitPermissionChange(permissionType, userID, projectID) {
|
|
|
+ socket.emit('sharePermissionChange', { permissionType, roomID: `${userID}@${projectID}` });
|
|
|
+ }
|
|
|
+
|
|
|
+ // 权限变更处理监听
|
|
|
+ function permissionChangeListener() {
|
|
|
+ socket.on('sharePermissionChange', ({ permissionType }) => {
|
|
|
+ if (permissionType === PermissionType.CANCEL) {
|
|
|
+ handleCancelPermission();
|
|
|
+ } else if (permissionType === PermissionType.UPDATE_COOPERATE) {
|
|
|
+ handleCooperateChange();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function handleCancelPermission() {
|
|
|
+ // 定位到空白页
|
|
|
+ window.location.replace(`/blank?type=${commonConstants.BlankType.SHARE_CANCEL}`);
|
|
|
+ }
|
|
|
+
|
|
|
+ function handleCooperateChange() {
|
|
|
+ setLocalCache(commonConstants.StorageKey.ONCE_MAIN_LOADED, '分享设置已被修改,当前项目已自动刷新。');
|
|
|
+ window.location.reload();
|
|
|
+ }
|
|
|
+
|
|
|
// 刷新项目管理树视图
|
|
|
// 如果是在项目管理页面,需要刷新树(分享图标可能需要清除)
|
|
|
function refreshTreeView() {
|
|
@@ -424,6 +484,7 @@ const SHARE_TO = (() => {
|
|
|
}
|
|
|
$('#share-phone').on('keyup', function () {
|
|
|
delayKeyup(function () {
|
|
|
+ console.log(curSharedUsers);
|
|
|
handleSearch();
|
|
|
});
|
|
|
});
|
|
@@ -437,6 +498,7 @@ const SHARE_TO = (() => {
|
|
|
return {
|
|
|
initModal,
|
|
|
handleEventListener,
|
|
|
+ permissionChangeListener,
|
|
|
getAvatarHTML,
|
|
|
}
|
|
|
})();
|