This commit is contained in:
Xu Chang 2023-11-17 22:27:13 +08:00
parent 264c755726
commit 33794d45f8
60 changed files with 2 additions and 906 deletions

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,32 +0,0 @@
.box {
&-main {
height: 800px;
width: 600px;
display: flex;
flex: 1;
align-items: center;
flex-direction: column;
justify-content: center;
background: var(--oak-bg-color-container);
margin-top: 200px;
margin-bottom: 200px;
}
// &-wrap {
// width: 400px;
// display: block;
// background: var(--oak-bg-color-container);
// border-radius: 4px;
// overflow: hidden;
// box-shadow: 0 2px 4px rgb(0 0 0 / 8%), 0 0 4px rgb(0 0 0 / 8%);
// }
// &-hd {
// padding: 32px;
// }
// &-bd {
// height: 310px;
// }
}

View File

@ -1,32 +0,0 @@
.box {
&-main {
height: 800px;
width: 600px;
display: flex;
flex: 1;
align-items: center;
flex-direction: column;
justify-content: center;
background: var(--oak-bg-color-container);
margin-top: 200px;
margin-bottom: 200px;
}
// &-wrap {
// width: 400px;
// display: block;
// background: var(--oak-bg-color-container);
// border-radius: 4px;
// overflow: hidden;
// box-shadow: 0 2px 4px rgb(0 0 0 / 8%), 0 0 4px rgb(0 0 0 / 8%);
// }
// &-hd {
// padding: 32px;
// }
// &-bd {
// height: 310px;
// }
}

View File

@ -1,32 +0,0 @@
.box {
&-main {
height: 800px;
width: 600px;
display: flex;
flex: 1;
align-items: center;
flex-direction: column;
justify-content: center;
background: var(--oak-bg-color-container);
margin-top: 200px;
margin-bottom: 200px;
}
// &-wrap {
// width: 400px;
// display: block;
// background: var(--oak-bg-color-container);
// border-radius: 4px;
// overflow: hidden;
// box-shadow: 0 2px 4px rgb(0 0 0 / 8%), 0 0 4px rgb(0 0 0 / 8%);
// }
// &-hd {
// padding: 32px;
// }
// &-bd {
// height: 310px;
// }
}

View File

@ -1,5 +0,0 @@
.box {
display: block;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
display: flex;
flex-direction: column;
flex: 1;
background-color: var(--oak-bg-color-page);
}

View File

