Browse Source

完善移动端管理、移动端授权

master
yunuo970428 3 years ago
parent
commit
5aeec65bae
  1. 17
      anrui-system-ui/src/api/Common/Upload.js
  2. 58
      anrui-system-ui/src/api/system/mobileterminal/mobileterminal.js
  3. 24
      anrui-system-ui/src/api/system/roleAdminister/index.js
  4. 10
      anrui-system-ui/src/components/ButtonBar/index.vue
  5. 1
      anrui-system-ui/src/components/uploadFile/upload_apk.vue
  6. 53
      anrui-system-ui/src/components/uploadFile/upload_frameApk.vue
  7. 144
      anrui-system-ui/src/components/uploadFile/upload_icon.vue
  8. 53
      anrui-system-ui/src/components/uploadFile/upload_updateApk.vue
  9. 131
      anrui-system-ui/src/views/RoleAdminister/RoleAdminister.vue
  10. 32
      anrui-system-ui/src/views/mobileterminal/adhibition.vue
  11. 111
      anrui-system-ui/src/views/mobileterminal/frame.vue
  12. 58
      anrui-system-ui/src/views/mobileterminal/mobileterminal.vue
  13. 116
      anrui-system-ui/src/views/mobileterminal/plugin.vue
  14. 232
      anrui-system-ui/src/views/mobileterminal/updatePlugin.vue

17
anrui-system-ui/src/api/Common/Upload.js

@ -8,5 +8,20 @@ export function imageUpload(data){
headers:{'Content-Type':'multipart/form-data'}
})
}
// 移动端管理--新增上传插件
export const uploadFile = '/api/portal/v1/appsubsetversion/save'
// 移动端管理--更新上传插件
export const upload_UpdateFile = '/api/portal/v1/appsubsetversion/update'
// 移动端管理--框架更新上传插件
export const upload_frameFile = '/api/portal/v1/appversion/save'
// 移动端管理--上传icon(图标)
export const uploadFileIcon = '/api/portal/file/upload'
// 移除图片
export function deleteFilesOss(data) {
return request({
url: '/base/v1/baseVehicleAppendixs/deleteFilesOss', // data,
method: 'post',
params: { fullPath: data }
})
}

58
anrui-system-ui/src/api/system/mobileterminal/mobileterminal.js

