oak-general-business/lib/components/userRelation/list/index.js

404 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var types_1 = require("oak-domain/lib/types");
var string_1 = require("oak-domain/lib/utils/string");
var uuid_1 = require("oak-domain/lib/utils/uuid");
var assert_1 = tslib_1.__importDefault(require("assert"));
exports.default = OakComponent({
entity: 'user',
projection: function () {
var userId = this.features.token.getUserId();
var isRoot = this.features.token.isRoot();
(0, assert_1.default)(userId);
var _a = this.props, entity = _a.entity, entityId = _a.entityId;
var userRelationFilter = {
entity: entity,
entityId: entityId,
};
if (!isRoot) {
userRelationFilter.relation = {
relationAuth$destRelation: {
sourceRelation: {
userRelation$relation: {
userId: userId,
},
},
}
};
}
return {
id: 1,
name: 1,
nickname: 1,
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
userId: 1,
mobile: 1,
},
},
userRelation$user: {
$entity: 'userRelation',
data: {
id: 1,
entity: 1,
entityId: 1,
userId: 1,
relationId: 1,
relation: {
id: 1,
name: 1,
display: 1,
relationAuth$destRelation: {
$entity: 'relationAuth',
data: {
id: 1,
sourceRelation: {
userRelation$relation: {
$entity: 'userRelation',
data: {
id: 1,
userId: 1,
}
}
}
}
}
}
},
filter: userRelationFilter,
},
extraFile$entity: {
$entity: 'extraFile',
data: {
id: 1,
tag1: 1,
origin: 1,
bucket: 1,
objectId: 1,
filename: 1,
extra1: 1,
type: 1,
entity: 1,
entityId: 1,
extension: 1,
sort: 1,
},
filter: {
tag1: 'avatar',
},
indexFrom: 0,
count: 1,
},
};
},
filters: [
{
filter: function () {
var userId = this.features.token.getUserId();
var isRoot = this.features.token.isRoot();
var _a = this.props, entityId = _a.entityId, entity = _a.entity;
var filter = {
entity: entity,
entityId: entityId,
};
if (!isRoot) {
filter.relation = {
relationAuth$destRelation: {
sourceRelation: {
userRelation$relation: {
userId: userId,
}
}
}
};
/* filter.relationId = {
$in: {
entity: 'relationAuth',
data: {
destRelationId: 1,
},
filter: {
sourceRelationId: {
$in: {
entity: 'userRelation',
data: {
relationId: 1,
},
filter: {
userId,
},
},
},
},
},
}; */
}
return {
userRelation$user: filter,
/* id: {
$in: {
entity: 'userRelation',
data: {
userId: 1,
},
filter,
},
}, */
};
},
},
],
isList: true,
formData: function (_a) {
var users = _a.data, props = _a.props, features = _a.features;
var entity = props.entity, entityId = props.entityId;
var filter = this.getFilterByName('fulltext');
return {
users: users === null || users === void 0 ? void 0 : users.map(function (ele) {
var _a;
var mobile$user = ele.mobile$user, extraFile$entity = ele.extraFile$entity;
var mobile = mobile$user && ((_a = mobile$user[0]) === null || _a === void 0 ? void 0 : _a.mobile);
var avatar = features.extraFile.getUrl(extraFile$entity && extraFile$entity[0]);
var user2 = Object.assign({}, ele, {
mobile: mobile,
avatar: avatar,
});
return user2;
}),
searchValue: (filter === null || filter === void 0 ? void 0 : filter.$text) && filter.$text.$search,
};
},
properties: {
entity: '',
entityId: '',
redirectToAfterConfirm: {},
qrCodeType: '',
onUpdate: function (id) { },
onCreate: function () { },
},
data: {
searchValue: '',
showActionSheet: false,
itemList: [
{
name: '从现有人员中选择(通过手机号)',
mode: 'byMobile',
},
{
name: '通过分享二维码',
mode: 'byQrCode',
},
],
idRemoveMp: '',
},
listeners: {
'entity,entityId': function (prev, next) {
if (this.state.oakFullpath) {
if (prev.entity !== next.entity || prev.entityId !== next.entityId) {
this.refresh();
}
}
},
},
lifetimes: {
attached: function () {
// this.calcRelations();
},
ready: function () {
// console.log('ready', this.props.relations);
},
},
methods: {
goUpsert: function () {
var _a = this.props, entity = _a.entity, entityId = _a.entityId, redirectToAfterConfirm = _a.redirectToAfterConfirm, qrCodeType = _a.qrCodeType, onCreate = _a.onCreate;
if (onCreate) {
onCreate();
}
else {
if (process.env.NODE_ENV === 'development') {
console.warn('userRelation将不再作为page直接使用请使用回调函数处理');
}
this.navigateTo({
url: '/userRelation/upsert',
entity: entity,
entityId: entityId,
}, {
redirectToAfterConfirm: redirectToAfterConfirm,
qrCodeType: qrCodeType,
});
}
},
goUpdate: function (id) {
var _a = this.props, entity = _a.entity, entityId = _a.entityId, onUpdate = _a.onUpdate;
if (onUpdate) {
onUpdate(id);
}
else {
if (process.env.NODE_ENV === 'development') {
console.warn('userRelation将不再作为page直接使用请使用回调函数处理');
}
this.navigateTo({
url: '/userRelation/upsert/byUser',
entity: entity,
entityId: entityId,
oakId: id,
});
}
},
confirmDelete: function (idRemove) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _a, entity, entityId, entityStr, users, user, relations, err_1;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = this.props, entity = _a.entity, entityId = _a.entityId;
entityStr = (0, string_1.firstLetterUpperCase)(entity);
users = this.state.users;
user = users.find(function (ele) { return ele.id === idRemove; });
relations = user.userRelation$user;
_b.label = 1;
case 1:
_b.trys.push([1, 3, , 4]);
this.updateItem({
userRelation$user: [
{
id: (0, uuid_1.generateNewId)(),
action: 'remove',
data: {},
filter: {
id: {
$in: relations.map(function (ele) { return ele.id; }),
},
},
},
],
}, idRemove, 'revoke');
return [4 /*yield*/, this.execute()];
case 2:
_b.sent();
return [3 /*break*/, 4];
case 3:
err_1 = _b.sent();
if (err_1 instanceof types_1.OakUserUnpermittedException) {
this.setMessage({
type: 'error',
content: err_1.message,
});
return [2 /*return*/];
}
return [3 /*break*/, 4];
case 4: return [2 /*return*/];
}
});
});
},
searchChangeMp: function (event) {
var value = event.detail.value;
this.addNamedFilter({
filter: {
$text: {
$search: value,
},
},
'#name': 'fulltext',
});
},
searchCancelMp: function () {
this.removeNamedFilterByName('fulltext', true);
},
searchConfirmMp: function () {
this.refresh();
},
chooseActionMp: function (e) {
var _a = this.props, entity = _a.entity, entityId = _a.entityId, redirectToAfterConfirm = _a.redirectToAfterConfirm, qrCodeType = _a.qrCodeType;
var mode = e.detail.item.mode;
if (mode === 'byMobile') {
this.navigateTo({
url: '/userRelation/upsert/byMobile',
entity: entity,
entityId: entityId,
});
}
else {
this.navigateTo({
url: '/userRelation/upsert/byUserEntityGrant',
entity: entity,
entityId: entityId,
redirectToAfterConfirm: redirectToAfterConfirm,
qrCodeType: qrCodeType,
});
}
},
cancelActionMp: function (e) {
this.setState({
showActionSheet: false,
});
},
showActionSheetMp: function () {
this.setState({
showActionSheet: true,
});
},
onItemTapMp: function (e) {
var _a = this.props, entity = _a.entity, entityId = _a.entityId;
var id = e.currentTarget.dataset.id;
this.navigateTo({
url: '/userRelation/upsert/byUser',
oakId: id,
entity: entity,
entityId: entityId,
});
},
onDeleteMp: function (e) {
var id = e.currentTarget.dataset.id;
this.setState({
idRemoveMp: id,
});
},
cancelDeleteMp: function () {
this.setState({
idRemoveMp: '',
});
},
confirmDeleteMp: function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var idRemoveMp, err_2;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
idRemoveMp = this.state.idRemoveMp;
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, this.confirmDelete(idRemoveMp)];
case 2:
_a.sent();
return [3 /*break*/, 4];
case 3:
err_2 = _a.sent();
this.setState({
idRemoveMp: '',
});
if (err_2 instanceof types_1.OakUserUnpermittedException) {
this.setMessage({
type: 'error',
content: err_2.message,
});
return [2 /*return*/];
}
return [3 /*break*/, 4];
case 4:
this.setState({
idRemoveMp: '',
});
return [2 /*return*/];
}
});
});
},
},
});