This commit is contained in:
2021-07-13 16:17:46 +08:00
26 changed files with 648 additions and 309 deletions

View File

@@ -29,7 +29,6 @@
"react-router": "^5.2.0",
"react-router-dom": "^5.2.0",
"react-scripts": "4.0.3",
"react-syntax-highlighter": "^15.4.3",
"redux": "^4.1.0",
"swiper": "^6.7.0",
"web-vitals": "^1.0.1"

View File

@@ -1,43 +0,0 @@
import { Auth } from 'components'
import auth from 'components/authorized/handler'
/**
* 简单的权限标识
*/
function foo1() {
return <Auth auth="permissions:name">
<a>连接</a>
</Auth>
}
/**
* 多个并且关系的权限标识
*/
function foo2() {
return <Auth auth={['permissions:name1', 'permissions:name2']}>
<a>连接</a>
</Auth>
}
/**
* 多个或者关系的权限标识
*/
function foo3() {
return <Auth auth={[['permissions:name1'], ['permissions:name2']]}>
<a>连接</a>
</Auth>
}
/**
* 前缀简化
*/
function foo4() {
return <Auth auth={{ 'permissions': ['name1', 'name2'] }}>
<a>连接</a>
</Auth>
}
/**
* 纯js
*/
const flag = auth('permissions:name') // => Boolean

View File

@@ -0,0 +1,51 @@
import { Auth } from 'components'
import auth from 'components/authorized/handler'
/**
* 简单的权限标识
*/
function foo1() {
return (
<Auth auth="permissions:name">
<a>连接</a>
</Auth>
)
}
/**
* 多个并且关系的权限标识
*/
function foo2() {
return (
<Auth auth={['permissions:name1', 'permissions:name2']}>
<a>连接</a>
</Auth>
)
}
/**
* 多个或者关系的权限标识
*/
function foo3() {
return (
<Auth auth={[['permissions:name1'], ['permissions:name2']]}>
<a>连接</a>
</Auth>
)
}
/**
* 前缀简化
*/
function foo4() {
return (
<Auth auth={{ permissions: ['name1', 'name2'] }}>
<a>连接</a>
</Auth>
)
}
/**
* 纯js
*/
const flag = auth('permissions:name') // => Boolean

View File

@@ -0,0 +1,10 @@
import getDictData from 'util/dic'
async function foo() {
const code = await getDictData('dic_code_one', 'dic_code_two')
// =>
// code = {
// dicCodeOne: [],
// dicCodeTwo: [],
// }
}

View File

@@ -0,0 +1,32 @@
import { QueryType, getSearchDateRange, getSearchInfo } from 'util/query'
getSearchInfo({
query: {
value: '123',
text: '123',
code: 'abc',
check: ['1', '2', '3'],
range: [1, 10],
dateRange: getSearchDateRange(['2021-01-01', '2021-01-10'])
},
queryType: {
text: QueryType.Equal,
code: QueryType.Like,
check: QueryType.Equal,
range: [QueryType.GreaterThanOrEqual, QueryType.LessThan],
dateRange: [QueryType.GreaterThanOrEqual, QueryType.LessThan]
}
})
// =>
[
{ field: 'value', value: ['123'] },
{ field: 'text', value: ['123'], type: '=' },
{ field: 'code', value: ['abc'], type: 'like' },
{ field: 'check', value: ['1', '2', '3'], type: '=' },
{ field: 'range', value: [1], type: '>=' },
{ field: 'range', value: [10], type: '<' },
{ field: 'dateRange', value: ['2021-01-01'], type: '>=' },
{ field: 'dateRange', value: ['2021-01-11'], type: '<' }
]

View File