@ -1,7 +0,0 @@
/** index.wxss **/
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,3 +0,0 @@
.container {
display: flex;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,4 +0,0 @@
<!--index.wxml-->
<view class="container">
</view>

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,7 +0,0 @@
.container {
height: 100vh;
display: flex;
flex-direction: column;
}

View File

@ -1,5 +0,0 @@
.container {
background: var(--oak-bg-color-container);
}

View File

@ -1,8 +0,0 @@
/// <reference types="react" />
declare const _default: (props: import("oak-frontend-base").ReactComponentProps<import("../../../oak-app-domain").EntityDict, keyof import("../../../oak-app-domain").EntityDict, true, {
nameProperty: string;
user: import("oak-domain/lib/types").GeneralEntityShape;
relations: string[];
oakEntity: string | number;
}>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
export default _default;

View File

@ -1,48 +0,0 @@
import { firstLetterUpperCase } from "oak-domain/lib/utils/string";
export default OakComponent({
isList: true,
formData({ data }) {
const { nameProperty, oakEntity } = this.props;
const entityStr = firstLetterUpperCase(oakEntity);
const rows = data?.map((ele) => {
const { id, [nameProperty]: name, [`user${entityStr}$${oakEntity}`]: userEntity, } = ele;
const relations = userEntity?.map((ele) => ele.relation);
const hasRelation = this.props.relations.map((ele2) => relations.includes(ele2));
return {
id,
name,
hasRelation,
};
});
return {
rows,
};
},
properties: {
nameProperty: '',
user: {},
relations: [],
oakEntity: '',
},
methods: {
onChange(input) {
const { dataset, checked } = this.resolveInput(input, ['checked']);
const { id: entityId, relation, index, } = dataset;
const { oakEntity, user } = this.props;
const entityStr = firstLetterUpperCase(oakEntity);
// todo 需要修改为最新写法
// this.toggleNode(
// {
// relation,
// userId: user.id,
// },
// checked,
// `${index}.user${entityStr}$${oakEntity}`
// );
},
async confirm() {
await this.execute();
await this.navigateBack();
},
},
});

View File

@ -1,8 +0,0 @@
{
"navigationBarTitleText": "修改权限",
"usingComponents": {
"t-divider": "@oak-frontend-base/miniprogram_npm/tdesign/divider/divider",
"t-button": "@oak-frontend-base/miniprogram_npm/tdesign/button/button",
"t-switch": "@oak-frontend-base/miniprogram_npm/tdesign/switch/switch"
}
}

View File

@ -1,159 +0,0 @@
/** index.wxss **/
@import "../../../config/styles/mp/index.less";
@import "../../../config/styles/mp/mixins.less";
page {
height: 100%;
}
.container {
height: 100%;
display: flex;
flex: 1;
flex-direction: column;
box-sizing: border-box;
align-items: stretch;
padding: 0;
.safe-area-inset-bottom();
}
.primary-bg {
width: 100%;
height: 140rpx;
background-color: @primary-color;
}
.img {
width: 180rpx;
height: 180rpx;
margin: 0 auto;
border-radius: 50%;
background-color: @bg-color-fade;
}
.row-end {
display: flex;
justify-content: flex-end;
}
.white-bg {
display: flex;
flex-direction: column;
padding: @spacer;
}
.content {
display: flex;
flex-direction: column;
transform: translateY(-110rpx);
}
.name {
margin: @spacer auto;
font-size: @font-size-base;
color: @text-level-2-color;
}
.mobile {
margin: 0 auto;
font-size: @font-size-base;
color: @text-level-3-color;
}
.tag-view {
display: flex;
justify-content: center;
flex-wrap: wrap;
margin-bottom: @spacer;
}
.tag {
margin: 2rpx;
}
.btn-view {
display: flex;
justify-content: center;
}
.check-view {
width: 700rpx;
display: flex;
flex: 1;
flex-direction: column;
background-color: #fff;
}
.col {
display: flex;
flex-direction: column;
flex: 1;
}
.list {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
}
.singleRelationItem {
display: flex;
padding: 18rpx;
flex-direction: row;
align-items: center;
width: 92%;
box-shadow: 0 4rpx 20rpx 0 rgba(212, 217, 223, 0.5);
border-radius: 4px;
.name {
color: @text-level-3-color;
flex: 1;
margin-right: 10rpx;
}
}
.multiRelationItem {
display: flex;
padding: 18rpx;
flex-direction: column;
align-items: stretch;
width: 92%;
box-shadow: 0 4rpx 20rpx 0 rgba(212, 217, 223, 0.5);
border-radius: 4px;
.name {
color: @text-level-3-color;
}
.relationList {
display: flex;
flex-direction: row;
.relationItem {
display: flex;
flex-direction: column;
align-items: center;
padding: 10rpx;
text {
color: @text-level-4-color;
font-size: @font-size-base;
}
}
}
}
.btn-container {
position: fixed;
bottom: 0;
display: flex;
flex-direction: row;
width: 100%;
.btn {
flex: 1;
}
padding-left: 10rpx;
padding-right: 10rpx;
}

View File

@ -1,32 +0,0 @@
<!-- index.wxml -->
<view class="container">
<view class="primary-bg"></view>
<view class="white-bg">
<view class="content">
<image mode="aspectFill" class="img" src="{{user.avatar}}" lazy-load></image>
<text class="name">{{user.name || user.nickname || '--'}}</text>
<text class="mobile">{{user.mobile || '--'}}</text>
<t-divider />
<view class="list" wx:for="{{rows}}" wx:key="idx">
<block wx:if="{{relations.length === 1}}">
<view class="singleRelationItem">
<view class="name">{{item.name}}</view>
<t-switch value="{{item.hasRelation[0]}}" bind:change="onChange" data-id="{{item.id}}" data-relation="{{relations[0]}}" data-index="{{index}}" />
</view>
</block>
<block wx:else>
<view class="multiRelationItem">
<view class="name">{{item.name}}</view>
<view class="relationList">
<view class="relationItem" wx:for="{{relations}}" wx:key="idx2" wx:for-item="relation" wx:for-index="index2">
<t-switch value="{{item.hasRelation[index2]}}" bind:change="onChange" data-id="{{item.id}}" data-relation="{{relation}}" data-index="{{index}}" />
<text>{{relation}}</text>
</view>
</view>
</view>
</block>
</view>
</view>
</view>
<t-button theme="primary" style="margin: 16rpx" disabled="{{!oakDirty}}" block size="large" bind:tap="confirm" content="确定" />
</view>

View File

@ -1 +0,0 @@
export default function render(this: any): import("react/jsx-runtime").JSX.Element;

View File

@ -1,5 +0,0 @@
import { jsx as _jsx } from "react/jsx-runtime";
export default function render() {
const { rows } = this.state;
return (_jsx("div", {}));
}

View File

@ -1,7 +0,0 @@
.container {
height: 100vh;
display: flex;
flex-direction: column;
}

View File

@ -1,12 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}
.btn-container {
width: 100%;
display: flex;
flex-direction: row;
}

View File

@ -1,12 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}
.btn-container {
width: 100%;
display: flex;
flex-direction: row;
}

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,6 +0,0 @@
.container {
background: var(--oak-bg-color-container);
// box-shadow: 0 2px 3px #0000001a;
// border-radius: 3px;
// padding: 30px 32px;
}

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
// box-shadow: 0 2px 3px #0000001a;
// border-radius: 3px;
// padding: 30px 32px;
}

