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

This commit is contained in:
Xu Chang 2024-01-25 18:18:02 +08:00
commit 55a404611f
123 changed files with 455 additions and 2705 deletions

View File

@ -1,5 +1,5 @@
import { assert } from 'oak-domain/lib/utils/assert';
import { getFilterName } from '../filter2/utils';
import { getFilterName } from '../filter/utils';
export default OakComponent({
isList: true,
data: {

View File

@ -1,8 +1,8 @@
import React, { useState } from 'react';
import { Button, Space, Form, Badge, Row, Col } from 'antd';
import { DownOutlined, UpOutlined } from '@ant-design/icons';
import Filter from '../filter2';
import { getFilterName } from '../filter2/utils';
import Filter from '../filter';
import { getFilterName } from '../filter/utils';
import Style from './web.module.less';
const DEFAULT_COLUMN_MAP = {
xxl: 4,

View File

@ -1,8 +1,7 @@
import React, { useState } from 'react';
import styles from './index.module.less';
import { Space, Checkbox, Divider, Modal, Image } from 'antd';
import { Space, Checkbox, Divider, Image } from 'antd';
import { EyeOutlined, } from '@ant-design/icons';
const { confirm } = Modal;
function MaskView(props) {
const { selected, onClick, setVisibleTrue } = props;
return (<div className={selected ? styles['mask-checked'] : styles.mask} onClick={onClick}>

View File

@ -6,8 +6,9 @@ type buttonProps = {
onClick: () => void;
};
type ToolBarProps = {
title?: string;
title?: React.ReactNode;
buttonGroup?: buttonProps[];
extraContent?: React.ReactNode;
reload: () => void;
};
declare function ToolBar(props: ToolBarProps): React.JSX.Element;

View File

@ -6,12 +6,13 @@ import ColumnSetting from '../columnSetting';
import { useFeatures } from '../../../platforms/web';
import Style from './index.module.less';
function ToolBar(props) {
const { title, buttonGroup, reload } = props;
const { title, buttonGroup, reload, extraContent } = props;
const features = useFeatures();
return (<div className={Style.toolbarContainer}>
<div className={Style.title}>{title}</div>
<div className={Style.toolbarRight}>
<Space>
{extraContent}
{buttonGroup && buttonGroup.length > 0 && (<ButtonGroup items={buttonGroup}/>)}
<Tooltip title={features.locales.t('reload')}>
<div className={Style.reloadIconBox} onClick={() => {

View File

@ -19,7 +19,6 @@
align-items: center;
justify-content: flex-start;
color: rgba(42, 46, 54, 0.88);
font-weight: bolder;
padding-left: 10px;
font-size: var(--oak-font-size-title-large);
font-size: var(--oak-font-size-title-small);
}

View File

@ -4,7 +4,9 @@ import { StorageSchema } from 'oak-domain/lib/types/Storage';
import { OakAbsAttrDef, onActionFnDef, OakExtraActionProps, ListButtonProps, ED, OakAbsAttrJudgeDef } from '../../types/AbstractComponent';
import { RowWithActions } from '../../types/Page';
type Props<ED2 extends ED, T extends keyof ED2> = {
title?: string;
title?: string | React.ReactNode;
extraContent?: React.ReactNode;
hideDefaultButtons?: boolean;
buttonGroup?: ListButtonProps[];
onReload?: () => void;
entity: T;

View File

@ -15,7 +15,7 @@ export const TableContext = createContext({
onReset: undefined,
});
const ProList = (props) => {
const { title, buttonGroup, entity, extraActions, onAction, disabledOp, attributes, data, loading, tablePagination, rowSelection, onReload, disableSerialNumber, } = props;
const { buttonGroup, entity, extraActions, onAction, disabledOp, attributes, data, loading, tablePagination, rowSelection, onReload, disableSerialNumber, title, hideDefaultButtons = false, extraContent, } = props;
const features = useFeatures();
const [tableAttributes, setTableAttributes] = useState([]);
const [schema, setSchema] = useState(undefined);
@ -68,7 +68,7 @@ const ProList = (props) => {
},
}}>
<div className={Style.container}>
{!isMobile && (<ToolBar title={title} buttonGroup={buttonGroup} reload={() => {
{!isMobile && !hideDefaultButtons && (<ToolBar title={title} extraContent={extraContent} buttonGroup={buttonGroup} reload={() => {
onReload && onReload();
}}/>)}
{isMobile && <ButtonGroup items={buttonGroup}/>}

20
es/components/pageHeader2/index.d.ts vendored Normal file
View File

@ -0,0 +1,20 @@
/// <reference types="react" />
import { EntityDict } from 'oak-domain/lib/types/Entity';
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import { ReactComponentProps } from '../../types/Page';
declare const _default: <ED2 extends EntityDict & BaseEntityDict, T2 extends keyof ED2>(props: ReactComponentProps<ED2, T2, false, {
style?: import("react").CSSProperties | undefined;
className?: string | undefined;
showHeader?: boolean | undefined;
showBack?: boolean | undefined;
onBack?: (() => void) | undefined;
backIcon?: React.ReactNode;
delta?: number | undefined;
title?: React.ReactNode;
subTitle?: React.ReactNode;
tags?: React.ReactNode;
extra?: React.ReactNode;
children?: React.ReactNode;
content: React.ReactNode;
}>) => React.ReactElement;
export default _default;

View File

@ -0,0 +1,8 @@
export default OakComponent({
isList: false,
methods: {
goBack(delta) {
this.navigateBack(delta);
},
},
});

View File

@ -1,4 +1,4 @@
.oak-pageHeader {
.oak-new-pageHeader {
display: flex;
flex-direction: column;
height: 100%;
@ -12,7 +12,29 @@
position: relative;
padding: 10px 20px;
color: #000;
background: var(--oak-bg-color-container);
display: flex;
justify-content: space-between;
flex-wrap: nowrap;
&-left {
display: flex;
align-items: center;
margin: 0;
overflow: hidden;
}
&-back {
outline: none;
cursor: pointer;
transition: color .3s;
color: #000;
border: 0px;
background: transparent;
padding: 0px;
line-height: inherit;
display: inline-block;
}
&-backIcon {
width: 16px;
@ -26,7 +48,6 @@
font-size: 16px;
font-weight: 700;
margin-right: 20px;
max-width: 70%;
overflow: hidden;
white-space: nowrap;
-o-text-overflow: ellipsis;
@ -46,20 +67,31 @@
margin-right: 24px;
}
&-col {
&-extra {
display: flex;
align-items: center;
}
}
&-content {
display: flex;
flex-direction: column;
flex: 1;
margin: 12px 12px 12px 12px;
&-margin {
margin: 12px;
}
padding: 16px 32px;
}
&-body {
display: flex;
flex-direction: column;
margin: 0px 12px 12px 12px;
background: var(--oak-bg-color-container);
box-shadow: 0 2px 3px #0000001a;
border-radius: 3px;
padding: 30px 32px;
}
}

25
es/components/pageHeader2/web.d.ts vendored Normal file
View File

@ -0,0 +1,25 @@
import React from 'react';
import { WebComponentProps } from '../../types/Page';
import { EntityDict } from 'oak-domain/lib/types/Entity';
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import './index.less';
type PageHeaderProps = {
style?: React.CSSProperties;
className?: string;
showHeader?: boolean;
showBack?: boolean;
onBack?: () => void;
backIcon?: React.ReactNode;
delta?: number;
title?: React.ReactNode;
subTitle?: React.ReactNode;
tags?: React.ReactNode;
extra?: React.ReactNode;
children?: React.ReactNode;
content?: React.ReactNode;
};
type ED = EntityDict & BaseEntityDict;
export default function Render(props: WebComponentProps<ED, keyof ED, false, PageHeaderProps, {
goBack: (delta?: number) => void;
}>): React.JSX.Element;
export {};

View File

@ -0,0 +1,56 @@
import React from 'react';
import { Button } from 'antd';
import { ArrowLeftOutlined } from '@ant-design/icons';
import classNames from 'classnames';
import './index.less';
export default function Render(props) {
const { style, className, showHeader = true, showBack = false, onBack, backIcon, delta, title, subTitle, extra, tags, children, content,
// contentStyle,
// contentClassName,
// bodyStyle,
// bodyClassName,
} = props.data;
const { t, goBack } = props.methods;
const prefixCls = 'oak-new';
return (<div style={style} className={classNames(`${prefixCls}-pageHeader`, className)}>
{showHeader && (title || showBack || subTitle || tags || extra) && (<div className={`${prefixCls}-pageHeader-header`}>
<div className={`${prefixCls}-pageHeader-header-left`}>
{showBack && (<Button type="text" className={`${prefixCls}-pageHeader-header-back`} onClick={() => {
if (typeof onBack === 'function') {
onBack();
return;
}
goBack(delta);
}}>
{backIcon || (<ArrowLeftOutlined className={`${prefixCls}-pageHeader-header-backIcon`}/>)}
</Button>)}
{title && (<span className={`${prefixCls}-pageHeader-header-title`}>
{title}
</span>)}
{subTitle && (<span className={`${prefixCls}-pageHeader-header-subTitle`}>
{subTitle}
</span>)}
{tags}
</div>
<div className={`${prefixCls}-pageHeader-header-extra`}>
{extra}
</div>
</div>)}
{content ? (<div
// style={contentStyle}
className={classNames(`${prefixCls}-pageHeader-content`
// contentClassName
)}>
{content}
</div>) : null}
<div
// style={bodyStyle}
className={classNames(`${prefixCls}-pageHeader-body`
// bodyClassName
)}>
{children}
</div>
</div>);
}

View File

@ -1,11 +0,0 @@
{
"component": true,
"usingComponents": {
"l-dialog": "../../miniprogram_npm/lin-ui/dialog/index",
"l-button": "../../miniprogram_npm/lin-ui/button/index",
"l-popup": "../../miniprogram_npm/lin-ui/popup/index",
"oak-icon": "../icon/index",
"popover": "../../miniprogram_npm/popover/popover",
"popover-item": "../../miniprogram_npm/popover/popover-item"
}
}

View File

@ -1,58 +0,0 @@
.container {
padding: 20rpx;
display: flex;
flex: 1;
align-items: center;
}
.btn {
display: flex;
flex: 1;
justify-content: center;
align-items: center;
padding: 4px 15px;
}
.btn-icon {
display: flex;
justify-content: center;
align-items: center;
padding: 4px 15px;
}
.btn-text {
font-size: 28rpx;
color: var(--oak-color-primary);
}
.divider {
width: 2rpx;
height: 20rpx;
background-color: #e0e0e0;
}
.draw-container {
border-radius: 20rpx;
width: 500rpx;
background-color: #fff;
.title-view {
width: 100%;
height: 80rpx;
font-weight: 600;
display: flex;
align-items: center;
justify-content: center;
border-bottom: 1px solid rgba(200, 200, 200, 0.2);
}
.border {
border-bottom: 1px solid rgba(200, 200, 200, 0.2);
}
.draw-content {
max-height: 480rpx;
overflow-y: scroll;
}
.draw-cell {
color: var(--oak-color-primary);
width: 100%;
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
}
}

View File

@ -1,31 +0,0 @@
<view class="container">
<block wx:for="{{items}}" wx:key="index">
<view class="btn" data-action="{{item.action}}" data-path="{{item.path}}" bindtap="onActionMp">
<view class="btn-text">
{{item.label}}
</view>
</view>
<block wx:if="{{index !== items.length - 1}}">
<view class="divider"></view>
</block>
</block>
<view class="divider"></view>
<block wx:if="{{moreItems && moreItems.length > 0}}">
<view class="btn-icon" bindtap="handleShow">
<oak-icon name="switch" size="24"></oak-icon>
</view>
<l-popup show="{{showMore}}" content-align="center">
<view class="draw-container">
<view class="title-view">
操作
</view>
<view class="draw-content">
<view class="draw-cell border" wx:for="{{moreItems}}" wx:key="index" data-path="{{item.path}}" data-action="{{item.action}}" bindtap="onActionMp">
{{item.label}}
</view>
</view>
</view>
</l-popup>
</block>
</view>

View File

@ -1,12 +0,0 @@
.container {
display: flex;
flex: 1;
align-items: center;
}
.btn {
display: flex;
flex: 1;
justify-content: center;
align-items: center;
padding: 4px 15px;
}

View File

@ -1,14 +0,0 @@
.panelContainer {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 10px 5px;
}
.more {
white-space: nowrap;
font-size: 14px;
color: #000;
padding: 5px;
}

View File

@ -1,9 +0,0 @@
{
"component": true,
"usingComponents": {
"l-dialog": "../../miniprogram_npm/lin-ui/dialog/index",
"l-button": "../../miniprogram_npm/lin-ui/button/index",
"popover": "../../miniprogram_npm/popover/popover",
"popover-item": "../../miniprogram_npm/popover/popover-item"
}
}

View File

@ -1,24 +0,0 @@
.panel-container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 20rpx 10rpx;
}
.more {
white-space: nowrap;
font-size: 28rpx;
color: #000;
padding: 10rpx;
}
.btn-container {
display: flex;
flex-direction: row;
justify-content: flex-end;
flex-wrap: wrap;
width: 100%;
gap: 16rpx;
}

View File

@ -1,31 +0,0 @@
<block wx:if="{{ newItems && newItems.length > 0 }}">
<view class="panel-container">
<block wx:if="{{ moreItems && moreItems.length > 0 }}">
<view id='more' class="more" catchtap="handleMoreClick">
更多
</view>
<popover id='popover'>
<block wx:for="{{ moreItems }}" wx:key="index">
<popover-item hasline catchtap='handleClick' data-type="popover" data-item="{{ item }}">{{ item.text }}</popover-item>
</block>
</popover>
</block>
<view class="btn-container">
<block wx:for="{{ newItems }}" wx:key="index">
<l-button plain="{{true}}" shape="{{ item.buttonProps.shape || 'square' }}" catchtap="handleClick" data-item="{{ item }}">
{{item.text}}
</l-button>
</block>
</view>
</view>
<l-dialog id="my-action-btn-dialog" bind:linconfirm="linconfirm" bind:lincancel="lincancel" />
</block>

View File

@ -1,14 +0,0 @@
.panelContainer {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 10px 5px;
}
.more {
white-space: nowrap;
font-size: 14px;
color: #000;
padding: 5px;
}

View File

@ -1,7 +0,0 @@
{
"component": true,
"usingComponents": {
"oak-icon": "../icon/index",
"l-dialog": "../../miniprogram_npm/lin-ui/dialog/index"
}
}

View File

@ -1,86 +0,0 @@
.tab-container {
position: relative;
}
.scroll-view {
white-space: nowrap;
border-radius: 10rpx;
width: 100%;
padding-top: 20rpx;
padding-bottom: 24rpx;
background-color: transparent;
}
.tab-view {
width: 100%;
display: inline-block;
}
.slide-bar {
width: 100rpx;
height: 8rpx;
position: absolute;
background-color: #eee;
border-radius: 4rpx;
bottom: 6rpx;
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
.slide-show {
height: 100%;
background-color: #8f8f8f;
}
.btn-container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
width: 100%;
}
.btn-box {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.btn-box:active {
background-color: #fafafa;
}
.btn-box{
margin-top: 20rpx,
}
.btn-name {
font-size: 28rpx;
margin-top: 20rpx;
}
.icon {
font-size: 30rpx;
color: #000 !important;
}
.icon-white {
color: #fff !important;
}
.icon-box {
font-size: 30rpx;
width: 96rpx;
height: 96rpx;
min-width: 96rpx;
border-radius: 16rpx;
background-color: #fff;
color: #000;
display: flex;
align-items: center;
justify-content: center;
}

View File

@ -1,36 +0,0 @@
<block wx:if="{{ newItems && newItems.length > 0 }}">
<view class="tab-container">
<scroll-view class="scroll-view" scroll-x="true" bindscroll="scroll" style="height: 100%;">
<view class="tab-view" wx:for="{{ tabNums }}" wx:key="idx" wx:for-item="tabNum" wx:for-index="idx">
<view class="btn-container">
<block wx:for="{{ newItems }}" wx:key="index">
<block wx:if="{{ ((tabNum -1) * count) < index + 1 && index + 1 <= (tabNum * count) }}">
<view style="width: calc(100% / {{ column }})" class="btn-box {{ newItems.length > column && index > column - 1 ? 'btn-box_top' : '' }}" bindtap="handleClick" data-item="{{ item }}" >
<block wx:if="{{ mode === 'card' }}">
<view class="icon-box {{ item.iconProps.rootStyle }}" style="{{ item.iconProps.bgColor ? 'background-color:' + item.iconProps.bgColor : '' }}">
<oak-icon name="{{ item.icon }}" size="24" color="{{ item.iconColor || '' }}" oak-class="icon {{ item.iconProps.bgColor ? 'icon-white' : '' }} {{ item.iconProps.style }}" />
</view>
</block>
<block wx:else>
<oak-icon name="{{ item.icon }}" size="24" color="{{ item.iconColor || '' }}" oak-class="icon {{ item.iconProps.bgColor ? 'icon-white' : '' }} {{ item.iconProps.style }}"/>
</block>
<view class="btn-name">
{{ item.text }}
</view>
</view>
</block>
</block>
</view>
</view>
</scroll-view>
<block wx:if="{{ slideShow }}">
<view class="slide-bar">
<view class="slide-show" style="width:{{slideWidth}}rpx; margin-left:{{slideLeft <= 1 ? 0 : slideLeft + 'rpx'}};"></view>
</view>
</block>
</view>
<l-dialog id="my-action-tab-dialog" bind:linconfirm="linconfirm" bind:lincancel="lincancel" />
</block>

View File

@ -1,99 +0,0 @@
.tabContainer {
position: relative,
}
.scrollBox {
width: 100%;
overflow-y: hidden;
overflow-x: hidden;
}
.scrollView {
white-space: nowrap;
width: 100%;
overflow-y: hidden;
overflow-x: auto;
padding-top: 16px;
padding-bottom: 16px;
background-color: transparent;
&::-webkit-scrollbar {
display: none;
}
}
.tabView {
width: 100%;
display: inline-block;
display: -webkit-inline-box;
}
.slideBar {
width: 50px;
height: 4px;
position: absolute;
background-color: #eee;
border-radius: 2px;
bottom: 6px;
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
.slideShow {
height: 100%;
background-color: #8f8f8f;
}
.btnContainer {
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.btnBox {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.btnBox_top {
margin-top: 10px,
}
.btn {
height: unset !important;
}
.space {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
}
.icon {
font-size:24px;
color: #000;
}
.iconWhite {
color: #fff;
}
.iconBox {
font-size: 24px;
width: 48px;
height: 48px;
min-width: 48px;
border-radius: 8px;
background-color: #fff;
color: #000;
display: flex;
align-items: center;
justify-content: center;
}

View File

@ -1,10 +0,0 @@
{
"component": true,
"usingComponents": {
"l-dialog": "../../miniprogram_npm/lin-ui/dialog/index",
"l-button": "../../miniprogram_npm/lin-ui/button/index",
"l-tag": "../../miniprogram_npm/lin-ui/tag/index",
"popover": "../../miniprogram_npm/popover/popover",
"popover-item": "../../miniprogram_npm/popover/popover-item"
}
}

View File

@ -1,171 +0,0 @@
@import '../../config/styles/mp/index.less';
@import '../../config/styles/mp/mixins.less';
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: var(--oak-bg-color-page);
padding-bottom: 50rpx;
}
.btn-view {
padding: 20rpx;
padding-bottom: 50rpx;
width: 100vw;
position: fixed;
z-index: 100;
bottom: 0;
box-sizing: border-box;
display: flex;
align-items: center;
background-color: #fff;
.actions-btn-content {
display: flex;
flex: 1;
align-items: center;
justify-content: flex-end;
}
}
.more-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
.circle-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.circle-text {
margin-top: 16rpx;
color: #888;
}
}
.card {
margin: 20rpx;
margin-bottom: 0rpx;
border-radius: 20rpx;
display: flex;
flex-direction: column;
background-color: #fff;
.title-view {
padding: 20rpx 40rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 0.8px solid rgba(200, 200, 200, 0.2);
.title {
display: flex;
align-items: center;
font-weight: 600;
color: black;
}
}
.card-content {
padding: 40rpx;
display: flex;
flex-direction: column;
}
.text-view {
display: flex;
align-items: center;
justify-content: space-between;
.label {
min-width: 160rpx;
color: #888;
}
.download {
display: flex;
flex-direction: row;
.download-text {
color: var(--oak-color-primary);
}
}
.img-view {
display: flex;
flex-wrap: wrap;
.img {
width: 160rpx;
height: 160rpx;
}
}
}
.state-view {
display: flex;
align-items: center;
}
.badge {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--oak-color-success);
margin-right: 5px;
}
.effective {
background-color: var(--oak-color-success);
}
.interrupted {
background-color: var(--oak-color-error);
}
// .inCharge {
// background-color: var(--oak-color-primary);
// }
.overdue {
background-color: var(--oak-color-warning);
}
}
[class='text-view']:not(:last-child) {
margin-bottom: 16rpx;
}
[class='btn']:not(:last-child) {
margin-right: 20rpx;
}
.draw-container {
width: 500rpx;
background-color: #fff;
.draw-content {
max-height: 500rpx;
overflow-y: scroll;
}
.draw-cell {
color: var(--oak-color-primary);
width: 100%;
height: 100rpx;
display: flex;
align-items: center;
justify-content: center;
}
}
.primary-panel {
margin: 20rpx;
padding: 40rpx;
border-radius: 32rpx;
display: flex;
flex-direction: column;
color: #fff;
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 3%), 0 1px 6px -1px rgb(0 0 0 / 2%),
0 2px 4px 0 rgb(0 0 0 / 2%);
background: linear-gradient(120deg, var(--oak-color-primary), #1ca3da);
.panel-title {
font-size: 32rpx;
font-weight: 600;
margin-bottom: 16rpx;
}
.text-view {
display: flex;
align-items: center;
justify-content: space-between;
}
}
.tab-content {
margin-bottom: 160rpx;
min-height: 140rpx;
height: 100%;
display: flex;
flex-direction: column;
font-size: 28rpx;
color: rgba(140, 152, 174, 1);
}
[class='img']:not(:last-child) {
margin-right: 16rpx;
}

View File

@ -1,38 +0,0 @@
<view class="container">
<view class="card">
<!-- <view class="title-view">
<view class="title">
{{name}}
</view>
<view class="state-view">
<l-tag bg-color="{{StateColorMp[iState]}}" shape="circle"> {{t('rsContract:v.iState.' + iState)}}</l-tag>
</view>
</view> -->
<view class="card-content">
<view wx:for="{{renderData}}">
<view class="text-view" wx:if="{{item.type === 'img'}}">
<text class="label">{{item.label}}</text>
<view class="img-view">
<block wx:for="{{item.value}}" wx:key="index" wx:for-item="imgItem">
<image class="img" src="{{imgItem}}" data-src="{{imgItem}}" data-list="{{item.value}}" mode="aspectFit" bindtap="preview" />
</block>
</view>
</view>
<view class="text-view" wx:if="{{item.type === 'enum'}}">
<text class="label">{{item.label}}</text>
<view class="img-view">
<!-- <block wx:for="{{item.value}}" wx:key="index" wx:for-item="imgItem"> -->
<!-- {{t(entity+':v.' + item.attr + '.' + item.value)}} -->
<!-- </block> -->
<!-- <l-tag shape="circle"> {{t(entity+':v.' + item.attr + '.' + item.value)}}</l-tag> -->
<l-tag bg-color="{{colorDict[entity][item.attr][item.value]}}" shape="circle"> {{t(entity+':v.' + item.attr + '.' + item.value)}}</l-tag>
</view>
</view>
<view class="text-view" wx:if="{{item.type !== 'img' && item.type !== 'enum'}}">
<text class="label">{{item.label}}</text>
<text>{{item.value || '未填写'}}</text>
</view>
</view>
</view>
</view>
</view>

View File

@ -1,4 +0,0 @@
{
"not_filled_in": "未填写"
}

View File

@ -1,39 +0,0 @@
.panel {
display: flex;
flex-direction: column;
}
.title {
padding-block: 20px 10px;
padding-inline: 10px;
font-size: 14px;
font-weight: 500;
text-align: left;
}
.panel_content {
padding: 10px;
display: flex;
flex-direction: column;
background-color: #fff;
}
.renderRow {
display: flex;
align-items: center;
justify-content: space-between;
}
.renderLabel {
min-width: 140px;
margin-right: 16px;
color: rgba(0, 0, 0, 0.45);
}
.renderValue {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
text-align: right;
}
[class='renderRow']:not(:last-child) {
margin-bottom: 10px;
}

View File

@ -1,3 +0,0 @@
.img {
object-fit: contain;
}

View File

@ -1,3 +0,0 @@
{
"component": true
}

View File

@ -1,3 +0,0 @@
{
"useWideScreen": "本页面较为复杂,请使用宽屏查看"
}

View File

@ -1,8 +0,0 @@
.container {
background-color: var(--oak-bg-color-container);
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}

View File

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

View File

@ -1,10 +0,0 @@
{
"component": true,
"usingComponents": {
"oak-filter": "../filter2/index",
"l-collapse": "../../miniprogram_npm/lin-ui/collapse/index",
"l-button": "../../miniprogram_npm/lin-ui/button/index",
"l-icon": "../../miniprogram_npm/lin-ui/icon/index",
"l-collapse-item": "../../miniprogram_npm/lin-ui/collapse-item/index"
}
}

View File

@ -1,93 +0,0 @@
.filter-item {
width: 100%;
}
.filter-item-mb {
margin-bottom: 20rpx;
}
.ticket-container {
display: flex;
flex-direction: column;
border: 1px #eee dotted;
border-radius: 20rpx;
}
.ticket-container-top {
display: flex;
flex-direction: column;
padding: 40rpx 30rpx;
}
.ticket-left {
display: flex;
flex-direction: column;
}
.ticket-left > .name {
color: #333333;
font-size: 30rpx;
font-weight: bold;
}
.ticket-left > .date {
margin-top: 16rpx;
color: #999;
font-size: 24rpx;
}
.ticket-right {
display: flex;
align-items: flex-end;
color: #3963BC;
line-height: 1;
}
.ticket-right > .number {
font-size: 50rpx;
}
.ticket-right > .text{
font-size: 24rpx;
margin-left: 6rpx;
}
.ticket-container-bottom{
border-top: 1px #eee dashed;
padding: 10rpx 30rpx;
}
.ticket-container-bottom .title{
width: 100%;
font-size: 22rpx;
display: flex;
align-items: center;
justify-content: space-between ;
}
.ticket-container-bottom text{
font-size: 22rpx;
color: #999;
}
.l-title-class{
padding-left: 0rpx !important;
padding-right: 0rpx !important;
}
.l-body-class{
padding-left: 0 !important;
}
.ticket-detail-container{
display: flex;
align-items: center;
}
.ticket-detail-container l-icon{
margin-left: 6rpx;
}
.space-vertical {
margin-top: 20rpx;
transition: height .3s ease-in-out;
overflow: hidden;
}

View File

@ -1,30 +0,0 @@
<view class="ticket-container">
<view class="ticket-container-top">
<block wx:for="{{columnsMp}}" wx:key="attr">
<view class="filter-item {{index !== columnsMp.length - 1 ? 'filter-item-mb' : ''}}">
<oak-filter column="{{item}}" oakPath="{{oakFullpath}}" entity="{{entity}}" />
</view>
</block>
<view class="space-vertical" style="height: {{isExpandContent ? 72*moreColumnsMp.length + 20*(moreColumnsMp.length - 1) : 0}}rpx">
<block wx:for="{{moreColumnsMp}}" wx:key="attr">
<view class="filter-item {{index !== columnsMp.length - 1 ? 'filter-item-mb' : ''}}">
<oak-filter column="{{item}}" oakPath="{{oakFullpath}}" entity="{{entity}}" />
</view>
</block>
</view>
</view>
<view class="ticket-container-bottom">
<view class="title">
<block wx:if="{{moreColumnsMp && moreColumnsMp.length}}">
<view class="ticket-detail-container" bindtap="toggleExpand">
{{isExpandContent ? '收起' : '展开'}}
<l-icon name="down" size="16" color="#999" style="{{isExpandContent ? 'transform:rotate(-180deg);' : ''}}"/>
</view>
</block>
<view class="btn-view">
<l-button l-class bind:lintap="resetFiltersMp" height="50" size="mini" shape="semicircle" plain="{{true}}" type="error" style="margin-right: 10rpx">重置</l-button>
<l-button l-class bind:lintap="confirmSearchMp" height="50" size="mini" shape="semicircle" plain="{{true}}">搜索</l-button>
</view>
</view>
</view>
</view>

View File

@ -1,4 +0,0 @@
.actionBox {
justify-content: flex-end;
width: 100%;
}

File diff suppressed because one or more lines are too long

View File

@ -1,3 +0,0 @@
{
"component": true
}

View File

@ -1,22 +0,0 @@
@import './iconfont.less';
@import '../../config/styles/mp/index.less';
.oak-icon__primary {
color: @oak-color-primary;
}
.oak-icon__error {
color: @oak-color-error;
}
.oak-icon__warning {
color: @oak-color-warning;
}
.oak-icon__success {
color: @oak-color-success;
}
.oak-icon__info {
color: @oak-color-info;
}

View File

@ -1 +0,0 @@
<view class="oak-icon {{ name === '' ? '' : 'oak-icon-' + name }} {{ color === '' || color === 'primary' || color === 'info' || color === 'error' || color === 'success' || color === 'warning' ? 'oak-icon__' + (color || 'primary') : ''}} oak-class" style="font-size: {{ size || 14 }}px; {{ color && color !== 'primary' && color !== 'info'&& color !== 'error'&& color !== 'success'&& color !== 'warning' ? 'color:' + color : '' }}"></view>

View File

@ -1,21 +0,0 @@
@import './iconfont.less';
.oak-icon__primary {
color: var(--oak-color-primary);
}
.oak-icon__error {
color: var(--oak-color-error);
}
.oak-icon__warning {
color: var(--oak-color-warning);
}
.oak-icon__success {
color: var(--oak-color-success);
}
.oak-icon__info {
color: var(--oak-color-info);
}

View File

@ -1,62 +0,0 @@
.imgBoxBorder {
position: relative;
padding: 4px;
border-radius: 8px;
border: 1px solid #e0e0e0;
}
.imgBox {
position: relative;
display: inline-block;
}
.mask {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
box-sizing: border-box;
padding: 8px;
position: absolute;
left: 0;
top: 0;
opacity: 0;
background-color: rgba(0, 0, 0, .6);
color: var(--oak-text-color-anti);
line-height: 22px;
transition: .2s;
z-index: 10;
&-checked {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
box-sizing: border-box;
padding: 8px;
position: absolute;
left: 0;
top: 0;
opacity: 1;
background-color: rgba(0, 0, 0, .6);
color: var(--oak-text-color-anti);
line-height: 22px;
transition: .2s;
z-index: 10;
}
}
.imgBoxBorder:hover .mask {
opacity: 1;
cursor: pointer;
}
.imgBox:hover .mask {
opacity: 1;
cursor: pointer;
}
.row2 {
display: flex;
align-items: center;
justify-content: space-between;
}

View File

@ -1,45 +0,0 @@
.titleView {
display: flex;
align-items: center;
justify-content: space-between;
}
.iconBox {
margin-block: 0;
margin-inline: 4px;
color: rgba(42, 46, 54, 0.88);
font-size: 16px;
cursor: pointer;
}
.iconBox:hover {
color: var(--oak-color-primary);
}
.listItem {
display: flex;
flex: 1;
justify-content: space-between;
}
.listItemView {
display: flex;
justify-content: space-between;
align-items: center;
width: 132px;
transition: all 0.3s;
.listItemTitle {
flex: 1;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.listIconView {
display: none;
margin-left: 4px;
align-items: center;
.listIcon {
color: var(--oak-color-primary);
margin-inline: 4px;
}
}
}
.listItemView:hover .listIconView {
display: flex;
}

View File

@ -1,6 +0,0 @@
{
"columnSetting": "列设置",
"leftPin": "固定在列首",
"rightPin": "固定在列尾"
}

View File

@ -1,10 +0,0 @@
{
"component": true,
"usingComponents": {
"l-dialog": "../../miniprogram_npm/lin-ui/dialog/index",
"l-button": "../../miniprogram_npm/lin-ui/button/index",
"action-btn": "../actionBtn/index",
"popover": "../../miniprogram_npm/popover/popover",
"popover-item": "../../miniprogram_npm/popover/popover-item"
}
}

View File

@ -1,92 +0,0 @@
@import '../../config/styles/mp/index.less';
@import '../../config/styles/mp/mixins.less';
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: var(--oak-bg-color-page);
}
.loading{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
flex: 1;
}
.list-container {
display: flex;
flex-direction: column;
flex: 1;
margin-bottom: 20rpx;
.safe-area-inset-bottom();
}
.sticky-view {
z-index: 100;
position: sticky;
top: 0;
background-color: #fff;
}
.search-view {
padding: 20rpx;
}
.card {
margin: 20rpx;
margin-bottom: 0rpx;
border-radius: 20rpx;
display: flex;
flex-direction: column;
background-color: #fff;
.title-view {
padding: 20rpx 40rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 0.8px solid rgba(200, 200, 200, 0.2);
.title {
display: flex;
align-items: center;
font-weight: 600;
}
}
.card-content {
padding: 40rpx;
display: flex;
flex-direction: column;
}
.text-view {
display: flex;
align-items: center;
justify-content: space-between;
.label {
color: #888;
}
}
.state-view {
display: flex;
align-items: center;
}
.badge {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--oak-color-success);
margin-right: 5px;
}
.success {
background-color: var(--oak-color-success);
}
.error {
background-color: var(--oak-color-error);
}
.warning {
background-color: var(--oak-color-warning);
}
.default {
background-color: var(--oak-color-primary);
}
}
[class='text-view']:not(:last-child) {
margin-bottom: 16rpx;
}

View File

@ -1,37 +0,0 @@
<view class="container">
<block wx:if="{{oakLoading}}">
<view class="loading">
<l-loading show="{{true}}" type="circle">
</l-loading>
</view>
</block>
<block wx:if="{{mobileData && mobileData.length}}">
<view class="list-container">
<view class="card" wx:for="{{mobileData}}" wx:key="index">
<block wx:if="{{item.data && item.data.length > 0}}">
<view class="card-content">
<block wx:for="{{item.data}}" wx:for-item="row" wx:key="index">
<view class="text-view">
<text class="label">{{row.label}}</text>
<text>{{row.value}}</text>
</view>
</block>
</view>
</block>
<block wx:if="{{!disabledOp}}">
<action-btn
data-row="{{item.record}}"
entity="{{entity}}"
extraActions="{{extraActions}}"
actions="{{item.record['#oakLegalActions']}}"
cascadeActions="{{item.record['#oakLegalCascadeActions']}}"
bind:onAction="onActionMp"
/>
</block>
</view>
</view>
</block>
<block wx:else>
<l-status-show show="{{true}}" type="data"></l-status-show>
</block>
</view>

View File

@ -1,79 +0,0 @@
.card {
margin: 10px;
margin-bottom: 0px;
border-radius: 10px;
display: flex;
flex: 1;
flex-direction: column;
background-color: #fff;
box-shadow: 0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12);
.titleView {
padding: 10px 20px;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 0.8px solid rgba(200, 200, 200, 0.2);
.title {
display: flex;
align-items: center;
font-weight: 600;
}
}
.cardContent {
padding: 20px;
display: flex;
flex-direction: column;
}
.textView {
margin-block: 2px;
display: flex;
align-items: center;
justify-content: space-between;
.label {
color: #888;
}
.value {
margin-left: 8px;
}
}
.stateView {
display: flex;
align-items: center;
}
.badge {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--oak-color-success);
margin-right: 5px;
}
.success {
background-color: var(--oak-color-success);
}
.error {
background-color: var(--oak-color-error);
}
.waring {
background-color: var(--oak-color-waring);
}
.default {
background-color: var(--oak-color-primary);
}
}
[class='text-view']:not(:last-child) {
margin-bottom: 8px;
}
.container {
display: flex;
flex: 1;
flex-direction: column;
}
.loadingView {
min-height: 300px;
display: flex;
flex: 1;
flex-direction: column;
align-items: center;
justify-content: center;
}

View File

@ -1,5 +0,0 @@
{
"component": true,
"usingComponents": {
}
}

View File

@ -1,5 +0,0 @@
.text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

View File

@ -1,16 +0,0 @@
<block wx:if="{{value === '' || value === undefined || value === null}}">
<view class="text">--</view>
</block>
<block wx:if="{{type === image}}">
<block wx:if="{{value.length}}">
<block wx:for="{{value}}">
<image src="{{item}}" style="width: 100px;height: 60px" mode="aspectFit" />
</block>
</block>
<block wx:else>
<image src="{{value}}" style="width: 100px;height: 60px" mode="aspectFit" />
</block>
</block>
<block wx:else>
<view class="text">{{value}}</view>
</block>

View File

@ -1,25 +0,0 @@
.toolbarContainer {
display: flex;
justify-content: space-between;
padding-block: 16px;
padding-inline: 0;
}
.reloadIconBox {
margin-block: 0;
margin-inline: 4px;
color: rgba(42, 46, 54, 0.88);
font-size: 16px;
cursor: pointer;
}
.reloadIconBox:hover {
color: var(--oak-color-primary);
}
.title {
display: flex;
align-items: center;
justify-content: flex-start;
color: rgba(42, 46, 54, 0.88);
font-weight: bolder;
padding-left: 10px;
font-size: var(--oak-font-size-title-large);
}

View File

@ -1,7 +0,0 @@
{
"reload": "刷新",
"density": "表格密度",
"columnSetting": "列设置",
"fullScreen": "全屏"
}

View File

@ -1,5 +0,0 @@
.container {
display: flex;
flex: 1;
flex-direction: column;
}

View File

@ -1,5 +0,0 @@
.container {
display: flex;
flex: 1;
flex-direction: column;
}

View File

@ -1 +0,0 @@
{ "list": "列表", "total number of rows": "总行数" }

View File

@ -1,11 +0,0 @@
.location-list {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
&-meta {
align-self: center;
justify-self: center;
}
}

View File

@ -1,3 +0,0 @@
.map {
height: 400px;
}

View File

@ -1,4 +0,0 @@
.actionBox {
justify-content: flex-end;
width: 100%;
}

View File

@ -1,19 +0,0 @@
{
"component": true,
"usingComponents": {
"l-button": "@oak-frontend-base/miniprogram_npm/lin-ui/button/index",
"l-list": "@oak-frontend-base/miniprogram_npm/lin-ui/list/index",
"l-input": "@oak-frontend-base/miniprogram_npm/lin-ui/input/index",
"l-icon": "@oak-frontend-base/miniprogram_npm/lin-ui/icon/index",
"l-textarea": "@oak-frontend-base/miniprogram_npm/lin-ui/textarea/index",
"l-form": "@oak-frontend-base/miniprogram_npm/lin-ui/form/index",
"l-form-item": "@oak-frontend-base/miniprogram_npm/lin-ui/form-item/index",
"l-radio-group": "@oak-frontend-base/miniprogram_npm/lin-ui/radio-group/index",
"l-radio": "@oak-frontend-base/miniprogram_npm/lin-ui/radio/index",
"l-checkbox-group": "@oak-frontend-base/miniprogram_npm/lin-ui/checkbox-group/index",
"l-checkbox": "@oak-frontend-base/miniprogram_npm/lin-ui/checkbox/index",
"l-counter": "@oak-frontend-base/miniprogram_npm/lin-ui/counter/index",
"l-loading": "@oak-frontend-base/miniprogram_npm/lin-ui/loading/index",
"l-notice-bar": "@oak-frontend-base/miniprogram_npm/lin-ui/notice-bar/index"
}
}

View File

@ -1,169 +0,0 @@
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
background-color: var(--oak-bg-color-page);
padding-bottom: 50rpx;
}
.btn-view {
padding: 20rpx;
padding-bottom: 50rpx;
width: 100vw;
position: fixed;
z-index: 100;
bottom: 0;
box-sizing: border-box;
display: flex;
align-items: center;
background-color: #fff;
.actions-btn-content {
display: flex;
flex: 1;
align-items: center;
justify-content: flex-end;
}
}
.more-container {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
.circle-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.circle-text {
margin-top: 16rpx;
color: #888;
}
}
.card {
margin: 20rpx;
margin-bottom: 0rpx;
border-radius: 20rpx;
display: flex;
flex-direction: column;
background-color: #fff;
.title-view {
padding: 20rpx 40rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 0.8px solid rgba(200, 200, 200, 0.2);
.title {
display: flex;
align-items: center;
font-weight: 600;
color: black;
}
}
.card-content {
padding: 40rpx;
display: flex;
flex-direction: column;
}
.text-view {
display: flex;
align-items: center;
justify-content: space-between;
.label {
min-width: 160rpx;
color: #888;
}
.download {
display: flex;
flex-direction: row;
.download-text {
color: var(--oak-color-primary);
}
}
.img-view {
display: flex;
flex-wrap: wrap;
.img {
width: 160rpx;
height: 160rpx;
}
}
}
.state-view {
display: flex;
align-items: center;
}
.badge {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
background-color: var(--oak-color-success);
margin-right: 5px;
}
.effective {
background-color: var(--oak-color-success);
}
.interrupted {
background-color: var(--oak-color-error);
}
// .inCharge {
// background-color: var(--oak-color-primary);
// }
.overdue {
background-color: var(--oak-color-warning);
}
}
[class='text-view']:not(:last-child) {
margin-bottom: 16rpx;
}
[class='btn']:not(:last-child) {
margin-right: 20rpx;
}
.draw-container {
width: 500rpx;
background-color: #fff;
.draw-content {
max-height: 500rpx;
overflow-y: scroll;
}
.draw-cell {
color: var(--oak-color-primary);
width: 100%;
height: 100rpx;
display: flex;
align-items: center;
justify-content: center;
}
}
.primary-panel {
margin: 20rpx;
padding: 40rpx;
border-radius: 32rpx;
display: flex;
flex-direction: column;
color: #fff;
box-shadow: 0 1px 2px 0 rgb(0 0 0 / 3%), 0 1px 6px -1px rgb(0 0 0 / 2%),
0 2px 4px 0 rgb(0 0 0 / 2%);
background: linear-gradient(120deg, var(--oak-color-primary), #1ca3da);
.panel-title {
font-size: 32rpx;
font-weight: 600;
margin-bottom: 16rpx;
}
.text-view {
display: flex;
align-items: center;
justify-content: space-between;
}
}
.tab-content {
margin-bottom: 160rpx;
min-height: 140rpx;
height: 100%;
display: flex;
flex-direction: column;
font-size: 28rpx;
color: rgba(140, 152, 174, 1);
}
[class='img']:not(:last-child) {
margin-right: 16rpx;
}

View File

@ -1,33 +0,0 @@
<view class="container">
<view wx:if="{{!data && mode !== 'list'}}">
<l-loading show="{{true}}" size="large"></l-loading>
</view>
<view wx:else>
<view wx:if="{{mode === 'select'}}">
<picker mode="{{multiple ? 'multiSelector':'selector'}}" />
</view>
<view wx:if="{{mode === 'radio'}}">
<view wx:if="{{multiple}}">
<l-radio-group wx:for="{{data}}" wx:key="index" wx:for-item="enumItem" current="{{entityId}}" bind:linchange="setValueMp">
<l-radio key="{{enumItem.value}}">{{enumItem.label}}</l-radio>
</l-radio-group>
</view>
<view wx:else>
<l-checkbox-group bind:linchange="onChangeTap" >
<l-checkbox
wx:for-items="{{data}}"
wx:key="{{item.id}}"
key="{{item.id}}"
checked="{{item.isChecked}}"
disabled="{{item.disabled}}"
>
{{item.title}}
</l-checkbox>
</l-checkbox-group>
</view>
</view>
<view wx:if="{{mode === 'list'}}">
</view>
</view>
</view>

View File

@ -1,3 +0,0 @@
{
}

View File

@ -1 +0,0 @@
{"confirm": "确认", "reset": "重置"}

View File

@ -1 +0,0 @@
{"confirm": "确认", "reset": "重置"}

View File

@ -1,3 +0,0 @@
{
}

View File

@ -1,3 +0,0 @@
{
}

View File

@ -1 +0,0 @@
{"action":"操作", "relation":"关系", "sourceEntity": "源对象", "path": "路径"}

View File

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

View File

@ -1,3 +0,0 @@
{
"component": true
}

View File

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

View File

@ -1,3 +0,0 @@
{
"component": true
}

View File

@ -1,4 +0,0 @@
{
"hasEntityId": "指定对象专属",
"searchTip": "输入对象名称过滤(英文)"
}

View File

@ -1,4 +0,0 @@
.inputDiv {
padding: 10px;
background-color: var(--oak-bg-color-container);
}

View File

@ -1,3 +0,0 @@
.inputDiv {
padding: 10px;
}

View File

@ -1,3 +0,0 @@
{
}

View File

@ -1 +0,0 @@
{"confirm": "确认", "reset": "重置", "grantedRoles": "授权角色"}

View File

@ -1 +0,0 @@
{"confirm": "确认", "reset": "重置"}

View File

@ -1,6 +0,0 @@
{
"component": true,
"usingComponents": {
"l-search-bar": "../../miniprogram_npm/lin-ui/search-bar/index"
}
}

View File

@ -1,2 +0,0 @@
<l-search-bar value="{{searchValue}}" placeholder="{{placeholder}}" bind:linchange="searchChangeMp" bind:linconfirm="searchConfirm" bind:linclear="searchClear" show-cancel="{{false}}" />

View File

@ -1,17 +0,0 @@
{
"component": true,
"usingComponents": {
"l-button": "@oak-frontend-base/miniprogram_npm/lin-ui/button/index",
"l-list": "@oak-frontend-base/miniprogram_npm/lin-ui/list/index",
"l-input": "@oak-frontend-base/miniprogram_npm/lin-ui/input/index",
"l-icon": "@oak-frontend-base/miniprogram_npm/lin-ui/icon/index",
"l-textarea": "@oak-frontend-base/miniprogram_npm/lin-ui/textarea/index",
"l-form": "@oak-frontend-base/miniprogram_npm/lin-ui/form/index",
"l-form-item": "@oak-frontend-base/miniprogram_npm/lin-ui/form-item/index",
"l-radio-group": "@oak-frontend-base/miniprogram_npm/lin-ui/radio-group/index",
"l-radio": "@oak-frontend-base/miniprogram_npm/lin-ui/radio/index",
"l-counter": "@oak-frontend-base/miniprogram_npm/lin-ui/counter/index",
"l-notice-bar": "@oak-frontend-base/miniprogram_npm/lin-ui/notice-bar/index",
"refAttr": "../refAttr/index"
}
}

View File

@ -1,36 +0,0 @@
/** index.wxss **/
@import '../../config/styles/mp/index.less';
@import '../../config/styles/mp/mixins.less';
.page-body {
// height: 100vh;
display: flex;
flex-direction: column;
// background-color: @oak-bg-color-page;
.safe-area-inset-bottom();
}
.col {
display: flex;
flex-direction: column;
background-color: #fff;
margin-bottom: 50rpx;
.label {
color: @oak-text-color-primary;
}
.form-label {
color: rgba(0, 0, 0, 0.9);
font-size: 28rpx;
}
.textarea {
font-size: 28rpx;
color: @oak-text-color-primary;
margin-right: 20px;
}
.btn {
display: flex;
justify-content: center;
margin: 10px 0;
}
}

View File

@ -1,67 +0,0 @@
<view class="col">
<l-form>
<view wx:for="{{renderData}}">
<view wx:if="{{item.type === 'string' || item.type === 'varchar'|| item.type === 'char' || item.type === 'poiName'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" l-form-label-class="textarea" label-width="120rpx" rules="{{[{required:item.required}]}}">
<l-input placeholder="{{item.placeholder || '请输入'+item.label}}" value="{{item.value}}" hide-label show-row="{{false}}" bind:lininput="setValueMp" data-attr="{{item.attr}}"/>
</l-form-item>
</view>
<view wx:if="{{item.type === 'text'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" l-form-label-class="textarea" label-width="120rpx" rules="{{[{required:item.required}]}}">
<l-textarea placeholder="{{item.placeholder || '请输入'+item.label}}" indicator="{{true}}" maxlength="{{item.maxlength}}" value="{{item.value}}" bind:lininput="setValueMp" data-attr="{{item.attr}}" border="{{false}}"/>
</l-form-item>
</view>
<view wx:if="{{item.type === 'int'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" rules="{{[{required:item.required}]}}">
<l-counter count="{{item.value}}" min="{{item.min}}" max="{{item.max}}" round-float="{{true}}" bind:linchange="setValueMp" data-attr="{{item.attr}}" />
</l-form-item>
</view>
<view wx:if="{{item.type === 'decimal'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" rules="{{[{required:item.required}]}}">
<l-input label="{{item.label}}" type="number" placeholder="{{item.placeholder || '请输入'+item.label+'(将保留一位小数)'}}" value="{{item.value / 10}}" hide-label show-row="{{false}}" bind:lininput="setValueMp1" data-attr="{{item.attr}}"/>
</l-form-item>
</view>
<view wx:if="{{item.type === 'money'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" rules="{{[{required:item.required}]}}">
<l-input label="{{item.label}}" type="number" placeholder="{{item.placeholder || '请输入'+item.label+'(将保留两位小数)'}}" value="{{item.value / 100}}" hide-label show-row="{{false}}" bind:lininput="setValueMp2" data-attr="{{item.attr}}"/>
</l-form-item>
</view>
<view wx:if="{{item.type === 'enum'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" rules="{{[{required:item.required}]}}">
<l-radio-group wx:for="{{item.enumeration}}" wx:key="index" wx:for-item="enumItem" current="{{item.value}}" data-attr="{{item.attr}}" bind:linchange="setValueMp">
<l-radio key="{{enumItem.value}}">{{enumItem.label}}</l-radio>
</l-radio-group>
</l-form-item>
</view>
<view wx:if="{{item.type === 'date' || item.type === 'datetime'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" rules="{{[{required:item.required}]}}">
<picker mode="date" value="{{item.value}}" bind:change="onDateChange" start="{{today}}">
<view class="input-content">
<block wx:if="{{item.value}}">
<view>
{{item.value}}
</view>
</block>
<block wx:else>
<view>
请选择时间
</view>
</block>
<l-icon name="right" color="#777777" size="24" style="margin-left: 20rpx" />
</view>
</picker>
</l-form-item>
</view>
<view wx:if="{{item.type === 'boolean'}}">
<l-form-item label="{{item.label}}" name="{{item.attr}}" rules="{{[{required:item.required}]}}">
<l-switch checked="{{ item.value }}" active-value="{{ 1 }}" inactive-value="{{ 0 }}" bind:linchange="onChangeMp"/>
</l-form-item>
</view>
<view wx:if="{{item.type === 'ref'}}" >
<l-form-item label="{{item.label}}" name="{{item.attr}}" rules="{{[{required:item.required}]}}">
<refAttr multiple="{{false}}" entityId="{{item.value}}" pickerRender="{{attrRender}}"/>
</l-form-item>
</view>
</view>
</l-form>
</view>

Some files were not shown because too many files have changed in this diff Show More