Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
total-platform
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
物业总平台
total-platform
Commits
f8118d52
提交
f8118d52
authored
5月 11, 2023
作者:
宋雄
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增page
上级
c99bf859
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
33 个修改的文件
包含
1538 行增加
和
193 行删除
+1538
-193
.env.development
.env.development
+2
-1
index.html
public/index.html
+3
-4
logo.png
public/logo.png
+0
-0
api.js
src/api/api.js
+20
-1
logo.png
src/assets/logo.png
+0
-0
JImageUpload.vue
src/components/jeecg/JImageUpload.vue
+6
-0
UserLayout.vue
src/components/layouts/UserLayout.vue
+6
-5
GlobalFooter.vue
src/components/page/GlobalFooter.vue
+3
-2
GlobalHeader.vue
src/components/page/GlobalHeader.vue
+1
-1
SettingDrawer.vue
src/components/setting/SettingDrawer.vue
+1
-1
Logo.vue
src/components/tools/Logo.vue
+2
-2
UserMenu.vue
src/components/tools/UserMenu.vue
+1
-1
router.config.js
src/config/router.config.js
+0
-15
defaultSettings.js
src/defaultSettings.js
+2
-2
JeecgListMixin.js
src/mixins/JeecgListMixin.js
+3
-7
app.js
src/store/modules/app.js
+2
-2
request.js
src/utils/request.js
+3
-3
adsLlist.vue
src/views/advertisement/adsLlist.vue
+187
-0
PropertyAdvForm.vue
src/views/advertisement/modules/PropertyAdvForm.vue
+163
-0
PropertyAdvModal.vue
src/views/advertisement/modules/PropertyAdvModal.vue
+61
-0
PropertySettledForm.vue
src/views/advertisement/modules/PropertySettledForm.vue
+204
-0
PropertySettledModal.Style#Drawer.vue
...vertisement/modules/PropertySettledModal.Style#Drawer.vue
+85
-0
PropertySettledModal.vue
src/views/advertisement/modules/PropertySettledModal.vue
+61
-0
CostList.vue
src/views/cost/CostList.vue
+185
-0
PropertyChargruleForm.vue
src/views/cost/modules/PropertyChargruleForm.vue
+181
-0
PropertyChargruleModal.vue
src/views/cost/modules/PropertyChargruleModal.vue
+61
-0
PropertyDetail.vue
src/views/settled/PropertyDetail.vue
+219
-0
PropertyList.vue
src/views/settled/PropertyList.vue
+0
-0
PropertySettledForm.vue
src/views/settled/modules/PropertySettledForm.vue
+0
-0
PropertySettledModal.vue
src/views/settled/modules/PropertySettledModal.vue
+61
-0
Login.vue
src/views/user/Login.vue
+4
-11
OAuth2Login.vue
src/views/user/oauth2/OAuth2Login.vue
+0
-131
yarn.lock
yarn.lock
+11
-4
没有找到文件。
.env.development
浏览文件 @
f8118d52
NODE_ENV=development
VUE_APP_API_BASE_URL=http://localhost:8080/jeecg-boot
# VUE_APP_API_BASE_URL='http://192.168.0.118:9999/property-central'
VUE_APP_API_BASE_URL='http://220.203.25.212:9999/property-central'
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
...
...
public/index.html
浏览文件 @
f8118d52
...
...
@@ -249,12 +249,10 @@
<div
id=
"loader"
></div>
<div
class=
"loader-section section-left"
></div>
<div
class=
"loader-section section-right"
></div>
<div
class=
"load_title"
>
正在加载 JeecgBoot 低代码平台,请耐心等待
</div>
<div
class=
"load_title"
>
加载中,请稍等
</div>
</div>
</div>
<script
type=
"text/javascript"
src=
"//api.map.baidu.com/api?type=webgl&v=1.0&ak=CHUN0HYsI6BBdicixQPL6dFLOFICXDkm"
></script>
</body>
</html>
\ No newline at end of file
public/logo.png
查看替换文件 @
c99bf859
浏览文件 @
f8118d52
8.7 KB
|
W:
|
H:
33.3 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/api/api.js
浏览文件 @
f8118d52
...
...
@@ -56,6 +56,17 @@ const queryMyDepartTreeList = (params)=>getAction("/sys/sysDepart/queryMyDeptTre
const
deleteLog
=
(
params
)
=>
deleteAction
(
"/sys/log/delete"
,
params
);
const
deleteLogList
=
(
params
)
=>
deleteAction
(
"/sys/log/deleteBatch"
,
params
);
//入驻管理
const
getPropertyListApi
=
(
params
)
=>
getAction
(
"/property/propertySettled/list"
,
params
);
const
getPropertyDetailApi
=
(
params
)
=>
getAction
(
"/property/propertySettled/queryById"
,
params
);
const
AddUpdatePropertyApi
=
(
params
)
=>
postAction
(
"/property/propertySettled/add"
,
params
);
//费用管理
const
getCostListApi
=
(
params
)
=>
getAction
(
"/property/propertyChargrule/list"
,
params
);
const
getCostDetailApi
=
(
params
)
=>
getAction
(
"/property/propertyChargrule/queryById"
,
params
);
const
AddUpdateCostApi
=
(
params
)
=>
postAction
(
"/property/propertyChargrule/add"
,
params
);
const
AuditUpdateCostApi
=
(
params
)
=>
postAction
(
"/property/propertyChargrule/audit"
,
params
);
//数据字典
const
addDict
=
(
params
)
=>
postAction
(
"/sys/dict/add"
,
params
);
const
editDict
=
(
params
)
=>
putAction
(
"/sys/dict/edit"
,
params
);
...
...
@@ -154,7 +165,15 @@ export {
saveDeptRolePermission
,
queryMyDepartTreeList
,
getUserNoticeInfo
,
getDictItemsFromCache
getDictItemsFromCache
,
getPropertyListApi
,
getPropertyDetailApi
,
AddUpdatePropertyApi
,
getCostListApi
,
getCostDetailApi
,
AddUpdateCostApi
,
AuditUpdateCostApi
}
...
...
src/assets/logo.png
查看替换文件 @
c99bf859
浏览文件 @
f8118d52
8.7 KB
|
W:
|
H:
33.3 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/components/jeecg/JImageUpload.vue
浏览文件 @
f8118d52
...
...
@@ -11,6 +11,7 @@
:beforeUpload="beforeUpload"
:disabled="disabled"
:isMultiple="isMultiple"
:accept="accept"
@change="handleChange"
@preview="handlePreview"
...
...
@@ -88,6 +89,11 @@
type:Number,
required:false,
default:0
},
accept:{
type:[String,null],
required:false,
default:null
}
//update-end-author:wangshuai date:20201021 for:LOWCOD-969 新增number属性,用于判断上传数量
},
...
...
src/components/layouts/UserLayout.vue
浏览文件 @
f8118d52
...
...
@@ -4,18 +4,19 @@
<div
class=
"top"
>
<div
class=
"header"
>
<a
href=
"/"
>
<img
src=
"~@/assets/logo.svg"
class=
"logo"
alt=
"logo"
>
<span
class=
"title"
>
Jeecg Boot
</span>
<!--
<img
src=
"~@/assets/logo.svg"
class=
"logo"
alt=
"logo"
>
-->
<img
src=
"~@/assets/logo.png"
class=
"logo"
alt=
"logo"
>
<span
class=
"title"
>
欢迎登陆
</span>
</a>
</div>
<div
class=
"desc"
>
Jeecg Boot 是中国最具影响力的 企业级 低代码平台
湖北汉江之星科技有限公司
</div>
</div>
<route-view></route-view>
<div
class=
"footer"
>
<
!--
<
div
class=
"footer"
>
<div
class=
"links"
>
<a
href=
"http://doc.jeecg.com"
target=
"_blank"
>
帮助
</a>
<a
href=
"https://github.com/zhangdaiscott/jeecg-boot"
target=
"_blank"
>
隐私
</a>
...
...
@@ -24,7 +25,7 @@
<div
class=
"copyright"
>
Copyright
©
2019
<a
href=
"http://www.jeecg.com"
target=
"_blank"
>
JEECG开源社区
</a>
出品
</div>
</div>
</div>
-->
</div>
</div>
</
template
>
...
...
src/components/page/GlobalFooter.vue
浏览文件 @
f8118d52
<
template
>
<div
class=
"footer"
>
<div
class=
"links"
>
<
!--
<
div
class=
"links"
>
<a
href=
"http://www.jeecg.com"
target=
"_blank"
>
JEECG 首页
</a>
<a
href=
"https://github.com/zhangdaiscott/jeecg-boot"
target=
"_blank"
>
<a-icon
type=
"github"
/>
...
...
@@ -12,7 +12,8 @@
Copyright
<a-icon
type=
"copyright"
/>
2019
<span>
JEECG开源社区 出品
</span>
</div>
</div>
-->
<div>
湖北汉江之星科技有限公司
</div>
</div>
</
template
>
...
...
src/components/page/GlobalHeader.vue
浏览文件 @
f8118d52
...
...
@@ -17,7 +17,7 @@
:type=
"collapsed ? 'menu-unfold' : 'menu-fold'"
@
click=
"toggle"
/>
<span
v-if=
"device === 'desktop'"
>
欢迎进入
Jeecg-Boot 企业级低代码
平台
</span>
<span
v-if=
"device === 'desktop'"
>
欢迎进入
湖北汉江之星科技有限公司 企业
平台
</span>
<span
v-else
>
Jeecg-Boot
</span>
<user-menu
:theme=
"theme"
/>
...
...
src/components/setting/SettingDrawer.vue
浏览文件 @
f8118d52
...
...
@@ -180,7 +180,7 @@
return
{
visible
:
false
,
colorList
,
dataFixSiderbar
:
fals
e
dataFixSiderbar
:
tru
e
}
},
mounted
()
{
...
...
src/components/tools/Logo.vue
浏览文件 @
f8118d52
...
...
@@ -4,7 +4,7 @@
<!-- update-begin- author:sunjianlei --- date:20190814 --- for: logo颜色根据主题颜色变化 -->
<img
v-if=
"navTheme === 'dark'"
src=
"~@/assets/logo-white.png"
alt=
"logo"
>
<img
v-else
src=
"~@/assets/logo.
sv
g"
alt=
"logo"
>
<img
v-else
src=
"~@/assets/logo.
pn
g"
alt=
"logo"
>
<!-- update-begin- author:sunjianlei --- date:20190814 --- for: logo颜色根据主题颜色变化 -->
<h1
v-if=
"showTitle"
>
{{
title
}}
</h1>
...
...
@@ -21,7 +21,7 @@
props
:
{
title
:
{
type
:
String
,
default
:
'
Jeecg-Boot Pro
'
,
default
:
'
汉江之星
'
,
required
:
false
},
showTitle
:
{
...
...
src/components/tools/UserMenu.vue
浏览文件 @
f8118d52
...
...
@@ -31,7 +31,7 @@
<a-icon
type=
"question-circle-o"
></a-icon>
</a>
</span>
<
header-notice
class=
"action"
/
>
<
!--
<header-notice
class=
"action"
/>
--
>
<a-dropdown>
<span
class=
"action action-full ant-dropdown-link user-dropdown-menu"
>
<a-avatar
class=
"avatar"
size=
"small"
:src=
"getAvatar()"
/>
...
...
src/config/router.config.js
浏览文件 @
f8118d52
...
...
@@ -347,21 +347,6 @@ export const constantRouterMap = [
// ]
// },
{
// OAuth2 APP页面路由
path
:
'/oauth2-app'
,
component
:
BlankLayout
,
redirect
:
'/oauth2-app/login'
,
children
:
[
{
// OAuth2 登录路由
path
:
'login'
,
name
:
'oauth2-app-login'
,
component
:
()
=>
import
(
/* webpackChunkName: "oauth2-app.login" */
'@/views/user/oauth2/OAuth2Login'
)
},
]
},
{
path
:
'/test'
,
component
:
BlankLayout
,
...
...
src/defaultSettings.js
浏览文件 @
f8118d52
...
...
@@ -18,8 +18,8 @@ export default {
navTheme
:
'light'
,
// theme for nav menu
layout
:
'sidemenu'
,
// nav menu position: sidemenu or topmenu
contentWidth
:
'Fixed'
,
// layout of content: Fluid or Fixed, only works when layout is topmenu
fixedHeader
:
fals
e
,
// sticky header
fixSiderbar
:
fals
e
,
// sticky siderbar
fixedHeader
:
tru
e
,
// sticky header
fixSiderbar
:
tru
e
,
// sticky siderbar
autoHideHeader
:
false
,
// auto hide header
colorWeak
:
false
,
multipage
:
true
,
//默认多页签模式
...
...
src/mixins/JeecgListMixin.js
浏览文件 @
f8118d52
...
...
@@ -55,8 +55,6 @@ export const JeecgListMixin = {
if
(
!
this
.
disableMixinCreated
){
console
.
log
(
' -- mixin created -- '
)
this
.
loadData
();
//初始化字典配置 在自己页面定义
this
.
initDictConfig
();
}
},
computed
:
{
...
...
@@ -100,9 +98,6 @@ export const JeecgListMixin = {
this
.
loading
=
false
})
},
initDictConfig
(){
console
.
log
(
"--这是一个假的方法!"
)
},
handleSuperQuery
(
params
,
matchType
)
{
//高级查询方法
if
(
!
params
){
...
...
@@ -130,7 +125,7 @@ export const JeecgListMixin = {
},
getQueryField
()
{
//TODO 字段权限控制
var
str
=
"id
,
"
;
var
str
=
"id"
;
this
.
columns
.
forEach
(
function
(
value
)
{
str
+=
","
+
value
.
dataIndex
;
});
...
...
@@ -368,7 +363,7 @@ export const JeecgListMixin = {
}
let
url
=
getFileAccessHttpUrl
(
text
)
window
.
open
(
url
);
}
,
}
}
}
\ No newline at end of file
src/store/modules/app.js
浏览文件 @
f8118d52
...
...
@@ -22,8 +22,8 @@ const app = {
theme
:
''
,
layout
:
''
,
contentWidth
:
''
,
fixedHeader
:
fals
e
,
fixSiderbar
:
fals
e
,
fixedHeader
:
tru
e
,
fixSiderbar
:
tru
e
,
autoHideHeader
:
false
,
color
:
null
,
weak
:
false
,
...
...
src/utils/request.js
浏览文件 @
f8118d52
...
...
@@ -17,7 +17,7 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
const
service
=
axios
.
create
({
//baseURL: '/jeecg-boot',
baseURL
:
apiBaseUrl
,
// api base_url
timeout
:
9
000
// 请求超时时间
timeout
:
15
000
// 请求超时时间
})
const
err
=
(
error
)
=>
{
...
...
@@ -143,8 +143,8 @@ service.interceptors.request.use(config => {
// response interceptor
service
.
interceptors
.
response
.
use
((
response
)
=>
{
return
response
.
data
},
err
)
return
response
.
data
},
err
)
const
installer
=
{
vm
:
{},
...
...
src/views/advertisement/adsLlist.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"广告名称"
>
<a-input
placeholder=
"请输入广告名称"
v-model=
"queryParam.advName"
></a-input>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
>
查询
</a-button>
<a-button
style=
"margin-left: 8px"
@
click=
"searchReset"
>
重置
</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('t_property_adv')"
>
导出
</a-button>
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
<a-menu
slot=
"overlay"
>
<a-menu-item
key=
"1"
@
click=
"batchDel"
><a-icon
type=
"delete"
/>
删除
</a-menu-item>
</a-menu>
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
已选择
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
项
<a
style=
"margin-left: 24px"
v-if=
"selectedRowKeys.length > 0"
@
click=
"onClearSelected"
>
清空
</a>
</div>
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange">
<template
slot=
"htmlSlot"
slot-scope=
"text"
>
<div
v-html=
"text"
></div>
</
template
>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a
class=
"ant-dropdown-link"
>
更多
<a-icon
type=
"down"
/></a>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a
@
click=
"handleDetail(record)"
>
详情
</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm
title=
"确定删除吗?"
@
confirm=
"() => handleDelete(record.id)"
>
<a>
删除
</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<property-adv-modal
ref=
"modalForm"
@
ok=
"modalFormOk"
></property-adv-modal>
</a-card>
</template>
<
script
>
import
'@/assets/less/TableExpand.less'
import
{
mixinDevice
}
from
'@/utils/mixin'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
PropertyAdvModal
from
'./modules/PropertyAdvModal'
import
{
filterDictTextByCache
}
from
'@/components/dict/JDictSelectUtil'
export
default
{
name
:
'PropertyAdvList'
,
mixins
:[
JeecgListMixin
,
mixinDevice
],
components
:
{
PropertyAdvModal
},
data
()
{
return
{
description
:
't_property_adv管理页面'
,
// 表头
columns
:
[
// {
// title: '#',
// dataIndex: '',
// key:'rowIndex',
// width:60,
// align:"center",
// customRender:function (t,r,index) {
// return parseInt(index)+1;
// }
// },
{
title
:
'广告编号'
,
align
:
"center"
,
dataIndex
:
'id'
},
{
title
:
'广告名称'
,
align
:
"center"
,
dataIndex
:
'advName'
},
{
title
:
'广告位置'
,
align
:
"center"
,
dataIndex
:
'advPosition'
,
customRender
:
function
(
text
)
{
return
filterDictTextByCache
(
'advPosition'
,
text
);
}
},
{
title
:
'有效时间'
,
align
:
"center"
,
dataIndex
:
'advStartDate'
,
customRender
:
function
(
text
,
rocord
)
{
return
text
?
(
text
+
'至'
+
rocord
.
advEndDate
)
:
''
}
},
{
title
:
'广告链接'
,
align
:
"center"
,
dataIndex
:
'advUrl'
},
{
title
:
'发布日期'
,
align
:
"center"
,
dataIndex
:
'createTime'
,
// customRender:function (text) {
// return !text?"":(text.length>10?text.substr(0,10):text)
// }
},
{
title
:
'状态'
,
align
:
"center"
,
dataIndex
:
'status'
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
align
:
"center"
,
fixed
:
"right"
,
width
:
147
,
scopedSlots
:
{
customRender
:
'action'
}
}
],
url
:
{
list
:
"/property/propertyAdv/list"
,
delete
:
"/property/propertyAdv/delete"
,
deleteBatch
:
"/property/propertyAdv/deleteBatch"
,
exportXlsUrl
:
"/property/propertyAdv/exportXls"
},
dictOptions
:{}
}
},
methods
:
{
initDictConfig
(){
}
}
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
\ No newline at end of file
src/views/advertisement/modules/PropertyAdvForm.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<a-spin
:spinning=
"confirmLoading"
>
<j-form-container
:disabled=
"formDisabled"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"广告名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"advName"
>
<a-input
v-model=
"model.advName"
placeholder=
"请输入广告名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"广告位置"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"advPosition"
>
<j-dict-select-tag
v-model=
"model.advPosition"
dictCode=
"advPosition"
placeholder=
"请选择广告位置"
disabled
/>
<!--
<a-select
v-model=
"model.advPosition"
style=
"width: 100%"
placeholder=
"请选择广告位置"
disabled
>
<a-select-option
value=
"home"
>
业主小程序banner图
</a-select-option>
</a-select>
-->
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"广告有效时间"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"advDate"
>
<a-range-picker
valueFormat=
"YYYY-MM-DD"
:placeholder=
"['广告有效开始时间', '请选择广告有效结束时间']"
v-model=
"model.advDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<!--
<a-col
:span=
"24"
>
<a-form-model-item
label=
"广告有效结束时间"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"advEndDate"
>
<j-date
placeholder=
"请选择广告有效结束时间"
v-model=
"model.advEndDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
-->
<a-col
:span=
"24"
>
<a-form-model-item
label=
"广告链接"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"advUrl"
>
<a-input
v-model=
"model.advUrl"
placeholder=
"请输入广告链接"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<!--
<a-form-model-item
label=
"banner图"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"advImageUrl"
>
<j-upload
v-model=
"model.advImageUrl"
></j-upload>
</a-form-model-item>
-->
<a-form-model-item
label=
"banner图"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"advImageUrl"
>
<j-image-upload
bizPath=
"scott/pic"
accept=
"image/png, image/jpeg"
v-model=
"model.advImageUrl"
></j-image-upload>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"是否定时发布"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"isScheduledRelease"
>
<!--
<j-dict-select-tag
type=
"radio"
v-model=
"model.isScheduledRelease"
dictCode=
"release"
placeholder=
"请选择是否定时发布"
/>
-->
<a-radio-group
name=
"radioGroup"
v-model=
"model.isScheduledRelease"
>
<a-radio
:value=
"1"
>
是
</a-radio>
<a-radio
:value=
"0"
>
否
</a-radio>
</a-radio-group>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
v-if=
"model.isScheduledRelease === 1"
>
<a-form-model-item
label=
"发布日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"releaseTime"
>
<j-date
placeholder=
"请选择发布日期"
v-model=
"model.releaseTime"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</
template
>
<
script
>
import
{
httpAction
,
getAction
}
from
'@/api/manage'
import
{
validateDuplicateValue
}
from
'@/utils/util'
export
default
{
name
:
'PropertyAdvForm'
,
components
:
{
},
props
:
{
//表单禁用
disabled
:
{
type
:
Boolean
,
default
:
false
,
required
:
false
}
},
data
()
{
return
{
model
:{
advName
:
''
,
advPosition
:
'home'
,
advDate
:
[],
advUrl
:
''
,
advImageUrl
:
''
,
isScheduledRelease
:
0
,
releaseTime
:
''
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
validatorRules
:
{
advName
:
[{
required
:
true
,
message
:
'请输入广告名称'
,
trigger
:
'blur'
}],
advImageUrl
:
[{
required
:
true
,
message
:
'请上传banner图'
,
trigger
:
'change'
}],
releaseTime
:
[{
required
:
true
,
message
:
'请选择发布日期'
,
trigger
:
'change'
}]
},
url
:
{
add
:
"/property/propertyAdv/add"
,
edit
:
"/property/propertyAdv/edit"
,
queryById
:
"/property/propertyAdv/queryById"
}
}
},
computed
:
{
formDisabled
(){
return
this
.
disabled
},
},
created
()
{
//备份model原始值
this
.
modelDefault
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
model
));
},
methods
:
{
add
()
{
this
.
edit
(
this
.
modelDefault
);
},
edit
(
record
)
{
this
.
model
=
Object
.
assign
({},
record
,
{
advDate
:
[
record
.
advStartDate
,
record
.
advEndDate
]});
this
.
visible
=
true
;
},
submitForm
()
{
const
that
=
this
;
// 触发表单验证
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
if
(
!
this
.
model
.
id
){
httpurl
+=
this
.
url
.
add
;
method
=
'post'
;
}
else
{
httpurl
+=
this
.
url
.
edit
;
method
=
'put'
;
}
this
.
model
[
'advStartDate'
]
=
this
.
model
[
'advDate'
][
0
]
this
.
model
[
'advEndDate'
]
=
this
.
model
[
'advDate'
][
1
]
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'ok'
);
}
else
{
that
.
$message
.
warning
(
res
.
message
);
}
}).
finally
(()
=>
{
that
.
confirmLoading
=
false
;
})
}
})
},
}
}
</
script
>
\ No newline at end of file
src/views/advertisement/modules/PropertyAdvModal.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<j-modal
:title=
"title"
:width=
"width"
:visible=
"visible"
switchFullscreen
@
ok=
"handleOk"
:okButtonProps=
"
{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-adv-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
></property-adv-form>
</j-modal>
</
template
>
<
script
>
import
PropertyAdvForm
from
'./PropertyAdvForm'
export
default
{
name
:
'PropertyAdvModal'
,
components
:
{
PropertyAdvForm
},
data
()
{
return
{
title
:
''
,
width
:
800
,
visible
:
false
,
disableSubmit
:
false
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
})
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
\ No newline at end of file
src/views/advertisement/modules/PropertySettledForm.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<a-spin
:spinning=
"confirmLoading"
>
<j-form-container
:disabled=
"formDisabled"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"物业公司名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"propertyName"
>
<a-input
v-model=
"model.propertyName"
placeholder=
"请输入物业公司名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"统一信用代码"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"creditCode"
>
<a-input
v-model=
"model.creditCode"
placeholder=
"请输入统一信用代码"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"法人姓名"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"legalName"
>
<a-input
v-model=
"model.legalName"
placeholder=
"请输入法人姓名"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"注册资本"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"registCapital"
>
<a-input-number
v-model=
"model.registCapital"
placeholder=
"请输入注册资本"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"联系人"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"contactName"
>
<a-input
v-model=
"model.contactName"
placeholder=
"请输入联系人"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"联系电话"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"contactPhone"
>
<a-input
v-model=
"model.contactPhone"
placeholder=
"请输入联系电话"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"注册地址"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"registAdress"
>
<j-area-linkage
type=
"cascader"
v-model=
"model.registAdress"
placeholder=
"请输入省市区"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"详细地址"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adressInfo"
>
<a-input
v-model=
"model.adressInfo"
placeholder=
"请输入详细地址"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"集团logo"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"logoUrl"
>
<a-input
v-model=
"model.logoUrl"
placeholder=
"请输入集团logo"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"集团介绍"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"groupInfo"
>
<a-textarea
v-model=
"model.groupInfo"
rows=
"4"
placeholder=
"请输入集团介绍"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"授权开始日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"empowerBeginDate"
>
<j-date
placeholder=
"请选择授权开始日期"
v-model=
"model.empowerBeginDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"授权结束日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"empowerEndDate"
>
<j-date
placeholder=
"请选择授权结束日期"
v-model=
"model.empowerEndDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"收费标准id"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargingStandardId"
>
<j-dict-select-tag
type=
"list"
v-model=
"model.chargingStandardId"
dictCode=
""
placeholder=
"请选择收费标准id"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"合同附件"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"contractUrl"
>
<j-upload
v-model=
"model.contractUrl"
></j-upload>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"删除状态(0-正常,1-已删除)"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"delFlag"
>
<a-input-number
v-model=
"model.delFlag"
placeholder=
"请输入删除状态(0-正常,1-已删除)"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"试用小区数量"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ontrialCommunityNum"
>
<a-input-number
v-model=
"model.ontrialCommunityNum"
placeholder=
"请输入试用小区数量"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"试用开始日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ontrialBeginDate"
>
<j-date
placeholder=
"请选择试用开始日期"
v-model=
"model.ontrialBeginDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"试用结束日期"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"ontrialEndDate"
>
<j-date
placeholder=
"请选择试用结束日期"
v-model=
"model.ontrialEndDate"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"管理员登录账号"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adminLoginName"
>
<a-input
v-model=
"model.adminLoginName"
placeholder=
"请输入管理员登录账号"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"管理员登录密码"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"adminPassword"
>
<a-input-password
v-model=
"model.adminPassword"
placeholder=
"请输入管理员登录密码"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</
template
>
<
script
>
import
{
httpAction
,
getAction
}
from
'@/api/manage'
import
{
validateDuplicateValue
}
from
'@/utils/util'
export
default
{
name
:
'PropertySettledForm'
,
components
:
{
},
props
:
{
//表单禁用
disabled
:
{
type
:
Boolean
,
default
:
false
,
required
:
false
}
},
data
()
{
return
{
model
:{
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
validatorRules
:
{
adminLoginName
:
[
{
required
:
false
},
{
validator
:
(
rule
,
value
,
callback
)
=>
validateDuplicateValue
(
'property_settled'
,
'admin_login_name'
,
value
,
this
.
model
.
id
,
callback
)},
],
},
url
:
{
add
:
"/property/propertySettled/add"
,
edit
:
"/property/propertySettled/edit"
,
queryById
:
"/property/propertySettled/queryById"
}
}
},
computed
:
{
formDisabled
(){
return
this
.
disabled
},
},
created
()
{
//备份model原始值
this
.
modelDefault
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
model
));
},
methods
:
{
add
()
{
this
.
edit
(
this
.
modelDefault
);
},
edit
(
record
)
{
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
},
submitForm
()
{
const
that
=
this
;
// 触发表单验证
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
if
(
!
this
.
model
.
id
){
httpurl
+=
this
.
url
.
add
;
method
=
'post'
;
}
else
{
httpurl
+=
this
.
url
.
edit
;
method
=
'put'
;
}
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'ok'
);
}
else
{
that
.
$message
.
warning
(
res
.
message
);
}
}).
finally
(()
=>
{
that
.
confirmLoading
=
false
;
})
}
})
},
}
}
</
script
>
\ No newline at end of file
src/views/advertisement/modules/PropertySettledModal.Style#Drawer.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<a-drawer
:title=
"title"
:width=
"width"
placement=
"right"
:closable=
"false"
@
close=
"close"
destroyOnClose
:visible=
"visible"
>
<property-settled-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
normal
></property-settled-form>
<div
class=
"drawer-footer"
>
<a-button
@
click=
"handleCancel"
style=
"margin-bottom: 0;"
>
关闭
</a-button>
<a-button
v-if=
"!disableSubmit"
@
click=
"handleOk"
type=
"primary"
style=
"margin-bottom: 0;"
>
提交
</a-button>
</div>
</a-drawer>
</
template
>
<
script
>
import
PropertySettledForm
from
'./PropertySettledForm'
export
default
{
name
:
'PropertySettledModal'
,
components
:
{
PropertySettledForm
},
data
()
{
return
{
title
:
"操作"
,
width
:
800
,
visible
:
false
,
disableSubmit
:
false
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
});
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
/** Button按钮间距 */
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
.drawer-footer{
position: absolute;
bottom: -8px;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</
style
>
\ No newline at end of file
src/views/advertisement/modules/PropertySettledModal.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<j-modal
:title=
"title"
:width=
"width"
:visible=
"visible"
switchFullscreen
@
ok=
"handleOk"
:okButtonProps=
"
{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
></property-settled-form>
</j-modal>
</
template
>
<
script
>
import
PropertySettledForm
from
'./PropertySettledForm'
export
default
{
name
:
'PropertySettledModal'
,
components
:
{
PropertySettledForm
},
data
()
{
return
{
title
:
''
,
width
:
800
,
visible
:
false
,
disableSubmit
:
false
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
})
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
\ No newline at end of file
src/views/cost/CostList.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"收费名称"
>
<a-input
placeholder=
"请输入收费名称"
v-model=
"queryParam.chargingName"
></a-input>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
>
查询
</a-button>
<a-button
style=
"margin-left: 8px"
@
click=
"searchReset"
>
重置
</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 查询区域-END -->
<!--
<div
style=
"text-align:right;margin-bottom:10px;"
>
<a-button
type=
"primary"
@
click=
"visible = true"
>
新增就收费标准
</a-button>
</div>
-->
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
<a-button
type=
"primary"
icon=
"download"
@
click=
"handleExportXls('t_property_chargrule')"
>
导出
</a-button>
<a-dropdown
v-if=
"selectedRowKeys.length > 0"
>
<a-menu
slot=
"overlay"
>
<a-menu-item
key=
"1"
@
click=
"batchDel"
><a-icon
type=
"delete"
/>
删除
</a-menu-item>
</a-menu>
<a-button
style=
"margin-left: 8px"
>
批量操作
<a-icon
type=
"down"
/></a-button>
</a-dropdown>
</div>
<!-- table区域-begin -->
<div>
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
已选择
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
项
<a
style=
"margin-left: 24px"
v-if=
"selectedRowKeys.length > 0"
@
click=
"onClearSelected"
>
清空
</a>
</div>
<a-table
ref=
"table"
size=
"middle"
:scroll=
"
{x:true}"
bordered
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="pagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
class="j-table-force-nowrap"
@change="handleTableChange"
>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a
class=
"ant-dropdown-link"
>
更多
<a-icon
type=
"down"
/></a>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a
@
click=
"handleDetail(record)"
>
详情
</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm
title=
"确定删除吗?"
@
confirm=
"() => handleDelete(record.id)"
>
<a>
删除
</a>
</a-popconfirm>
</a-menu-item>
<a-menu-item
v-if=
"record.auditStatus === 'waitAudit'"
>
<a-popconfirm
title=
"确定审核吗?"
ok-text=
"通过"
cancel-text=
"驳回"
@
cancel=
"() => handleVerify(record.id, 'notPass')"
@
confirm=
"() => handleVerify(record.id, 'auditPass')"
>
<a>
审核
</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
</a-table>
</div>
<!-- table区域-end -->
<property-chargrule-modal
ref=
"modalForm"
@
ok=
"modalFormOk"
></property-chargrule-modal>
</a-card>
</
template
>
<
script
>
import
{
AuditUpdateCostApi
}
from
'@/api/api'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
import
{
filterDictTextByCache
}
from
'@/components/dict/JDictSelectUtil'
import
PropertyChargruleModal
from
'./modules/PropertyChargruleModal'
const
columns
=
[
{
title
:
'收费名称'
,
dataIndex
:
'chargingName'
,
key
:
'chargingName'
},
{
title
:
'收费方式'
,
dataIndex
:
'chargingCycle'
,
key
:
'chargingCycle'
,
customRender
:
function
(
text
)
{
return
filterDictTextByCache
(
'chargingCycle'
,
text
);
}
},{
title
:
'授权物业数量'
,
dataIndex
:
'empowerNum'
,
key
:
'empowerNum'
},{
title
:
'添加人'
,
dataIndex
:
'createBy'
,
key
:
'createBy'
},{
title
:
'收费金额(元)'
,
dataIndex
:
'chargingMoney'
,
key
:
'chargingMoney'
},
{
title
:
'创建时间'
,
dataIndex
:
'createTime'
,
key
:
'createTime'
},
{
title
:
'审核状态'
,
dataIndex
:
'auditStatus'
,
key
:
'auditStatus'
,
customRender
:
function
(
text
)
{
return
filterDictTextByCache
(
'auditStatus'
,
text
);
}
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
scopedSlots
:
{
customRender
:
'action'
},
align
:
'center'
,
width
:
150
}
]
export
default
{
name
:
'costListAsync'
,
components
:
{
PropertyChargruleModal
},
mixins
:
[
JeecgListMixin
],
data
()
{
return
{
// 表头
columns
:
columns
,
loading
:
false
,
pagination
:
{
total
:
0
,
current
:
1
,
pageSize
:
10
,
showSizeChanger
:
true
},
url
:
{
list
:
"/property/propertyChargrule/list"
,
delete
:
'/property/propertyChargrule/delete'
,
deleteBatch
:
'/property/propertyChargrule/deleteBatch'
,
exportXlsUrl
:
"/property/propertyChargrule/exportXls"
},
dictOptions
:
[],
}
},
methods
:
{
handleVerify
(
id
,
auditStatus
)
{
AuditUpdateCostApi
({
id
,
auditStatus
}).
then
(()
=>
{
this
.
$message
.
success
(
`
${
auditStatus
===
'auditPass'
?
'审核成功'
:
'驳回成功'
}
`
);
this
.
loadData
();
})
}
}
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
\ No newline at end of file
src/views/cost/modules/PropertyChargruleForm.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<a-spin
:spinning=
"confirmLoading"
>
<j-form-container
:disabled=
"formDisabled"
>
<a-form-model
ref=
"form"
:model=
"model"
:rules=
"validatorRules"
slot=
"detail"
>
<a-row>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"收费名称"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargingName"
>
<a-input
v-model=
"model.chargingName"
placeholder=
"请输入收费名称"
></a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"收费方式"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargingCycle"
>
<a-select
style=
"width: 100%"
v-model=
"model.chargingCycle"
placeholder=
"请选择收费方式"
>
<a-select-option
v-for=
"item in dictOptions"
:key=
"item.value"
:value=
"item.value"
>
{{
item
.
label
}}
</a-select-option>
</a-select>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"授权天数"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"empowerDays"
>
<a-input
:disabled=
"model.chargingCycle !== '4'"
v-model=
"model.empowerDays"
@
blur=
"ruleNumberInput"
placeholder=
"请输入授权天数"
>
<div
slot=
"addonAfter"
>
天
</div>
</a-input>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"授权小区数量"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"empowerNum"
>
<a-input-number
v-model=
"model.empowerNum"
:min=
"1"
:precision=
"0"
placeholder=
"请输入授权小区数量"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
<a-col
:span=
"24"
>
<a-form-model-item
label=
"收费金额"
:labelCol=
"labelCol"
:wrapperCol=
"wrapperCol"
prop=
"chargingMoney"
>
<a-input-number
v-model=
"model.chargingMoney"
:min=
"0.01"
:precision=
"2"
placeholder=
"请输入收费金额"
style=
"width: 100%"
/>
</a-form-model-item>
</a-col>
</a-row>
</a-form-model>
</j-form-container>
</a-spin>
</
template
>
<
script
>
import
{
httpAction
,
getAction
}
from
'@/api/manage'
import
{
validateDuplicateValue
}
from
'@/utils/util'
import
{
ajaxGetDictItems
,
getDictItemsFromCache
}
from
'@/api/api'
export
default
{
name
:
'PropertyChargruleForm'
,
components
:
{
},
props
:
{
//表单禁用
disabled
:
{
type
:
Boolean
,
default
:
false
,
required
:
false
}
},
data
()
{
return
{
model
:{
chargingName
:
''
,
chargingMoney
:
''
,
chargingCycle
:
''
,
empowerNum
:
''
,
empowerDays
:
''
},
labelCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
5
},
},
wrapperCol
:
{
xs
:
{
span
:
24
},
sm
:
{
span
:
16
},
},
confirmLoading
:
false
,
validatorRules
:
{
chargingName
:
[{
required
:
true
,
message
:
'请输入收费名称'
,
trigger
:
'blur'
}],
chargingCycle
:
[{
required
:
true
,
message
:
'请选择收费方式'
,
trigger
:
'change'
}],
empowerDays
:
[{
required
:
true
,
message
:
'请输入授权日期'
,
trigger
:
'blur'
}],
empowerNum
:
[{
required
:
true
,
message
:
'请输入授权小区数量'
,
trigger
:
'blur'
}],
chargingMoney
:
[{
required
:
true
,
message
:
'请输入收费金额'
,
trigger
:
'blur'
}]
},
url
:
{
add
:
"/property/propertyChargrule/add"
,
edit
:
"/property/propertyChargrule/edit"
,
queryById
:
"/property/propertyChargrule/queryById"
},
dictOptions
:
[]
}
},
watch
:
{
'model.chargingCycle'
:
{
handler
(
newV
,
oldV
)
{
switch
(
newV
)
{
case
'1'
:
this
.
model
.
empowerDays
=
'30'
break
case
'2'
:
this
.
model
.
empowerDays
=
'90'
break
case
'3'
:
this
.
model
.
empowerDays
=
'365'
break
default
:
if
(
oldV
)
{
this
.
model
.
empowerDays
=
''
}
}
}
}
},
computed
:
{
formDisabled
(){
return
this
.
disabled
},
},
created
()
{
//备份model原始值
this
.
modelDefault
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
model
));
this
.
initDictData
()
},
methods
:
{
initDictData
()
{
//优先从缓存中读取字典配置
if
(
getDictItemsFromCache
(
'chargingCycle'
)){
this
.
dictOptions
=
getDictItemsFromCache
(
'chargingCycle'
);
return
}
// //根据字典Code, 初始化字典数组
ajaxGetDictItems
(
'chargingCycle'
,
null
).
then
((
res
)
=>
{
if
(
res
.
success
)
{
this
.
dictOptions
=
res
.
result
;
}
})
},
ruleNumberInput
(
event
)
{
let
rateValue
=
event
.
target
.
value
.
replace
(
/
[^\d]
/g
,
""
);
//清除"数字"和"."和"-"以外的字符
this
.
model
[
'empowerDays'
]
=
rateValue
},
add
()
{
this
.
edit
(
this
.
modelDefault
);
},
edit
(
record
)
{
console
.
log
(
record
)
this
.
model
=
Object
.
assign
({},
record
);
this
.
visible
=
true
;
},
submitForm
()
{
const
that
=
this
;
// 触发表单验证
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
that
.
confirmLoading
=
true
;
let
httpurl
=
''
;
let
method
=
''
;
if
(
!
this
.
model
.
id
){
httpurl
+=
this
.
url
.
add
;
method
=
'post'
;
}
else
{
httpurl
+=
this
.
url
.
edit
;
method
=
'put'
;
}
httpAction
(
httpurl
,
this
.
model
,
method
).
then
((
res
)
=>
{
if
(
res
.
success
){
that
.
$message
.
success
(
res
.
message
);
that
.
$emit
(
'ok'
);
}
else
{
that
.
$message
.
warning
(
res
.
message
);
}
}).
finally
(()
=>
{
that
.
confirmLoading
=
false
;
})
}
})
},
}
}
</
script
>
\ No newline at end of file
src/views/cost/modules/PropertyChargruleModal.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<j-modal
:title=
"title"
:width=
"width"
:visible=
"visible"
switchFullscreen
@
ok=
"handleOk"
:okButtonProps=
"
{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-chargrule-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
></property-chargrule-form>
</j-modal>
</
template
>
<
script
>
import
PropertyChargruleForm
from
'./PropertyChargruleForm'
export
default
{
name
:
'PropertyChargruleModal'
,
components
:
{
PropertyChargruleForm
},
data
()
{
return
{
title
:
''
,
width
:
800
,
visible
:
false
,
disableSubmit
:
false
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
})
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
\ No newline at end of file
src/views/settled/PropertyDetail.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<a-card
:bordered=
"false"
>
<!-- 查询区域 -->
<div
class=
"table-page-search-wrapper"
>
<a-form
layout=
"inline"
@
keyup
.
enter
.
native=
"searchQuery"
>
<a-row
:gutter=
"24"
>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"表名"
>
<a-input
placeholder=
"请输入表名"
v-model=
"queryParam.dataTable"
></a-input>
</a-form-item>
</a-col>
<a-col
:md=
"6"
:sm=
"8"
>
<a-form-item
label=
"数据ID"
>
<a-input
placeholder=
"请输入ID"
v-model=
"queryParam.dataId"
></a-input>
</a-form-item>
</a-col>
<span
style=
"float: left;overflow: hidden;"
class=
"table-page-search-submitButtons"
>
<a-col
:md=
"6"
:sm=
"24"
>
<a-button
type=
"primary"
@
click=
"searchQuery"
>
查询
</a-button>
<a-button
style=
"margin-left: 8px"
@
click=
"searchReset"
>
重置
</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<!-- 操作按钮区域 -->
<div
class=
"table-operator"
>
<a-button
@
click=
"handleAdd"
type=
"primary"
icon=
"plus"
>
新增
</a-button>
<a-button
@
click=
"batchDel"
v-if=
"selectedRowKeys.length > 0"
ghost
type=
"primary"
icon=
"delete"
>
批量删除
</a-button>
</div>
<!-- table区域-begin -->
<div>
<div
class=
"ant-alert ant-alert-info"
style=
"margin-bottom: 16px;"
>
<i
class=
"anticon anticon-info-circle ant-alert-icon"
></i>
已选择
<a
style=
"font-weight: 600"
>
{{
selectedRowKeys
.
length
}}
</a>
项
<a
style=
"margin-left: 24px"
@
click=
"onClearSelected"
>
清空
</a>
</div>
<a-table
:columns=
"columns"
size=
"middle"
:dataSource=
"dataSource"
:loading=
"loading"
:pagination=
"pagination"
:rowSelection=
"
{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
>
<span
slot=
"action"
slot-scope=
"text, record"
>
<a
@
click=
"handleEdit(record)"
>
编辑
</a>
<a-divider
type=
"vertical"
/>
<a-dropdown>
<a
class=
"ant-dropdown-link"
>
更多
<a-icon
type=
"down"
/>
</a>
<a-menu
slot=
"overlay"
>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"handleDetail(record)"
>
详情
</a>
</a-menu-item>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"handleAddSub(record)"
>
添加下级
</a>
</a-menu-item>
<a-menu-item>
<a
href=
"javascript:;"
@
click=
"handleDataRule(record)"
>
数据规则
</a>
</a-menu-item>
<a-menu-item>
<a-popconfirm
title=
"确定删除吗?"
@
confirm=
"() => handleDelete(record.id)"
placement=
"topLeft"
>
<a>
删除
</a>
</a-popconfirm>
</a-menu-item>
</a-menu>
</a-dropdown>
</span>
<!-- 字符串超长截取省略号显示 -->
<span
slot=
"url"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
:length=
"25"
/>
</span>
<!-- 字符串超长截取省略号显示-->
<span
slot=
"component"
slot-scope=
"text"
>
<j-ellipsis
:value=
"text"
/>
</span>
</a-table>
</div>
<!-- table区域-end -->
<!--
<permission-modal
ref=
"modalForm"
@
ok=
"modalFormOk"
></permission-modal>
-->
<!--
<permission-data-rule-list
ref=
"PermissionDataRuleList"
@
ok=
"modalFormOk"
></permission-data-rule-list>
-->
</a-card>
</
template
>
<
script
>
// import PermissionModal from './modules/PermissionModal'
import
{
getPropertyListApi
,
getSystemSubmenu
,
getSystemSubmenuBatch
}
from
'@/api/api'
import
{
JeecgListMixin
}
from
'@/mixins/JeecgListMixin'
// import PermissionDataRuleList from './PermissionDataRuleList'
import
JEllipsis
from
'@/components/jeecg/JEllipsis'
const
columns
=
[
{
title
:
'菜单名称111'
,
dataIndex
:
'name'
,
key
:
'name'
},
{
title
:
'菜单类型'
,
dataIndex
:
'menuType'
,
key
:
'menuType'
,
customRender
:
function
(
text
)
{
if
(
text
==
0
)
{
return
'菜单'
}
else
if
(
text
==
1
)
{
return
'菜单'
}
else
if
(
text
==
2
)
{
return
'按钮/权限'
}
else
{
return
text
}
}
},
/*{
title: '权限编码',
dataIndex: 'perms',
key: 'permissionCode',
},*/
{
title
:
'icon'
,
dataIndex
:
'icon'
,
key
:
'icon'
},
{
title
:
'组件'
,
dataIndex
:
'component'
,
key
:
'component'
,
scopedSlots
:
{
customRender
:
'component'
}
},
{
title
:
'路径'
,
dataIndex
:
'url'
,
key
:
'url'
,
scopedSlots
:
{
customRender
:
'url'
}
},
{
title
:
'排序'
,
dataIndex
:
'sortNo'
,
key
:
'sortNo'
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
scopedSlots
:
{
customRender
:
'action'
},
align
:
'center'
,
width
:
150
}
]
export
default
{
name
:
'PermissionListAsync'
,
mixins
:
[
JeecgListMixin
],
components
:
{
// PermissionDataRuleList,
// PermissionModal,
JEllipsis
},
data
()
{
return
{
description
:
'这是菜单管理页面'
,
// 表头
columns
:
columns
,
loading
:
false
,
pagination
:
{},
url
:
{
list
:
'/property/propertySettled/list'
,
delete
:
'/sys/permission/delete'
,
deleteBatch
:
'/sys/permission/deleteBatch'
}
}
},
methods
:
{
loadData
()
{
this
.
loading
=
true
getPropertyListApi
({
pageNo
:
1
,
pageSize
:
10
}).
then
((
res
)
=>
{
if
(
res
.
success
)
{
const
pagination
=
{
...
this
.
pagination
};
pagination
.
total
=
res
.
result
.
total
this
.
dataSource
=
res
.
result
.
records
}
}).
finally
(()
=>
{
this
.
loading
=
false
})
},
// 打开数据规则编辑
handleDataRule
(
record
)
{
this
.
$refs
.
PermissionDataRuleList
.
edit
(
record
)
},
handleAddSub
(
record
)
{
this
.
$refs
.
modalForm
.
title
=
"添加子菜单"
;
this
.
$refs
.
modalForm
.
disableSubmit
=
false
;
this
.
$refs
.
modalForm
.
edit
({
status
:
'1'
,
permsType
:
'1'
,
route
:
true
,
'parentId'
:
record
.
id
,
menuType
:
1
});
}
}
}
</
script
>
<
style
scoped
>
@import
'~@assets/less/common.less'
;
</
style
>
\ No newline at end of file
src/views/settled/PropertyList.vue
0 → 100644
浏览文件 @
f8118d52
差异被折叠。
点击展开。
src/views/settled/modules/PropertySettledForm.vue
0 → 100644
浏览文件 @
f8118d52
差异被折叠。
点击展开。
src/views/settled/modules/PropertySettledModal.vue
0 → 100644
浏览文件 @
f8118d52
<
template
>
<j-modal
:title=
"title"
:width=
"width"
:visible=
"visible"
switchFullscreen
@
ok=
"handleOk"
:okButtonProps=
"
{ class:{'jee-hidden': disableSubmit} }"
@cancel="handleCancel"
cancelText="关闭">
<property-settled-form
ref=
"realForm"
@
ok=
"submitCallback"
:disabled=
"disableSubmit"
></property-settled-form>
</j-modal>
</
template
>
<
script
>
import
PropertySettledForm
from
'./PropertySettledForm'
export
default
{
name
:
'PropertySettledModal'
,
components
:
{
PropertySettledForm
},
data
()
{
return
{
title
:
''
,
width
:
'70%'
,
visible
:
false
,
disableSubmit
:
false
}
},
methods
:
{
add
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
add
();
})
},
edit
(
record
)
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
realForm
.
edit
(
record
);
})
},
close
()
{
this
.
$emit
(
'close'
);
this
.
visible
=
false
;
},
handleOk
()
{
this
.
$refs
.
realForm
.
submitForm
();
},
submitCallback
(){
this
.
$emit
(
'ok'
);
this
.
visible
=
false
;
},
handleCancel
()
{
this
.
close
()
}
}
}
</
script
>
\ No newline at end of file
src/views/user/Login.vue
浏览文件 @
f8118d52
...
...
@@ -6,19 +6,19 @@
<login-account
ref=
"alogin"
@
validateFail=
"validateFail"
@
success=
"requestSuccess"
@
fail=
"requestFailed"
></login-account>
</a-tab-pane>
<a-tab-pane
key=
"tab2"
tab=
"手机号登录"
>
<
!--
<
a-tab-pane
key=
"tab2"
tab=
"手机号登录"
>
<login-phone
ref=
"plogin"
@
validateFail=
"validateFail"
@
success=
"requestSuccess"
@
fail=
"requestFailed"
></login-phone>
</a-tab-pane>
</a-tab-pane>
-->
</a-tabs>
<a-form-model-item>
<a-checkbox
@
change=
"handleRememberMeChange"
default-checked
>
自动登录
</a-checkbox>
<router-link
:to=
"
{ name: 'alteration'}" class="forge-password" style="float: right;">
<
!--
<
router-link
:to=
"
{ name: 'alteration'}" class="forge-password" style="float: right;">
忘记密码
</router-link>
<router-link
:to=
"
{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >
注册账户
</router-link>
</router-link>
-->
</a-form-model-item>
<a-form-item
style=
"margin-top:24px"
>
...
...
@@ -28,18 +28,14 @@
</a-form-model>
<two-step-captcha
v-if=
"requiredTwoStepCaptcha"
:visible=
"stepCaptchaVisible"
@
success=
"stepCaptchaSuccess"
@
cancel=
"stepCaptchaCancel"
></two-step-captcha>
<login-select-tenant
ref=
"loginSelect"
@
success=
"loginSelectOk"
></login-select-tenant>
<third-login
ref=
"thirdLogin"
></third-login>
</div>
</
template
>
<
script
>
import
Vue
from
'vue'
import
{
ACCESS_TOKEN
,
ENCRYPTED_STRING
}
from
'@/store/mutation-types'
import
ThirdLogin
from
'./third/ThirdLogin'
import
LoginSelectTenant
from
'./LoginSelectTenant'
import
TwoStepCaptcha
from
'@/components/tools/TwoStepCaptcha'
import
{
getEncryptedString
}
from
'@/utils/encryption/aesEncrypt'
import
{
timeFix
}
from
'@/utils/util'
...
...
@@ -49,8 +45,6 @@ import LoginPhone from './LoginPhone'
export
default
{
components
:
{
LoginSelectTenant
,
TwoStepCaptcha
,
ThirdLogin
,
LoginAccount
,
LoginPhone
},
...
...
@@ -59,7 +53,6 @@ export default {
customActiveKey
:
'tab1'
,
rememberMe
:
true
,
loginBtn
:
false
,
requiredTwoStepCaptcha
:
false
,
stepCaptchaVisible
:
false
,
encryptedString
:{
key
:
""
,
...
...
src/views/user/oauth2/OAuth2Login.vue
deleted
100644 → 0
浏览文件 @
c99bf859
<
template
>
<div>
<div
id=
"loader-wrapper"
>
<div
id=
"loader"
></div>
<div
class=
"loader-section section-left"
></div>
<div
class=
"loader-section section-right"
></div>
<div
class=
"load_title"
>
正在登录 JeecgBoot 低代码平台,请耐心等待
</div>
</div>
</div>
</
template
>
<
script
>
import
{
mapActions
}
from
'vuex'
import
{
isOAuth2AppEnv
,
timeFix
}
from
'@/utils/util'
import
{
INDEX_MAIN_PAGE_PATH
}
from
'@/store/mutation-types'
export
default
{
name
:
'OAuth2Login'
,
data
()
{
return
{
env
:
{
thirdApp
:
false
,
wxWork
:
false
,
dingtalk
:
false
,
},
}
},
beforeCreate
()
{
// 如果当前 不是 OAuth2APP环境,就重定向到 /user/login 页面
if
(
!
isOAuth2AppEnv
())
{
this
.
$router
.
replace
({
path
:
'/user/login'
})
}
},
created
()
{
this
.
checkEnv
()
this
.
doOAuth2Login
()
},
methods
:
{
...
mapActions
([
'ThirdLogin'
]),
/** 检测当前的环境 */
checkEnv
()
{
// 判断当时是否是企业微信环境
if
(
/wxwork/i
.
test
(
navigator
.
userAgent
))
{
this
.
env
.
thirdApp
=
true
this
.
env
.
wxWork
=
true
}
// 判断当时是否是钉钉环境
if
(
/dingtalk/i
.
test
(
navigator
.
userAgent
))
{
this
.
env
.
thirdApp
=
true
this
.
env
.
dingtalk
=
true
}
},
/** 进行OAuth2登录操作 */
doOAuth2Login
()
{
if
(
this
.
env
.
thirdApp
)
{
// 判断是否携带了Token,是就说明登录成功
if
(
this
.
$route
.
query
.
oauth2LoginToken
)
{
this
.
thirdType
=
this
.
$route
.
query
.
thirdType
let
token
=
this
.
$route
.
query
.
oauth2LoginToken
this
.
doThirdLogin
(
token
)
}
else
if
(
this
.
env
.
wxWork
)
{
this
.
doWechatEnterpriseOAuth2Login
()
}
else
if
(
this
.
env
.
dingtalk
)
{
this
.
doDingTalkOAuth2Login
()
}
}
},
// 根据token执行登录
doThirdLogin
(
token
)
{
let
param
=
{}
param
.
thirdType
=
this
.
thirdType
param
.
token
=
token
this
.
ThirdLogin
(
param
).
then
(
res
=>
{
if
(
res
.
success
)
{
this
.
loginSuccess
()
}
else
{
this
.
requestFailed
(
res
)
}
})
},
loginSuccess
()
{
// 登陆成功,重定向到主页
this
.
$router
.
replace
({
path
:
INDEX_MAIN_PAGE_PATH
})
// TODO 这个提示是否还需要?
this
.
$notification
.
success
({
message
:
'欢迎'
,
description
:
`
${
timeFix
()}
,欢迎回来`
,
})
},
requestFailed
(
err
)
{
this
.
$error
({
title
:
'登录失败'
,
content
:
((
err
.
response
||
{}).
data
||
{}).
message
||
err
.
message
||
'请求出现错误,请稍后再试'
,
okText
:
'重新登陆'
,
onOk
()
{
window
.
location
.
reload
()
},
onCancel
()
{
window
.
location
.
reload
()
},
})
},
/** 企业微信OAuth2登录 */
doWechatEnterpriseOAuth2Login
()
{
this
.
sysOAuth2Login
(
'wechat_enterprise'
)
},
/** 钉钉OAuth2登录 */
doDingTalkOAuth2Login
()
{
this
.
sysOAuth2Login
(
'dingtalk'
)
},
/** 后台构造oauth2登录地址 */
sysOAuth2Login
(
source
)
{
let
url
=
`
${
window
.
_CONFIG
[
'domianURL'
]}
/sys/thirdLogin/oauth2/
${
source
}
/login`
url
+=
`?state=
${
encodeURIComponent
(
window
.
location
.
origin
)}
`
window
.
location
.
href
=
url
},
},
}
</
script
>
<
style
scoped
>
</
style
>
\ No newline at end of file
yarn.lock
浏览文件 @
f8118d52
...
...
@@ -895,10 +895,10 @@
cssnano-preset-default "^4.0.0"
postcss "^7.0.0"
"@jeecg/antd-online-mini@3.
1.0-beta
":
version "3.
1.0-beta
"
resolved "https://registry.
npmmirror.com/@jeecg/antd-online-mini/-/antd-online-mini-3.1.0-beta.tgz#cf3e254259503405a5e83ffa6775ac9fa02fe74c
"
integrity sha512-
pW0zWzExnxjlC3e7DzGYjQibLU22K/7N0kp1ddJrGgX33Ia/wq7ELOcwn6bLzITD89RcvX1JUW/om+IJ1PxOS
w==
"@jeecg/antd-online-mini@3.
4.3-beta2
":
version "3.
4.3-beta2
"
resolved "https://registry.
yarnpkg.com/@jeecg/antd-online-mini/-/antd-online-mini-3.4.3-beta2.tgz#5903547f48a7d51f2df9773b85d25d28807e57ae
"
integrity sha512-
uZLjtQG/vAcBsCEysE1HceUyzwiHwU+JlNzvHxNnenNDHeaawZa9CfILUImNFJ5JQVqE5J11QpQNb6i5Boo3G
w==
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
...
...
@@ -11459,6 +11459,13 @@ vue-photo-preview@^1.1.3:
webpack "^3.6.0"
webpack-dev-server "^2.9.1"
vue-print-nb-jeecg@^1.0.12:
version "1.0.12"
resolved "https://registry.yarnpkg.com/vue-print-nb-jeecg/-/vue-print-nb-jeecg-1.0.12.tgz#975e1dac3da8c9736ac81b82a2b099cafe1bb3df"
integrity sha512-jHyWm6/TxB1iU2nHL7upQdHVdxb1SJQ9n3XKeYTaruFdbSphLo1vDtTunS2qVCjupk8lui7FlF5rxxSNr0zjZg==
dependencies:
babel-plugin-transform-runtime "^6.23.0"
vue-ref@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz#483084d732abed11da796778a8266a3af0ea1a9c"
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论