View File

@ -1,8 +0,0 @@
.container {
background: var(--oak-bg-color-container);
// box-shadow: 0 2px 3px #0000001a;
// border-radius: 3px;
// padding: 30px 32px;
}

View File

@ -1,15 +0,0 @@
.container {
background: var(--oak-bg-color-container);
// box-shadow: 0 2px 3px #0000001a;
// border-radius: 3px;
// padding: 30px 32px;
}
.tip {
font-size: 12px;
line-height: 20px;
color: var(--oak-warning-color);
}

View File

@ -1,3 +0,0 @@
.container {
width: 100%;
}

View File

@ -1,3 +0,0 @@
.container {
width: 100%;
}

View File

@ -1,3 +0,0 @@
.container {
width: 100%;
}

View File

@ -1,7 +0,0 @@
.container {
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}

View File

@ -1,3 +0,0 @@
.container {
display: flex;
}

View File

@ -1,3 +0,0 @@
.container {
display: flex;
}

View File

@ -1,2 +1,2 @@
declare const checkers: (import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt>)[];
declare const checkers: (import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "mobile", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "token", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "message", import("..").RuntimeCxt> | import("oak-domain").Checker<import("../oak-app-domain").EntityDict, "parasite", import("..").RuntimeCxt>)[];
export default checkers;

View File