@@ -4,6 +4,8 @@ import { Container } from 'components'
import Database from './database'
import DatabaseMigrations from './database/migrations'
const { Title, Link } = Typography
const docs = [
{
title: '数据库',
@@ -34,50 +36,47 @@ export default class index extends Component {
<Container mode="fluid">
<Row gutter={[16, 24]} justify="center" align="middle">
<Col span={4}>
<Typography.Link
href="https://dotnet.microsoft.com/"
target="_blank"
>
<Link href="https://dotnet.microsoft.com/" target="_blank">
<img
src="https://dotnet.microsoft.com/static/images/redesign/downloads-dot-net-core.svg?v=p6MWQNHwEtnnx0MWJ-i7vCMt-sZmoBf6h-7XmdSs5RE"
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
<Col span={4}>
<Typography.Link
href="https://dotnetchina.gitee.io/furion/"
target="_blank"
>
<Link href="https://dotnetchina.gitee.io/furion/" target="_blank">
<img
src="https://dotnetchina.gitee.io/furion/img/furionlogo.png"
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
</Row>
<br />
<Row gutter={16}>
<Col flex="1">
<Container mode="fluid">
{docs.map((item, i) => (
<React.Fragment key={i}>
<Container id={`doc-back-end-${i}`} mode="fluid">
<section>
<Typography.Title level={2}>
{item.title}
</Typography.Title>
<section id={`doc-back-end-${i}`}>
<Title level={2}>{item.title}</Title>
{item.component && (
<item.component codes={this.props.codes} />
)}
{item.children &&
item.children.map((citem, ci) => (
{item.children && (
<>
<br />
<br />
{item.children.map((citem, ci) => (
<React.Fragment key={ci}>
<section id={`doc-back-end-${i}-${ci}`}>
<Typography.Title level={3}>
<section
id={`doc-back-end-${i}-${ci}`}
>
<Title level={3}>
{citem.title}
</Typography.Title>
</Title>
{citem.component && (
<citem.component
codes={this.props.codes}
@@ -87,11 +86,13 @@ export default class index extends Component {
<br />
</React.Fragment>
))}
</>
)}
</section>
</Container>
<br />
</React.Fragment>
))}
</Container>
</Col>
<Col flex="240px">
<Anchor
@@ -118,6 +119,7 @@ export default class index extends Component {
</Anchor>
</Col>
</Row>
{this.props.supportInfo}
</Container>
</Card>
</div>

View File

@@ -12,7 +12,7 @@ export default class index extends Component {
在不少业务组件中时常需要做到权限控制一些按钮的显示隐藏如果只使用样式来隐藏按钮是不安全的
</Text>
<Text>所以在本框架中推荐将按钮用全局的权限组件包裹来控制是否渲染</Text>
<Highlighter code={this.props.codes['auth/index.js']} language="html" />
<Highlighter code={this.props.codes['auth/index.txt']} language="javascript" />
<Text>
权限标识会读取全局用户信息中的
<Tag className="ml-xs" color="orange">
@@ -20,7 +20,7 @@ export default class index extends Component {
</Tag>
进行比对
</Text>
<Text>权限组件插槽内的可以是任何元素只要不符合条件将不会渲染</Text>
<Text>权限组件可以是任何元素只要不符合条件将不会渲染</Text>
</Space>
)
}

View File

@@ -11,47 +11,55 @@ import Api from './api'
import ApiSetting from './api/setting'
import ApiUsage from './api/usage'
import Auth from './auth/index.jsx'
import Auth from './auth'
import Seed from './seed'
import Util from './util'
import UtilDict from './util/dict'
import UtilGlobal from './util/global'
import UtilFormat from './util/format'
import UtilFile from './util/file'
import UtilQuery from './util/query'
const { Title, Link } = Typography
const docs = [
{
title: '窗口',
component: Window,
children: [
{
title: '打开窗口',
component: WindowOpen,
},
{
title: '关闭窗口',
component: WindowClose,
},
{
title: '重新加载窗口',
component: WindowReload,
},
{ title: '打开窗口', component: WindowOpen },
{ title: '关闭窗口', component: WindowClose },
{ title: '重新加载窗口', component: WindowReload },
],
},
{
title: '接口',
component: Api,
children: [
{
title: '配置',
component: ApiSetting,
},
{
title: '调用',
component: ApiUsage,
},
{ title: '配置', component: ApiSetting },
{ title: '调用', component: ApiUsage },
],
},
{
title: '权限渲染',
component: Auth,
},
{
title: '种子模版',
component: Seed,
},
{
title: '工具',
component: Util,
children: [
{ title: '读取字典', component: UtilDict },
{ title: '全局常量', component: UtilGlobal },
{ title: '字符串格式转化', component: UtilFormat },
{ title: '文件', component: UtilFile },
{ title: '查询相关', component: UtilQuery },
],
},
]
@@ -66,22 +74,19 @@ export default class index extends Component {
return (
<div ref={this.setContainer}>
<Card bordered={false} className="mb-none">
<Container>
<Container mode="fluid">
<Row gutter={[16, 24]} justify="center" align="middle">
<Col span={4}>
<Typography.Link
href="https://react.docschina.org/"
target="_blank"
>
<Link href="https://react.docschina.org/" target="_blank">
<img
src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0xMS41IC0xMC4yMzE3NCAyMyAyMC40NjM0OCI+CiAgPHRpdGxlPlJlYWN0IExvZ288L3RpdGxlPgogIDxjaXJjbGUgY3g9IjAiIGN5PSIwIiByPSIyLjA1IiBmaWxsPSIjNjFkYWZiIi8+CiAgPGcgc3Ryb2tlPSIjNjFkYWZiIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIi8+CiAgICA8ZWxsaXBzZSByeD0iMTEiIHJ5PSI0LjIiIHRyYW5zZm9ybT0icm90YXRlKDYwKSIvPgogICAgPGVsbGlwc2Ugcng9IjExIiByeT0iNC4yIiB0cmFuc2Zvcm09InJvdGF0ZSgxMjApIi8+CiAgPC9nPgo8L3N2Zz4K"
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
<Col span={4}>
<Typography.Link
<Link
href="https://ant-design.gitee.io/components/overview-cn/"
target="_blank"
>
@@ -90,10 +95,10 @@ export default class index extends Component {
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
<Col span={4}>
<Typography.Link
<Link
href="https://echarts.apache.org/zh/index.html"
target="_blank"
>
@@ -102,61 +107,59 @@ export default class index extends Component {
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
<Col span={4}>
<Typography.Link href="http://lesscss.cn/" target="_blank">
<Link href="http://lesscss.cn/" target="_blank">
<img
src="http://s.nodejs.cn/less/img/logo.png"
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
<Col span={4}>
<Typography.Link href="https://www.lodashjs.com/" target="_blank">
<Link href="https://www.lodashjs.com/" target="_blank">
<img
src="https://www.lodashjs.com/img/lodash.png"
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
<Col span={4}>
<Typography.Link
href="http://www.axios-js.com/zh-cn/"
target="_blank"
>
<Link href="http://www.axios-js.com/zh-cn/" target="_blank">
<img
src="http://www.axios-js.com/logo.svg"
width="128"
alt=""
/>
</Typography.Link>
</Link>
</Col>
</Row>
<br />
<Row gutter={16}>
<Col flex="1">
<Container mode="fluid">
{docs.map((item, i) => (
<React.Fragment key={i}>
<Container id={`doc-front-end-${i}`} mode="fluid">
<section>
<Typography.Title level={2}>
{item.title}
</Typography.Title>
<section id={`doc-front-end-${i}`}>
<Title level={2}>{item.title}</Title>
{item.component && (
<item.component codes={this.props.codes} />
)}
{item.children &&
item.children.map((citem, ci) => (
{item.children && (
<>
<br />
<br />
{item.children.map((citem, ci) => (
<React.Fragment key={ci}>
<section
id={`doc-front-end-${i}-${ci}`}
>
<Typography.Title level={3}>
<Title level={3}>
{citem.title}
</Typography.Title>
</Title>
{citem.component && (
<citem.component
codes={this.props.codes}
@@ -166,11 +169,13 @@ export default class index extends Component {
<br />
</React.Fragment>
))}
</>
)}
</section>
</Container>
<br />
</React.Fragment>
))}
</Container>
</Col>
<Col flex="240px">
<Anchor
@@ -197,6 +202,7 @@ export default class index extends Component {
</Anchor>
</Col>
</Row>
{this.props.supportInfo}
</Container>
</Card>
</div>

View File

@@ -0,0 +1,70 @@
import React, { Component } from 'react'
import { Space, Tag, Typography } from 'antd'
const { Title, Text } = Typography
export default class index extends Component {
render() {
return (
<Space direction="vertical" className="w-100-p">
<Text>
种子模版已经提供了业务组件通用的架构可以在{' '}
<Tag className="ml-xs" color="orange">
/seed
</Tag>
中获取架构代码
</Text>
<Title level={4}>模版解释</Title>
<ul>
<li className="mb-md">
<Tag color="orange">/seed/query-table/index.jsx</Tag>
通用查询表格模版
</li>
<li className="mb-md">
<Tag color="orange">/seed/query-table-form/form.jsx</Tag>
简单的编辑弹出框内表单配合外部使用
<Tag className="ml-xs" color="red">
modal-form
</Tag>
</li>
<li className="mb-md">
<Tag color="orange">/seed/form</Tag>
<ul className="mt-md">
<li className="mb-md">
<Tag color="orange">/index.jsx</Tag>
大型表单主页可在此调用数据详情接口并分配给各个分片表单统合分片表单
</li>
<li className="mb-md">
<Tag color="orange">/part.jsx</Tag>
大型表单分片主要考虑到一个文件中维护的表单字段过多所以在此拆分
</li>
</ul>
</li>
<li className="mb-md">
<Tag color="orange">/seed/form-tabe</Tag>
<ul className="mt-md">
<li className="mb-md">
<Tag color="orange">/index.jsx</Tag>
大型标签页-表单主页可在此调用数据详情接口并分配给各个标签页及以下分片表单
</li>
<li className="mb-md">
<Tag color="orange">/tab</Tag>
<ul className="mt-md">
<li className="mb-md">
<Tag color="orange">/index.jsx</Tag>
单个标签页内主页在此统合分片表单并传递数据
</li>
<li className="mb-md">
<Tag color="orange">/part.jsx</Tag>
大型表单分片同上
</li>
</ul>
</li>
</ul>
</li>
</ul>
</Space>
)
}
}

View File

@@ -0,0 +1,22 @@
import React, { Component } from 'react'
import { Space, Tag, Typography } from 'antd'
import Highlighter from 'pages/system/doc/highlighter'
const { Text } = Typography
export default class dict extends Component {
render() {
return (
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="orange">/dic</Tag>
<Tag color="red">getDictData</Tag>
</Text>
<Text>
通过传入字典编码快速查找并返回字典数据默认从Redux中读取如果Redux中不存在则会调用接口从数据库获取需要注意的是获取字典所需的是下划线形式的编码而返回的字典JSON中键名称必定为驼峰形式
</Text>
<Highlighter code={this.props.codes['util/dic/index.js']} language="javascript" />
</Space>
)
}
}

View File

@@ -0,0 +1,90 @@
import React, { Component } from 'react'
import { Space, Tag, Typography } from 'antd'
const { Text } = Typography
export default class file extends Component {
render() {
return (
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="orange">/file</Tag>
</Text>
<ul>
<li>
<p>
<Tag color="red">ArrayBufferToBase64</Tag>
<Tag color="green">(arrayBuffer: ArrayBuffer) =&gt; String</Tag>
ArrayBuffer转成Base64
</p>
</li>
<li>
<p>
<Tag color="red">ArrayBufferToBlob</Tag>
<Tag color="green">(arrayBuffer: ArrayBuffer) =&gt; Blob</Tag>
ArrayBuffer转成Blob
</p>
</li>
<li>
<p>
<Tag color="red">Base64ToBlob</Tag>
<Tag color="green">(base64: String) =&gt; Blob</Tag>
Base64转成Blob
</p>
</li>
<li>
<p>
<Tag color="red">BlobToBase64</Tag>
<Tag color="green">(blob: Blob) =&gt; String</Tag>
Blob转成Base64
</p>
</li>
<li>
<p>
<Tag color="red">BlobToFile</Tag>
<Tag color="green">
(blob: Blob, fileName: String, fileType: String) =&gt; File
</Tag>
Blob转成File对象
</p>
</li>
<li>
<p>
<Tag color="red">Base64ToFile</Tag>
<Tag color="green">(base64: String, fileName: String) =&gt; File</Tag>
Base64转成File对象
</p>
</li>
<li>
<p>
<Tag color="red">PreviewFileResponse</Tag>
<Tag color="green">(id: String) =&gt; Response</Tag>
根据文件ID从接口获取文件信息
</p>
</li>
<li>
<p>
<Tag color="red">PreviewFileArrayBuffer</Tag>
<Tag color="green">(id: String) =&gt; ArrayBuffer</Tag>
根据文件ID从接口获取文件ArrayBuffer
</p>
</li>
<li>
<p>
<Tag color="red">PreviewFileBase64</Tag>
<Tag color="green">(id: String) =&gt; String</Tag>
根据文件ID从接口获取文件Base64
</p>
</li>
<li>
<p>
<Tag color="red">PreviewFile</Tag>
<Tag color="green">(id: String) =&gt; File</Tag>
根据文件ID从接口获取文件对象
</p>
</li>
</ul>
</Space>
)
}
}

View File

@@ -0,0 +1,39 @@
import React, { Component } from 'react'
import { Space, Tag, Typography } from 'antd'
const { Text } = Typography
export default class format extends Component {
render() {
return (
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="orange">/format</Tag>
</Text>
<ul>
<li>
<p>
<Tag color="red">numberToChinese</Tag>
<Tag color="green">(number: [Number, String]) =&gt; String</Tag>
将数字转换为中文数字
</p>
</li>
<li>
<p>
<Tag color="red">toCamelCase</Tag>
<Tag color="green">(str: String) =&gt; String</Tag>
下划线转驼峰
</p>
</li>
<li>
<p>
<Tag color="red">toUnderScoreCase</Tag>
<Tag color="green">(str: String) =&gt; String</Tag>
驼峰转下划线
</p>
</li>
</ul>
</Space>
)
}
}

View File

@@ -0,0 +1,54 @@
import React, { Component } from 'react'
import { Space, Tag, Typography } from 'antd'
const { Text } = Typography
export default class global extends Component {
render() {
return (
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="orange">/global</Tag>
</Text>
<ul>
<li>
<p>
<Tag color="red">EMPTY_ID</Tag>
一个空GUID字符串一般用于判断树节点的顶层
</p>
</li>
<li>
<p>
<Tag color="red">PERVIEW_URL</Tag>
文件预览地址只在文件预览接口开放匿名后可以直接通过src引用
</p>
</li>
<li>
<p>
<Tag color="red">RSA_PUBLIC_KEY</Tag>
前后端非对称加密的公钥
</p>
</li>
<li>
<p>
<Tag color="red">AMAP_WEBAPI_KEY</Tag>
高德地图Webapi所使用的key
</p>
</li>
<li>
<p>
<Tag color="red">CITY</Tag>
城市名称一般用于地图定位城市
</p>
</li>
<li>
<p>
<Tag color="red">SIDER_BREAK_POINT</Tag>
响应式小屏幕响应宽度
</p>
</li>
</ul>
</Space>
)
}
}

View File

@@ -0,0 +1,21 @@
import React, { Component } from 'react'
import { Space, Tag, Typography } from 'antd'
import Highlighter from 'pages/system/doc/highlighter'
const { Title, Text } = Typography
export default class index extends Component {
render() {
return (
<Space direction="vertical" className="w-100-p">
<Text>
<Tag className="ml-xs" color="orange">
/util
</Tag>
默认已提供了许多工具函数也可以自行进行添加
</Text>
</Space>
)
}
}

View File

@@ -0,0 +1,119 @@
import React, { Component } from 'react'
import { Space, Tag, Typography } from 'antd'
import Highlighter from 'pages/system/doc/highlighter'
const { Text } = Typography
export default class query extends Component {
render() {
return (
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="orange">/query</Tag>
</Text>
<ul>
<li class="mb-md">
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="red">QueryType</Tag>
获取查询类型字符串与后端对应
</Text>
<ul>
<li>
<p>
<Tag color="red">GreaterThan</Tag>{' '}
<Tag color="blue">&gt;</Tag>
</p>
</li>
<li>
<p>
<Tag color="red">GreaterThanOrEqual</Tag>{' '}
<Tag color="blue">&gt;=</Tag>
</p>
</li>
<li>
<p>
<Tag color="red">LessThan</Tag>{' '}
<Tag color="blue">&lt;</Tag>
</p>
</li>
<li>
<p>
<Tag color="red">LessThanOrEqual</Tag>{' '}
<Tag color="blue">&lt;=</Tag>
</p>
</li>
<li>
<p>
<Tag color="red">Like</Tag> <Tag color="blue">LIKE</Tag>
</p>
</li>
<li>
<p>
<Tag color="red">Equal</Tag> <Tag color="blue">=</Tag>
</p>
</li>
<li>
<p>
<Tag color="red">StartWith</Tag>{' '}
<Tag color="blue">STRAT</Tag>
</p>
</li>
<li>
<p>
<Tag color="red">EndWith</Tag> <Tag color="blue">END</Tag>
</p>
</li>
</ul>
</Space>
</li>
<li class="mb-md">
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="red">getSearchDateRange</Tag>
<Tag color="green">
(range: Array, format: String = 'YYYY-MM-DD', unit: String =
'days') =&gt; Array
</Tag>
</Text>
<Text>获取查询用时间范围数组在这里会自动将第二个时间增加1天</Text>
<Text>
如果选择的日期范围为2021-01-01~2021-01-10最终需要取得
&gt;=2021-01-01 and &lt;2021-01-11 的结果
</Text>
</Space>
</li>
<li class="mb-md">
<Space direction="vertical" className="w-100-p">
<Text>
<Tag color="red">getSearchInfo</Tag>
<Tag color="green">
({'{'}query: Object, queryType: Object{'}'}) =&gt; Array
</Tag>
</Text>
<Text>从键值对的query类型转换成数组类型</Text>
<Text>自动作为field值</Text>
<Text>得到一个数组作为value的值</Text>
<Text>
queryType一个JSON类型已query的键为键
<Tag className="ml-xs" color="red">
QueryType
</Tag>
为值 如果是一个
<Tag className="ml-xs" color="red">
QueryType
</Tag>
的数组则自动对应到value中的各个值
</Text>
<Text>示例</Text>
<Highlighter
code={this.props.codes['util/query/index.js']}
language="javascript"
/>
</Space>
</li>
</ul>
</Space>
)
}
}

View File

@@ -1,7 +1,6 @@
import React, { Component } from 'react'
import { Button, message as Message, Space } from 'antd'
import SyntaxHighlighter from 'react-syntax-highlighter'
import { tomorrowNightEighties } from 'react-syntax-highlighter/dist/esm/styles/hljs'
import MonacoEditor from 'react-monaco-editor'
const baseCopy = content => {
try {
@@ -48,15 +47,30 @@ const copyTemplate = code => {
}
export default class highlighter extends Component {
onEditorDidMount(editor) {
editor.setValue(this.props.code)
}
render() {
const { code, copyTemplate } = this.props
const line = code.split('\r\n').length
const height = line > 20 ? 400 : line * 20
return (
<section>
<SyntaxHighlighter {...this.props} style={tomorrowNightEighties}>
{code}
</SyntaxHighlighter>
<div className="text-right">
<MonacoEditor
height={height}
{...this.props}
theme="vs-dark"
options={{
fontSize: 12,
readOnly: true,
lineHeight: 20,
}}
editorDidMount={editor => this.onEditorDidMount(editor)}
/>
<div className="text-right mt-sm">
<Space>
{copyTemplate && (
<Button size="small" type="dashed" onClick={() => copyTemplate(code)}>

View File

@@ -28,7 +28,7 @@ export default class index extends Component {
const files = require.context(
'../../../../public/doc-code',
true,
/\.(js|jsx|html|vue|css|less|json|cs)(\?.*)?$/
/\.(txt|js|jsx|html|vue|css|less|json|cs)(\?.*)?$/
)
const codes = {}
files.keys().forEach(p => {
@@ -40,8 +40,6 @@ export default class index extends Component {
codes[filepath] = xhr.responseText
})
console.log(codes)
this.codes = codes
}
@@ -68,7 +66,7 @@ export default class index extends Component {
: 'yo-tab-external-tabpane-inactive',
].join(' ')}
>
<item.component codes={this.codes} />
<item.component codes={this.codes} {...this.props} />
</div>
))}
</div>

View File

@@ -10,7 +10,7 @@ export const EMPTY_ID = '00000000-0000-0000-0000-000000000000'
/**
* 文件预览地址
*/
export const PERVIEW_URL = process.env.VUE_APP_BASE_URL + urls.sysFileInfoPreview[0]
export const PERVIEW_URL = process.env.REACT_APP_BASE_URL + urls.sysFileInfoPreview[0]
/**

View File

@@ -1191,7 +1191,7 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.3.1":
"@babel/runtime@^7.0.0":
version "7.14.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d"
integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==
@@ -1827,13 +1827,6 @@
dependencies:
"@types/node" "*"
"@types/hast@^2.0.0":
version "2.3.2"
resolved "https://registry.nlark.com/@types/hast/download/@types/hast-2.3.2.tgz#236201acca9e2695e42f713d7dd4f151dc2982e4"
integrity sha1-I2IBrMqeJpXkL3E9fdTxUdwpguQ=
dependencies:
"@types/unist" "*"
"@types/html-minifier-terser@^5.0.0":
version "5.1.1"
resolved "https://registry.nlark.com/@types/html-minifier-terser/download/@types/html-minifier-terser-5.1.1.tgz?cache=0&sync_timestamp=1621241343144&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fhtml-minifier-terser%2Fdownload%2F%40types%2Fhtml-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50"
@@ -1942,11 +1935,6 @@
dependencies:
source-map "^0.6.1"
"@types/unist@*":
version "2.0.5"
resolved "https://registry.nlark.com/@types/unist/download/@types/unist-2.0.5.tgz#fdd299f23205c3455af88ce618dd65c14cb73e22"
integrity sha1-/dKZ8jIFw0Va+IzmGN1lwUy3PiI=
"@types/webpack-sources@*":
version "2.1.0"
resolved "https://registry.nlark.com/@types/webpack-sources/download/@types/webpack-sources-2.1.0.tgz?cache=0&sync_timestamp=1621243863278&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fwebpack-sources%2Fdownload%2F%40types%2Fwebpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10"
@@ -3357,21 +3345,6 @@ char-regex@^1.0.2:
resolved "https://registry.nlark.com/char-regex/download/char-regex-1.0.2.tgz?cache=0&sync_timestamp=1622809103243&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchar-regex%2Fdownload%2Fchar-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
integrity sha1-10Q1giYhf5ge1Y9Hmx1rzClUXc8=
character-entities-legacy@^1.0.0:
version "1.1.4"
resolved "https://registry.npm.taobao.org/character-entities-legacy/download/character-entities-legacy-1.1.4.tgz?cache=0&sync_timestamp=1615373299115&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcharacter-entities-legacy%2Fdownload%2Fcharacter-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
integrity sha1-lLwYRdznClu50uzHSHJWYSk9j8E=
character-entities@^1.0.0:
version "1.2.4"
resolved "https://registry.nlark.com/character-entities/download/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
integrity sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs=
character-reference-invalid@^1.0.0:
version "1.1.4"
resolved "https://registry.npm.taobao.org/character-reference-invalid/download/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
integrity sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA=
check-types@^11.1.1:
version "11.1.2"
resolved "https://registry.npm.taobao.org/check-types/download/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
@@ -3573,11 +3546,6 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
comma-separated-tokens@^1.0.0:
version "1.0.8"
resolved "https://registry.nlark.com/comma-separated-tokens/download/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
integrity sha1-YyuAthF4Z6FY8QgK1Jiy++fj9eo=
commander@^2.20.0:
version "2.20.3"
resolved "https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1622954303803&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
@@ -5208,13 +5176,6 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
fault@^1.0.0:
version "1.0.4"
resolved "https://registry.npm.taobao.org/fault/download/fault-1.0.4.tgz#eafcfc0a6d214fc94601e170df29954a4f842f13"
integrity sha1-6vz8Cm0hT8lGAeFw3ymVSk+ELxM=
dependencies:
format "^0.2.0"
faye-websocket@^0.11.3:
version "0.11.4"
resolved "https://registry.nlark.com/faye-websocket/download/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
@@ -5433,11 +5394,6 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
format@^0.2.0:
version "0.2.2"
resolved "https://registry.npm.taobao.org/format/download/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=
forwarded@0.2.0:
version "0.2.0"
resolved "https://registry.nlark.com/forwarded/download/forwarded-0.2.0.tgz?cache=0&sync_timestamp=1622503508967&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fforwarded%2Fdownload%2Fforwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
@@ -5777,22 +5733,6 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3"
minimalistic-assert "^1.0.1"
hast-util-parse-selector@^2.0.0:
version "2.2.5"
resolved "https://registry.nlark.com/hast-util-parse-selector/download/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a"
integrity sha1-1Xwj9NoWrjxjs7bKRhZoMxNJnDo=
hastscript@^6.0.0:
version "6.0.0"
resolved "https://registry.nlark.com/hastscript/download/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640"
integrity sha1-6HaNfqxWw/3qyKkoMNWOgR5b9kA=
dependencies:
"@types/hast" "^2.0.0"
comma-separated-tokens "^1.0.0"
hast-util-parse-selector "^2.0.0"
property-information "^5.0.0"
space-separated-tokens "^1.0.0"
he@^1.2.0:
version "1.2.0"
resolved "https://registry.nlark.com/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -5803,11 +5743,6 @@ hex-color-regex@^1.1.0:
resolved "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
integrity sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4=
highlight.js@^10.4.1, highlight.js@~10.7.0:
version "10.7.3"
resolved "https://registry.nlark.com/highlight.js/download/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
integrity sha1-aXJy45kTVuQMPKxWanTu9oF1ZTE=
history@^4.9.0:
version "4.10.1"
resolved "https://registry.nlark.com/history/download/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3"
@@ -6234,19 +6169,6 @@ is-accessor-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
is-alphabetical@^1.0.0:
version "1.0.4"
resolved "https://registry.npm.taobao.org/is-alphabetical/download/is-alphabetical-1.0.4.tgz?cache=0&sync_timestamp=1615453703061&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-alphabetical%2Fdownload%2Fis-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
integrity sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0=
is-alphanumerical@^1.0.0:
version "1.0.4"
resolved "https://registry.nlark.com/is-alphanumerical/download/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
integrity sha1-frmiQx+FX2se8aeOMm31FWlsTb8=
dependencies:
is-alphabetical "^1.0.0"
is-decimal "^1.0.0"
is-arguments@^1.0.4:
version "1.1.0"
resolved "https://registry.npm.taobao.org/is-arguments/download/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
@@ -6345,11 +6267,6 @@ is-date-object@^1.0.1:
resolved "https://registry.nlark.com/is-date-object/download/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5"
integrity sha1-VQz8wDr62gXuo90wmBx7CVUfc+U=
is-decimal@^1.0.0:
version "1.0.4"
resolved "https://registry.npm.taobao.org/is-decimal/download/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
integrity sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U=
is-descriptor@^0.1.0:
version "0.1.6"
resolved "https://registry.nlark.com/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
@@ -6424,11 +6341,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
is-hexadecimal@^1.0.0:
version "1.0.4"
resolved "https://registry.npm.taobao.org/is-hexadecimal/download/is-hexadecimal-1.0.4.tgz?cache=0&sync_timestamp=1615464641587&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-hexadecimal%2Fdownload%2Fis-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
integrity sha1-zDXJdYjaS9Saju3WvECC1E3LI6c=
is-module@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/is-module/download/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
@@ -7486,14 +7398,6 @@ lower-case@^2.0.2:
dependencies:
tslib "^2.0.3"
lowlight@^1.17.0:
version "1.20.0"
resolved "https://registry.nlark.com/lowlight/download/lowlight-1.20.0.tgz#ddb197d33462ad0d93bf19d17b6c301aa3941888"
integrity sha1-3bGX0zRirQ2TvxnRe2wwGqOUGIg=
dependencies:
fault "^1.0.0"
highlight.js "~10.7.0"
lru-cache@^5.1.1:
version "5.1.1"
resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
@@ -8400,18 +8304,6 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5:
pbkdf2 "^3.0.3"
safe-buffer "^5.1.1"
parse-entities@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/parse-entities/download/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
integrity sha1-U8brW5MUofTsmfoP33zgHs2gy+g=
dependencies:
character-entities "^1.0.0"
character-entities-legacy "^1.0.0"
character-reference-invalid "^1.0.0"
is-alphanumerical "^1.0.0"
is-decimal "^1.0.0"
is-hexadecimal "^1.0.0"
parse-json@^4.0.0:
version "4.0.0"
resolved "https://registry.nlark.com/parse-json/download/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
@@ -9343,11 +9235,6 @@ pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2:
ansi-styles "^4.0.0"
react-is "^17.0.1"
prismjs@^1.22.0, prismjs@~1.24.0:
version "1.24.1"
resolved "https://registry.nlark.com/prismjs/download/prismjs-1.24.1.tgz#c4d7895c4d6500289482fa8936d9cdd192684036"
integrity sha1-xNeJXE1lACiUgvqJNtnN0ZJoQDY=
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@@ -9407,13 +9294,6 @@ prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2:
object-assign "^4.1.1"
react-is "^16.8.1"
property-information@^5.0.0:
version "5.6.0"
resolved "https://registry.nlark.com/property-information/download/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69"
integrity sha1-YWdVRfsjAC8kXGVA7EYHfU2j7Wk=
dependencies:
xtend "^4.0.0"
proxy-addr@~2.0.5:
version "2.0.7"
resolved "https://registry.nlark.com/proxy-addr/download/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@@ -10137,17 +10017,6 @@ react-scripts@4.0.3:
optionalDependencies:
fsevents "^2.1.3"
react-syntax-highlighter@^15.4.3:
version "15.4.3"
resolved "https://registry.npm.taobao.org/react-syntax-highlighter/download/react-syntax-highlighter-15.4.3.tgz#fffe3286677ac470b963b364916d16374996f3a6"
integrity sha1-//4yhmd6xHC5Y7NkkW0WN0mW86Y=
dependencies:
"@babel/runtime" "^7.3.1"
highlight.js "^10.4.1"
lowlight "^1.17.0"
prismjs "^1.22.0"
refractor "^3.2.0"
react-textarea-autosize@^8.3.2:
version "8.3.3"
resolved "https://registry.nlark.com/react-textarea-autosize/download/react-textarea-autosize-8.3.3.tgz?cache=0&sync_timestamp=1622628433420&other_urls=https%3A%2F%2Fregistry.nlark.com%2Freact-textarea-autosize%2Fdownload%2Freact-textarea-autosize-8.3.3.tgz#f70913945369da453fd554c168f6baacd1fa04d8"
@@ -10268,15 +10137,6 @@ redux@^4.1.0:
dependencies:
"@babel/runtime" "^7.9.2"
refractor@^3.2.0:
version "3.4.0"
resolved "https://registry.nlark.com/refractor/download/refractor-3.4.0.tgz#62bd274b06c942041f390c371b676eb67cb0a678"
integrity sha1-Yr0nSwbJQgQfOQw3G2dutnywpng=
dependencies:
hastscript "^6.0.0"
parse-entities "^2.0.0"
prismjs "~1.24.0"
regenerate-unicode-properties@^8.2.0:
version "8.2.0"
resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
@@ -11044,11 +10904,6 @@ sourcemap-codec@^1.4.4:
resolved "https://registry.npm.taobao.org/sourcemap-codec/download/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=
space-separated-tokens@^1.0.0:
version "1.1.5"
resolved "https://registry.nlark.com/space-separated-tokens/download/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899"
integrity sha1-hfMsPRDZaCAH6RdBTdxcJtGqaJk=
spdx-correct@^3.0.0:
version "3.1.1"
resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"