@ -39,61 +39,21 @@ export function saveOrUpdate(data) {
})
}
// 根据sid 删除单个 资源信息
export function delMenus(data) {
// 初始化应用
export function details(data) {
return request({
url: '/portal/v1/sysmenu/delBySids/' + data.sid,
url: '/portal/v1/sysmobilemenu/details',
method: 'get',
data: qs.stringify(data),
headers: { 'Content-Type': 'application/json' }
})
}
// 修改状态
export function IsEnable(data) {
return request({
url: '/portal/v1/sysmenu/updateIsEnable/' + data.sid + '/' + data.isEnable,
method: 'POST',
/* data: qs.stringify(data),*/
headers: { 'Content-Type': 'application/json' }
})
}
// 获取菜单 不分页列表
export function roleList(data) {
return request({
url: '/system/v1/menus/list',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
params: data
})
}
// 获取菜单 分页列表
export function menusPageList(data) {
return request({
url: '/system/v1/menus/pagelist',
method: 'POST',
data: data,
headers: { 'Content-Type': 'application/json' }
})
}
// 获取菜单 树形分页列表
export function menusTreelist(data) {
// 根据sid应用
export function deleteMenu(data) {
return request({
url: '/system/v1/menus/treelist',
method: 'POST',
data: data,
headers: { 'Content-Type': 'application/json' }
url: '/portal/v1/sysmobilemenu/deleteMenu',
method: 'DELETE',
params: data
})
}
// 根据sid 获取单个菜单 信息
export function getRoleInfo(data) {
return request({
url: '/system/v1/menus/' + data.sid,
method: 'GET',
data: qs.stringify(data)
})
}

24
anrui-system-ui/src/api/system/roleAdminister/index.js

@ -92,6 +92,27 @@ export function delOrgroles(data) {
}
})
}
// 移动端授权
export function getRoleMenuList(data) {
return request({
url: '/portal/v1/sysmobilemenurole/getRoleMenuList',
method: 'post',
params: { roleSid: data }
})
}
// 菜单授权保存
export function saveRoleMenuList(data) {
return request({
url: `/portal/v1/sysmobilemenurole/saveRoleMenuList`,
method: 'POST',
data: data,
headers: {'Content-Type': 'application/json',
'token':tokens
}
})
}
// 菜单授权
export function roleMenuTree(data) {
return request({
@ -99,10 +120,11 @@ export function roleMenuTree(data) {
method: 'POST',
data: data,
headers: {'Content-Type': 'application/json',
'token':tokens
'token':tokens
}
})
}
// 菜单授权保存
export function saveorgrolemenus(data) {
return request({

10
anrui-system-ui/src/components/ButtonBar/index.vue

@ -2,7 +2,7 @@
<!--标题按钮部分开始-->
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<div>{{ viewTitle }}<span style="padding-left: 10px">{{ version }}</span><span style="padding-left: 10px">{{ time }}</span></div>
<!--start 按钮部分开始 :icon="item.icon"-->
<div>
<el-button v-for="item in btnList" :key="item.btnKey" :type="item.type" :size="item.size" :disabled="btndisabled" @click="btnHandle(item.btnKey)">
@ -19,6 +19,14 @@ export default {
name: 'ButtonBar',
props: {
viewTitle: String,
version: {
type: String,
default: ''
},
time: {
type: String,
default: ''
},
btndisabled: { type: Boolean, default: false }
},
data() {

1
anrui-system-ui/src/components/uploadFile/upload_apk.vue

@ -31,6 +31,7 @@ export default {
}
},
created() {
this.fileList = []
this.uploadFile = uploadFile
},
methods: {

53
anrui-system-ui/src/components/uploadFile/upload_frameApk.vue

@ -0,0 +1,53 @@
<template>
<el-upload
class="upload-demo"
ref="upload"
:action="uploadFile"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-progress="handleSuccess"
:file-list="fileList"
:limit="1"
name="file"
:data="fileInfo"
:auto-upload="false">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
</el-upload>
</template>
<script>
import { upload_frameFile } from '@/api/Common/Upload'
export default {
props: {
fileInfo: {
type: Object
}
},
data() {
return {
fileList: [],
uploadFile: upload_frameFile
}
},
created() {
this.fileList = []
this.uploadFile = upload_frameFile
},
methods: {
handleSuccess(event, file, fileList) {
console.log(file, fileList)
},
handleRemove(file, fileList) {
console.log(file, fileList)
},
handlePreview(file) {
console.log(file)
},
submitUpload() {
console.log(this.fileInfo)
this.$refs.upload.submit()
}
}
}
</script>

144
anrui-system-ui/src/components/uploadFile/upload_icon.vue

@ -0,0 +1,144 @@
<template>
<div><!---->
<el-upload class="avatar-uploader" :headers="accessToken" :action="uploadFile" :accept="accept" :data="uploadData" :on-success="uploadImgSuccess_FuJian" :on-remove="handleRemove" :limit="1" :file-list="files" list-type="picture-card" :on-preview="handlePictureCardPreview">
<i class="el-icon-plus avatar-uploader-icon"/>
</el-upload>
<el-dialog :visible.sync="dialogVisible" :append-to-body="true" title="查看图片">
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</div>
</template>
<script>
import { uploadFileIcon } from '@/api/Common/Upload'
import { getStorage } from '@/utils/auth.js' // token
export default {
model: {
prop: 'name',
event: 'change'
},
props: {
placeholder: {
type: String,
default: ''
},
bucket: {
type: String,
default: 'abc'
},
//
width: {
type: String,
default: '270px'
},
limit: {
type: Number,
default: 1
},
accept: {
type: String,
default:
'.jpg,.jpeg,.png,.JPG,.JPEG,'
},
//
name: {
type: Array,
required: true
},
uploadData: {
type: Object,
default: {}
}
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
accessToken: null,
uploadFile: uploadFileIcon,
fileList_FuJian: [],
enclosure: '',
file_add: '',
file_catch: '',
files: [],
files_list: [],
filedUrl: '',
// fileUrl: fileUrl,
// showpicture:false,
isview: false,
nameArr: '',
loadding: false,
stateName: '',
/* uploadData: { modelSid: '' },*/
sid: ''
}
},
watch: {
name: {
deep: true,
immediate: true,
handler(newVal, oldVal) {
console.log('aaaa1', newVal)
this.files = newVal
console.log('aaaa2', this.files)
}
}
},
mounted() {
this.$nextTick(() => {
this.Init()
})
},
created() {
this.uploadFile = uploadFileIcon //
this.accessToken = {
token: getStorage()
}
},
methods: {
//
Init() {
if (this.name !== undefined) {
this.files = []
for (var i = 0; i < this.name.length; i++) {
this.files.push({
name: this.name[i],
url: this.name[i]
})
}
}
},
// --
uploadImgSuccess_FuJian(response, file, fileList) {
let _this = this
console.log('您选择的file:', file)
// console.log('data:', _this.uploadData)
if (file.response.code === '200') {
this.loadding = false
//
this.filedUrl = this.fileUrl + file.response.data
// var uid = file.response.data
const files = []
files.push({
name: file.response.data.sourceFileName,
url: file.response.data.fullUrl,
size: file.response.data.size
})
this.$emit('change', files)
}
},
handleRemove(file, fileList) {
console.log('file:' + JSON.stringify(file))
console.log('fileList:' + JSON.stringify(fileList))
},
handlePictureCardPreview(file) {
this.dialogVisible = true
this.dialogImageUrl = file.url
}
}
}
</script>
<style scoped>
</style>

53
anrui-system-ui/src/components/uploadFile/upload_updateApk.vue

@ -0,0 +1,53 @@
<template>
<el-upload
class="upload-demo"
ref="upload"
:action="uploadFile"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-progress="handleSuccess"
:file-list="fileList"
:limit="1"
name="multipartFile"
:data="fileInfo"
:auto-upload="false">
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
</el-upload>
</template>
<script>
import { upload_UpdateFile } from '@/api/Common/Upload'
export default {
props: {
fileInfo: {
type: Object
}
},
data() {
return {
fileList: [],
uploadFile: upload_UpdateFile
}
},
created() {
this.fileList = []
this.uploadFile = upload_UpdateFile
},
methods: {
handleSuccess(event, file, fileList) {
console.log(file, fileList)
},
handleRemove(file, fileList) {
console.log(file, fileList)
},
handlePreview(file) {
console.log(file)
},
submitUpload() {
console.log(this.fileInfo)
this.$refs.upload.submit()
}
}
}
</script>

131
anrui-system-ui/src/views/RoleAdminister/RoleAdminister.vue

@ -19,11 +19,12 @@
<el-table :data="roleTable" border style="width: 100%;">
<el-table-column label="序号" width="50px" type="index" align="center">
</el-table-column>
<el-table-column label="操作" width="440px" align="center">
<el-table-column label="操作" width="520px" align="center">
<template slot-scope="scope">
<el-button @click="sourceMenus(scope.row)" type="primary" size="mini">资源授权</el-button>
<el-button @click="funMenus(scope.row)" type="primary" size="mini">功能授权</el-button>
<el-button @click="roleMenus(scope.row)" type="primary" size="mini">菜单授权</el-button>
<el-button @click="mobileMenus(scope.row)" type="primary" size="mini">移动端授权</el-button>
<el-button @click="editRow(scope.row)" type="primary" size="mini">修改</el-button>
<el-button @click="delRow(scope.row)" type="danger" size="mini">删除</el-button>
</template>
@ -186,6 +187,33 @@
<el-button @click="roleDialog = false"> </el-button>
</div>
</el-dialog>
<el-dialog title="移动端授权" :visible.sync="mobileDialog" width="50%">
<table class="e-table" cellspacing="0">
<tr>
<td>角色名称</td>
<td>
<el-input v-model="roleForm.name" readonly></el-input>
</td>
</tr>
<tr>
<td>可操作菜单列表</td>
<td>
<div style="height:230px;line-height:120px;overflow:auto;overflow-x:hidden;">
<el-tree v-loading="loading" :data="treedata" ref="mobileTree" show-checkbox accordion node-key="sid"
:default-expand-all="true"
:default-checked-keys="checkedId"
:props="defaultProps"
@check-change="checkchange">
</el-tree>
</div>
</td>
</tr>
</table>
<div slot="footer" class="text-center">
<el-button type="primary" @click="getCheckedMobile"> </el-button>
<el-button @click="mobileDialog = false"> </el-button>
</div>
</el-dialog>
</div>
</el-tab-pane>
<!-- 新增角色 -->
@ -252,6 +280,8 @@ import {
putOrgroles,
roleMenuTree,
roleOrgList,
getRoleMenuList,
saveRoleMenuList,
savefunMenu,
saveorgrolemenus,
saveOrgroles,
@ -308,7 +338,9 @@ export default {
label: 'sourceName'
},
//
funDialog: false
funDialog: false,
//
mobileDialog: false
};
},
mounted() {
@ -557,6 +589,71 @@ export default {
this.loading = false
})
},
mobileMenus(row) {
this.mobileDialog = true
this.checkedId = []
this.roleForm.name = row.name
this.Thisrow = row
this.loading = true
getRoleMenuList(row.sid).then(res => {
let data1 = res.data
//
for (let i = 0; i < data1.length; i++) {
if (data1[i].children) {
// data2
let data2 = data1[i].children
for (let j = 0; j < data2.length; j++) {
//
if (data2[j].children) {
// data3
const data3 = data2[j].children
for (let k = 0; k < data3.length; k++) {
//
if (data3[k].children) {
const data4 = data3[k].children
for (let l = 0; l < data4.length; l++) {
if (data4[l].checked == 0) {
this.checkedId.push(data4[l].sid)
}
}
}
//
if (data3[k].children.length == 0 && data3[k].checked == 0) {
this.checkedId.push(data3[k].sid)
}
}
}
//
if (data2[j].children.length == 0 && data2[j].checked == 0) {
this.checkedId.push(data2[j].sid)
}
}
}
}
// for (let i = 0; i < data1.length; i++) {
// if (data1[i].checked == 0) {
// this.checkedId.push(data1[i].sid)
// }
// for (let j = 0; j < data1[i].children.length; j++) {
// let data2 = data1[i].children
// if (data2[j].checked == 0) {
// this.checkedId.push(data2[j].sid)
// }
// for (let k = 0; k < data2[j].children.length; k++) {
// let data3 = data2[j].children
// if (data3[k].checked == 0) {
// this.checkedId.push(data3[k].sid)
// }
// }
// }
// }
console.log('112233', this.checkedId)
this.treedata = res.data
this.getTreeParentNode(res.data, this.checkedId)
// this.getTreeParentid(res.data)
this.loading = false
})
},
//
getTreeParentNode(menus, ids) {
for (var i = 0; i < menus.length; i++) {
@ -646,6 +743,36 @@ export default {
})
})
},
getCheckedMobile() {
let _this = this
let roleMenus = []
roleMenus = this.$refs.mobileTree.getCheckedNodes(false, true)
// roleMenus = this.$refs.Tree.getCheckedKeys()
console.log('已选节点、半选节点node', roleMenus)
const roleMenus_sid = []
for (var i = 0; i < roleMenus.length; i++) {
roleMenus_sid.push(roleMenus[i].sid)
}
console.log('已选节点、半选节点sid', roleMenus_sid)
// let parentTrue = this.$refs.Tree.getHalfCheckedKeys()
// for (let i = 0; i < parentTrue.length; i++) {
// for (let j = 0; j < this.chace.length; j++) {
// if (parentTrue[i] == this.chace[j]) {
// parentTrue.splice(i, 1);
// }
// }
// }
let params = {
menuSid: roleMenus_sid.toString(),
roleSid: _this.Thisrow.sid
}
saveRoleMenuList(params).then((res) => {
if (res.success) {
this.mobileDialog = false
this.$message({ showClose: true, message: res.msg, type: 'success' })
}
})
},
checkchange() {
}

32
anrui-system-ui/src/views/mobileterminal/adhibition.vue

@ -34,7 +34,9 @@
<span><span class="icon">*</span>应用icon</span>
</el-col>
<el-col :span="19">
<el-form-item prop="iconUrl"><el-input v-model="formobj.iconUrl" class="addInput" clearable placeholder=""/></el-form-item>
<el-form-item prop="iconUrl">
<upload_icon ref="uploadIcon" v-model="list" bucket="map" @change="backIcon" :upload-data="{type:'0002'}"/>
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>应用路由</span>
@ -62,10 +64,14 @@
</template>
<script>
import { saveOrUpdate } from '@/api/system/mobileterminal/mobileterminal'
import { saveOrUpdate, details } from '@/api/system/mobileterminal/mobileterminal'
import upload_icon from '@/components/uploadFile/upload_icon'
export default {
name: 'plugin',
components: {
upload_icon
},
data() {
return {
tableKey: 0,
@ -73,7 +79,7 @@ export default {
viewTitle: '',
dialogStatus: '',
sid: '',
isShow: true,
list: [],
formobj: {
iconUrl: '',
linkSid: '',
@ -109,15 +115,24 @@ export default {
})
this.viewTitle = '更新应用'
this.dialogStatus = 'edit'
this.isShow = row.isShow
req.fetchBySid(row.sid).then(resp => {
this.sid = row.sid
this.baseManufacturerDto = resp.data.baseManufacturerDto
this.baseManufacturerBankDto = resp.data.baseManufacturerBankDto
console.log(row.sid, 888)
details({ sid: row.sid }).then((resp) => {
if (resp.success) {
this.formobj = resp.data
this.list.push({
name: '',
url: this.formobj.iconUrl
})
}
}).catch(e => {
this.formobj = row
})
},
backIcon(val) {
if (val.length > 0) {
this.formobj.iconUrl = val[0].url
}
},
handleSave() {
this.$refs['form_obj'].validate(valid => {
if (valid) {
@ -150,6 +165,7 @@ export default {
json: '',
linkName: ''
}
this.list = []
this.$refs['form_obj'].resetFields()
this.$emit('doback')
}

111
anrui-system-ui/src/views/mobileterminal/frame.vue

@ -0,0 +1,111 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleSave()">保存
</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>apk上传</span>
</el-col>
<el-col :span="19">
<el-form-item>
<upload_frameApk ref="uploadMoreImg" v-model="imgList" bucket="map" :fileInfo ="formobj"/>
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件icon</span>
</el-col>
<el-col :span="19">
<el-form-item>
<upload_icon ref="uploadIcon" v-model="list" bucket="map" @change="backIcon" :upload-data="{type:'0002'}"/>
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span>版本描述</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.upgradeInfo" type="textarea" resize="none" :autosize="{ minRows: 2, maxRows: 50}" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</div>
</template>
<script>
import upload_frameApk from '@/components/uploadFile/upload_frameApk'
import upload_icon from '@/components/uploadFile/upload_icon'
export default {
name: 'frame',
components: {
upload_frameApk,
upload_icon
},
data() {
return {
tableKey: 0,
index: 0,
viewTitle: '',
dialogStatus: '',
sid: '',
isShow: true,
list: [],
imgList: [],
formobj: {
iconUrl: '',
upgradeInfo: ''
},
rules: {},
submitdisabled: false
}
},
methods: {
showAdd() {
this.dialogStatus = 'add'
this.viewTitle = '更新框架'
},
handleSave() {
this.$refs['form_obj'].validate(valid => {
if (valid) {
this.$refs.uploadMoreImg.submitUpload()
this.handleReturn('true')
} else {
return false
}
})
},
backIcon(val) {
if (val.length > 0) {
this.formobj.iconUrl = val[0].url
}
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.dialogStatus = ''
this.formobj = {
iconUrl: '',
upgradeInfo: ''
}
this.list = []
this.imgList = []
this.$emit('doback')
}
}
}
</script>
<style scoped>
.addInput {
width: 30%;
}
</style>

58
anrui-system-ui/src/views/mobileterminal/mobileterminal.vue

@ -2,7 +2,7 @@
<div class="app-container">
<!-- Start 列表页面 -->
<div v-show="viewState == 1">
<button-bar view-title="安瑞移动门户" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<button-bar view-title="安瑞移动门户" :version="version" :time="time" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="" style="margin-top: 10px">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" row-key="appName" :tree-props="{children: 'mobileMenuList'}">
@ -20,9 +20,9 @@
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" v-show="scope.row.appSid !== null && scope.row.appSid !== undefined && scope.row.appSid !== ''" @click="handleAddAdhibition(scope.row)">新增应用</el-button>
<el-button type="primary" size="small" v-show="scope.row.appSid !== null && scope.row.appSid !== undefined && scope.row.appSid !== ''">更新插件</el-button>
<el-button type="primary" size="small" v-show="scope.row.appSid == null || scope.row.appSid == undefined || scope.row.appSid == ''">修改</el-button>
<el-button type="danger" size="small" v-show="scope.row.appSid == null || scope.row.appSid == undefined || scope.row.appSid == ''">删除</el-button>
<el-button type="primary" size="small" v-show="scope.row.appSid !== null && scope.row.appSid !== undefined && scope.row.appSid !== ''" @click="hanglePlugin(scope.row)">更新插件</el-button>
<el-button type="primary" size="small" v-show="scope.row.appSid == null || scope.row.appSid == undefined || scope.row.appSid == ''" @click="handleUpdateAdhibition(scope.row)">修改</el-button>
<el-button type="danger" size="small" v-show="scope.row.appSid == null || scope.row.appSid == undefined || scope.row.appSid == ''" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="应用路由" align="center">
@ -34,23 +34,29 @@
</div>
</div>
</div>
<plugin v-show="viewState == 2 || viewState == 3" ref="divPlugin" @doback="resetState" />
<adhibition v-show="viewState == 4 || viewState == 5" ref="divAdhibition" @doback="resetState" />
<plugin v-show="viewState == 2" ref="divPlugin" @doback="resetState" @reloadlist="getList"/>
<updatePlugin v-show="viewState == 3" ref="divUpdatePlugin" @doback="resetState" @reloadlist="getList"/>
<adhibition v-show="viewState == 4 || viewState == 5" ref="divAdhibition" @doback="resetState" @reloadlist="getList"/>
<frame v-show="viewState == 6" ref="divFrame" @doback="resetState" @reloadlist="getList"/>
</div>
</template>
<script>
import { pageList } from '@/api/system/mobileterminal/mobileterminal'
import { pageList, deleteMenu } from '@/api/system/mobileterminal/mobileterminal'
import ButtonBar from '@/components/ButtonBar'
import plugin from './plugin'
import updatePlugin from './updatePlugin'
import adhibition from './adhibition'
import frame from './frame'
export default {
name: 'mobileterminal',
components: {
ButtonBar,
plugin,
adhibition
updatePlugin,
adhibition,
frame
},
data() {
return {
@ -83,6 +89,8 @@ export default {
viewState: 1,
// -----------
tableKey: 0,
version: '',
time: '',
list: [],
sids: [],
FormLoading: false,
@ -134,6 +142,8 @@ export default {
this.listLoading = false
if (response.success) {
this.list = response.data.list
this.version = response.data.appVersionVo.versionName
this.time = response.data.appVersionVo.modifyTime
} else {
this.list = []
}
@ -143,39 +153,35 @@ export default {
this.viewState = 2
this.$refs['divPlugin'].showAdd()
},
toEdit(row) {
toEdit() {
this.viewState = 6
this.$refs['divFrame'].showAdd()
},
hanglePlugin(row) {
this.viewState = 3
this.$refs['divPlugin'].showEdit(row)
this.$refs['divUpdatePlugin'].showEdit(row)
},
handleAddAdhibition(row) {
this.viewState = 4
this.$refs['divAdhibition'].showAdd(row)
},
doDel() {
if (this.sids.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请选择至少一条记录进行删除操作' })
return
}
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
handleUpdateAdhibition(row) {
this.viewState = 5
this.$refs['divAdhibition'].showEdit(row)
},
handleDelete(row) {
const tip = '请确认是否删除该应用?'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.delete(this.sids).then(resp => {
deleteMenu({ sid: row.sid }).then((resp) => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
this.getList()
}
this.getList()
loading.close()
}).catch(e => {
loading.close()
})
}).catch(() => {
})

116
anrui-system-ui/src/views/mobileterminal/plugin.vue

@ -16,13 +16,15 @@
<span><span class="icon">*</span>插件名称</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.appName" class="addInput" clearable placeholder="" /></el-form-item>
<el-form-item prop="appName"><el-input v-model="formobj.appName" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件icon</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.iconUrl" class="addInput" clearable placeholder="" /></el-form-item>
<el-form-item>
<upload_icon ref="uploadIcon" v-model="list" bucket="map" @change="backIcon" :upload-data="{type:'0002'}"/>
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>关联主程序</span>
@ -34,27 +36,27 @@
<span><span class="icon">*</span>启动名称</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.modulePluginName" class="addInput" clearable placeholder="" /></el-form-item>
<el-form-item prop="modulePluginName"><el-input v-model="formobj.modulePluginName" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>主页路由</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.sourceAction" class="addInput" clearable placeholder="" /></el-form-item>
<el-form-item prop="sourceAction"><el-input v-model="formobj.sourceAction" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件包名</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.sourcePackage" class="addInput" clearable placeholder="" /></el-form-item>
<el-form-item prop="sourcePackage"><el-input v-model="formobj.sourcePackage" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件类型</span>
</el-col>
<el-col :span="19">
<el-form-item>
<el-form-item prop="type">
<el-select v-model="formobj.type" placeholder="请选择" filterable clearable class="addInput">
<el-option v-for="item in type_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
<el-option v-for="item in type_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
@ -67,13 +69,13 @@
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>更新内容</span>
<span>更新内容</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.upgradeInfo" type="textarea" resize="none" :autosize="{ minRows: 2, maxRows: 50}" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>排序号</span>
<span>排序号</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.sortNo" class="addInput" clearable placeholder="" /></el-form-item>
@ -86,13 +88,14 @@
</template>
<script>
import { save } from '@/api/system/mobileterminal/mobileterminal'
import upload_apk from '@/components/uploadFile/upload_apk'
import upload_icon from '@/components/uploadFile/upload_icon'
export default {
name: 'plugin',
components: {
upload_apk
upload_apk,
upload_icon
},
data() {
return {
@ -102,6 +105,7 @@ export default {
dialogStatus: '',
sid: '',
isShow: true,
list: [],
imgList: [],
type_list: [
{
@ -119,8 +123,9 @@ export default {
],
formobj: {
appName: '',
appSid: '',
iconUrl: '',
linkSid: 'e25e13b5-f2ed-421f-bdb3-6f2eca2a3028',
linkSid: '147694bb-c765-4426-8f67-d19a66585f31',
sourceAction: '',
sourcePackage: '',
type: '',
@ -128,7 +133,13 @@ export default {
modulePluginName: '',
sortNo: ''
},
rules: {},
rules: {
appName: [{ required: true, message: '插件名称不能为空', trigger: 'blur' }],
modulePluginName: [{ required: true, message: '启动名称不能为空', trigger: 'blur' }],
sourceAction: [{ required: true, message: '主页路由不能为空', trigger: 'blur' }],
sourcePackage: [{ required: true, message: '插件包名不能为空', trigger: 'blur' }],
type: [{ required: true, message: '插件类型不能为空', trigger: 'change' }]
},
submitdisabled: false
}
},
@ -139,69 +150,46 @@ export default {
this.dialogStatus = 'add'
this.viewTitle = '新增插件'
},
showEdit(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.viewTitle = '更新插件'
this.dialogStatus = 'edit'
this.isShow = row.isShow
req.fetchBySid(row.sid).then(resp => {
this.sid = row.sid
this.baseManufacturerDto = resp.data.baseManufacturerDto
this.baseManufacturerBankDto = resp.data.baseManufacturerBankDto
}).catch(e => {
this.formobj = row
})
},
handleSave() {
console.log(this.formobj)
this.$refs.uploadMoreImg.submitUpload()
},
changeApk(val) {
console.log(val)
},
saveEdit() {
this.$refs['form_obj'].validate(valid => {
if (valid) {
this.submitdisabled = true
const formobj = {
baseManufacturerBankDto: this.baseManufacturerBankDto,
baseManufacturerDto: this.baseManufacturerDto
}
if (this.dialogStatus === 'add') {
req.save(formobj).then(resp => {
this.submitdisabled = false
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: resp.msg })
this.handleReturn('true')
}
}).catch(() => {
this.submitdisabled = false
})
} else if (this.dialogStatus === 'edit') {
req.update(formobj, this.sid).then(resp => {
this.submitdisabled = false
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: resp.msg })
this.handleReturn('true')
let bb = null
this.type_list.forEach((e) => {
if (e.dictValue === this.formobj.type) {
bb = {
key: e.dictKey
}
}).catch(() => {
this.submitdisabled = false
})
}
}
})
this.formobj.type = bb.key
this.$refs.uploadMoreImg.submitUpload()
this.handleReturn('true')
} else {
return false
}
})
},
backIcon(val) {
if (val.length > 0) {
this.formobj.iconUrl = val[0].url
}
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.dialogStatus = ''
this.sid = ''
this.baseManufacturerDto = {}
this.baseManufacturerBankDto = []
this.$refs['form_obj'].resetFields()
this.formobj = {
appName: '',
appSid: '',
iconUrl: '',
linkSid: '147694bb-c765-4426-8f67-d19a66585f31',
sourceAction: '',
sourcePackage: '',
type: '',
upgradeInfo: '',
modulePluginName: '',
sortNo: ''
}
this.list = []
this.$emit('doback')
}
}

232
anrui-system-ui/src/views/mobileterminal/updatePlugin.vue

@ -0,0 +1,232 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleSave()">保存
</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件名称</span>
</el-col>
<el-col :span="19">
<el-form-item prop="appName"><el-input v-model="formobj.appName" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件icon</span>
</el-col>
<el-col :span="19">
<el-form-item>
<upload_icon ref="uploadIcon" v-model="list" bucket="map" @change="backIcon" :upload-data="{type:'0002'}"/>
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>关联主程序</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.linkSid" class="addInput" clearable placeholder="" readonly /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件标识</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.appSid" class="addInput" clearable placeholder="" readonly /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>启动名称</span>
</el-col>
<el-col :span="19">
<el-form-item prop="modulePluginName"><el-input v-model="formobj.modulePluginName" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>主页路由</span>
</el-col>
<el-col :span="19">
<el-form-item prop="sourceAction"><el-input v-model="formobj.sourceAction" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件包名</span>
</el-col>
<el-col :span="19">
<el-form-item prop="sourcePackage"><el-input v-model="formobj.sourcePackage" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>插件类型</span>
</el-col>
<el-col :span="19">
<el-form-item prop="type">
<el-select v-model="formobj.type" placeholder="请选择" filterable clearable class="addInput">
<el-option v-for="item in type_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span><span class="icon">*</span>apk上传</span>
</el-col>
<el-col :span="19">
<el-form-item>
<upload_updateApk ref="uploadMoreImg" v-model="imgList" bucket="map" :fileInfo ="formobj"/>
</el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span>更新内容</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.upgradeInfo" type="textarea" resize="none" :autosize="{ minRows: 2, maxRows: 50}" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="5" class="tleftb">
<span>排序号</span>
</el-col>
<el-col :span="19">
<el-form-item><el-input v-model="formobj.sortNo" class="addInput" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</div>
</template>
<script>
import upload_updateApk from '@/components/uploadFile/upload_updateApk'
import upload_icon from '@/components/uploadFile/upload_icon'
export default {
name: 'updateplugin',
components: {
upload_updateApk,
upload_icon
},
data() {
return {
tableKey: 0,
index: 0,
viewTitle: '',
dialogStatus: '',
sid: '',
isShow: true,
list: [],
imgList: [],
type_list: [
{
dictKey: 0,
dictValue: '内置Activity'
},
{
dictKey: 1,
dictValue: '内置WebView'
},
{
dictKey: 2,
dictValue: 'RePlugin插件'
}
],
formobj: {
appName: '',
appSid: '',
iconUrl: '',
linkSid: '147694bb-c765-4426-8f67-d19a66585f31',
sourceAction: '',
sourcePackage: '',
type: '',
upgradeInfo: '',
modulePluginName: '',
sortNo: ''
},
rules: {
appName: [{ required: true, message: '插件名称不能为空', trigger: 'blur' }],
modulePluginName: [{ required: true, message: '启动名称不能为空', trigger: 'blur' }],
sourceAction: [{ required: true, message: '主页路由不能为空', trigger: 'blur' }],
sourcePackage: [{ required: true, message: '插件包名不能为空', trigger: 'blur' }],
type: [{ required: true, message: '插件类型不能为空', trigger: 'change' }]
},
submitdisabled: false
}
},
methods: {
init() {},
showEdit(row) {
console.log(row, 8585)
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.viewTitle = '更新插件'
this.dialogStatus = 'edit'
this.formobj.appName = row.appName
this.formobj.iconUrl = row.iconUrl
this.formobj.linkSid = row.linkSid
this.formobj.appSid = row.appSid
this.formobj.modulePluginName = row.modulePluginName
this.formobj.sourceAction = row.sourceAction
this.formobj.sourcePackage = row.sourcePackage
this.list.push({
name: '',
url: this.formobj.iconUrl
})
let bb = null
this.type_list.forEach((e) => {
if (e.dictKey == row.type) {
bb = {
type: e.dictValue
}
}
})
this.formobj.type = bb.type
},
handleSave() {
this.$refs['form_obj'].validate(valid => {
if (valid) {
let bb = null
this.type_list.forEach((e) => {
if (e.dictValue === this.formobj.type) {
bb = {
key: e.dictKey
}
}
})
this.formobj.type = bb.key
this.$refs.uploadMoreImg.submitUpload()
this.handleReturn('true')
} else {
return false
}
})
},
backIcon(val) {
if (val.length > 0) {
this.formobj.iconUrl = val[0].url
}
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.dialogStatus = ''
this.formobj = {
appName: '',
appSid: '',
iconUrl: '',
linkSid: '147694bb-c765-4426-8f67-d19a66585f31',
sourceAction: '',
sourcePackage: '',
type: '',
upgradeInfo: '',
modulePluginName: '',
sortNo: ''
}
this.list = []
this.$emit('doback')
}
}
}
</script>
<style scoped>
.addInput {
width: 30%;
}
</style>
Loading…
Cancel
Save