@ -1,2 +1,2 @@
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
declare const _default: (import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "account", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").RuntimeCxt> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>> | import("oak-domain").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
export default _default;

View File

@ -1,8 +0,0 @@
{
"navigationBarTitleText": "修改权限",
"usingComponents": {
"t-divider": "@oak-frontend-base/miniprogram_npm/tdesign/divider/divider",
"t-button": "@oak-frontend-base/miniprogram_npm/tdesign/button/button",
"t-switch": "@oak-frontend-base/miniprogram_npm/tdesign/switch/switch"
}
}

View File

@ -1,159 +0,0 @@
/** index.wxss **/
@import "../../../config/styles/mp/index.less";
@import "../../../config/styles/mp/mixins.less";
page {
height: 100%;
}
.container {
height: 100%;
display: flex;
flex: 1;
flex-direction: column;
box-sizing: border-box;
align-items: stretch;
padding: 0;
.safe-area-inset-bottom();
}
.primary-bg {
width: 100%;
height: 140rpx;
background-color: @primary-color;
}
.img {
width: 180rpx;
height: 180rpx;
margin: 0 auto;
border-radius: 50%;
background-color: @bg-color-fade;
}
.row-end {
display: flex;
justify-content: flex-end;
}
.white-bg {
display: flex;
flex-direction: column;
padding: @spacer;
}
.content {
display: flex;
flex-direction: column;
transform: translateY(-110rpx);
}
.name {
margin: @spacer auto;
font-size: @font-size-base;
color: @text-level-2-color;
}
.mobile {
margin: 0 auto;
font-size: @font-size-base;
color: @text-level-3-color;
}
.tag-view {
display: flex;
justify-content: center;
flex-wrap: wrap;
margin-bottom: @spacer;
}
.tag {
margin: 2rpx;
}
.btn-view {
display: flex;
justify-content: center;
}
.check-view {
width: 700rpx;
display: flex;
flex: 1;
flex-direction: column;
background-color: #fff;
}
.col {
display: flex;
flex-direction: column;
flex: 1;
}
.list {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
}
.singleRelationItem {
display: flex;
padding: 18rpx;
flex-direction: row;
align-items: center;
width: 92%;
box-shadow: 0 4rpx 20rpx 0 rgba(212, 217, 223, 0.5);
border-radius: 4px;
.name {
color: @text-level-3-color;
flex: 1;
margin-right: 10rpx;
}
}
.multiRelationItem {
display: flex;
padding: 18rpx;
flex-direction: column;
align-items: stretch;
width: 92%;
box-shadow: 0 4rpx 20rpx 0 rgba(212, 217, 223, 0.5);
border-radius: 4px;
.name {
color: @text-level-3-color;
}
.relationList {
display: flex;
flex-direction: row;
.relationItem {
display: flex;
flex-direction: column;
align-items: center;
padding: 10rpx;
text {
color: @text-level-4-color;
font-size: @font-size-base;
}
}
}
}
.btn-container {
position: fixed;
bottom: 0;
display: flex;
flex-direction: row;
width: 100%;
.btn {
flex: 1;
}
padding-left: 10rpx;
padding-right: 10rpx;
}

View File

@ -1,65 +0,0 @@
import { firstLetterUpperCase } from "oak-domain/lib/utils/string";
import { EntityDict } from "oak-domain/lib/types";
export default OakComponent({
isList: true,
formData({ data }) {
const { nameProperty, oakEntity } = this.props;
const entityStr = firstLetterUpperCase(oakEntity! as string);
const rows = data?.map((ele) => {
const {
id,
[nameProperty!]: name,
[`user${entityStr}$${oakEntity}`]: userEntity,
} = ele as any;
const relations = userEntity?.map((ele: any) => ele.relation);
const hasRelation: boolean[] = this.props.relations!.map((ele2: string) =>
relations.includes(ele2)
);
return {
id,
name,
hasRelation,
};
});
return {
rows,
};
},
properties: {
nameProperty: '',
user: {} as EntityDict['user']['Schema'],
relations: [] as string[],
oakEntity: '' as keyof EntityDict,
},
methods: {
onChange(input: any) {
const { dataset, checked } = this.resolveInput(input, ['checked']);
const {
id: entityId,
relation,
index,
} = dataset as {
id: string;
relation: string;
index: number;
};
const { oakEntity, user } = this.props;
const entityStr = firstLetterUpperCase(oakEntity! as string);
// todo 需要修改为最新写法
// this.toggleNode(
// {
// relation,
// userId: user.id,
// },
// checked,
// `${index}.user${entityStr}$${oakEntity}`
// );
},
async confirm() {
await this.execute();
await this.navigateBack();
},
},
});

View File

@ -1,32 +0,0 @@
<!-- index.wxml -->
<view class="container">
<view class="primary-bg"></view>
<view class="white-bg">
<view class="content">
<image mode="aspectFill" class="img" src="{{user.avatar}}" lazy-load></image>
<text class="name">{{user.name || user.nickname || '--'}}</text>
<text class="mobile">{{user.mobile || '--'}}</text>
<t-divider />
<view class="list" wx:for="{{rows}}" wx:key="idx">
<block wx:if="{{relations.length === 1}}">
<view class="singleRelationItem">
<view class="name">{{item.name}}</view>
<t-switch value="{{item.hasRelation[0]}}" bind:change="onChange" data-id="{{item.id}}" data-relation="{{relations[0]}}" data-index="{{index}}" />
</view>
</block>
<block wx:else>
<view class="multiRelationItem">
<view class="name">{{item.name}}</view>
<view class="relationList">
<view class="relationItem" wx:for="{{relations}}" wx:key="idx2" wx:for-item="relation" wx:for-index="index2">
<t-switch value="{{item.hasRelation[index2]}}" bind:change="onChange" data-id="{{item.id}}" data-relation="{{relation}}" data-index="{{index}}" />
<text>{{relation}}</text>
</view>
</view>
</view>
</block>
</view>
</view>
</view>
<t-button theme="primary" style="margin: 16rpx" disabled="{{!oakDirty}}" block size="large" bind:tap="confirm" content="确定" />
</view>

View File

@ -1,7 +0,0 @@
.container {
height: 100vh;
display: flex;
flex-direction: column;
}

View File

@ -1,11 +0,0 @@
import React, { Component } from 'react';
export default function render(this: any) {
const { rows } = this.state;
return (
<div>
</div>
);
}