Merge branch 'dev' of codeup.aliyun.com:61c14a7efa282c88e103c23f/oak-general-business into dev

This commit is contained in:
梁朝伟 2022-06-30 17:49:46 +08:00
commit 37f32b0ba5
14 changed files with 433 additions and 425 deletions

View File

@ -1,6 +1,6 @@
// index.ts
OakPage({
export default OakPage({
path: 'address:list',
entity: 'address',
projection: {
@ -23,21 +23,21 @@ OakPage({
},
isList: true,
formData: async ({ data }) => ({
addresses: data.map(
(address) => ({
name: address?.name!,
phone: address?.phone!,
districtName: address?.area?.name!,
areaText: address?.area && `${address?.area?.parent?.parent?.name}${address?.area?.parent?.name}${address?.area?.name}`,
detail: address?.detail,
})
),
addresses: data.map((address) => ({
name: address?.name!,
phone: address?.phone!,
districtName: address?.area?.name!,
areaText:
address?.area &&
`${address?.area?.parent?.parent?.name}${address?.area?.parent?.name}${address?.area?.name}`,
detail: address?.detail,
})),
}),
methods: {
goNewAddress() {
this.navigateTo({
url: '../upsert/index',
});
}
}
},
},
});

View File

@ -1,5 +1,5 @@
OakPage({
export default OakPage({
path: 'address:upsert',
entity: 'address',
projection: {
@ -28,12 +28,14 @@ OakPage({
// provinceName: address?.area?.parent.parent.name,
districtName: address?.area?.name!,
area: address?.area,
areaText: address?.area && `${address?.area?.parent?.parent?.name}${address?.area?.parent?.name}${address?.area?.name}`,
areaText:
address?.area &&
`${address?.area?.parent?.parent?.name}${address?.area?.parent?.name}${address?.area?.name}`,
detail: address?.detail,
}),
methods: {
setValue(input: any) {
const { dataset, value} = this.resolveInput(input);
const { dataset, value } = this.resolveInput(input);
this.setUpdateData(dataset!.attr, value);
},
callAreaPicker() {
@ -42,13 +44,13 @@ OakPage({
});
},
async confirm() {
await this.execute(this.props.oakId ? 'update': 'create');
await this.execute(this.props.oakId ? 'update' : 'create');
if (this.props.oakFrom === 'address:list') {
this.navigateBack();
}
},
reset() {
this.resetUpdateData();
}
}
},
},
});

View File

@ -1,6 +1,6 @@
import { composeFileUrl } from '../../../../src/utils/extraFile';
OakPage({
export default OakPage({
path: 'mobile:me',
entity: 'mobile',
isList: true,
@ -19,13 +19,12 @@ OakPage({
});
try {
console.log(e.detail.code);
}
catch (err) {
} catch (err) {
console.error(err);
}
this.setState({
refreshing: false,
});
}
}
},
},
});

View File

@ -1,5 +1,5 @@
OakPage({
export default OakPage({
path: 'area:picker',
entity: 'area',
projection: {
@ -14,8 +14,8 @@ OakPage({
parent: {
level: 'country',
},
}
}
},
},
],
isList: true,
formData: async ({ data: arealist }) => ({
@ -29,21 +29,22 @@ OakPage({
onItemClicked(input: any) {
// resolveInput里用的是target原来的代码用的是currentTarget可能有问题
const { dataset } = this.resolveInput(input);
const item = (this.state.arealist!).find(
const item = this.state.arealist!.find(
(ele) => ele?.id === dataset!.id
);
const { depth, id } = item!;
if (depth !== this.props.depth) {
this.setFilters([{
filter: {
parentId: id,
}
}]);
}
else {
this.setFilters([
{
filter: {
parentId: id,
},
},
]);
} else {
this.setForeignKey(id!);
}
}
}
},
},
});

View File

@ -1,4 +1,4 @@
OakPage({
export default OakPage({
path: 'token:login',
entity: 'token',
projection: {
@ -19,7 +19,7 @@ OakPage({
}
return {
loggedIn: false,
}
};
},
methods: {
async onLoginClicked(options: WechatMiniprogram.Touch) {
@ -30,6 +30,6 @@ OakPage({
onReturnClicked() {
this.navigateBack();
}
}
},
},
});

View File

@ -1,125 +1,123 @@
import { ROOT_ROLE_ID } from '../../../../src/constants';
import { composeFileUrl } from '../../../../src/utils/extraFile';
OakPage(
{
path: 'token:me',
entity: 'token',
isList: true,
projection: {
export default OakPage({
path: 'token:me',
entity: 'token',
isList: true,
projection: {
id: 1,
userId: 1,
playerId: 1,
user: {
id: 1,
userId: 1,
playerId: 1,
user: {
id: 1,
nickname: 1,
name: 1,
extraFile$entity: {
$entity: 'extraFile',
data: {
id: 1,
tag1: 1,
origin: 1,
bucket: 1,
objectId: 1,
filename: 1,
extra1: 1,
type: 1,
entity: 1,
extension: 1,
},
filter: {
tag1: 'avatar',
},
indexFrom: 0,
count: 1,
nickname: 1,
name: 1,
extraFile$entity: {
$entity: 'extraFile',
data: {
id: 1,
tag1: 1,
origin: 1,
bucket: 1,
objectId: 1,
filename: 1,
extra1: 1,
type: 1,
entity: 1,
extension: 1,
},
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
mobile: 1,
},
filter: {
tag1: 'avatar',
},
indexFrom: 0,
count: 1,
},
player: {
id: 1,
userRole$user: {
$entity: 'userRole',
data: {
id: 1,
userId: 1,
roleId: 1,
},
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
mobile: 1,
},
},
},
formData: async ({ data: [token] }) => {
const user = token?.user;
const player = token?.player;
const avatarFile =
user && user.extraFile$entity && user.extraFile$entity[0];
const avatar = avatarFile && composeFileUrl(avatarFile);
const nickname = user && user.nickname;
const mobileData = user && user.mobile$user && user.mobile$user[0];
const { mobile } = mobileData || {};
const mobileCount = user?.mobile$user?.length || 0;
player: {
id: 1,
userRole$user: {
$entity: 'userRole',
data: {
id: 1,
userId: 1,
roleId: 1,
},
},
},
},
formData: async ({ data: [token] }) => {
const user = token?.user;
const player = token?.player;
const avatarFile =
user && user.extraFile$entity && user.extraFile$entity[0];
const avatar = avatarFile && composeFileUrl(avatarFile);
const nickname = user && user.nickname;
const mobileData = user && user.mobile$user && user.mobile$user[0];
const { mobile } = mobileData || {};
const mobileCount = user?.mobile$user?.length || 0;
const isLoggedIn = !!token;
const isPlayingAnother = token && token.userId !== token.playerId;
const isRoot =
player?.userRole$user &&
player.userRole$user[0].roleId === ROOT_ROLE_ID;
return {
avatar,
nickname,
mobile,
mobileCount,
isLoggedIn,
isPlayingAnother,
isRoot,
};
const isLoggedIn = !!token;
const isPlayingAnother = token && token.userId !== token.playerId;
const isRoot =
player?.userRole$user &&
player.userRole$user[0].roleId === ROOT_ROLE_ID;
return {
avatar,
nickname,
mobile,
mobileCount,
isLoggedIn,
isPlayingAnother,
isRoot,
};
},
data: {
refreshing: false,
},
methods: {
async onRefresh() {
this.setState({
refreshing: true,
});
try {
await this.features.token.syncUserInfoWechatMp();
} catch (err) {
console.error(err);
}
this.setState({
refreshing: false,
});
},
data: {
refreshing: false,
async doLogin() {
this.setState({
refreshing: true,
});
try {
await this.features.token.loginWechatMp();
} catch (err) {
console.error(err);
}
this.setState({
refreshing: false,
});
},
methods: {
async onRefresh() {
this.setState({
refreshing: true,
});
try {
await this.features.token.syncUserInfoWechatMp();
} catch (err) {
console.error(err);
}
this.setState({
refreshing: false,
});
},
async doLogin() {
this.setState({
refreshing: true,
});
try {
await this.features.token.loginWechatMp();
} catch (err) {
console.error(err);
}
this.setState({
refreshing: false,
});
},
goMyMobile() {
this.navigateTo({
url: '../../mobile/me/index',
});
},
goUserManage() {
this.navigateTo({
url: '../../user/manage/index',
});
},
goMyMobile() {
this.navigateTo({
url: '../../mobile/me/index',
});
},
}
);
goUserManage() {
this.navigateTo({
url: '../../user/manage/index',
});
},
},
});

View File

@ -2,173 +2,171 @@
import { composeFileUrl } from "../../../../../src/utils/extraFile";
OakPage(
{
path: 'user:manage:detail',
entity: 'user',
projection: {
id: 1,
nickname: 1,
name: 1,
userState: 1,
idState: 1,
extraFile$entity: {
$entity: 'extraFile',
data: {
id: 1,
tag1: 1,
origin: 1,
bucket: 1,
objectId: 1,
filename: 1,
extra1: 1,
type: 1,
entity: 1,
extension: 1,
},
filter: {
tag1: 'avatar',
},
indexFrom: 0,
count: 1,
export default OakPage({
path: 'user:manage:detail',
entity: 'user',
projection: {
id: 1,
nickname: 1,
name: 1,
userState: 1,
idState: 1,
extraFile$entity: {
$entity: 'extraFile',
data: {
id: 1,
tag1: 1,
origin: 1,
bucket: 1,
objectId: 1,
filename: 1,
extra1: 1,
type: 1,
entity: 1,
extension: 1,
},
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
mobile: 1,
},
filter: {
tag1: 'avatar',
},
indexFrom: 0,
count: 1,
},
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
mobile: 1,
},
},
isList: false,
formData: async ({ data: user }) => {
const {
id,
nickname,
idState,
userState,
name,
mobile$user,
extraFile$entity,
} = user || {};
const mobile = mobile$user && mobile$user[0]?.mobile;
const avatar =
extraFile$entity &&
extraFile$entity[0] &&
composeFileUrl(extraFile$entity[0]);
return {
id,
nickname,
name,
mobile,
avatar,
userState,
idState,
};
},
actions: [
'accept',
'activate',
'disable',
'enable',
'remove',
'update',
'verify',
'play',
],
data: {
show: false,
actionDescriptions: {
accept: {
icon: {
name: 'pan_tool',
},
label: '通过',
},
isList: false,
formData: async ({ data: user }) => {
const {
id,
nickname,
idState,
userState,
name,
mobile$user,
extraFile$entity,
} = user || {};
const mobile = mobile$user && mobile$user[0]?.mobile;
const avatar =
extraFile$entity &&
extraFile$entity[0] &&
composeFileUrl(extraFile$entity[0]);
return {
id,
nickname,
name,
mobile,
avatar,
userState,
idState,
};
},
actions: [
'accept',
'activate',
'disable',
'enable',
'remove',
'update',
'verify',
'play',
],
data: {
show: false,
actionDescriptions: {
accept: {
icon: {
name: 'pan_tool',
},
activate: {
icon: {
name: 'check',
},
label: '激活',
label: '通过',
},
activate: {
icon: {
name: 'check',
},
disable: {
icon: {
name: 'flash_off',
},
label: '禁用',
label: '激活',
},
disable: {
icon: {
name: 'flash_off',
},
enable: {
icon: {
name: 'flash_on',
},
label: '启用',
label: '禁用',
},
enable: {
icon: {
name: 'flash_on',
},
remove: {
icon: {
name: 'clear',
},
label: '删除',
label: '启用',
},
remove: {
icon: {
name: 'clear',
},
update: {
icon: {
name: 'edit',
},
label: '更新',
label: '删除',
},
update: {
icon: {
name: 'edit',
},
verify: {
icon: {
name: 'how_to_reg',
},
label: '验证',
label: '更新',
},
verify: {
icon: {
name: 'how_to_reg',
},
play: {
icon: {
name: 'play_circle',
},
label: '切换',
label: '验证',
},
play: {
icon: {
name: 'play_circle',
},
label: '切换',
},
},
methods: {
openDrawer() {
this.setState({
show: true,
});
},
closeDrawer() {
this.setState({
show: false,
});
},
async onActionClick({ detail }: WechatMiniprogram.CustomEvent) {
const { action } = detail;
switch (action) {
case 'update': {
this.navigateTo({
url: '../upsert/index',
oakId: this.props.oakId,
});
return;
}
case 'enable':
case 'disable':
case 'accept':
case 'verify':
case 'activate':
case 'play': {
await this.execute(action);
break;
}
default: {
console.error(`尚未实现的action: ${action}`);
}
}
if (action === 'play') {
this.navigateBack({
delta: 2,
},
methods: {
openDrawer() {
this.setState({
show: true,
});
},
closeDrawer() {
this.setState({
show: false,
});
},
async onActionClick({ detail }: WechatMiniprogram.CustomEvent) {
const { action } = detail;
switch (action) {
case 'update': {
this.navigateTo({
url: '../upsert/index',
oakId: this.props.oakId,
});
return;
}
},
case 'enable':
case 'disable':
case 'accept':
case 'verify':
case 'activate':
case 'play': {
await this.execute(action);
break;
}
default: {
console.error(`尚未实现的action: ${action}`);
}
}
if (action === 'play') {
this.navigateBack({
delta: 2,
});
}
},
}
);
},
});

View File

@ -2,87 +2,85 @@
import { composeFileUrl } from "../../../../src/utils/extraFile";
OakPage(
{
path: 'user:manage',
entity: 'user',
projection: {
id: 1,
nickname: 1,
name: 1,
userState: 1,
extraFile$entity: {
$entity: 'extraFile',
data: {
id: 1,
tag1: 1,
origin: 1,
bucket: 1,
objectId: 1,
filename: 1,
extra1: 1,
type: 1,
entity: 1,
extension: 1,
},
filter: {
tag1: 'avatar',
},
indexFrom: 0,
count: 1,
export default OakPage({
path: 'user:manage',
entity: 'user',
projection: {
id: 1,
nickname: 1,
name: 1,
userState: 1,
extraFile$entity: {
$entity: 'extraFile',
data: {
id: 1,
tag1: 1,
origin: 1,
bucket: 1,
objectId: 1,
filename: 1,
extra1: 1,
type: 1,
entity: 1,
extension: 1,
},
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
mobile: 1,
},
filter: {
tag1: 'avatar',
},
indexFrom: 0,
count: 1,
},
mobile$user: {
$entity: 'mobile',
data: {
id: 1,
mobile: 1,
},
},
isList: true,
formData: async ({ data: users }) => {
const userData = users.map((user) => {
const {
id,
nickname,
userState,
name,
mobile$user,
extraFile$entity,
} = user || {};
const mobile = mobile$user && mobile$user[0]?.mobile;
const avatar =
extraFile$entity &&
extraFile$entity[0] &&
composeFileUrl(extraFile$entity[0]);
return {
id,
nickname,
name,
mobile,
avatar,
userState,
};
});
},
isList: true,
formData: async ({ data: users }) => {
const userData = users.map((user) => {
const {
id,
nickname,
userState,
name,
mobile$user,
extraFile$entity,
} = user || {};
const mobile = mobile$user && mobile$user[0]?.mobile;
const avatar =
extraFile$entity &&
extraFile$entity[0] &&
composeFileUrl(extraFile$entity[0]);
return {
userData,
id,
nickname,
name,
mobile,
avatar,
userState,
};
});
return {
userData,
};
},
methods: {
goUserManageDetail(input: any) {
// resolveInput拿的是target原来代码拿的是currentTarget
const { dataset } = this.resolveInput(input);
const { id } = dataset!;
this.navigateTo({
url: 'detail/index',
oakId: id,
});
},
methods: {
goUserManageDetail(input: any) {
// resolveInput拿的是target原来代码拿的是currentTarget
const { dataset } = this.resolveInput(input);
const { id } = dataset!;
this.navigateTo({
url: 'detail/index',
oakId: id,
});
},
goNewUser() {
this.navigateTo({
url: 'upsert/index',
});
},
goNewUser() {
this.navigateTo({
url: 'upsert/index',
});
},
}
);
},
});

View File

@ -19,7 +19,7 @@ const IDCardTypeOptions = [
}
];
OakPage({
export default OakPage({
path: 'user:manage:upsert',
entity: 'user',
projection: {
@ -35,31 +35,31 @@ OakPage({
isList: false,
formData: async ({ data: user }) => {
const { birth, gender, idCardType } = user || {};
const birthText = birth && (new Date(birth)).toLocaleDateString();
const birthText = birth && new Date(birth).toLocaleDateString();
const GenderDict = {
male: '男',
female: '女',
};
const genderText = gender && GenderDict[gender];
const genderIndex = gender && GenderOptions.find(
ele => ele.value === gender
);
const genderIndex =
gender && GenderOptions.find((ele) => ele.value === gender);
const IdCardTypeDict = {
'ID-Card': '身份证',
'passport': '护照',
passport: '护照',
'Mainland-passport': '港澳通行证',
};
const idCardTypeText = idCardType && IdCardTypeDict[idCardType];
const idCardTypeIndex = idCardType && IDCardTypeOptions.find(
ele => ele.value === gender
);
const idCardTypeIndex =
idCardType && IDCardTypeOptions.find((ele) => ele.value === gender);
const now = new Date();
return Object.assign({}, user, {
birthText,
genderText,
idCardTypeText,
oldestBirthday: `${now.getFullYear() - 120}-01-01`,
today: `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`,
today: `${now.getFullYear()}-${
now.getMonth() + 1
}-${now.getDate()}`,
genderIndex,
idCardTypeIndex,
});
@ -69,7 +69,7 @@ OakPage({
IDCardTypeOptions,
},
methods: {
setValue(input:any) {
setValue(input: any) {
const { dataset, value } = this.resolveInput(input);
this.setUpdateData(dataset!.attr, value);
},
@ -84,17 +84,23 @@ OakPage({
},
onGenderChange(input: any) {
const { value } = this.resolveInput(input);
this.setUpdateData('gender', GenderOptions[value as unknown as number].value)
this.setUpdateData(
'gender',
GenderOptions[value as unknown as number].value
);
},
onIdCardTypeChange(input: any) {
const { value } = this.resolveInput(input);
this.setUpdateData('idCardType', IDCardTypeOptions[value as unknown as number].value)
this.setUpdateData(
'idCardType',
IDCardTypeOptions[value as unknown as number].value
);
},
async confirm() {
await this.execute(this.props.oakId ? 'update': 'create');
await this.execute(this.props.oakId ? 'update' : 'create');
if (this.props.oakFrom === 'user:manage:list') {
this.navigateBack();
}
}
}
},
},
});

View File

@ -1,5 +1,5 @@
OakPage({
export default OakPage({
path: 'userEntityGrant:confirm',
entity: 'userEntityGrant',
projection: {
@ -7,14 +7,14 @@ OakPage({
relation: 1,
},
isList: false,
formData: async ({data: userEntityGrant}) => {
formData: async ({ data: userEntityGrant }) => {
return {
relation: userEntityGrant?.relation,
}
};
},
methods: {
handleConfirm() {
this.execute('confirm');
}
}
},
},
});

View File

@ -1,5 +1,5 @@
OakPage({
export default OakPage({
path: 'userEntityGrant:detail',
entity: 'userEntityGrant',
projection: {
@ -17,7 +17,7 @@ OakPage({
id: 1,
entity: 1,
entityId: 1,
type: 1,//类型
type: 1, //类型
ticket: 1,
url: 1,
buffer: 1,
@ -41,7 +41,8 @@ OakPage({
for (let i = 0; i < str.length; i++) {
buf2[i] = str.charCodeAt(i);
}
qrCodeUrl = 'data:image/jpeg;base64,' + wx.arrayBufferToBase64(buf2);
qrCodeUrl =
'data:image/jpeg;base64,' + wx.arrayBufferToBase64(buf2);
}
return {
relation: userEntityGrant?.relation,

View File

@ -1,7 +1,7 @@
import { EntityDict } from 'general-app-domain';
import { DeduceCreateOperation, DeduceCreateSingleOperation, OakException, OakCongruentRowExists } from "oak-domain/lib/types";
OakPage({
export default OakPage({
path: 'userEntityGrant:upsert',
entity: 'userEntityGrant',
@ -17,7 +17,7 @@ OakPage({
},
isList: false,
formData: async ({ data: userEntityGrant }) => ({
...userEntityGrant
...userEntityGrant,
}),
properties: {
entity: String,
@ -25,8 +25,7 @@ OakPage({
relations: String,
type: String,
},
data: {
},
data: {},
lifetimes: {
ready() {
this.setUpdateData('entity', this.props.entity);
@ -34,8 +33,8 @@ OakPage({
this.setUpdateData('type', this.props.type);
this.setState({
relationArr: JSON.parse(this.props.relations),
})
}
});
},
},
methods: {
radioChange(input: any) {
@ -49,18 +48,24 @@ OakPage({
[OakCongruentRowExists.name]
);
const { data } = result as DeduceCreateSingleOperation<EntityDict['userEntityGrant']['OpSchema']>;
const { data } = result as DeduceCreateSingleOperation<
EntityDict['userEntityGrant']['OpSchema']
>;
const { id } = data;
this.navigateTo({
url: '../detail/index',
oakId: id,
});
}
catch (error) {
if ((<OakException>error).constructor.name === OakCongruentRowExists.name) {
} catch (error) {
if (
(<OakException>error).constructor.name ===
OakCongruentRowExists.name
) {
// 这里由于编译的问题用instanceof会不通过检查
const data = (<OakCongruentRowExists<EntityDict, 'userEntityGrant'>>error).getData();
const data = (<
OakCongruentRowExists<EntityDict, 'userEntityGrant'>
>error).getData();
this.navigateTo({
url: '../detail/index',
oakId: data.id,
@ -68,5 +73,5 @@ OakPage({
}
}
},
}
},
});

View File

@ -1,6 +1,6 @@
import { composeFileUrl } from '../../../../src/utils/extraFile';
OakPage(
export default OakPage(
{
path: 'userRelation:list',
entity: 'user',

View File

@ -1,7 +1,7 @@
import { expandUuidTo36Bytes } from 'oak-domain/lib/utils/uuid'
OakPage(
export default OakPage(
{
path: 'wechatQrCode:scan',
entity: 'wechatQrCode',