Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
procurementcloud_vue_dzjypt
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
朱幸伦
procurementcloud_vue_dzjypt
Commits
9d684267
Commit
9d684267
authored
1 year ago
by
zhuxl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交
parent
80db6e5d
master
No related merge requests found
Changes
24
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
3268 additions
and
2 deletions
+3268
-2
README.md
README.md
+23
-2
src/api/appManagement/appVersion.js
src/api/appManagement/appVersion.js
+26
-0
src/api/appManagement/feedback.js
src/api/appManagement/feedback.js
+11
-0
src/api/appManagement/helpCenter.js
src/api/appManagement/helpCenter.js
+28
-0
src/api/appManagement/menu.js
src/api/appManagement/menu.js
+28
-0
src/api/appManagement/msg.js
src/api/appManagement/msg.js
+26
-0
src/api/appManagement/platform.js
src/api/appManagement/platform.js
+27
-0
src/api/appManagement/role.js
src/api/appManagement/role.js
+42
-0
src/router/appManagement/index.js
src/router/appManagement/index.js
+62
-0
src/views/appManagement/appVersion/appVersion-list.vue
src/views/appManagement/appVersion/appVersion-list.vue
+240
-0
src/views/appManagement/appVersion/appVersionAdd-dialog.vue
src/views/appManagement/appVersion/appVersionAdd-dialog.vue
+227
-0
src/views/appManagement/feedback/feedback-list.vue
src/views/appManagement/feedback/feedback-list.vue
+198
-0
src/views/appManagement/feedback/feedbackDetail-dialog.vue
src/views/appManagement/feedback/feedbackDetail-dialog.vue
+123
-0
src/views/appManagement/helpcenter/helpcenter-list.vue
src/views/appManagement/helpcenter/helpcenter-list.vue
+183
-0
src/views/appManagement/helpcenter/helpcenterAdd-dialog.vue
src/views/appManagement/helpcenter/helpcenterAdd-dialog.vue
+141
-0
src/views/appManagement/menu/menu-list.vue
src/views/appManagement/menu/menu-list.vue
+282
-0
src/views/appManagement/menu/menuAdd-dialog.vue
src/views/appManagement/menu/menuAdd-dialog.vue
+293
-0
src/views/appManagement/msg/msg-list.vue
src/views/appManagement/msg/msg-list.vue
+275
-0
src/views/appManagement/msg/msgAdd-dialog.vue
src/views/appManagement/msg/msgAdd-dialog.vue
+213
-0
src/views/appManagement/platform/platformAdd-dialog.vue
src/views/appManagement/platform/platformAdd-dialog.vue
+151
-0
src/views/appManagement/platform/platformConfig-list.vue
src/views/appManagement/platform/platformConfig-list.vue
+190
-0
src/views/appManagement/role/role-list.vue
src/views/appManagement/role/role-list.vue
+177
-0
src/views/appManagement/role/roleAdd-dialog.vue
src/views/appManagement/role/roleAdd-dialog.vue
+157
-0
src/views/appManagement/role/setAccess-dialog.vue
src/views/appManagement/role/setAccess-dialog.vue
+145
-0
No files found.
README.md
View file @
9d684267
#
procurementcloud_vue_dzjypt
#
hello-world
电子交易平台app管理后台
\ No newline at end of file
## Project setup
```
yarn install
```
### Compiles and hot-reloads for development
```
yarn serve
```
### Compiles and minifies for production
```
yarn build
```
### Lints and fixes files
```
yarn lint
```
### Customize configuration
See
[
Configuration Reference
](
https://cli.vuejs.org/config/
)
.
This diff is collapsed.
Click to expand it.
src/api/appManagement/appVersion.js
0 → 100644
View file @
9d684267
import
request
from
'
@/assets/js/utils/request
'
// 管理后台保存版本信息接口
export
function
saveAppVersion
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/version/saveAppVersion
'
,
method
:
'
post
'
,
data
})
}
// 删除app版本信息
export
function
delAppVersion
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/version/delAppVersion
'
,
method
:
'
post
'
,
data
})
}
// 管理后台查询版本信息列表接口
export
function
queryAppVersionPage
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/version/queryAppVersionPage
'
,
method
:
'
post
'
,
data
})
}
This diff is collapsed.
Click to expand it.
src/api/appManagement/feedback.js
0 → 100644
View file @
9d684267
import
request
from
'
@/assets/js/utils/request
'
// 管理后台分页查询意见反馈信息接口
export
function
queryFeedbackListPage
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/feedback/queryFeedbackListPage
'
,
method
:
'
post
'
,
data
})
}
This diff is collapsed.
Click to expand it.
src/api/appManagement/helpCenter.js
0 → 100644
View file @
9d684267
import
request
from
'
@/assets/js/utils/request
'
// 管理后台保存帮助中心接口格式
export
function
saveAppHelpCenter
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/helpcenter/saveAppHelpCenter
'
,
method
:
'
post
'
,
data
})
}
// 管理后台查询帮助中心列表接口
export
function
queryAppHelpCenterPage
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/helpcenter/queryAppHelpCenterPage
'
,
method
:
'
post
'
,
data
})
}
// 管理后台删除帮助中心接口
export
function
delAppHelpCenter
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/helpcenter/delAppHelpCenter
'
,
method
:
'
post
'
,
data
})
}
This diff is collapsed.
Click to expand it.
src/api/appManagement/menu.js
0 → 100644
View file @
9d684267
import
request
from
'
@/assets/js/utils/request
'
// 查询app首页菜单列表
export
function
queryFunctionListPage
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/function/queryFunctionListPage
'
,
method
:
'
post
'
,
data
})
}
// 保存app首页菜单列表
export
function
saveAppFunction
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/function/saveAppFunction
'
,
method
:
'
post
'
,
data
})
}
// 保存app首页菜单列表
export
function
delAppFunction
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/function/delAppFunction
'
,
method
:
'
post
'
,
data
})
}
This diff is collapsed.
Click to expand it.
src/api/appManagement/msg.js
0 → 100644
View file @
9d684267
import
request
from
'
@/assets/js/utils/request
'
// 管理后台发布消息接口格式
export
function
publishMsg
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/msg/publishMsg
'
,
method
:
'
post
'
,
data
})
}
// 管理后台查询所有消息列表接口
export
function
queryMsgListPageByManage
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/msg/queryMsgListPageByManage
'
,
method
:
'
post
'
,
data
})
}
// 删除管理后台查询所有消息列表接口
export
function
delMsg
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/msg/delMsg
'
,
method
:
'
post
'
,
data
})
}
This diff is collapsed.
Click to expand it.
src/api/appManagement/platform.js
0 → 100644
View file @
9d684267
import
request
from
'
@/assets/js/utils/request
'
// 管理后台分页查询平台配置信息接口
export
function
queryAppPlatformInfoPage
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/platform/queryAppPlatformInfoPage
'
,
method
:
'
post
'
,
data
})
}
// 管理后台保存平台配置信息接口
export
function
saveAppPlatformConfig
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/platform/saveAppPlatformConfig
'
,
method
:
'
post
'
,
data
})
}
// 删除平台配置信息
export
function
delAppPlatformConfig
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/platform/delAppPlatformConfig
'
,
method
:
'
post
'
,
data
})
}
This diff is collapsed.
Click to expand it.
src/api/appManagement/role.js
0 → 100644
View file @
9d684267
import
request
from
'
@/assets/js/utils/request
'
// 查询角色列表
export
function
queryRoleListPage
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/role/queryRoleListPage
'
,
method
:
'
post
'
,
data
})
}
// 保存角色
export
function
saveAppRole
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/role/saveAppRole
'
,
method
:
'
post
'
,
data
})
}
// 删除角色
export
function
delAppRole
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/role/delAppRole
'
,
method
:
'
post
'
,
data
})
}
// 管理后台查询指定角色菜单接口格式
export
function
queryRoleFunction
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/role/queryRoleFunction
'
,
method
:
'
post
'
,
data
})
}
// 管理后台查询指定角色菜单接口格式
export
function
setRoleFunction
(
data
)
{
return
request
({
url
:
'
/bidprocurement/common-app/app/role/setRoleFunction
'
,
method
:
'
post
'
,
data
})
}
This diff is collapsed.
Click to expand it.
src/router/appManagement/index.js
0 → 100644
View file @
9d684267
/*
* 项目管理
* */
import
layout
from
'
@/components/layout/layout
'
export
const
appManagement
=
[{
path
:
'
/appManagement
'
,
component
:
layout
,
children
:
[
{
path
:
'
menu-list
'
,
meta
:
{
path
:
'
menu-list
'
},
component
:
()
=>
import
(
'
@/views/appManagement/menu/menu-list
'
)
},
{
path
:
'
role-list
'
,
meta
:
{
path
:
'
role-list
'
},
component
:
()
=>
import
(
'
@/views/appManagement/role/role-list
'
)
},
{
path
:
'
platformConfig-list
'
,
meta
:
{
path
:
'
platformConfig-list
'
},
component
:
()
=>
import
(
'
@/views/appManagement/platform/platformConfig-list
'
)
},
{
path
:
'
feedback-list
'
,
meta
:
{
path
:
'
feedback-list
'
},
component
:
()
=>
import
(
'
@/views/appManagement/feedback/feedback-list
'
)
},
{
path
:
'
msg-list
'
,
meta
:
{
path
:
'
msg-list
'
},
component
:
()
=>
import
(
'
@/views/appManagement/msg/msg-list
'
)
},
{
path
:
'
appVersion-list
'
,
meta
:
{
path
:
'
appVersion-list
'
},
component
:
()
=>
import
(
'
@/views/appManagement/appVersion/appVersion-list
'
)
},
{
path
:
'
helpcenter-list
'
,
meta
:
{
path
:
'
helpcenter-list
'
},
component
:
()
=>
import
(
'
@/views/appManagement/helpcenter/helpcenter-list
'
)
}
]
}]
export
default
[...
appManagement
]
This diff is collapsed.
Click to expand it.
src/views/appManagement/appVersion/appVersion-list.vue
0 → 100644
View file @
9d684267
<!--
@description: app菜单列表
@Modifier: zxl
@routerPath:
@date: 2020-2-20-14:56
-->
<
template
>
<div>
<table-crud
ref=
"tableCrud"
:search-form.sync=
"searchForm"
search-label-width=
"100px"
:menu=
"true"
@
on-load=
"loadData"
>
<template
v-slot:header
>
版本信息列表
</
template
>
<
template
v-slot:search=
"search"
>
<el-form-item
label=
"系统类型"
prop=
"systemType"
>
<el-input
v-model.trim=
"searchForm.systemType"
placeholder=
"请输入"
@
keyup.enter.native=
"search.onSearch"
/>
<el-select
v-model=
"searchForm.systemType"
placeholder=
"请选择"
style=
"width:228px"
>
<el-option
v-for=
"(item,index) in app_system_typeList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"包名"
prop=
"packageName"
>
<el-input
v-model.trim=
"searchForm.packageName"
placeholder=
"请输入"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
</
template
>
<
template
v-slot:menuLeft
>
<el-button
type=
"primary"
@
click=
"addMenu"
>
新增
</el-button>
</
template
>
<
template
v-slot:GXTable
>
<el-table
ref=
"smallTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"60"
/>
<el-table-column
header-align=
"center"
prop=
"versionNum"
label=
"版本序号"
min-width=
"230"
/>
<el-table-column
header-align=
"center"
prop=
"versionCode"
label=
"版本编号"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"versionDesc"
label=
"版本说明"
min-width=
"230"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"packageName"
label=
"包名"
min-width=
"180"
align=
"center"
/>
<!--
<el-table-column
header-align=
"center"
prop=
"userName"
label=
"用户名称"
min-width=
"180"
align=
"center"
/>
-->
<el-table-column
header-align=
"center"
prop=
"systemType"
label=
"系统类型"
min-width=
"90"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"isMust"
label=
"是否强制"
min-width=
"90"
align=
"center"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
isMust
===
'
01
'
?
'
是
'
:
'
否
'
}}
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
label=
"安装包"
min-width=
"90"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<downloadFile
:data=
"scope.row.fileData"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"125"
>
<
template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click=
"toEdit(scope.row)"
>
[编辑]
</el-link>
<el-link
type=
"primary"
@
click=
"toDel(scope.row,scope.$index)"
>
[删除]
</el-link>
</
template
>
</el-table-column>
</el-table>
</template>
</table-crud>
<!-- <platform-add-dialog v-if="dialogData.flag" :dialog-data="dialogData" @change="callBack" />-->
<appVersionAddDialog
v-if=
"dialogData.flag"
:dialog-data=
"dialogData"
@
change=
"callBack"
/>
</div>
</template>
<
script
>
import
downloadFile
from
'
@comp/common/updownload/downloadFile
'
/* 混合开发方法-参数字段*/
import
{
filterDictText
}
from
'
../../../assets/js/utils
'
import
{
delAppVersion
,
queryAppVersionPage
}
from
'
../../../api/appManagement/appVersion
'
import
appVersionAddDialog
from
'
./appVersionAdd-dialog.vue
'
export
default
{
components
:
{
downloadFile
,
appVersionAddDialog
},
data
()
{
return
{
loading
:
true
,
searchForm
:
{
systemType
:
''
,
// 系统类型
packageName
:
''
// 包名
},
tableData
:
[],
dialogData
:
{
flag
:
false
,
row
:
null
},
app_system_typeList
:
[]
}
},
created
()
{
this
.
initGroup
()
},
methods
:
{
filterDictText
,
// 字典值替换文本通用方法
// 字典请求
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
app_system_type
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 获取数据
loadData
(
params
,
callback
)
{
queryAppVersionPage
(
params
).
then
(
response
=>
{
this
.
tableData
=
(
response
.
data
.
records
||
[]).
map
(
item
=>
{
item
.
fileData
=
{
fileId
:
item
.
id
,
fileType
:
'
app_package_file
'
}
return
item
})
this
.
loading
=
false
callback
(
response
.
data
.
total
)
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
addMenu
()
{
this
.
dialogData
.
row
=
null
this
.
dialogData
.
flag
=
true
},
toEdit
(
row
)
{
this
.
dialogData
.
row
=
row
this
.
dialogData
.
flag
=
true
},
toDel
(
row
,
index
)
{
this
.
$confirm
(
'
确认是否删除该条数据?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
confirmButtonClass
:
'
confirmBtn
'
,
cancelButtonClass
:
'
cancelBtn
'
,
type
:
'
warning
'
}).
then
(()
=>
{
delAppVersion
({
id
:
row
.
id
}).
then
(
res
=>
{
this
.
tableData
.
splice
(
index
,
1
)
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{
})
},
// 详情
handleDetail
(
row
)
{
},
// 操作回调
callBack
()
{
this
.
$refs
.
tableCrud
.
onSearchChange
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.img_pic {
max-height: 50px;
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/appVersion/appVersionAdd-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description:
@author: zxl
@routerPath:
@date: 2022-12-28 15:21
-->
<
template
>
<div>
<el-dialog
v-dialogDrag
:visible.sync=
"dialogData.flag"
:close-on-click-modal=
"false"
title=
"app版本"
width=
"40vw"
custom-class=
"el-dialog__body-p0"
top=
"10vh"
>
<div
class=
"p16"
>
<el-form
ref=
"form"
:model=
"formData"
:rules=
"rules"
:inline-message=
"true"
>
<table
class=
"from_table"
>
<tr>
<td>
<el-form-item
label=
"版本序号"
prop=
"versionNum"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.versionNum"
maxlength=
"11"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"版本编号"
prop=
"versionCode"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.versionCode"
maxlength=
"10"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"包名"
prop=
"packageName"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.packageName"
maxlength=
"50"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"是否强制"
prop=
"isMust"
/>
</td>
<td
colspan=
"3"
>
<el-radio-group
v-model=
"formData.isMust"
>
<el-radio
label=
"00"
>
否
</el-radio>
<el-radio
label=
"01"
>
是
</el-radio>
</el-radio-group>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"系统类型"
prop=
"systemType"
/>
</td>
<td
colspan=
"3"
>
<el-radio-group
v-model=
"formData.systemType"
>
<template
v-for=
"item in app_system_typeList"
>
<el-radio
:key=
"item.typecode"
:label=
"item.typecode"
>
{{
item
.
typename
}}
</el-radio>
</
template
>
</el-radio-group>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"app安装包"
prop=
"packageUrl"
/>
</td>
<td
colspan=
"3"
>
<upload
ref=
"upload"
:data=
"fileData"
:auto-delete=
"true"
:auto-upload=
"true"
title=
""
file-ref=
"fileRef"
class=
"fl"
accept=
".apk"
:on-success=
"changeFile"
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"版本说明"
prop=
"versionDesc"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.versionDesc"
:autosize=
"{ minRows: 2, maxRows: 4 }"
type=
"textarea"
placeholder=
"请输入内容"
maxlength=
"200"
show-word-limit
/>
</td>
</tr>
</table>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
:loading=
"confirmLoading"
type=
"primary"
@
click=
"sure()"
>
确认
</el-button>
<el-button
@
click=
"dialogData.flag=false"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
saveAppVersion
}
from
'
../../../api/appManagement/appVersion
'
import
{
randomData
}
from
'
../../../assets/js/utils
'
import
upload
from
'
@comp/common/updownload/upload
'
import
{
downLoadFileUrl2
}
from
'
@/api/common/uploadCenter
'
export
default
{
components
:
{
upload
},
props
:
{
dialogData
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
formData
:
{
id
:
''
,
versionNum
:
''
,
// 版本序号
versionCode
:
''
,
// 版本编号
versionDesc
:
''
,
// 版本说明
packageName
:
''
,
// 包名
isMust
:
'
00
'
,
systemType
:
'
00
'
,
// 系统类型
packageUrl
:
''
// app下载地址
},
rules
:
{
versionNum
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
versionCode
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
packageName
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}]
},
confirmLoading
:
false
,
app_system_typeList
:
[],
fileData
:
{
fileType
:
'
app_package_file
'
,
bizId
:
''
}
}
},
created
()
{
if
(
!
this
.
dialogData
.
row
)
{
this
.
formData
.
id
=
randomData
()
}
else
{
this
.
formData
=
this
.
dialogData
.
row
}
this
.
fileData
.
bizId
=
this
.
formData
.
id
},
methods
:
{
// 字典请求
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
app_system_type
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 附件上传
changeFile
(
file
,
fileList
)
{
const
f
=
fileList
[
0
]
console
.
log
(
'
ffffff
'
,
f
)
this
.
formData
.
packageUrl
=
downLoadFileUrl2
+
'
?fileId=
'
+
file
.
data
.
fileId
+
'
&fileType=
'
+
this
.
fileData
.
fileType
if
(
f
?.
fileData
?.
fileId
)
{
/* this.formData.fileId = f?.fileData?.fileId*/
}
},
sure
()
{
// 校验输入内容
this
.
$refs
[
'
form
'
].
validate
((
valid
,
field
)
=>
{
if
(
valid
)
{
// 校验通过
this
.
confirmLoading
=
true
saveAppVersion
(
this
.
formData
).
then
(
res
=>
{
this
.
confirmLoading
=
false
this
.
$message
({
type
:
'
success
'
,
message
:
'
操作成功
'
})
this
.
$emit
(
'
change
'
,
true
)
this
.
dialogData
.
flag
=
false
}).
catch
(()
=>
{
this
.
confirmLoading
=
false
})
}
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/feedback/feedback-list.vue
0 → 100644
View file @
9d684267
<!--
@description: app菜单列表
@Modifier: zxl
@routerPath:
@date: 2020-2-20-14:56
-->
<
template
>
<div>
<table-crud
ref=
"tableCrud"
:search-form.sync=
"searchForm"
search-label-width=
"100px"
:menu=
"true"
@
on-load=
"loadData"
>
<template
v-slot:header
>
反馈信息
</
template
>
<
template
v-slot:search=
"search"
>
<el-form-item
label=
"用户名称"
prop=
"userName"
>
<el-input
v-model.trim=
"searchForm.userName"
placeholder=
"请输入"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
<el-form-item
label=
"真实姓名"
prop=
"realName"
>
<el-input
v-model.trim=
"searchForm.realName"
placeholder=
"请输入"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
</
template
>
<!-- <template v-slot:menuLeft>
<el-button type="primary" @click="addMenu">
新增
</el-button>
</template>-->
<
template
v-slot:GXTable
>
<el-table
ref=
"smallTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"60"
/>
<el-table-column
header-align=
"center"
prop=
"feedback"
label=
"意见反馈"
min-width=
"230"
/>
<el-table-column
header-align=
"center"
prop=
"phone"
label=
"联系电话"
min-width=
"180"
align=
"center"
/>
<!--
<el-table-column
header-align=
"center"
prop=
"createUser"
label=
"创建人"
min-width=
"180"
align=
"center"
/>
-->
<el-table-column
header-align=
"center"
prop=
"userName"
label=
"用户名称"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"realName"
label=
"真实姓名"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"createTime"
label=
"创建时间"
min-width=
"180"
align=
"center"
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"125"
>
<template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click=
"toDetail(scope.row)"
>
[查看详情]
</el-link>
</
template
>
</el-table-column>
</el-table>
</template>
</table-crud>
<!-- <platform-add-dialog v-if="dialogData.flag" :dialog-data="dialogData" @change="callBack" />-->
<feedback-detail-dialog
v-if=
"dialogData.flag"
:dialog-data=
"dialogData"
/>
</div>
</template>
<
script
>
/* 混合开发方法-参数字段*/
import
{
filterDictText
}
from
'
../../../assets/js/utils
'
import
{
queryFeedbackListPage
}
from
'
../../../api/appManagement/feedback
'
import
feedbackDetailDialog
from
'
./feedbackDetail-dialog
'
export
default
{
components
:
{
feedbackDetailDialog
},
data
()
{
return
{
loading
:
true
,
searchForm
:
{
userName
:
''
,
// 用户名称
realName
:
''
// 真实姓名
},
tableData
:
[],
dialogData
:
{
flag
:
false
,
row
:
null
}
}
},
created
()
{
this
.
initGroup
()
},
methods
:
{
filterDictText
,
// 字典值替换文本通用方法
// 字典请求
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
appType
'
,
'
appCategory
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 获取数据
loadData
(
params
,
callback
)
{
queryFeedbackListPage
(
params
).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
records
this
.
loading
=
false
callback
(
response
.
data
.
total
)
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
addMenu
()
{
this
.
dialogData
.
row
=
null
this
.
dialogData
.
flag
=
true
},
toDetail
(
row
)
{
this
.
dialogData
.
row
=
row
this
.
dialogData
.
flag
=
true
},
toDel
(
row
,
index
)
{
this
.
$confirm
(
'
确认是否删除该条数据?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
confirmButtonClass
:
'
confirmBtn
'
,
cancelButtonClass
:
'
cancelBtn
'
,
type
:
'
warning
'
}).
then
(()
=>
{
/* delAppPlatformConfig({ id: row.id }).then(res => {
this.tableData.splice(index, 1)
}).catch(() => {
})*/
}).
catch
(()
=>
{
})
},
// 详情
handleDetail
(
row
)
{
},
// 操作回调
callBack
()
{
this
.
$refs
.
tableCrud
.
onSearchChange
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.img_pic {
max-height: 50px;
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/feedback/feedbackDetail-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description:
@author: zxl
@routerPath:
@date: 2023-08-01 14:34
-->
<
template
>
<div>
<el-dialog
v-dialogDrag
:visible.sync=
"dialogData.flag"
:close-on-click-modal=
"false"
title=
"反馈信息"
width=
"40vw"
custom-class=
"el-dialog__body-p0"
top=
"10vh"
>
<div
class=
"p16"
>
<el-form
ref=
"form"
:model=
"formData"
:inline-message=
"true"
>
<table
class=
"from_table"
>
<tr>
<td>
<el-form-item
label=
"意见反馈"
/>
</td>
<td
colspan=
"3"
>
{{
formData
.
feedback
}}
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"联系电话"
/>
</td>
<td
colspan=
"3"
>
{{
formData
.
phone
}}
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"创建人"
/>
</td>
<td
colspan=
"3"
>
{{
formData
.
createUser
}}
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"创建时间"
/>
</td>
<td
colspan=
"3"
>
{{
formData
.
createTime
}}
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"用户名称"
/>
</td>
<td
colspan=
"3"
>
{{
formData
.
userName
}}
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"真实姓名"
/>
</td>
<td
colspan=
"3"
>
{{
formData
.
realName
}}
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"附件"
/>
</td>
<td
colspan=
"3"
>
<downloadFile
:data=
"fileData"
/>
</td>
</tr>
</table>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
@
click=
"dialogData.flag=false"
>
关闭
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
downloadFile
from
'
@comp/common/updownload/downloadFile
'
// 获取附件信息 下载组件
export
default
{
name
:
'
FeedbackDetailDialog
'
,
components
:
{
downloadFile
},
props
:
{
dialogData
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
fileData
:
{
fileType
:
'
app_feedback_file
'
,
bizId
:
''
}
}
},
created
()
{
this
.
formData
=
this
.
dialogData
.
row
this
.
fileData
.
bizId
=
this
.
dialogData
.
row
.
id
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/helpcenter/helpcenter-list.vue
0 → 100644
View file @
9d684267
<!--
@description: app菜单列表
@Modifier: zxl
@routerPath:
@date: 2020-2-20-14:56
-->
<
template
>
<div>
<table-crud
ref=
"tableCrud"
:search-form.sync=
"searchForm"
search-label-width=
"100px"
:menu=
"true"
@
on-load=
"loadData"
>
<template
v-slot:header
>
帮助中心管理列表
</
template
>
<
template
v-slot:search=
"search"
>
<el-form-item
label=
"标题"
prop=
"title"
>
<el-input
v-model.trim=
"searchForm.title"
placeholder=
"请输入"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
</
template
>
<
template
v-slot:menuLeft
>
<el-button
type=
"primary"
@
click=
"addMenu"
>
新增
</el-button>
</
template
>
<
template
v-slot:GXTable
>
<el-table
ref=
"smallTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"60"
/>
<el-table-column
header-align=
"center"
prop=
"title"
label=
"标题"
min-width=
"230"
/>
<el-table-column
header-align=
"center"
prop=
"content"
label=
"内容"
min-width=
"270"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"detailUrl"
label=
"详情地址"
min-width=
"230"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"createTime"
label=
"创建时间"
min-width=
"180"
align=
"center"
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"125"
>
<template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click=
"toEdit(scope.row)"
>
[编辑]
</el-link>
<el-link
type=
"primary"
@
click=
"toDel(scope.row,scope.$index)"
>
[删除]
</el-link>
</
template
>
</el-table-column>
</el-table>
</template>
</table-crud>
<!-- <platform-add-dialog v-if="dialogData.flag" :dialog-data="dialogData" @change="callBack" />-->
<helpcenter-add-dialog
v-if=
"dialogData.flag"
:dialog-data=
"dialogData"
@
change=
"callBack"
/>
</div>
</template>
<
script
>
/* 混合开发方法-参数字段*/
import
{
filterDictText
}
from
'
../../../assets/js/utils
'
import
{
delAppHelpCenter
,
queryAppHelpCenterPage
}
from
'
../../../api/appManagement/helpCenter
'
import
helpcenterAddDialog
from
'
./helpcenterAdd-dialog
'
export
default
{
components
:
{
helpcenterAddDialog
},
data
()
{
return
{
loading
:
true
,
searchForm
:
{
title
:
''
// 标题
},
tableData
:
[],
dialogData
:
{
flag
:
false
,
row
:
null
}
}
},
created
()
{
this
.
initGroup
()
},
methods
:
{
filterDictText
,
// 字典值替换文本通用方法
// 字典请求
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
appType
'
,
'
appCategory
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 获取数据
loadData
(
params
,
callback
)
{
queryAppHelpCenterPage
(
params
).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
records
this
.
loading
=
false
callback
(
response
.
data
.
total
)
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
addMenu
()
{
this
.
dialogData
.
row
=
null
this
.
dialogData
.
flag
=
true
},
toEdit
(
row
)
{
this
.
dialogData
.
row
=
row
this
.
dialogData
.
flag
=
true
},
toDel
(
row
,
index
)
{
this
.
$confirm
(
'
确认是否删除该条数据?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
confirmButtonClass
:
'
confirmBtn
'
,
cancelButtonClass
:
'
cancelBtn
'
,
type
:
'
warning
'
}).
then
(()
=>
{
delAppHelpCenter
({
id
:
row
.
id
}).
then
(
res
=>
{
this
.
tableData
.
splice
(
index
,
1
)
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{
})
},
// 详情
handleDetail
(
row
)
{
},
// 操作回调
callBack
()
{
this
.
$refs
.
tableCrud
.
onSearchChange
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.img_pic {
max-height: 50px;
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/helpcenter/helpcenterAdd-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description:
@author: zxl
@routerPath:
@date: 2022-12-28 15:21
-->
<
template
>
<div>
<el-dialog
v-dialogDrag
:visible.sync=
"dialogData.flag"
:close-on-click-modal=
"false"
title=
"帮助中心"
width=
"40vw"
custom-class=
"el-dialog__body-p0"
top=
"10vh"
>
<div
class=
"p16"
>
<el-form
ref=
"form"
:model=
"formData"
:rules=
"rules"
:inline-message=
"true"
>
<table
class=
"from_table"
>
<tr>
<td>
<el-form-item
label=
"标题"
prop=
"title"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.title"
maxlength=
"200"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"详情地址"
prop=
"detailUrl"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.detailUrl"
maxlength=
"200"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"内容"
prop=
"content"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.content"
:autosize=
"
{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
maxlength="10000"
/>
</td>
</tr>
</table>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
:loading=
"confirmLoading"
type=
"primary"
@
click=
"sure()"
>
确认
</el-button>
<el-button
@
click=
"dialogData.flag=false"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
saveAppHelpCenter
}
from
'
../../../api/appManagement/helpCenter
'
export
default
{
components
:
{
},
props
:
{
dialogData
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
formData
:
{
id
:
''
,
title
:
''
,
// 标题
detailUrl
:
''
,
// 详情地址
content
:
''
// 内容
},
rules
:
{
title
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
content
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}]
},
confirmLoading
:
false
}
},
created
()
{
if
(
this
.
dialogData
.
row
)
{
this
.
formData
=
this
.
dialogData
.
row
}
},
methods
:
{
// 附件上传
changeFile
(
file
,
fileList
)
{
const
f
=
fileList
[
0
]
console
.
log
(
'
ffffff
'
,
f
)
if
(
f
?.
fileData
?.
fileId
)
{
/* this.formData.fileId = f?.fileData?.fileId*/
}
},
sure
()
{
// 校验输入内容
this
.
$refs
[
'
form
'
].
validate
((
valid
,
field
)
=>
{
if
(
valid
)
{
// 校验通过
this
.
confirmLoading
=
true
saveAppHelpCenter
(
this
.
formData
).
then
(
res
=>
{
this
.
confirmLoading
=
false
this
.
$message
({
type
:
'
success
'
,
message
:
'
操作成功
'
})
this
.
$emit
(
'
change
'
,
true
)
this
.
dialogData
.
flag
=
false
}).
catch
(()
=>
{
this
.
confirmLoading
=
false
})
}
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/menu/menu-list.vue
0 → 100644
View file @
9d684267
<!--
@description: app菜单列表
@Modifier: zxl
@routerPath:
@date: 2020-2-20-14:56
-->
<
template
>
<div>
<table-crud
ref=
"tableCrud"
:search-form.sync=
"searchForm"
search-label-width=
"100px"
:menu=
"true"
@
on-load=
"loadData"
>
<template
v-slot:header
>
app菜单列表
</
template
>
<
template
v-slot:search=
"search"
>
<el-form-item
label=
"应用名称"
prop=
"appName"
>
<el-input
v-model.trim=
"searchForm.appName"
placeholder=
"应用名称"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
<el-form-item
label=
"应用状态"
prop=
"appStatus"
>
<el-select
v-model=
"searchForm.appStatus"
placeholder=
"请选择"
style=
"width:228px"
>
<el-option
v-for=
"(item,index) in appStatusList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"应用类型"
prop=
"appType"
>
<el-select
v-model=
"searchForm.appType"
placeholder=
"请选择"
style=
"width:228px"
>
<el-option
v-for=
"(item,index) in appTypeList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"应用类别"
prop=
"appType"
>
<el-select
v-model=
"searchForm.appCategory"
placeholder=
"请选择"
style=
"width:228px"
>
<el-option
v-for=
"(item,index) in appCategoryList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</el-form-item>
</
template
>
<
template
v-slot:menuLeft
>
<el-button
type=
"primary"
@
click=
"addMenu"
>
新增
</el-button>
</
template
>
<
template
v-slot:GXTable
>
<el-table
ref=
"smallTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"60"
/>
<el-table-column
header-align=
"center"
prop=
"appName"
label=
"app名称"
min-width=
"230"
/>
<el-table-column
header-align=
"center"
prop=
"appStatus"
label=
"应用状态"
min-width=
"100"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
filterDictText
(
appStatusList
,
scope
.
row
.
appStatus
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
prop=
"appType"
label=
"应用类型"
min-width=
"100"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span>
{{
filterDictText
(
appTypeList
,
scope
.
row
.
appType
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
prop=
"appCategory"
label=
"应用类别"
min-width=
"100"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span>
{{
filterDictText
(
appCategoryList
,
scope
.
row
.
appCategory
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
prop=
"appVersion"
label=
"应用版本号"
min-width=
"100"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"appUrl"
label=
"应用路径"
min-width=
"230"
/>
<el-table-column
prop=
"icoFavicon"
align=
"center"
width=
"80"
label=
"应用图标"
>
<
template
slot-scope=
"scope"
>
<img
:src=
"scope.row.appIcon"
alt
class=
"img_pic"
>
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
prop=
"isNew"
label=
"是否上新"
min-width=
"90"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
isNew
===
'
01
'
?
'
是
'
:
'
否
'
}}
</span>
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
prop=
"sort"
label=
"排序"
min-width=
"90"
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"125"
>
<
template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click=
"toEdit(scope.row)"
>
[编辑]
</el-link>
<el-link
type=
"primary"
@
click=
"toDel(scope.row,scope.$index)"
>
[删除]
</el-link>
</
template
>
</el-table-column>
</el-table>
</template>
</table-crud>
<menu-add-dialog
v-if=
"dialogData.flag"
:dialog-data=
"dialogData"
@
change=
"callBack"
/>
</div>
</template>
<
script
>
/* 混合开发方法-参数字段*/
import
{
filterDictText
}
from
'
../../../assets/js/utils
'
import
{
delAppFunction
,
queryFunctionListPage
}
from
'
../../../api/appManagement/menu
'
import
menuAddDialog
from
'
./menuAdd-dialog.vue
'
export
default
{
components
:
{
menuAddDialog
},
data
()
{
return
{
loading
:
true
,
searchForm
:
{
appName
:
''
,
// 应用名称
appStatus
:
''
,
// 应用状态
appType
:
''
,
// 应用类型
appCategory
:
''
// app类别 00:H5;01:小程序;02:原生;
},
tableData
:
[],
appTypeList
:
[],
appCategoryList
:
[],
appStatusList
:
[
{
typename
:
'
下架
'
,
typecode
:
'
00
'
},
{
typename
:
'
上架
'
,
typecode
:
'
01
'
}
],
dialogData
:
{
flag
:
false
,
row
:
null
}
}
},
created
()
{
this
.
initGroup
()
},
methods
:
{
filterDictText
,
// 字典值替换文本通用方法
// 字典请求
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
appType
'
,
'
appCategory
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 获取数据
loadData
(
params
,
callback
)
{
queryFunctionListPage
(
params
).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
records
this
.
loading
=
false
callback
(
response
.
data
.
total
)
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
addMenu
()
{
this
.
dialogData
.
row
=
null
this
.
dialogData
.
flag
=
true
},
toEdit
(
row
)
{
this
.
dialogData
.
row
=
row
this
.
dialogData
.
flag
=
true
},
toDel
(
row
,
index
)
{
this
.
$confirm
(
'
确认是否删除该条数据?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
confirmButtonClass
:
'
confirmBtn
'
,
cancelButtonClass
:
'
cancelBtn
'
,
type
:
'
warning
'
}).
then
(()
=>
{
delAppFunction
({
id
:
row
.
id
}).
then
(
res
=>
{
this
.
tableData
.
splice
(
index
,
1
)
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{
})
},
// 操作回调
callBack
()
{
this
.
$refs
.
tableCrud
.
onSearchChange
()
},
// 详情
handleDetail
(
row
)
{
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.img_pic {
max-height: 50px;
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/menu/menuAdd-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description:
@author: zxl
@routerPath:
@date: 2022-12-28 15:21
-->
<
template
>
<div>
<el-dialog
v-dialogDrag
:visible.sync=
"dialogData.flag"
:close-on-click-modal=
"false"
title=
"菜单"
width=
"40vw"
custom-class=
"el-dialog__body-p0"
top=
"10vh"
>
<div
class=
"p16"
>
<el-form
ref=
"form"
:model=
"formData"
:rules=
"rules"
:inline-message=
"true"
>
<table
class=
"from_table"
>
<tr>
<td>
<el-form-item
label=
"应用名称"
prop=
"appName"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.appName"
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"应用状态"
prop=
"appStatus"
/>
</td>
<td
colspan=
"3"
>
<el-select
v-model=
"formData.appStatus"
placeholder=
"请选择"
style=
"width:100%"
>
<el-option
v-for=
"(item,index) in appStatusList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"应用类型"
prop=
"appType"
/>
</td>
<td
colspan=
"3"
>
<el-select
v-model=
"formData.appType"
placeholder=
"请选择"
style=
"width:100%"
>
<el-option
v-for=
"(item,index) in appTypeList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"应用类别"
prop=
"appCategory"
/>
</td>
<td
colspan=
"3"
>
<el-select
v-model=
"formData.appCategory"
placeholder=
"请选择"
style=
"width:100%"
>
<el-option
v-for=
"(item,index) in appCategoryList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"应用版本号"
prop=
"appVersion"
/>
</td>
<td
colspan=
"3"
>
<el-input-number
v-model=
"formData.appVersion"
:precision=
"2"
:step=
"0.1"
:controls=
"false"
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"应用图标"
prop=
"appIcon"
/>
</td>
<td
colspan=
"3"
>
<upload
ref=
"upload"
:data=
"fileData"
:auto-delete=
"true"
:auto-upload=
"true"
title=
""
file-ref=
"fileRef"
class=
"fl"
accept=
"image/jpg,image/jpeg,image/png"
:success=
"changeFile"
:limit=
"1"
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"应用路径"
prop=
"appUrl"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.appUrl"
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"上新状态"
prop=
"isNew"
/>
</td>
<td
colspan=
"3"
>
<el-radio-group
v-model=
"formData.isNew"
>
<el-radio
label=
"01"
>
是
</el-radio>
<el-radio
label=
"00"
>
否
</el-radio>
</el-radio-group>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"应用说明"
prop=
"appDescripion"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.appDescripion"
:autosize=
"
{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"排序"
prop=
"sort"
/>
</td>
<td
colspan=
"3"
>
<el-input-number
v-model=
"formData.sort"
:min=
"0"
:max=
"99"
:controls=
"false"
/>
</td>
</tr>
</table>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
:loading=
"confirmLoading"
type=
"primary"
@
click=
"sure()"
>
确认
</el-button>
<el-button
@
click=
"dialogData.flag=false"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
downloadFile
from
'
@comp/common/updownload/downloadFile
'
import
upload
from
'
@comp/common/updownload/upload
'
import
{
randomData
}
from
'
../../../assets/js/utils
'
import
{
saveAppFunction
}
from
'
../../../api/appManagement/menu
'
// 附件上传组件
import
{
getFileDetail
}
from
'
@/api/common/uploadCenter
'
import
{
readImageRoot2
}
from
'
../../../api/common/uploadCenter
'
export
default
{
components
:
{
downloadFile
,
upload
,
getFileDetail
},
props
:
{
dialogData
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
formData
:
{
id
:
''
,
appName
:
''
,
// 应用名称
appStatus
:
''
,
// 应用状态
appType
:
''
,
// 应用类型
appCategory
:
''
,
// app类别 00:H5;01:小程序;02:原生;
appVersion
:
''
,
// 版本号
appIcon
:
''
,
// 应用图标
appUrl
:
''
,
// app路径
isNew
:
''
,
// 上新状态
appDescripion
:
''
,
// 应用说明
sort
:
0
,
// 排序
fileFlag
:
null
},
rules
:
{
appName
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
appStatus
:
[{
required
:
true
,
message
:
'
请选择
'
,
trigger
:
'
blur
'
}],
appType
:
[{
required
:
true
,
message
:
'
请选择
'
,
trigger
:
'
blur
'
}],
appCategory
:
[{
required
:
true
,
message
:
'
请选择
'
,
trigger
:
'
blur
'
}],
appVersion
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
appIcon
:
[{
required
:
true
,
message
:
'
请上传
'
,
trigger
:
'
blur
'
}],
appUrl
:
[{
required
:
true
,
message
:
'
请输入
'
,
trigger
:
'
blur
'
}],
isNew
:
[{
required
:
true
,
message
:
'
请选择
'
,
trigger
:
'
blur
'
}],
appDescripion
:
[{
required
:
true
,
message
:
'
请输入
'
,
trigger
:
'
blur
'
}]
},
appTypeList
:
[],
appCategoryList
:
[],
appStatusList
:
[
{
typename
:
'
下架
'
,
typecode
:
'
00
'
},
{
typename
:
'
上架
'
,
typecode
:
'
01
'
}
],
fileData
:
{
fileType
:
'
app_function_icon
'
,
bizId
:
''
},
readImageUrl
:
readImageRoot2
,
// 预览图片
confirmLoading
:
false
}
},
created
()
{
this
.
formData
.
fileFlag
=
null
if
(
!
this
.
dialogData
.
row
)
{
this
.
formData
.
id
=
randomData
()
}
else
{
this
.
formData
=
this
.
dialogData
.
row
}
this
.
fileData
.
bizId
=
this
.
formData
.
id
this
.
initGroup
()
},
methods
:
{
// 获取字典方法
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
appType
'
,
'
appCategory
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 附件上传
changeFile
(
file
,
fileList
)
{
const
f
=
fileList
[
0
]
console
.
log
(
'
ffffff
'
,
f
)
console
.
log
(
'
ffffff
'
,
file
)
if
(
f
?.
fileData
?.
fileId
)
{
/* this.formData.fileId = f?.fileData?.fileId*/
}
getFileDetail
(
this
.
fileData
).
then
(
response
=>
{
this
.
formData
.
appIcon
=
this
.
readImageUrl
+
response
.
data
[
0
].
path
})
},
sure
()
{
// 校验输入内容
this
.
$refs
[
'
form
'
].
validate
((
valid
,
field
)
=>
{
if
(
valid
)
{
// 校验通过
this
.
confirmLoading
=
true
saveAppFunction
(
this
.
formData
).
then
(
res
=>
{
this
.
confirmLoading
=
false
this
.
$message
({
type
:
'
success
'
,
message
:
'
操作成功
'
})
this
.
$emit
(
'
change
'
,
true
)
this
.
dialogData
.
flag
=
false
}).
catch
(()
=>
{
this
.
confirmLoading
=
false
})
}
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/msg/msg-list.vue
0 → 100644
View file @
9d684267
<!--
@description: app菜单列表
@Modifier: zxl
@routerPath:
@date: 2020-2-20-14:56
-->
<
template
>
<div>
<table-crud
ref=
"tableCrud"
:search-form.sync=
"searchForm"
search-label-width=
"100px"
:menu=
"true"
@
on-load=
"loadData"
>
<template
v-slot:header
>
推送消息列表
</
template
>
<
template
v-slot:search=
"search"
>
<el-form-item
label=
"消息标题"
prop=
"msgTitle"
>
<el-input
v-model.trim=
"searchForm.msgTitle"
placeholder=
"请输入"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
<el-form-item
label=
"消息类型"
prop=
"msgType"
>
<el-select
v-model=
"searchForm.msgType"
placeholder=
"请选择"
style=
"width:228px"
>
<el-option
v-for=
"(item,index) in msgTypeList"
:key=
"index"
:label=
"item.typename"
:value=
"item.typecode"
/>
</el-select>
</el-form-item>
</
template
>
<
template
v-slot:menuLeft
>
<el-button
type=
"primary"
@
click=
"addMenu"
>
新增
</el-button>
</
template
>
<
template
v-slot:GXTable
>
<el-table
ref=
"smallTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"60"
/>
<el-table-column
header-align=
"center"
prop=
"msgTitle"
label=
"消息标题"
min-width=
"200"
/>
<el-table-column
header-align=
"center"
prop=
"msgContent"
label=
"消息内容"
min-width=
"230"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"msgType"
label=
"消息类型"
min-width=
"80"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
filterDictText
(
msgTypeList
,
scope
.
row
.
msgType
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
prop=
"msgUserName"
label=
"发消息的人"
min-width=
"180"
align=
"center"
/>
<!-- <el-table-column
header-align="center"
prop="msgUserId"
label="发消息人id"
min-width="180"
align="center"
/>
<el-table-column
header-align="center"
prop="msgDepartId"
label="消息发起单位id"
min-width="180"
align="center"
/>-->
<el-table-column
header-align=
"center"
prop=
"msgDepartName"
label=
"消息发起单位名称"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"msgUrl"
label=
"消息源地址"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"receiveUser"
label=
"接收人用户名"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"readStatus"
label=
"阅读状态"
min-width=
"180"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.msgType === '02'"
>
{{
scope
.
row
.
readStatus
===
'
01
'
?
'
已读
'
:
'
未读
'
}}
</span>
</
template
>
</el-table-column>
<el-table-column
header-align=
"center"
prop=
"readTime"
label=
"阅读时间"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"createTime"
label=
"创建时间"
min-width=
"180"
align=
"center"
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"125"
>
<
template
slot-scope=
"scope"
>
<!--
<el-link
type=
"primary"
@
click=
"toEdit(scope.row)"
>
[编辑]
</el-link>
-->
<el-link
type=
"primary"
@
click=
"toDel(scope.row,scope.$index)"
>
[删除]
</el-link>
</
template
>
</el-table-column>
</el-table>
</template>
</table-crud>
<!-- <platform-add-dialog v-if="dialogData.flag" :dialog-data="dialogData" @change="callBack" />-->
<msg-add-dialog
v-if=
"dialogData.flag"
:dialog-data=
"dialogData"
@
change=
"callBack"
/>
</div>
</template>
<
script
>
/* 混合开发方法-参数字段*/
import
{
filterDictText
}
from
'
../../../assets/js/utils
'
import
{
delMsg
,
queryMsgListPageByManage
}
from
'
../../../api/appManagement/msg
'
import
msgAddDialog
from
'
./msgAdd-dialog
'
export
default
{
components
:
{
msgAddDialog
},
data
()
{
return
{
loading
:
true
,
searchForm
:
{
msgTitle
:
''
,
// 消息标题
msgType
:
''
// 消息类型01公开消息02指定消息
},
tableData
:
[],
msgTypeList
:
[{
typename
:
'
公开消息
'
,
typecode
:
'
01
'
},
{
typename
:
'
指定消息
'
,
typecode
:
'
02
'
}],
dialogData
:
{
flag
:
false
,
row
:
null
}
}
},
created
()
{
/* this.initGroup()*/
},
methods
:
{
filterDictText
,
// 字典值替换文本通用方法
// 字典请求
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
appType
'
,
'
appCategory
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 获取数据
loadData
(
params
,
callback
)
{
queryMsgListPageByManage
(
params
).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
records
this
.
loading
=
false
callback
(
response
.
data
.
total
)
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
addMenu
()
{
this
.
dialogData
.
row
=
null
this
.
dialogData
.
flag
=
true
},
toEdit
(
row
)
{
this
.
dialogData
.
row
=
row
this
.
dialogData
.
flag
=
true
},
toDel
(
row
,
index
)
{
this
.
$confirm
(
'
确认是否删除该条数据?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
confirmButtonClass
:
'
confirmBtn
'
,
cancelButtonClass
:
'
cancelBtn
'
,
type
:
'
warning
'
}).
then
(()
=>
{
/* delAppPlatformConfig({ id: row.id }).then(res => {
this.tableData.splice(index, 1)
}).catch(() => {
})*/
delMsg
({
id
:
row
.
id
}).
then
(
res
=>
{
this
.
tableData
.
splice
(
index
,
1
)
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{
})
},
// 详情
handleDetail
(
row
)
{
},
// 操作回调
callBack
()
{
this
.
$refs
.
tableCrud
.
onSearchChange
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.img_pic {
max-height: 50px;
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/msg/msgAdd-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description:
@author: zxl
@routerPath:
@date: 2022-12-28 15:21
-->
<
template
>
<div>
<el-dialog
v-dialogDrag
:visible.sync=
"dialogData.flag"
:close-on-click-modal=
"false"
title=
"平台信息"
width=
"40vw"
custom-class=
"el-dialog__body-p0"
top=
"10vh"
>
<div
class=
"p16"
>
<el-form
ref=
"form"
:model=
"formData"
:rules=
"rules"
:inline-message=
"true"
>
<table
class=
"from_table"
>
<tr>
<td>
<el-form-item
label=
"消息标题"
prop=
"msgTitle"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.msgTitle"
maxlength=
"200"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"消息类型"
prop=
"msgType"
/>
</td>
<td
colspan=
"3"
>
<el-radio-group
v-model=
"formData.msgType"
>
<el-radio
label=
"01"
>
公开消息
</el-radio>
<el-radio
label=
"02"
>
指定消息
</el-radio>
</el-radio-group>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"消息源地址"
prop=
"msgUrl"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.msgUrl"
maxlength=
"200"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"消息发起人"
prop=
"msgUserName"
/>
</td>
<td>
<el-input
v-model=
"formData.msgUserName"
maxlength=
"50"
show-word-limit
/>
</td>
<!--
<td
colspan=
"3"
>
<el-input
v-model=
"formData.platformDesc"
:autosize=
"
{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
/>
</td>
-->
</tr>
<!--
<tr>
<td>
<el-form-item
label=
"消息发送人id"
prop=
"msgUserId"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.msgUserId"
maxlength=
"32"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"消息发起单位id"
prop=
"msgDepartId"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.msgDepartId"
maxlength=
"32"
show-word-limit
/>
</td>
</tr>
-->
<tr>
<td>
<el-form-item
label=
"消息发起单位名称"
prop=
"msgDepartName"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.msgDepartName"
maxlength=
"100"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"接收人用户名"
:prop=
"formData.msgType==='01'?'':'receiveUser'"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.receiveUser"
maxlength=
"32"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"消息内容"
prop=
"msgContent"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.msgContent"
:autosize=
"
{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
maxlength="10000"
/>
</td>
</tr>
</table>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
:loading=
"confirmLoading"
type=
"primary"
@
click=
"sure()"
>
确认
</el-button>
<el-button
@
click=
"dialogData.flag=false"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
publishMsg
}
from
'
../../../api/appManagement/msg
'
export
default
{
components
:
{
},
props
:
{
dialogData
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
formData
:
{
id
:
''
,
msgTitle
:
''
,
// 消息标题
msgContent
:
''
,
// 消息内容
msgType
:
'
01
'
,
// 消息类型
msgUrl
:
''
,
// 消息源地址
msgUserName
:
''
,
// 消息发起人
msgUserId
:
''
,
// 消息发送人id
msgDepartId
:
''
,
// 消息发起单位id
msgDepartName
:
''
,
// 消息发起单位名称
receiveUser
:
''
// 接收人用户名
},
rules
:
{
msgTitle
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
msgContent
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
msgType
:
[{
required
:
true
,
message
:
'
请选择
'
,
trigger
:
'
blur
'
}],
receiveUser
:
[{
required
:
true
,
message
:
'
请输入
'
,
trigger
:
'
blur
'
}]
},
confirmLoading
:
false
}
},
created
()
{
if
(
this
.
dialogData
.
row
)
{
this
.
formData
=
this
.
dialogData
.
row
}
},
methods
:
{
// 附件上传
changeFile
(
file
,
fileList
)
{
const
f
=
fileList
[
0
]
console
.
log
(
'
ffffff
'
,
f
)
if
(
f
?.
fileData
?.
fileId
)
{
/* this.formData.fileId = f?.fileData?.fileId*/
}
},
sure
()
{
// 校验输入内容
this
.
$refs
[
'
form
'
].
validate
((
valid
,
field
)
=>
{
if
(
valid
)
{
// 校验通过
this
.
confirmLoading
=
true
publishMsg
(
this
.
formData
).
then
(
res
=>
{
this
.
confirmLoading
=
false
this
.
$message
({
type
:
'
success
'
,
message
:
'
操作成功
'
})
this
.
$emit
(
'
change
'
,
true
)
this
.
dialogData
.
flag
=
false
}).
catch
(()
=>
{
this
.
confirmLoading
=
false
})
}
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/platform/platformAdd-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description:
@author: zxl
@routerPath:
@date: 2022-12-28 15:21
-->
<
template
>
<div>
<el-dialog
v-dialogDrag
:visible.sync=
"dialogData.flag"
:close-on-click-modal=
"false"
title=
"平台信息"
width=
"40vw"
custom-class=
"el-dialog__body-p0"
top=
"10vh"
>
<div
class=
"p16"
>
<el-form
ref=
"form"
:model=
"formData"
:rules=
"rules"
:inline-message=
"true"
>
<table
class=
"from_table"
>
<tr>
<td>
<el-form-item
label=
"应用名称"
prop=
"platformName"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.platformName"
placeholder=
"最多允许输入20个字符"
maxlength=
"20"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"客服电话"
prop=
"serviceTel"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.serviceTel"
placeholder=
"最多允许输入20个字符"
maxlength=
"20"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"客服qq"
prop=
"serviceQq"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.serviceQq"
placeholder=
"最多允许输入20个字符"
maxlength=
"20"
show-word-limit
/>
</td>
</tr>
<tr>
<td>
<el-form-item
label=
"平台说明"
prop=
"platformDesc"
/>
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"formData.platformDesc"
:autosize=
"
{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
/>
</td>
</tr>
</table>
</el-form>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
:loading=
"confirmLoading"
type=
"primary"
@
click=
"sure()"
>
确认
</el-button>
<el-button
@
click=
"dialogData.flag=false"
>
取消
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
saveAppPlatformConfig
}
from
'
../../../api/appManagement/platform
'
import
{
checkLinktel
}
from
'
../../../assets/js/validate
'
export
default
{
components
:
{
},
props
:
{
dialogData
:
{
type
:
Object
,
default
:
()
=>
{}
}
},
data
()
{
return
{
formData
:
{
id
:
''
,
platformName
:
''
,
// 平台名称
platformDesc
:
''
,
// 平台说明
serviceTel
:
''
,
// 客服电话
serviceQq
:
''
// 客服qq
},
rules
:
{
platformName
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
platformDesc
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
serviceQq
:
[{
required
:
true
,
message
:
'
不能为空
'
,
trigger
:
'
blur
'
}],
serviceTel
:
[{
required
:
true
,
validator
:
checkLinktel
,
trigger
:
'
blur
'
}]
// 电话
},
confirmLoading
:
false
}
},
created
()
{
if
(
this
.
dialogData
.
row
)
{
this
.
formData
=
this
.
dialogData
.
row
}
},
methods
:
{
// 附件上传
changeFile
(
file
,
fileList
)
{
const
f
=
fileList
[
0
]
console
.
log
(
'
ffffff
'
,
f
)
if
(
f
?.
fileData
?.
fileId
)
{
/* this.formData.fileId = f?.fileData?.fileId*/
}
},
sure
()
{
// 校验输入内容
this
.
$refs
[
'
form
'
].
validate
((
valid
,
field
)
=>
{
if
(
valid
)
{
// 校验通过
this
.
confirmLoading
=
true
saveAppPlatformConfig
(
this
.
formData
).
then
(
res
=>
{
this
.
confirmLoading
=
false
this
.
$message
({
type
:
'
success
'
,
message
:
'
操作成功
'
})
this
.
$emit
(
'
change
'
,
true
)
this
.
dialogData
.
flag
=
false
}).
catch
(()
=>
{
this
.
confirmLoading
=
false
})
}
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/platform/platformConfig-list.vue
0 → 100644
View file @
9d684267
<!--
@description: app菜单列表
@Modifier: zxl
@routerPath:
@date: 2020-2-20-14:56
-->
<
template
>
<div>
<table-crud
ref=
"tableCrud"
:search-form.sync=
"searchForm"
search-label-width=
"100px"
:menu=
"true"
@
on-load=
"loadData"
>
<template
v-slot:header
>
配置管理
</
template
>
<
template
v-slot:search=
"search"
>
<el-form-item
label=
"平台名称"
prop=
"platformName"
>
<el-input
v-model.trim=
"searchForm.platformName"
placeholder=
"请输入"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
</
template
>
<
template
v-slot:menuLeft
>
<el-button
type=
"primary"
@
click=
"addMenu"
>
新增
</el-button>
</
template
>
<
template
v-slot:GXTable
>
<el-table
ref=
"smallTable"
v-loading=
"loading"
:data=
"tableData"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"60"
/>
<el-table-column
header-align=
"center"
prop=
"platformName"
label=
"平台名称"
min-width=
"230"
/>
<el-table-column
header-align=
"center"
prop=
"platformDesc"
label=
"平台说明"
min-width=
"230"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"serviceTel"
label=
"客服电话"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"serviceQq"
label=
"客服qq"
min-width=
"180"
align=
"center"
/>
<el-table-column
header-align=
"center"
prop=
"createTime"
label=
"创建时间"
min-width=
"180"
align=
"center"
/>
<el-table-column
label=
"操作"
align=
"center"
width=
"125"
>
<template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click=
"toEdit(scope.row)"
>
[编辑]
</el-link>
<el-link
type=
"primary"
@
click=
"toDel(scope.row,scope.$index)"
>
[删除]
</el-link>
</
template
>
</el-table-column>
</el-table>
</template>
</table-crud>
<platform-add-dialog
v-if=
"dialogData.flag"
:dialog-data=
"dialogData"
@
change=
"callBack"
/>
</div>
</template>
<
script
>
/* 混合开发方法-参数字段*/
import
{
filterDictText
}
from
'
../../../assets/js/utils
'
import
platformAddDialog
from
'
./platformAdd-dialog.vue
'
import
{
delAppPlatformConfig
,
queryAppPlatformInfoPage
}
from
'
../../../api/appManagement/platform
'
export
default
{
components
:
{
platformAddDialog
},
data
()
{
return
{
loading
:
true
,
searchForm
:
{
platformName
:
''
// 平台名称
},
tableData
:
[],
dialogData
:
{
flag
:
false
,
row
:
null
}
}
},
created
()
{
this
.
initGroup
()
},
methods
:
{
filterDictText
,
// 字典值替换文本通用方法
// 字典请求
initGroup
()
{
this
.
$store
.
dispatch
(
'
getGroupType
'
,
[
'
appType
'
,
'
appCategory
'
]).
then
((
data
)
=>
{
// 遍历key存储相应的数据
for
(
const
key
in
data
.
bidTypeData
)
{
/* 是否有数据*/
if
(
data
.
bidTypeData
[
key
])
{
this
[
key
]
=
data
.
bidTypeData
[
key
]
}
}
})
},
// 获取数据
loadData
(
params
,
callback
)
{
queryAppPlatformInfoPage
(
params
).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
records
this
.
loading
=
false
callback
(
response
.
data
.
total
)
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
addMenu
()
{
this
.
dialogData
.
row
=
null
this
.
dialogData
.
flag
=
true
},
toEdit
(
row
)
{
this
.
dialogData
.
row
=
row
this
.
dialogData
.
flag
=
true
},
toDel
(
row
,
index
)
{
this
.
$confirm
(
'
确认是否删除该条数据?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确定
'
,
cancelButtonText
:
'
取消
'
,
confirmButtonClass
:
'
confirmBtn
'
,
cancelButtonClass
:
'
cancelBtn
'
,
type
:
'
warning
'
}).
then
(()
=>
{
delAppPlatformConfig
({
id
:
row
.
id
}).
then
(
res
=>
{
this
.
tableData
.
splice
(
index
,
1
)
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{
})
},
// 详情
handleDetail
(
row
)
{
},
// 操作回调
callBack
()
{
this
.
$refs
.
tableCrud
.
onSearchChange
()
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.img_pic {
max-height: 50px;
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/role/role-list.vue
0 → 100644
View file @
9d684267
<!--
@description: 系统设置->角色管理
@author: change by sunxinman
@routerPath: /systemManagement/roleManagement
@date: 2019/11/15-23:33
-->
<
template
>
<div>
<table-crud
ref=
"tableCrud"
:search-form=
"listQuery"
:menu=
"true"
search-label-width=
"80px"
@
on-load=
"getList"
>
<template
v-slot:header
>
角色管理
</
template
>
<
template
v-slot:search=
"search"
>
<el-form-item
label=
"角色名称"
>
<el-input
v-model=
"listQuery.roleName"
placeholder=
"请输入角色名称"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
<el-form-item
label=
"角色编码"
>
<el-input
v-model=
"listQuery.roleCode"
placeholder=
"请输入角色编码"
@
keyup.enter.native=
"search.onSearch"
/>
</el-form-item>
</
template
>
<
template
v-slot:menuLeft
>
<el-button
type=
"primary"
plain
@
click=
"handleCreate"
>
新增角色
</el-button>
</
template
>
<
template
v-slot:GXTable
>
<el-table
ref=
"smallTable"
v-loading=
"listLoading"
:data=
"list"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
/>
<el-table-column
label=
"角色名称"
prop=
"roleName"
/>
<el-table-column
label=
"角色编码"
prop=
"roleCode"
/>
<el-table-column
align=
"center"
label=
"平台角色编码"
prop=
"platformRoleCode"
/>
<el-table-column
label=
"操作"
align=
"center"
fixed=
"right"
width=
"400"
>
<template
slot-scope=
"scope"
>
<el-link
type=
"primary"
@
click.stop=
"handleUpdate(scope.row)"
>
[编辑]
</el-link>
<el-link
type=
"primary"
@
click.stop=
"toSetMenu(scope.row.id)"
>
[菜单权限]
</el-link>
<el-link
type=
"primary"
@
click.stop=
"handleDelete(scope.row)"
>
[删除]
</el-link>
<!--
<el-link
type=
"primary"
@
click.stop=
"toSetButton(scope.row.id)"
>
[按钮权限]
</el-link>
-->
<!--
<el-link
type=
"primary"
@
click.stop=
"handleUser(scope.row.id)"
>
[用户]
</el-link>
-->
</
template
>
</el-table-column>
</el-table>
</template>
</table-crud>
<!--新增/编辑角色弹框-->
<roleAddDialog
ref=
"roleAdd"
@
getList=
"callBack"
/>
<!--设置权限弹框-->
<setAccessDialog
ref=
"setAccess"
@
getList=
"callBack"
/>
<!--用户-->
<userListByRoleDialog
ref=
"userListByRole"
/>
<!--设置按钮权限弹框-->
<btnJurisdicSelectDialog
ref=
"setButtonAccess"
/>
</div>
</template>
<
script
>
import
roleAddDialog
from
'
./roleAdd-dialog
'
import
setAccessDialog
from
'
./setAccess-dialog
'
/* 组件*/
/* import setAccessDialog from './setAccess-dialog'
import roleAddDialog from './roleAdd-dialog'
import userListByRoleDialog from './userListByRole-dialog'
import btnJurisdicSelectDialog from '../buttonMgmt/buttonJurisdictionSelect-dialog'*/
import
{
delAppRole
,
queryRoleListPage
}
from
'
../../../api/appManagement/role
'
export
default
{
name
:
'
SysRoleList
'
,
components
:
{
/* setAccessDialog, // 设置权限
roleAddDialog, // 角色编辑/新增
userListByRoleDialog, // 用户列表
btnJurisdicSelectDialog // 设置按钮权限*/
roleAddDialog
,
setAccessDialog
},
data
()
{
return
{
list
:
[],
// 角色列表数据
listLoading
:
true
,
// 表格loading
// 搜索条件
listQuery
:
{
roleName
:
''
,
roleCode
:
''
}
}
},
methods
:
{
// 页面列表展示
getList
(
params
,
callback
)
{
queryRoleListPage
(
params
).
then
(
response
=>
{
this
.
listLoading
=
false
this
.
list
=
Object
.
freeze
(
response
.
data
.
records
)
callback
(
response
.
data
.
total
)
}).
catch
(()
=>
{
this
.
listLoading
=
false
})
},
// 操作回调
callBack
()
{
this
.
$refs
.
tableCrud
.
onSearchChange
()
},
// 点击添加 新增角色
handleCreate
()
{
this
.
$refs
.
roleAdd
.
handleUpdateOrCreate
(
'
create
'
)
},
// 编辑角色
handleUpdate
(
row
)
{
this
.
$refs
.
roleAdd
.
handleUpdateOrCreate
(
'
update
'
,
row
)
},
// 点击设置菜单权限按钮
toSetMenu
(
id
)
{
this
.
$refs
.
setAccess
.
getRoleMenus
(
id
)
// 触发设置权限弹框组件getRoleMenus 方法
},
// 点击设置按钮权限按钮
toSetButton
(
id
)
{
this
.
$refs
.
setButtonAccess
.
open
(
id
)
// 触发设置按钮权限弹框组件open 方法
},
// 查看用户
handleUser
(
id
)
{
this
.
$refs
.
userListByRole
.
openUserListDialog
(
id
)
},
// 删除事件
handleDelete
(
row
)
{
this
.
$confirm
(
'
确认要删除角色吗?
'
,
'
提示
'
,
{
confirmButtonText
:
'
确 定
'
,
cancelButtonText
:
'
取 消
'
,
confirmButtonClass
:
'
confirmBtn
'
,
cancelButtonClass
:
'
cancelBtn
'
,
type
:
'
warning
'
}).
then
(()
=>
{
delAppRole
({
id
:
row
.
id
}).
then
((
res
)
=>
{
this
.
$message
.
success
(
res
.
header
.
msg
)
this
.
callBack
()
})
})
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/role/roleAdd-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description: 角色管理--角色添加、编辑弹框
@Modifier: haofengxian
@routerPath:
@date: 2020-9-17-10:27
-->
<
template
>
<el-dialog
:title=
"textMap[dialogStatus]"
:visible.sync=
"dialogFormVisible"
:close-on-click-modal=
"false"
width=
"650px"
>
<el-form
ref=
"dataForm"
:rules=
"rules"
:model=
"temp"
label-position=
"left"
label-width=
"120px"
style=
"width: 400px; margin-left:50px;"
>
<el-form-item
label=
"角色名称"
prop=
"roleName"
>
<el-input
v-model.trim=
"temp.roleName"
/>
</el-form-item>
<el-form-item
label=
"角色编码"
prop=
"roleCode"
>
<el-input
v-model.trim=
"temp.roleCode"
/>
</el-form-item>
<el-form-item
label=
"平台角色编码"
prop=
"platformRoleCode"
>
<el-input
v-model.trim=
"temp.platformRoleCode"
/>
</el-form-item>
<!--
<el-form-item
label=
"是否可用"
prop=
"roleType"
>
<el-radio-group
v-model=
"temp.roleType"
>
<el-radio
label=
"1"
>
是
</el-radio>
<el-radio
label=
"0"
>
否
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"备注"
>
<el-input
v-model=
"temp.remarks"
:autosize=
"
{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
/>
</el-form-item>
-->
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
v-if=
"dialogStatus == 'create'"
type=
"primary"
@
click=
"createData"
>
确 定
</el-button>
<el-button
v-else
type=
"primary"
@
click=
"updateData"
>
确 定
</el-button>
<el-button
@
click=
"dialogFormVisible = false"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
/* 接口*/
import
{
saveAppRole
}
from
'
../../../api/appManagement/role
'
/* 公告方法*/
import
{
validatorCode
}
from
'
@/assets/js/validate
'
export
default
{
name
:
'
RoleAddDialog
'
,
data
()
{
return
{
dialogFormVisible
:
false
,
// 弹框是否打开
// 传的参数
temp
:
{
id
:
''
,
roleName
:
''
,
roleCode
:
''
,
platformRoleCode
:
''
// 角色平台id
/* roleType: '1',
remarks: ''*/
},
dialogStatus
:
''
,
textMap
:
{
update
:
'
编辑角色
'
,
create
:
'
添加角色
'
},
// 校验
rules
:
{
roleCode
:
[{
required
:
true
,
validator
:
validatorCode
,
trigger
:
'
blur
'
}],
roleName
:
[{
required
:
true
,
message
:
'
角色名称必填
'
,
trigger
:
'
blur
'
}],
roleType
:
[{
required
:
true
,
message
:
'
是否可用必选
'
,
trigger
:
'
blur
'
}],
platformRoleCode
:
[{
required
:
true
,
message
:
'
请输入
'
,
trigger
:
'
blur
'
}]
}
}
},
methods
:
{
// 处理编辑或者新增
handleUpdateOrCreate
(
dialogStatus
,
row
)
{
this
.
dialogFormVisible
=
true
// 打开弹框
this
.
dialogStatus
=
dialogStatus
// 编辑时执行
if
(
row
)
{
this
.
temp
=
Object
.
assign
({},
row
)
// copy obj
}
else
{
this
.
resetTemp
()
}
this
.
$nextTick
(()
=>
{
this
.
$refs
[
'
dataForm
'
].
clearValidate
()
})
},
resetTemp
()
{
// 清空表单
this
.
temp
=
{
id
:
''
,
roleName
:
''
,
roleCode
:
''
/* roleType: '1',
remarks: ''*/
}
},
// 添加的确定(调用接口)
createData
()
{
this
.
$refs
[
'
dataForm
'
].
validate
(
valid
=>
{
if
(
valid
)
{
saveAppRole
(
this
.
temp
).
then
((
res
)
=>
{
this
.
dialogFormVisible
=
false
this
.
$message
.
success
(
res
.
header
.
msg
)
this
.
$emit
(
'
getList
'
)
})
}
})
},
// 点击编辑确定(调接口)
updateData
()
{
this
.
$refs
[
'
dataForm
'
].
validate
(
valid
=>
{
if
(
valid
)
{
const
tempData
=
Object
.
assign
({},
this
.
temp
)
saveAppRole
(
tempData
).
then
(()
=>
{
this
.
dialogFormVisible
=
false
this
.
$message
({
message
:
'
更新成功
'
,
type
:
'
success
'
})
this
.
$emit
(
'
getList
'
)
})
}
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
src/views/appManagement/role/setAccess-dialog.vue
0 → 100644
View file @
9d684267
<!--
@description: 角色管理--设置权限弹框
@Modifier: haofengxian
@routerPath:
@date: 2020-9-17-9:52
-->
<
template
>
<el-dialog
:visible.sync=
"dialogFormMenuVisible"
:close-on-click-modal=
"false"
title=
"设置权限"
width=
"800px"
>
<el-row
v-loading=
"loading"
:gutter=
"20"
>
<el-col
:span=
"6"
>
<div
class=
"page-title"
style=
"text-align: right"
>
操作权限
</div>
</el-col>
<el-col
:span=
"18"
>
<el-scrollbar
class=
"scrollbar"
style=
"height:500px;"
>
<el-tree
ref=
"menuTree"
:data=
"menuData"
:props=
"menuTreeProps"
:default-checked-keys=
"selectMenuIds"
:check-strictly=
"true"
:expand-on-click-node=
"false"
default-expand-all
show-checkbox
check-on-click-node
node-key=
"id"
@
node-click=
"nodeClick"
@
check=
"checkChange"
/>
</el-scrollbar>
</el-col>
</el-row>
<div
slot=
"footer"
style=
"text-align:center;"
>
<el-button
type=
"primary"
@
click=
"handleChangeMenus"
>
设置权限
</el-button>
<el-button
@
click=
"dialogFormMenuVisible = false"
>
取 消
</el-button>
</div>
</el-dialog>
</
template
>
<
script
>
import
{
queryRoleFunction
,
setRoleFunction
}
from
'
../../../api/appManagement/role
'
export
default
{
name
:
'
SetAccessDialog
'
,
data
()
{
return
{
loading
:
true
,
dialogFormMenuVisible
:
false
,
menuData
:
null
,
// 设置角色数据
selectCurentRoleId
:
''
,
// 角色id
selectMenuIds
:
[],
// 选择打勾
// 设置权限参数
menuTreeProps
:
{
children
:
'
children
'
,
label
:
'
appName
'
}
}
},
methods
:
{
// 获取权限设置列表
getRoleMenus
(
id
)
{
this
.
dialogFormMenuVisible
=
true
// 打开弹框
this
.
selectCurentRoleId
=
id
// 角色id
queryRoleFunction
({
id
}).
then
(
response
=>
{
this
.
menuData
=
response
.
data
.
functionList
this
.
selectMenuIds
=
response
.
data
.
roleFunctionIds
this
.
loading
=
false
}).
catch
(()
=>
{
this
.
loading
=
false
})
},
// 设置权限确定事件
handleChangeMenus
()
{
const
checkedKeys
=
this
.
$refs
.
menuTree
.
getCheckedKeys
()
const
functionIds
=
checkedKeys
?.
join
(
'
,
'
)?.
split
(
'
,
'
)
const
data
=
{
roleId
:
this
.
selectCurentRoleId
,
functionIds
}
setRoleFunction
(
data
).
then
(
response
=>
{
this
.
dialogFormMenuVisible
=
false
this
.
$message
.
success
(
response
.
header
.
msg
)
this
.
$emit
(
'
getList
'
)
// 设置成功重新获取列表数据
// 判断修改的角色权限是否是当前登陆的角色,如果是则重新获取当前用户菜单列表
if
(
data
.
roleId
===
this
.
$store
.
getters
.
info
.
currentRol
.
id
)
{
this
.
$store
.
dispatch
(
'
setMenu
'
)
}
})
},
// 点击复选框触发
checkChange
(
data
)
{
const
node
=
this
.
$refs
.
menuTree
.
getNode
(
data
)
this
.
nodeClick
(
data
,
node
)
},
// 点击文本触发-判断用户的权限情况及选中的效果和取消的效果
nodeClick
(
data
,
node
)
{
this
.
childNodesChange
(
node
)
this
.
parentNodesChange
(
node
)
},
// 子节点改变
childNodesChange
(
node
)
{
const
len
=
node
.
childNodes
.
length
for
(
let
i
=
0
;
i
<
len
;
i
++
)
{
if
(
node
.
checked
)
{
node
.
childNodes
[
i
].
checked
=
true
}
else
{
node
.
childNodes
[
i
].
checked
=
false
}
this
.
childNodesChange
(
node
.
childNodes
[
i
])
}
},
// 父节点改变
parentNodesChange
(
node
)
{
if
(
node
.
parent
)
{
let
isChecked
=
false
node
.
parent
.
childNodes
.
map
(
item
=>
{
if
(
item
.
checked
)
{
isChecked
=
true
}
})
if
(
!
isChecked
)
{
node
.
parent
.
checked
=
isChecked
}
else
{
node
.
parent
.
checked
=
true
}
this
.
parentNodesChange
(
node
.
parent
)
}
}
}
}
</
script
>
<
style
scoped
>
</
style
>
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment