Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz-Vue-R7-Plus-Res
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7前端标准模板
iBiz-Vue-R7-Plus-Res
提交
11755d3d
提交
11755d3d
编写于
5月 14, 2020
作者:
tony001
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020.5.14 基础文件更新
上级
2e5eb7ac
变更
29
隐藏空白字符变更
内嵌
并排
正在显示
29 个修改的文件
包含
754 行增加
和
136 行删除
+754
-136
CHANGELOG.md
CHANGELOG.md
+66
-16
logo.svg
public/assets/img/logo.svg
+16
-0
app-register.ts
src/app-register.ts
+4
-0
app-checkbox-list.vue
src/components/app-checkbox-list/app-checkbox-list.vue
+1
-23
app-column-format.less
src/components/app-column-format/app-column-format.less
+3
-0
app-column-format.vue
src/components/app-column-format/app-column-format.vue
+58
-0
app-form-druipart.vue
src/components/app-form-druipart/app-form-druipart.vue
+11
-1
app-mpicker.vue
src/components/app-mpicker/app-mpicker.vue
+43
-6
app-quick-group.less
src/components/app-quick-group/app-quick-group.less
+37
-0
app-quick-group.vue
src/components/app-quick-group/app-quick-group.vue
+175
-0
app-rich-text-editor.vue
src/components/app-rich-text-editor/app-rich-text-editor.vue
+140
-68
app-span.vue
src/components/app-span/app-span.vue
+7
-2
app-user.vue
src/components/app-user/app-user.vue
+6
-0
codelist.vue
src/components/codelist/codelist.vue
+2
-2
dropdown-list-mpicker.vue
...omponents/dropdown-list-mpicker/dropdown-list-mpicker.vue
+1
-1
login.less
src/components/login/login.less
+28
-4
login.vue
src/components/login/login.vue
+22
-3
md-view-engine.ts
src/engine/view/md-view-engine.ts
+26
-0
login.ts
src/mock/login/login.ts
+1
-1
entity-service.ts
src/service/entity-service.ts
+6
-6
index.ts
src/store/index.ts
+3
-1
actions.ts
src/store/modules/unified-resource/actions.ts
+14
-0
getters.ts
src/store/modules/unified-resource/getters.ts
+20
-0
index.ts
src/store/modules/unified-resource/index.ts
+16
-0
mutations.ts
src/store/modules/unified-resource/mutations.ts
+22
-0
state.ts
src/store/modules/unified-resource/state.ts
+9
-0
app-modal.less
src/utils/app-modal/app-modal.less
+3
-0
auth-guard.ts
src/utils/auth-guard/auth-guard.ts
+13
-1
http.ts
src/utils/http/http.ts
+1
-1
未找到文件。
CHANGELOG.md
浏览文件 @
11755d3d
## v7.0.0-alpha.
2 [2020-5-7
]
## v7.0.0-alpha.
3 [2020-5-14
]
### Bug修复
### Bug修复
分页导航栏添加图标配置
分页导航栏传递srfparentdename和srfparentkey问题
提交流程、启动流程刷新表格数据问题
修复视图自定义导航参数大小写问题
修复批添加功能
修复树部件查询数据集合异常处理
修复图表排序问题
修复富文本国际化切换失效
修复代码表代码项图标和数据
修复数据多项选择视图UI逻辑不匹配
修复列表高度异常
工具栏按钮样式支持
修复树节点上下文
修复表格(视图)高度,滚动条问题
修复表单loaddraft服务仿真主键丢失修复
修复user显示名称逻辑
修复issue地址为正式环境地址
模态边距样式调整
### 功能新增及优化
### 功能新增及优化
#### 模板
#### 模板
表格文件上传信息显示
搜索面板布局优化
批添加、批删除
表格checkbox宽度优化
富文本信息模式
选择类视图不显示标题
更新默认值
补充树节点关系导航上下文,导航参数上下文
看板视图默认卡片模式,支持无缝模式
模态时视图样式调整
树导航样式调整
增加菜单权限
表格样式调整
增加快速分组搜索或快速搜索表单功能
拖拽样式修改
增加表格内置工具栏
代码表多选控件分割符从分号转化为逗号
#### 基础文件
#### 基础文件
看板视图默认卡片模式,支持无缝模式
登录页面调整
增加数据选择类插件表格呈现插件
## v7.0.0-alpha.2 [2020-5-7]
### Bug修复
分页导航栏添加图标配置
### 功能新增及优化
#### 模板
表格文件上传信息显示
表格文件上传信息显示
用户名识别
批添加、批删除
实体工作流动态视图
实体工作流动态导航表格视图
富文本信息模式
工具栏按钮样式支持
更新默认值
#### 基础文件
表格文件上传信息显示
模态边距样式调整
实体工作流动态视图
实体工作流动态导航表格视图
## v7.0.0-alpha.1 [2020-4-29]
## v7.0.0-alpha.1 [2020-4-29]
...
...
public/assets/img/logo.svg
0 → 100644
浏览文件 @
11755d3d
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"277px"
height=
"60px"
viewBox=
"0 0 277 60"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
<title>
logo
</title>
<desc>
Created with Sketch.
</desc>
<g
id=
"页面1"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"Apple-TV"
transform=
"translate(-822.000000, -80.000000)"
fill-rule=
"nonzero"
>
<g
id=
"logo"
transform=
"translate(822.000000, 80.000000)"
>
<path
d=
"M84.7587939,33 C84.3400314,33 83.9422129,32.855404 83.5653265,32.5662099 C83.1884404,32.2770158 83,31.9117221 83,31.4703186 C83,30.8006061 83.3517553,30.0547979 84.0552764,29.2328759 C84.7587975,28.4109559 85.4874333,28 86.2412061,28 C86.7437211,28 87.1624774,28.1407903 87.4974874,28.422375 C87.8324974,28.7039598 88,29.1111079 88,29.6438359 C88,30.2983298 87.6566197,31.0213058 86.9698493,31.8127843 C86.2830787,32.6042648 85.5460676,33 84.7587939,33 Z M87,43.1071413 L87,44.8800002 C85.4032842,46.9038197 83.913587,48.4297553 82.5308641,49.4578566 C81.1481411,50.4859558 79.9711982,51 79,51 C77.6501989,51 76.6460938,50.3038162 75.9876542,48.9114271 C75.3292146,47.51904 75,45.9971505 75,44.345713 C75,43.7142826 75.0658429,43.1111916 75.1975308,42.5364271 C75.3292186,41.9616625 75.4855956,41.4880956 75.6666665,41.1157137 C75.8477374,40.7433317 76.1851825,40.1604794 76.6790122,39.3671417 C79.0164725,35.7890278 81.1563689,34 83.0987653,34 C84.1028856,34 84.6049382,34.3804718 84.6049382,35.1414285 C84.6049382,35.6595252 84.2798385,36.4690405 83.6296296,37.5699981 C82.9794205,38.6709579 82.3991795,39.4561863 81.8888887,39.9257136 C80.4567829,41.2857195 79.5226359,42.2328532 79.0864196,42.7671425 C78.6502035,43.3014297 78.4320986,43.9085667 78.4320986,44.5885708 C78.4320986,45.1714317 78.6543186,45.6571409 79.0987654,46.0457134 C79.543212,46.4342859 80.119338,46.62857 80.8271605,46.62857 C81.6008269,46.62857 82.4526703,46.3492873 83.382716,45.7907132 C84.3127617,45.2321392 85.5185111,44.3376253 87,43.1071413 Z M93,51 L93,13 L105.747082,13 C116.805447,13 119.856031,16.3948127 119.856031,23.2391931 C119.856031,27.1815562 118.494163,29.8645533 114.354086,31.0144092 L114.354086,31.2334294 C118.766537,32.3832853 121,35.2853026 121,40.0489914 C121,46.9481268 117.949416,51 106.891051,51 L93,51 Z M101,29 L103.670157,29 C108.853403,29 111,28.1818182 111,24.4727273 C111,20.5454545 108.905759,20 103.670157,20 L101,20 L101,29 Z M101,44 L105.038462,44 C111.211538,44 113,43.1306818 113,39.5 C113,36.1761364 111.269231,35 105.038462,35 L101,35 L101,44 Z M134.5,17 C130.888889,17 130,16.5263158 130,12.9473684 C130,9.36842105 130.888889,9 134.5,9 C138.166667,9 139,9.36842105 139,12.9473684 C139,16.5263158 138.166667,17 134.5,17 Z M130,51 L130,22 L138,22 L138,51 L130,51 Z M147,51 L147,44.3944444 L161.004377,28.5518519 L161.004377,28.2296296 L148.039387,28.2296296 L148.039387,22 L170.851204,22 L170.851204,28.2296296 L156.5186,44.287037 L156.5186,44.6092593 L172,44.6092593 L172,51 L147,51 Z M189.523364,43.7723343 L205,43.7723343 L205,51 L181,51 L181,13 L189.523364,13 L189.523364,43.7723343 Z M225.419162,21 C235.53493,21 239,24.273703 239,30.391771 L239,50.4633274 L231.734531,50.4633274 L230.952096,47.0822898 C229.666667,49.2289803 226.313373,51 221.339321,51 C214.576846,51 211,48.1556351 211,42.1449016 C211,35.4364937 215.303393,33.0214669 223.407186,33.0214669 L230.896208,33.0214669 L230.896208,32.2701252 C230.896208,28.8354204 229.778443,27.4937388 224.469062,27.4937388 C222.289421,27.4937388 220.10978,27.6547406 218.041916,28.0304114 L218.041916,21.4293381 C220.333333,21.1610018 223.239521,21 225.419162,21 Z M222.450704,46 C226.225352,46 228.929577,44.5555556 230,42.5 L230,39 L223.690141,39 C219.633803,39 218,39.6666667 218,42.7222222 C218,45.1111111 219.295775,46 222.450704,46 Z M265.078394,20.4545455 C274.782027,20.4545455 277,26.3454545 277,35.7272727 C277,44.1818182 274.782027,51 265.078394,51 C259.367113,51 257.038241,49.1454545 255.873805,46.3090909 L255.319312,50.4545455 L248,50.4545455 L248,9 L256.040153,9 L256.040153,24.5454545 C257.204589,22.3636364 259.810707,20.4545455 265.078394,20.4545455 Z M262.827731,46 C268.289916,46 269,41.9473684 269,37.0526316 C269,31.8421053 268.180672,28 262.827731,28 C257.420168,28 256,31.3157895 256,37.0526316 C256,42.5263158 257.420168,46 262.827731,46 Z"
id=
"注册iBizLab账号"
fill=
"#333333"
></path>
<g
id=
"编组"
fill=
"#01B0FF"
>
<path
d=
"M33,53.9848293 C39.3232242,53.9848293 45.6616122,53.9848293 52,54 C48.6488428,49.9646018 45.2673584,45.9747155 41.8555467,42 C38.9896249,46.0505689 36.0478851,50.0556258 33,53.9848293 L33,53.9848293 Z M45,37.2539103 C48.4335443,41.4270073 51.7721519,45.6757039 55,50 C54.9525316,40.3383733 55,30.6616267 54.9683544,21 C51.9303797,26.5641293 48.7025316,32.052659 45,37.2539103 L45,37.2539103 Z M21,21 C21.2871111,31.3772333 25.5786667,40.9994895 30.4897778,50 C33.0586667,45.7958142 35.5217778,41.5472179 38,37.2838182 C32.4542222,31.7325166 27.0142222,26.0627871 21,21 L21,21 Z M4.24776231,8 C3.99247773,23.2587549 3.8010143,38.5324254 4.37540459,53.7762646 C11.9062995,54.0894942 19.4531498,53.9701686 27,54 C16.9481699,39.9345006 7.4228642,24.8845655 4.24776231,8 L4.24776231,8 Z M13,5 C22.6175691,13.1440536 31.7201818,21.8107202 40.2472548,31 C44.669822,22.4349525 48.8652025,13.7682858 53,5.07258514 C39.6717152,5.04355109 26.3434305,5.1451703 13,5 L13,5 Z M0,0 L59.7331546,0 C60.0637531,19.995 60.123862,40.005 59.7031002,60 L0,60 L0,0 Z"
id=
"Fill-1"
></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
src/app-register.ts
浏览文件 @
11755d3d
...
@@ -69,6 +69,8 @@ import AppImagePreview from './components/app-image-preview/app-image-preview.vu
...
@@ -69,6 +69,8 @@ import AppImagePreview from './components/app-image-preview/app-image-preview.vu
import
AppFormatData
from
'./components/app-format-data/app-format-data.vue'
import
AppFormatData
from
'./components/app-format-data/app-format-data.vue'
import
AppUploadFileInfo
from
'./components/app-upload-file-info/app-upload-file-info.vue'
import
AppUploadFileInfo
from
'./components/app-upload-file-info/app-upload-file-info.vue'
import
ContextMenu
from
'./components/context-menu/context-menu'
import
ContextMenu
from
'./components/context-menu/context-menu'
import
AppColumnFormat
from
'./components/app-column-format/app-column-format.vue'
import
AppQuickGroup
from
'./components/app-quick-group/app-quick-group.vue'
// 全局挂载UI实体服务注册中心
// 全局挂载UI实体服务注册中心
window
[
'uiServiceRegister'
]
=
uiServiceRegister
;
window
[
'uiServiceRegister'
]
=
uiServiceRegister
;
...
@@ -147,5 +149,7 @@ export const AppComponents = {
...
@@ -147,5 +149,7 @@ export const AppComponents = {
v
.
component
(
'app-format-data'
,
AppFormatData
);
v
.
component
(
'app-format-data'
,
AppFormatData
);
v
.
component
(
'app-upload-file-info'
,
AppUploadFileInfo
);
v
.
component
(
'app-upload-file-info'
,
AppUploadFileInfo
);
v
.
component
(
'context-menu'
,
ContextMenu
);
v
.
component
(
'context-menu'
,
ContextMenu
);
v
.
component
(
'app-column-format'
,
AppColumnFormat
);
v
.
component
(
'app-quick-group'
,
AppQuickGroup
);
},
},
};
};
\ No newline at end of file
src/components/app-checkbox-list/app-checkbox-list.vue
浏览文件 @
11755d3d
...
@@ -43,7 +43,7 @@ export default class AppCheckBox extends Vue {
...
@@ -43,7 +43,7 @@ export default class AppCheckBox extends Vue {
* @type {string}
* @type {string}
* @memberof AppCheckBox
* @memberof AppCheckBox
*/
*/
@
Prop
({
default
:
'
;
'
})
public
valueSeparator
?:
string
;
@
Prop
({
default
:
'
,
'
})
public
valueSeparator
?:
string
;
/**
/**
* 是否禁用
* 是否禁用
...
@@ -97,28 +97,6 @@ export default class AppCheckBox extends Vue {
...
@@ -97,28 +97,6 @@ export default class AppCheckBox extends Vue {
}
}
}
}
/**
* 分隔符
*
* @type {*}
* @memberof AppCheckBox
*/
@
Prop
()
separator
:
any
;
/**
* 获取分隔符
*
* @readonly
* @memberof AppCheckBox
*/
get
currentseparator
()
{
if
(
this
.
separator
)
{
return
this
.
separator
;
}
else
{
return
';'
;
}
}
/**
/**
* 选中值
* 选中值
*
*
...
...
src/components/app-column-format/app-column-format.less
0 → 100644
浏览文件 @
11755d3d
.app-column-format{
display: inline-block;
}
\ No newline at end of file
src/components/app-column-format/app-column-format.vue
0 → 100644
浏览文件 @
11755d3d
<
template
>
<div
class=
"app-column-format"
>
{{
text
}}
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Model
,
Emit
,
Watch
}
from
"vue-property-decorator"
;
/**
* 表格列格式化json数组,数据格式为"[{"srfkey":"001","srfmajortext":"TEST1"},{"srfkey":"002","srfmajortext":"TEST2"}......]"
*/
@
Component
({
})
export
default
class
AppColumnFormat
extends
Vue
{
/**
* 值
* @type {any}
* @memberof AppColumnFormat
*/
@
Prop
()
public
value
?:
any
;
/**
* 显示文本
* @type {any}
* @memberof AppColumnFormat
*/
get
text
(){
if
(
this
.
value
){
let
returnStr
:
string
=
""
;
let
tempData
:
Array
<
any
>
=
[];
if
(
typeof
(
this
.
value
)
===
'string'
){
tempData
=
JSON
.
parse
(
this
.
value
);
}
else
{
tempData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
value
));
}
tempData
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
if
(
index
>
0
){
returnStr
+=
"、"
;
}
returnStr
+=
item
.
srfmajortext
;
})
return
returnStr
;
}
else
{
return
""
;
}
}
}
</
script
>
<
style
lang=
'less'
>
@import "./app-column-format.less";
</
style
>
\ No newline at end of file
src/components/app-form-druipart/app-form-druipart.vue
浏览文件 @
11755d3d
...
@@ -47,6 +47,14 @@ export default class AppFormDRUIPart extends Vue {
...
@@ -47,6 +47,14 @@ export default class AppFormDRUIPart extends Vue {
*/
*/
@
Prop
({
default
:
''
})
public
refreshitems
!
:
string
;
@
Prop
({
default
:
''
})
public
refreshitems
!
:
string
;
/**
* 禁止加载
*
* @type {string}
* @memberof AppFormDRUIPart
*/
@
Prop
({
default
:
false
})
public
isForbidLoad
!
:
boolean
;
/**
/**
* 关系视图类型
* 关系视图类型
*
*
...
@@ -254,7 +262,9 @@ export default class AppFormDRUIPart extends Vue {
...
@@ -254,7 +262,9 @@ export default class AppFormDRUIPart extends Vue {
this
.
blockUIStop
();
this
.
blockUIStop
();
}
}
}
}
this
.
formDruipart
.
next
({
action
:
'load'
,
data
:{
srfparentdename
:
this
.
parentName
,
srfparentkey
:
_paramitem
}});
if
(
!
this
.
isForbidLoad
){
this
.
formDruipart
.
next
({
action
:
'load'
,
data
:{
srfparentdename
:
this
.
parentName
,
srfparentkey
:
_paramitem
}});
}
}
}
/**
/**
...
...
src/components/app-mpicker/app-mpicker.vue
浏览文件 @
11755d3d
...
@@ -123,12 +123,12 @@ export default class AppMpicker extends Vue {
...
@@ -123,12 +123,12 @@ export default class AppMpicker extends Vue {
* @param newVal
* @param newVal
* @param val
* @param val
*/
*/
@
Watch
(
'curvalue'
,
{
deep
:
true
})
@
Watch
(
'curvalue'
,
{
immediate
:
true
,
deep
:
true
})
oncurvalueChange
(
newVal
:
any
,
val
:
any
)
{
oncurvalueChange
(
newVal
:
any
,
val
:
any
)
{
this
.
value
=
[];
this
.
value
=
[];
this
.
selectItems
=
[];
this
.
selectItems
=
[];
if
(
newVal
)
{
if
(
newVal
)
{
this
.
selectItems
=
JSON
.
parse
(
newVal
);
this
.
selectItems
=
this
.
parseValue
(
JSON
.
parse
(
newVal
)
);
this
.
selectItems
.
forEach
((
item
:
any
)
=>
{
this
.
selectItems
.
forEach
((
item
:
any
)
=>
{
this
.
value
.
push
(
item
[
this
.
deKeyField
]);
this
.
value
.
push
(
item
[
this
.
deKeyField
]);
let
index
=
this
.
items
.
findIndex
((
i
)
=>
Object
.
is
(
i
[
this
.
deKeyField
],
item
[
this
.
deKeyField
]));
let
index
=
this
.
items
.
findIndex
((
i
)
=>
Object
.
is
(
i
[
this
.
deKeyField
],
item
[
this
.
deKeyField
]));
...
@@ -187,7 +187,7 @@ export default class AppMpicker extends Vue {
...
@@ -187,7 +187,7 @@ export default class AppMpicker extends Vue {
let
index
=
this
.
items
.
findIndex
((
item
)
=>
Object
.
is
(
item
[
this
.
deKeyField
],
select
));
let
index
=
this
.
items
.
findIndex
((
item
)
=>
Object
.
is
(
item
[
this
.
deKeyField
],
select
));
if
(
index
>=
0
)
{
if
(
index
>=
0
)
{
let
item
=
this
.
items
[
index
];
let
item
=
this
.
items
[
index
];
val
.
push
({
[
this
.
deKeyField
]:
item
[
this
.
deKeyField
],
[
this
.
deMajorField
]:
item
.
text
});
val
.
push
({
[
this
.
deKeyField
]:
item
[
this
.
deKeyField
],
[
this
.
deMajorField
]:
item
[
this
.
deMajorField
]
});
}
else
{
}
else
{
index
=
this
.
selectItems
.
findIndex
((
item
:
any
)
=>
Object
.
is
(
item
[
this
.
deKeyField
],
select
));
index
=
this
.
selectItems
.
findIndex
((
item
:
any
)
=>
Object
.
is
(
item
[
this
.
deKeyField
],
select
));
if
(
index
>=
0
)
{
if
(
index
>=
0
)
{
...
@@ -196,7 +196,7 @@ export default class AppMpicker extends Vue {
...
@@ -196,7 +196,7 @@ export default class AppMpicker extends Vue {
}
}
}
}
});
});
let
value
=
val
.
length
>
0
?
JSON
.
stringify
(
val
)
:
''
;
let
value
=
val
.
length
>
0
?
JSON
.
stringify
(
this
.
formatValue
(
val
)
)
:
''
;
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
}
}
}
}
...
@@ -211,7 +211,7 @@ export default class AppMpicker extends Vue {
...
@@ -211,7 +211,7 @@ export default class AppMpicker extends Vue {
let
index
=
this
.
selectItems
.
findIndex
((
item
:
any
)
=>
Object
.
is
(
item
[
this
.
deKeyField
],
tag
));
let
index
=
this
.
selectItems
.
findIndex
((
item
:
any
)
=>
Object
.
is
(
item
[
this
.
deKeyField
],
tag
));
if
(
index
>=
0
)
{
if
(
index
>=
0
)
{
this
.
selectItems
.
splice
(
index
,
1
);
this
.
selectItems
.
splice
(
index
,
1
);
let
value
=
this
.
selectItems
.
length
>
0
?
JSON
.
stringify
(
this
.
selectItems
)
:
''
;
let
value
=
this
.
selectItems
.
length
>
0
?
JSON
.
stringify
(
this
.
formatValue
(
this
.
selectItems
)
)
:
''
;
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
}
}
}
}
...
@@ -256,13 +256,50 @@ export default class AppMpicker extends Vue {
...
@@ -256,13 +256,50 @@ export default class AppMpicker extends Vue {
});
});
}
}
if
(
this
.
name
&&
this
.
activeData
)
{
if
(
this
.
name
&&
this
.
activeData
)
{
let
value
=
selects
.
length
>
0
?
JSON
.
stringify
(
selects
)
:
''
;
let
value
=
selects
.
length
>
0
?
JSON
.
stringify
(
this
.
formatValue
(
selects
)
)
:
''
;
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
this
.
$emit
(
'formitemvaluechange'
,
{
name
:
this
.
name
,
value
:
value
});
}
}
})
})
}
}
}
}
/**
* 解析值,把srfkey和srfmajortext解析成实体属性名
*
* @param {any[]} value 需要转换的数组
* @memberof AppMpicker
*/
public
parseValue
(
value
:
any
[]){
let
result
=
[];
if
(
this
.
deKeyField
!==
"srfkey"
||
this
.
deMajorField
!==
"srfmajortext"
){
value
.
forEach
((
item
:
any
)
=>
{
result
.
push
({[
this
.
deMajorField
]:
item
.
srfmajortext
,
[
this
.
deKeyField
]:
item
.
srfkey
});
});
}
else
{
result
=
value
;
}
return
result
;
}
/**
* 格式化值,把实体属性名格式化成srfkey和srfmajortext
*
* @param {any[]} value 需要转换的数组
* @memberof AppMpicker
*/
public
formatValue
(
value
:
any
[]){
let
result
=
[];
if
(
this
.
deKeyField
!==
"srfkey"
||
this
.
deMajorField
!==
"srfmajortext"
){
value
.
forEach
((
item
:
any
)
=>
{
result
.
push
({
srfmajortext
:
item
[
this
.
deMajorField
],
srfkey
:
item
[
this
.
deKeyField
]});
});
}
else
{
result
=
value
;
}
return
result
;
}
}
}
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
...
...
src/components/app-quick-group/app-quick-group.less
0 → 100644
浏览文件 @
11755d3d
.app-quick-group{
padding: 4px;
background-color: #F1F1F1;
.app-quick-item{
margin-right: 8px;
padding: 8px;
cursor: pointer;
.app-quick-item-label{
margin-left:4px;
}
.app-seleted-item{
display: inline-block;
font-weight: 700;
color: #0c64eb !important;
padding: 4px;
border-bottom: 2px solid;
}
.app-seleted-item:focus {
outline: none;
}
.app-quick-item-counter{
border-radius: 12px;
padding-left: 4px;
font-size: 12px;
font-weight: 400;
vertical-align: middle;
display: inline-block;
width: 18px;
height: 18px;
margin-left: 4px;
background-color: #ddd;
}
}
.app-quick-item :hover{
color: #0c64eb !important;
}
}
\ No newline at end of file
src/components/app-quick-group/app-quick-group.vue
0 → 100644
浏览文件 @
11755d3d
<
template
>
<div
class=
"app-quick-group"
>
<span
class=
"app-quick-item"
v-for=
"item in renderArray"
:key=
"item.id"
@
click=
"handleClick(item)"
>
<span
v-if=
"!item.children"
:style=
"
{color:item.color}" :class="{'app-seleted-item':isSelectedItem(item)}">
<i
v-if=
" item.iconcls && !Object.is(item.iconcls, '')"
:class=
"item.iconcls"
></i>
<img
v-else-if=
"item.icon && !Object.is(item.icon, '')"
:src=
"item.icon"
/>
<span
class=
"app-quick-item-label"
>
{{
item
.
label
}}
</span>
<span
v-show=
"isSelectedItem(item) && counterService && counterService.counterData && counterService.counterData[item.codename]"
class=
"app-quick-item-counter"
>
{{
itemTag
(
item
)
}}
</span>
</span>
<el-dropdown
v-if=
"item.children"
style=
"outline: none !important;"
trigger=
"click"
@
command=
"handleCommand($event,item)"
>
<span
:style=
"
{color:item.color}" :class="{'app-seleted-item':isSelectedItem(item)}">
<i
v-if=
" item.iconcls && !Object.is(item.iconcls, '')"
:class=
"item.iconcls"
></i>
<img
v-else-if=
"item.icon && !Object.is(item.icon, '')"
:src=
"item.icon"
/>
<span
class=
"app-quick-item-label"
>
{{
item
.
label
}}
</span>
<span
v-show=
"isSelectedItem(item) && counterService && counterService.counterData && counterService.counterData[item.codename]"
class=
"app-quick-item-counter"
>
{{
itemTag
(
item
)
}}
</span>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-for=
"childitem in item.children"
:command=
"childitem"
:key=
"childitem.id"
>
<span
:style=
"
{color:childitem.color}">
<i
v-if=
" childitem.iconcls && !Object.is(childitem.iconcls, '')"
:class=
"childitem.iconcls"
></i>
<img
v-else-if=
"childitem.icon && !Object.is(childitem.icon, '')"
:src=
"childitem.icon"
/>
<span
:style=
"
{color:(childitem.label == item.label)?'#0c64eb':''}">
{{
childitem
.
label
}}
</span>
</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</span>
</div>
</
template
>
<
script
lang=
"ts"
>
import
{
Vue
,
Component
,
Prop
,
Model
,
Emit
}
from
"vue-property-decorator"
;
@
Component
({})
export
default
class
AppQuickGroup
extends
Vue
{
/**
* 传入渲染项
*
* @type {Array<any>}
* @memberof AppQuickGroup
*/
@
Prop
()
public
items
!
:
Array
<
any
>
;
/**
* 计数器服务名
*
* @type {string}
* @memberof AppQuickGroup
*/
@
Prop
()
public
counterService
?:
any
;
/**
* UI选中项
*
* @type {*}
* @memberof AppQuickGroup
*/
public
selectedUiItem
:
any
;
/**
* 传入渲染项
*
* @type {Array<any>}
* @memberof AppQuickGroup
*/
get
renderArray
(){
if
(
this
.
items
&&
this
.
items
.
length
>
0
){
this
.
selectedUiItem
=
this
.
items
[
0
];
this
.
handleClick
(
this
.
items
[
0
]);
return
this
.
handleDataSet
(
this
.
items
)
}
else
{
return
[];
}
}
public
itemTag
(
item
:
any
){
if
(
this
.
counterService
&&
this
.
counterService
.
counterData
&&
item
.
codename
){
return
this
.
counterService
.
counterData
[
item
.
codename
];
}
else
{
return
""
;
}
}
/**
* 是否选中当前项
*
* @param item 传入当前项
* @memberof AppQuickGroup
*/
public
isSelectedItem
(
item
:
any
){
if
(
this
.
selectedUiItem
&&
(
this
.
selectedUiItem
.
id
===
item
.
id
)){
return
true
;
}
else
{
return
false
;
}
}
/**
* 处理代码表返回数据(树状结构)
*
* @param result 返回数组
* @memberof AppQuickGroup
*/
public
handleDataSet
(
result
:
Array
<
any
>
){
let
list
:
Array
<
any
>
=
[];
if
(
result
.
length
===
0
){
return
list
;
}
result
.
forEach
((
codeItem
:
any
)
=>
{
if
(
!
codeItem
.
pvalue
){
let
valueField
:
string
=
codeItem
.
value
;
this
.
setChildCodeItems
(
valueField
,
result
,
codeItem
);
list
.
push
(
codeItem
);
}
})
return
list
;
}
/**
* 处理非根节点数据
*
* @param pValue 父值
* @param result 返回数组
* @param codeItem 代码项
* @memberof AppQuickGroup
*/
public
setChildCodeItems
(
pValue
:
string
,
result
:
Array
<
any
>
,
codeItem
:
any
){
result
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
pvalue
==
pValue
){
let
valueField
:
string
=
item
.
value
;
this
.
setChildCodeItems
(
valueField
,
result
,
item
);
if
(
!
codeItem
.
children
){
codeItem
.
children
=
[];
}
codeItem
.
children
.
push
(
item
);
}
})
}
/**
* 处理点击事件
*
* @param $event 值
* @param isswitch 是否切换UI选中项
* @memberof AppQuickGroup
*/
public
handleClick
(
$event
:
any
,
isswitch
:
boolean
=
true
){
this
.
$emit
(
'valuechange'
,
$event
);
if
(
isswitch
){
this
.
selectedUiItem
=
$event
;
}
this
.
$forceUpdate
();
}
/**
* 处理子项点击事件
*
* @param $event 值
* @param item 父值
* @memberof AppQuickGroup
*/
public
handleCommand
(
$event
:
any
,
item
:
any
){
item
.
label
=
$event
.
label
;
item
.
codename
=
$event
.
codename
;
this
.
handleClick
(
$event
,
false
);
}
}
</
script
>
<
style
lang=
'less'
>
@import "./app-quick-group.less";
</
style
>
\ No newline at end of file
src/components/app-rich-text-editor/app-rich-text-editor.vue
浏览文件 @
11755d3d
...
@@ -26,94 +26,112 @@ const tinymceCode:any = tinymce;
...
@@ -26,94 +26,112 @@ const tinymceCode:any = tinymce;
@
Component
({})
@
Component
({})
export
default
class
AppRichTextEditor
extends
Vue
{
export
default
class
AppRichTextEditor
extends
Vue
{
/**
/**
* 传入值
* 传入值
*
* @type {*}
* @memberof AppRichTextEditor
*/
*/
@
Prop
()
value
?:
any
;
@
Prop
()
value
?:
any
;
/**
* 监听value值
*/
@
Watch
(
'value'
,
{
immediate
:
true
,
deep
:
true
})
oncurrentContent
(
newval
:
any
,
val
:
any
)
{
if
(
newval
)
{
if
(
this
.
editor
){
tinymceCode
.
remove
(
'#'
+
this
.
id
);
}
this
.
init
(
newval
);
}
}
/**
/**
* 输入name
* 输入name
*
* @type {string}
* @memberof AppRichTextEditor
*/
*/
@
Prop
()
name
?:
string
;
@
Prop
()
name
?:
string
;
/**
/**
* 输入高度
* 输入高度
*
* @type {*}
* @memberof AppRichTextEditor
*/
*/
@
Prop
()
height
?:
any
;
@
Prop
()
height
?:
any
;
/**
/**
* 是否禁用
* 是否禁用
*
* @type {boolean}
* @memberof AppRichTextEditor
*/
*/
@
Prop
()
disabled
?:
any
;
@
Prop
()
disabled
?:
boolean
;
/**
* 当前语言,默认中文
*/
public
langu
:
any
=
localStorage
.
getItem
(
'local'
)
?
localStorage
.
getItem
(
'local'
)
:
'zh_CN'
;
/**
/**
* 监听语言变化
* 表单状态
*/
*
@
Watch
(
'$i18n.locale'
)
* @type {Subject<any>}
onLocaleChange
(
newval
:
any
,
val
:
any
)
{
* @memberof AppRichTextEditor
console
.
log
(
"语言变更"
+
newval
)
this
.
langu
=
newval
;
if
(
this
.
editor
){
tinymceCode
.
remove
(
'#'
+
this
.
id
);
}
this
.
init
(
''
);
}
/**
* 语言映射文件
*/
*/
public
languMap
:
any
=
{
@
Prop
()
public
formState
?:
Subject
<
any
>
;
'zh-CN'
:
'zh_CN'
,
'en-US'
:
'en_US'
,
};
/**
/**
* 上传文件路径
* 上传文件路径
*
* @type {string}
* @memberof AppRichTextEditor
*/
*/
public
uploadUrl
=
Environment
.
BaseUrl
+
Environment
.
UploadFile
;
public
uploadUrl
=
Environment
.
BaseUrl
+
Environment
.
UploadFile
;
/**
/**
* 下载路径
* 下载路径
*
* @type {string}
* @memberof AppRichTextEditor
*/
*/
public
downloadUrl
=
Environment
.
BaseUrl
+
Environment
.
ExportFile
;
public
downloadUrl
=
Environment
.
BaseUrl
+
Environment
.
ExportFile
;
/**
/**
* 当前富文本
* 当前富文本
*
* @type {*}
* @memberof AppRichTextEditor
*/
*/
public
editor
:
any
=
null
;
public
editor
:
any
=
null
;
/**
/**
* 当前富文本id
* 当前富文本id
*
* @type {string}
* @memberof AppRichTextEditor
*/
*/
id
:
string
=
this
.
$util
.
createUUID
();
public
id
:
string
=
this
.
$util
.
createUUID
();
/**
/**
*
表单状态
*
当前语言,默认中文
*
*
* @type {
Subject<any>
}
* @type {
*
}
* @memberof AppRichTextEditor
* @memberof AppRichTextEditor
*/
*/
@
Prop
()
public
formState
?:
Subject
<
any
>
;
public
langu
:
any
=
localStorage
.
getItem
(
'local'
)
?
localStorage
.
getItem
(
'local'
)
:
'zh_CN'
;
/**
* 语言映射文件
*
* @type {*}
* @memberof AppRichTextEditor
*/
public
languMap
:
any
=
{
'zh-CN'
:
'zh_CN'
,
'en-US'
:
'en_US'
,
};
/**
* 是否处于激活状态
*
* @type {boolean}
* @memberof AppRichTextEditor
*/
public
isActived
:
boolean
=
true
;
/**
* 是否需要初始化
*
* @type {boolean}
* @memberof AppRichTextEditor
*/
public
isNeedInit
:
boolean
=
false
;
/**
/**
* 生命周期
* 生命周期
...
@@ -125,40 +143,92 @@ export default class AppRichTextEditor extends Vue {
...
@@ -125,40 +143,92 @@ export default class AppRichTextEditor extends Vue {
this
.
formState
.
subscribe
(({
type
,
data
})
=>
{
this
.
formState
.
subscribe
(({
type
,
data
})
=>
{
if
(
Object
.
is
(
'load'
,
type
))
{
if
(
Object
.
is
(
'load'
,
type
))
{
if
(
!
this
.
value
)
{
if
(
!
this
.
value
)
{
if
(
this
.
editor
){
this
.
init
();
tinymceCode
.
remove
(
'#'
+
this
.
id
);
}
this
.
init
(
this
.
value
);
}
}
}
}
});
});
}
}
}
}
/**
* 生命周期:激活
*
* @memberof AppRichTextEditor
*/
public
activated
(){
this
.
isActived
=
true
;
if
(
this
.
isNeedInit
){
this
.
init
();
this
.
isNeedInit
=
false
;
}
}
/**
/**
* 初始化富文本
* 生命周期:缓存
*
* @memberof AppRichTextEditor
*/
public
deactivated
(){
this
.
isActived
=
false
;
}
/**
* 生命周期:初始化富文本
*
* @memberof AppRichTextEditor
*/
*/
public
mounted
()
{
public
mounted
()
{
this
.
init
(
''
);
this
.
init
();
}
}
/**
/**
* 销毁富文本
* 生命周期:销毁富文本
*
* @memberof AppRichTextEditor
*/
*/
public
destoryed
(){
public
destoryed
(){
tinymceCode
.
remove
(
this
.
editor
);
if
(
this
.
editor
){
tinymceCode
.
remove
(
'#'
+
this
.
id
);
}
}
/**
* 监听value值
*
* @memberof AppRichTextEditor
*/
@
Watch
(
'value'
,
{
immediate
:
true
,
deep
:
true
})
oncurrentContent
(
newval
:
any
,
val
:
any
)
{
if
(
newval
)
{
this
.
init
();
}
}
/**
* 监听语言变化
*/
@
Watch
(
'$i18n.locale'
)
onLocaleChange
(
newval
:
any
,
val
:
any
)
{
this
.
langu
=
newval
;
if
(
this
.
isActived
){
this
.
init
();
}
else
{
this
.
isNeedInit
=
true
;
}
}
}
/**
/**
* 初始化富文本
* 初始化富文本
* @param val
*
* @memberof AppRichTextEditor
*/
*/
public
init
(
val
:
any
)
{
public
init
()
{
this
.
destoryed
();
let
richtexteditor
=
this
;
let
richtexteditor
=
this
;
tinymceCode
.
init
({
tinymceCode
.
init
({
selector
:
'#'
+
this
.
id
,
selector
:
'#'
+
richtexteditor
.
id
,
width
:
'calc( 100% - 2px )'
,
width
:
'calc( 100% - 2px )'
,
height
:
this
.
height
,
height
:
richtexteditor
.
height
,
min_height
:
400
,
min_height
:
400
,
branding
:
false
,
branding
:
false
,
plugins
:
[
'link'
,
'paste'
,
'table'
,
'image'
,
'codesample'
,
'code'
,
'fullscreen'
,
'preview'
],
plugins
:
[
'link'
,
'paste'
,
'table'
,
'image'
,
'codesample'
,
'code'
,
'fullscreen'
,
'preview'
],
...
@@ -177,13 +247,13 @@ export default class AppRichTextEditor extends Vue {
...
@@ -177,13 +247,13 @@ export default class AppRichTextEditor extends Vue {
paste_data_images
:
true
,
paste_data_images
:
true
,
codesample_content_css
:
'assets/tinymce/prism.css'
,
codesample_content_css
:
'assets/tinymce/prism.css'
,
skin_url
:
'./assets/tinymce/skins/lightgray'
,
skin_url
:
'./assets/tinymce/skins/lightgray'
,
language_url
:
'./assets/tinymce/langs/'
+
this
.
languMap
[
this
.
langu
]
+
'.js'
,
language_url
:
'./assets/tinymce/langs/'
+
richtexteditor
.
languMap
[
richtexteditor
.
langu
]
+
'.js'
,
language
:
this
.
languMap
[
this
.
langu
],
language
:
richtexteditor
.
languMap
[
richtexteditor
.
langu
],
setup
:
(
editor
:
any
)
=>
{
setup
:
(
editor
:
any
)
=>
{
this
.
editor
=
editor
;
richtexteditor
.
editor
=
editor
;
editor
.
on
(
'blur'
,
()
=>
{
editor
.
on
(
'blur'
,
()
=>
{
const
content
=
editor
.
getContent
();
const
content
=
editor
.
getContent
();
this
.
$emit
(
'change'
,
content
);
richtexteditor
.
$emit
(
'change'
,
content
);
});
});
},
},
images_upload_handler
:
(
bolbinfo
:
any
,
success
:
any
,
failure
:
any
)
=>
{
images_upload_handler
:
(
bolbinfo
:
any
,
success
:
any
,
failure
:
any
)
=>
{
...
@@ -202,13 +272,13 @@ export default class AppRichTextEditor extends Vue {
...
@@ -202,13 +272,13 @@ export default class AppRichTextEditor extends Vue {
});
});
},
},
init_instance_callback
:
(
editor
:
any
)
=>
{
init_instance_callback
:
(
editor
:
any
)
=>
{
this
.
editor
=
editor
;
richtexteditor
.
editor
=
editor
;
let
value
=
(
this
.
value
&&
this
.
value
.
length
>
0
)
?
this
.
value
:
''
;
let
value
=
(
richtexteditor
.
value
&&
richtexteditor
.
value
.
length
>
0
)
?
richtexteditor
.
value
:
''
;
if
(
this
.
editor
)
{
if
(
richtexteditor
.
editor
)
{
this
.
editor
.
setContent
(
value
);
richtexteditor
.
editor
.
setContent
(
value
);
}
}
if
(
this
.
disabled
)
{
if
(
richtexteditor
.
disabled
)
{
this
.
editor
.
setMode
(
'readonly'
);
richtexteditor
.
editor
.
setMode
(
'readonly'
);
}
}
}
}
});
});
...
@@ -216,8 +286,10 @@ export default class AppRichTextEditor extends Vue {
...
@@ -216,8 +286,10 @@ export default class AppRichTextEditor extends Vue {
/**
/**
* 上传文件
* 上传文件
* @param url
*
* @param formData
* @param url 路径
* @param formData 文件对象
* @memberof AppRichTextEditor
*/
*/
public
uploadFile
(
url
:
string
,
formData
:
any
)
{
public
uploadFile
(
url
:
string
,
formData
:
any
)
{
let
_this
=
this
;
let
_this
=
this
;
...
...
src/components/app-span/app-span.vue
浏览文件 @
11755d3d
...
@@ -55,14 +55,14 @@ export default class AppSpan extends Vue {
...
@@ -55,14 +55,14 @@ export default class AppSpan extends Vue {
* @type {boolean}
* @type {boolean}
* @memberof AppSpan
* @memberof AppSpan
*/
*/
@
Prop
({
default
:
"、"
})
public
textSeparator
?:
string
;
@
Prop
({
default
:
'、'
})
public
textSeparator
?:
string
;
/**
/**
* 值分隔符
* 值分隔符
* @type {boolean}
* @type {boolean}
* @memberof AppSpan
* @memberof AppSpan
*/
*/
@
Prop
({
default
:
";"
})
public
valueSeparator
?:
string
;
@
Prop
({
default
:
','
})
public
valueSeparator
?:
string
;
/**
/**
* 监控表单属性 data 值
* 监控表单属性 data 值
...
@@ -108,6 +108,11 @@ export default class AppSpan extends Vue {
...
@@ -108,6 +108,11 @@ export default class AppSpan extends Vue {
public
load
(){
public
load
(){
if
(
!
this
.
value
||
this
.
tag
){
if
(
!
this
.
value
||
this
.
tag
){
return
;
//代码表走codelist组件
return
;
//代码表走codelist组件
}
else
if
(
this
.
editorType
===
"ADDRESSPICKUP"
){
JSON
.
parse
(
this
.
value
).
forEach
((
item
:
any
,
index
:
number
)
=>
{
this
.
text
+=
index
===
0
?
item
.
srfmajortext
:
","
+
item
.
srfmajortext
;
});
}
else
{
}
else
{
this
.
text
=
this
.
value
;
this
.
text
=
this
.
value
;
}
}
...
...
src/components/app-user/app-user.vue
浏览文件 @
11755d3d
...
@@ -64,6 +64,12 @@ export default class AppUser extends Vue {
...
@@ -64,6 +64,12 @@ export default class AppUser extends Vue {
_user
.
avatar
=
this
.
$store
.
getters
.
getAppData
().
context
.
srfusericonpath
;
_user
.
avatar
=
this
.
$store
.
getters
.
getAppData
().
context
.
srfusericonpath
;
}
}
}
}
if
(
localStorage
.
getItem
(
"user"
)){
let
user
:
any
=
JSON
.
parse
(
localStorage
.
getItem
(
"user"
)
as
string
);
if
(
user
&&
user
.
personname
){
_user
.
name
=
user
.
personname
;
}
}
Object
.
assign
(
this
.
user
,
_user
,{
Object
.
assign
(
this
.
user
,
_user
,{
time
:
+
new
Date
time
:
+
new
Date
});
});
...
...
src/components/codelist/codelist.vue
浏览文件 @
11755d3d
...
@@ -61,14 +61,14 @@ export default class CodeList extends Vue {
...
@@ -61,14 +61,14 @@ export default class CodeList extends Vue {
* @type {boolean}
* @type {boolean}
* @memberof SelectPicker
* @memberof SelectPicker
*/
*/
@
Prop
({
default
:
"、"
})
public
textSeparator
?:
string
;
@
Prop
({
default
:
'、'
})
public
textSeparator
?:
string
;
/**
/**
* 值分隔符
* 值分隔符
* @type {boolean}
* @type {boolean}
* @memberof SelectPicker
* @memberof SelectPicker
*/
*/
@
Prop
({
default
:
";"
})
public
valueSeparator
?:
string
;
@
Prop
({
default
:
','
})
public
valueSeparator
?:
string
;
/**
/**
* 是否为空
* 是否为空
...
...
src/components/dropdown-list-mpicker/dropdown-list-mpicker.vue
浏览文件 @
11755d3d
...
@@ -60,7 +60,7 @@ export default class DropDownListMpicker extends Vue {
...
@@ -60,7 +60,7 @@ export default class DropDownListMpicker extends Vue {
* @type {string}
* @type {string}
* @memberof DropDownListMpicker
* @memberof DropDownListMpicker
*/
*/
@
Prop
({
default
:
'
;
'
})
public
valueSeparator
?:
string
;
@
Prop
({
default
:
'
,
'
})
public
valueSeparator
?:
string
;
/**
/**
* 是否禁用
* 是否禁用
...
...
src/components/login/login.less
浏览文件 @
11755d3d
.login{
.login{
width: 100vh;
width: 100vh;
height: 100vh;
height: 100vh;
// background-image: url('../assets/images/login_bg.jpg');
> img{
background-size: cover;
width: 100vw;
background-position: center;
height: 100vh;
position: relative;
}
.login-logo{
position: fixed;
left: 80px;
top: 80px;
}
.login-content{
position: fixed;
left: 10%;
top: 30%;
width: 60%;
>span{
color: #fff;
font-size: 84px;
}
}
&-con{
&-con{
position: fixed;
position: fixed;
right: 160px;
right: 160px;
top: 50%;
top: 50%;
transform: translateY(-60%);
transform: translateY(-60%);
width: 300px;
width: 300px;
.ivu-card-head {
padding: 14px 6px;
>p{
line-height: 20px;
font-size: 14px;
color: #17233d;
font-weight: 700;
}
}
&-header{
&-header{
font-size: 16px;
font-size: 16px;
font-weight: 300;
font-weight: 300;
...
...
src/components/login/login.vue
浏览文件 @
11755d3d
<
template
>
<
template
>
<div
class=
'login'
>
<div
class=
'login'
>
<img
src=
"/assets/img/login_bg.png"
/>
<div
class=
"login-logo"
>
<img
src =
"/assets/img/logo.svg"
/>
</div>
<div
class=
"login-content"
>
<span>
{{
appTitle
}}
</span>
</div>
<div
class=
'login-con'
>
<div
class=
'login-con'
>
<card
:bordered=
"false"
>
<card
:bordered=
"false"
>
<p
slot=
'title'
>
<p
slot=
'title'
>
...
@@ -55,7 +62,15 @@ export default class Login extends Vue {
...
@@ -55,7 +62,15 @@ export default class Login extends Vue {
* @type {*}
* @type {*}
* @memberof Login
* @memberof Login
*/
*/
public
form
:
any
=
{
loginname
:
null
,
password
:
null
};
public
form
:
any
=
{
loginname
:
'guest'
,
password
:
'guest'
};
/**
* 应用标题
*
* @type {string}
* @memberof Login
*/
public
appTitle
:
string
=
Environment
.
AppTitle
;
/**
/**
* 值规则
* 值规则
...
@@ -118,8 +133,12 @@ export default class Login extends Vue {
...
@@ -118,8 +133,12 @@ export default class Login extends Vue {
post
.
then
((
response
:
any
)
=>
{
post
.
then
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
===
200
)
{
if
(
response
&&
response
.
status
===
200
)
{
const
data
=
response
.
data
;
const
data
=
response
.
data
;
localStorage
.
setItem
(
'token'
,
data
.
token
);
if
(
data
&&
data
.
token
){
localStorage
.
setItem
(
'user'
,
JSON
.
stringify
(
data
.
user
));
localStorage
.
setItem
(
'token'
,
data
.
token
);
}
if
(
data
&&
data
.
user
){
localStorage
.
setItem
(
'user'
,
JSON
.
stringify
(
data
.
user
));
}
const
url
:
any
=
this
.
$route
.
query
.
redirect
?
this
.
$route
.
query
.
redirect
:
'*'
;
const
url
:
any
=
this
.
$route
.
query
.
redirect
?
this
.
$route
.
query
.
redirect
:
'*'
;
this
.
$router
.
push
({
path
:
url
});
this
.
$router
.
push
({
path
:
url
});
}
}
...
...
src/engine/view/md-view-engine.ts
浏览文件 @
11755d3d
...
@@ -117,6 +117,9 @@ export default class MDViewEngine extends ViewEngine {
...
@@ -117,6 +117,9 @@ export default class MDViewEngine extends ViewEngine {
if
(
Object
.
is
(
eventName
,
'load'
))
{
if
(
Object
.
is
(
eventName
,
'load'
))
{
this
.
onSearchFormLoad
(
args
);
this
.
onSearchFormLoad
(
args
);
}
}
if
(
Object
.
is
(
eventName
,
'search'
))
{
this
.
onSearchFormLoad
(
args
);
}
}
}
/**
/**
...
@@ -157,6 +160,20 @@ export default class MDViewEngine extends ViewEngine {
...
@@ -157,6 +160,20 @@ export default class MDViewEngine extends ViewEngine {
this
.
isLoadDefault
=
true
;
this
.
isLoadDefault
=
true
;
}
}
/**
* 搜索表单搜索
*
* @param {*} [args={}]
* @memberof MDViewEngine
*/
public
onSearchFormSearch
(
args
:
any
=
{}):
void
{
if
(
this
.
getMDCtrl
()
&&
this
.
isLoadDefault
)
{
const
tag
=
this
.
getMDCtrl
().
name
;
this
.
setViewState2
({
tag
:
tag
,
action
:
'load'
,
viewdata
:
this
.
view
.
viewparams
});
}
this
.
isLoadDefault
=
true
;
}
/**
/**
* 处理实体界面行为
* 处理实体界面行为
*
*
...
@@ -372,6 +389,15 @@ export default class MDViewEngine extends ViewEngine {
...
@@ -372,6 +389,15 @@ export default class MDViewEngine extends ViewEngine {
if
(
this
.
view
&&
!
this
.
view
.
isExpandSearchForm
)
{
if
(
this
.
view
&&
!
this
.
view
.
isExpandSearchForm
)
{
Object
.
assign
(
arg
,
{
query
:
this
.
view
.
query
});
Object
.
assign
(
arg
,
{
query
:
this
.
view
.
query
});
}
}
// 快速分组和快速搜索栏
let
otherQueryParam
:
any
=
{};
if
(
this
.
view
&&
this
.
view
.
qucikGroupData
){
Object
.
assign
(
otherQueryParam
,
this
.
view
.
qucikGroupData
);
}
if
(
this
.
view
&&
this
.
view
.
qucikFormData
){
Object
.
assign
(
otherQueryParam
,
this
.
view
.
qucikFormData
);
}
Object
.
assign
(
arg
,{
viewparams
:
otherQueryParam
});
}
}
/**
/**
...
...
src/mock/login/login.ts
浏览文件 @
11755d3d
...
@@ -14,7 +14,7 @@ mock.onPost('v7/login').reply((config: any) => {
...
@@ -14,7 +14,7 @@ mock.onPost('v7/login').reply((config: any) => {
}
catch
(
error
)
{
}
catch
(
error
)
{
status
=
400
;
status
=
400
;
}
}
if
(
!
Object
.
is
(
user
.
loginname
,
'
ibzadmin'
)
||
!
Object
.
is
(
user
.
password
,
'123456
'
))
{
if
(
!
Object
.
is
(
user
.
loginname
,
'
guest'
)
||
!
Object
.
is
(
user
.
password
,
'guest
'
))
{
status
=
400
;
status
=
400
;
}
}
if
(
status
!==
200
)
{
if
(
status
!==
200
)
{
...
...
src/service/entity-service.ts
浏览文件 @
11755d3d
...
@@ -587,12 +587,12 @@ export default class EntityService {
...
@@ -587,12 +587,12 @@ export default class EntityService {
* createBatch接口方法
* createBatch接口方法
*
*
* @param {*} [context={}]
* @param {*} [context={}]
* @param {*} [data
={}
]
* @param {*} [data]
* @param {boolean} [isloading]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @returns {Promise<any>}
* @memberof EntityService
* @memberof EntityService
*/
*/
public
async
createBatch
(
context
:
any
=
{},
data
:
any
=
{}
,
isloading
?:
boolean
):
Promise
<
any
>
{
public
async
createBatch
(
context
:
any
=
{},
data
:
any
,
isloading
?:
boolean
):
Promise
<
any
>
{
return
Http
.
getInstance
().
post
(
`/
${
this
.
APPDENAME
}
/batch`
,
data
,
isloading
);
return
Http
.
getInstance
().
post
(
`/
${
this
.
APPDENAME
}
/batch`
,
data
,
isloading
);
}
}
...
@@ -600,12 +600,12 @@ export default class EntityService {
...
@@ -600,12 +600,12 @@ export default class EntityService {
* updateBatch接口方法
* updateBatch接口方法
*
*
* @param {*} [context={}]
* @param {*} [context={}]
* @param {*} [data
={}
]
* @param {*} [data]
* @param {boolean} [isloading]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @returns {Promise<any>}
* @memberof EntityService
* @memberof EntityService
*/
*/
public
async
updateBatch
(
context
:
any
=
{},
data
:
any
=
{}
,
isloading
?:
boolean
):
Promise
<
any
>
{
public
async
updateBatch
(
context
:
any
=
{},
data
:
any
,
isloading
?:
boolean
):
Promise
<
any
>
{
return
Http
.
getInstance
().
put
(
`/
${
this
.
APPDENAME
}
/batch`
,
data
,
isloading
);
return
Http
.
getInstance
().
put
(
`/
${
this
.
APPDENAME
}
/batch`
,
data
,
isloading
);
}
}
...
@@ -613,12 +613,12 @@ export default class EntityService {
...
@@ -613,12 +613,12 @@ export default class EntityService {
* removeBatch接口方法
* removeBatch接口方法
*
*
* @param {*} [context={}]
* @param {*} [context={}]
* @param {*} [data
={}
]
* @param {*} [data]
* @param {boolean} [isloading]
* @param {boolean} [isloading]
* @returns {Promise<any>}
* @returns {Promise<any>}
* @memberof EntityService
* @memberof EntityService
*/
*/
public
async
removeBatch
(
context
:
any
=
{},
data
:
any
=
{}
,
isloading
?:
boolean
):
Promise
<
any
>
{
public
async
removeBatch
(
context
:
any
=
{},
data
:
any
,
isloading
?:
boolean
):
Promise
<
any
>
{
return
Http
.
getInstance
().
delete
(
`/
${
this
.
APPDENAME
}
/batch`
,
isloading
,
data
);
return
Http
.
getInstance
().
delete
(
`/
${
this
.
APPDENAME
}
/batch`
,
isloading
,
data
);
}
}
...
...
src/store/index.ts
浏览文件 @
11755d3d
...
@@ -7,6 +7,7 @@ import * as mutations from './mutations';
...
@@ -7,6 +7,7 @@ import * as mutations from './mutations';
import
*
as
getters
from
'./getters'
;
import
*
as
getters
from
'./getters'
;
import
viewaction
from
'./modules/view-action'
import
viewaction
from
'./modules/view-action'
import
unifiedresource
from
'./modules/unified-resource'
const
state
=
{
const
state
=
{
...
rootstate
...
rootstate
...
@@ -20,7 +21,8 @@ const store = new Vuex.Store({
...
@@ -20,7 +21,8 @@ const store = new Vuex.Store({
mutations
,
mutations
,
getters
,
getters
,
modules
:
{
modules
:
{
viewaction
viewaction
,
unifiedresource
},
},
});
});
...
...
src/store/modules/unified-resource/actions.ts
0 → 100644
浏览文件 @
11755d3d
/**
* 提交统一资源数据
*
* @param param0
* @param data
*/
export
const
commitResourceData
=
({
commit
,
state
}:
{
commit
:
any
,
state
:
any
},
{
unires
,
enablepermissionvalid
}:
{
unires
:
Array
<
any
>
,
enablepermissionvalid
:
boolean
})
=>
{
if
(
unires
&&
unires
.
length
>
0
){
commit
(
'setResourceData'
,
unires
);
}
if
(
enablepermissionvalid
){
commit
(
'setEnablePermissionValid'
,
enablepermissionvalid
);
}
}
\ No newline at end of file
src/store/modules/unified-resource/getters.ts
0 → 100644
浏览文件 @
11755d3d
/**
* 判断指定统一资源是否存在
*
* @param state
*/
export
const
getResourceData
=
(
state
:
any
)
=>
(
resourcetag
:
string
)
=>
{
let
itemIndex
:
any
=
state
.
resourceData
.
findIndex
((
obj
:
any
,
objIndex
:
any
,
objs
:
any
)
=>
{
return
Object
.
is
(
obj
.
unirescode
,
resourcetag
);
})
return
itemIndex
===
-
1
?
false
:
true
;
}
/**
* 获取是否开启权限认证
*
* @param state
*/
export
const
getEnablePermissionValid
=
(
state
:
any
)
=>
{
return
state
.
enablePermissionValid
;
}
\ No newline at end of file
src/store/modules/unified-resource/index.ts
0 → 100644
浏览文件 @
11755d3d
import
{
resourcestate
}
from
'./state'
;
import
*
as
actions
from
'./actions'
;
import
*
as
mutations
from
'./mutations'
;
import
*
as
getters
from
'./getters'
;
const
state
=
{
...
resourcestate
}
export
default
{
namespaced
:
true
,
state
,
getters
,
actions
,
mutations
}
\ No newline at end of file
src/store/modules/unified-resource/mutations.ts
0 → 100644
浏览文件 @
11755d3d
/**
* 设置统一资源数据
*
* @param state
* @param resourceArray
*/
export
const
setResourceData
=
(
state
:
any
,
resourceArray
:
Array
<
any
>
)
=>
{
if
(
resourceArray
&&
resourceArray
.
length
===
0
){
return
;
}
state
.
resourceData
=
resourceArray
;
}
/**
* 设置是否开启权限认证
*
* @param state
* @param resourceArray
*/
export
const
setEnablePermissionValid
=
(
state
:
any
,
enablepermissionvalid
:
boolean
)
=>
{
state
.
enablePermissionValid
=
enablepermissionvalid
;
}
src/store/modules/unified-resource/state.ts
0 → 100644
浏览文件 @
11755d3d
/**
* 所有资源状态
*/
export
const
resourcestate
:
any
=
{
// 统一资源数据
resourceData
:
[],
// 是否开启权限认证
enablePermissionValid
:
false
}
\ No newline at end of file
src/utils/app-modal/app-modal.less
浏览文件 @
11755d3d
...
@@ -10,6 +10,9 @@
...
@@ -10,6 +10,9 @@
.ivu-modal-body {
.ivu-modal-body {
padding: 0 10px;
padding: 0 10px;
height: calc(100% - 52px);
height: calc(100% - 52px);
.view-container{
padding: 15px;
}
}
}
}
}
}
}
...
...
src/utils/auth-guard/auth-guard.ts
浏览文件 @
11755d3d
...
@@ -53,9 +53,21 @@ export class AuthGuard {
...
@@ -53,9 +53,21 @@ export class AuthGuard {
const
get
:
Promise
<
any
>
=
Http
.
getInstance
().
get
(
url
);
const
get
:
Promise
<
any
>
=
Http
.
getInstance
().
get
(
url
);
get
.
then
((
response
:
any
)
=>
{
get
.
then
((
response
:
any
)
=>
{
if
(
response
&&
response
.
status
===
200
)
{
if
(
response
&&
response
.
status
===
200
)
{
cons
t
{
data
}:
{
data
:
any
}
=
response
;
le
t
{
data
}:
{
data
:
any
}
=
response
;
if
(
data
)
{
if
(
data
)
{
// token认证把用户信息放入应用级数据
if
(
localStorage
.
getItem
(
'user'
)){
let
user
:
any
=
JSON
.
parse
(
localStorage
.
getItem
(
'user'
)
as
string
);
let
localAppData
:
any
=
{};
if
(
user
.
sessionParams
){
localAppData
=
{
context
:
user
.
sessionParams
};
Object
.
assign
(
localAppData
,
data
);
}
data
=
JSON
.
parse
(
JSON
.
stringify
(
localAppData
));
}
router
.
app
.
$store
.
commit
(
'addAppData'
,
data
);
router
.
app
.
$store
.
commit
(
'addAppData'
,
data
);
// 提交统一资源数据
router
.
app
.
$store
.
dispatch
(
'unifiedresource/commitResourceData'
,
data
);
}
}
}
}
resolve
(
true
);
resolve
(
true
);
...
...
src/utils/http/http.ts
浏览文件 @
11755d3d
...
@@ -78,7 +78,7 @@ export class Http {
...
@@ -78,7 +78,7 @@ export class Http {
axios
({
axios
({
method
:
'post'
,
method
:
'post'
,
url
:
url
,
url
:
url
,
data
:
{
...
params
}
,
data
:
params
,
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
,
'Accept'
:
'application/json'
},
headers
:
{
'Content-Type'
:
'application/json;charset=UTF-8'
,
'Accept'
:
'application/json'
},
// transformResponse: [(data: any) => {
// transformResponse: [(data: any) => {
// let _data: any = null;
// let _data: any = null;
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录