xuhuajiao 3 years ago
parent
commit
7277126761
  1. 5
      src/api/login.js
  2. 9
      src/api/system/menu.js
  3. 9
      src/api/upload/upload.js
  4. 2
      src/assets/icons/iconfont.js
  5. 6
      src/assets/styles/iconfont.css
  6. 16
      src/assets/styles/sidebar.scss
  7. 2
      src/assets/styles/variables.scss
  8. 2
      src/layout/components/Sidebar/Item.vue
  9. 19
      src/layout/components/Sidebar/SidebarItem.vue
  10. 1
      src/layout/components/TagsView/index.vue
  11. 1
      src/router/index.js
  12. 109
      src/router/routers.js
  13. 9
      src/store/modules/user.js
  14. 4
      src/views/components/MyAlbum.vue
  15. 3
      src/views/components/ThemeGalleryList.vue
  16. 111
      src/views/components/upload.vue
  17. 62
      src/views/content/material/materialList/index.vue
  18. 2
      src/views/content/publish/historyList/index.vue
  19. 9
      src/views/content/publish/urgentMessage/index.vue
  20. 1
      src/views/content/theme/index.vue
  21. 2
      src/views/dashboard/HomeThemeGallery.vue
  22. 7
      src/views/device/list/index.vue
  23. 24
      src/views/forgetPassword/index.vue
  24. 9
      src/views/immediateRelease/index.vue
  25. 4
      src/views/system/role/index.vue
  26. 437
      src/views/system/user/index.vue
  27. 516
      src/views/user/menu1.vue

5
src/api/login.js

@ -25,13 +25,14 @@ export function getMsg(phone) {
})
}
export function setPassword(phone, new_pass, code, uuid) {
// 忘记密码
export function setPassword(phone, newPass, code, uuid) {
return request({
url: 'api/auth/password',
method: 'post',
data: {
phone,
new_pass,
newPass,
code,
uuid
}

9
src/api/system/menu.js

@ -38,6 +38,15 @@ export function buildMenus() {
})
}
// 根据当前菜单ID获取子菜单/操作
export function FetchChildMenus(parameter) {
return request({
url: 'api/menus/child',
method: 'get',
params: parameter
})
}
export function add(data) {
return request({
url: 'api/menus',

9
src/api/upload/upload.js

@ -7,3 +7,12 @@ export function getQiniuToken() {
method: 'get'
})
}
// 带数据处理的凭证
export function FectchUploadTokenAndOps(parameter) {
return request({
url: 'api/qiniu/uploadTokenAndOps',
method: 'get',
params: parameter
})
}

2
src/assets/icons/iconfont.js
File diff suppressed because it is too large
View File

6
src/assets/styles/iconfont.css

@ -1,8 +1,8 @@
@font-face {
font-family: 'iconfont'; /* Project id 3202838 */
src: url('//at.alicdn.com/t/font_3202838_xxqwqp4ynb7.woff2?t=1647330074548') format('woff2'),
url('//at.alicdn.com/t/font_3202838_xxqwqp4ynb7.woff?t=1647330074548') format('woff'),
url('//at.alicdn.com/t/font_3202838_xxqwqp4ynb7.ttf?t=1647330074548') format('truetype');
src: url('//at.alicdn.com/t/font_3202838_2xsmxbo1xoa.woff2?t=1650869325774') format('woff2'),
url('//at.alicdn.com/t/font_3202838_2xsmxbo1xoa.woff?t=1650869325774') format('woff'),
url('//at.alicdn.com/t/font_3202838_2xsmxbo1xoa.ttf?t=1650869325774') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;

16
src/assets/styles/sidebar.scss

@ -73,7 +73,13 @@
.submenu-title-noDropdown,
.el-submenu__title {
&:hover {
color: $subMenuHover !important;
background-color: $menuHover !important;
.svg-icon{
position: relative;
left: -100px;
filter: drop-shadow(#fff 100px 0);
}
}
}
@ -81,6 +87,13 @@
color: $subMenuActiveText !important;
}
.is-active>.el-submenu__title {
&:hover {
color: $subMenuHover !important;
}
}
& .nest-menu .el-submenu>.el-submenu__title,
& .el-submenu .el-menu-item {
min-width: $sideBarWidth !important;
@ -88,6 +101,9 @@
&:hover {
background-color: $subMenuHover !important;
.svg-icon{
filter: drop-shadow(#fff 100px 0);
}
}
}
}

2
src/assets/styles/variables.scss

@ -17,7 +17,7 @@ $menuBg:#fff;
$menuHover:#3a8aeb;
$subMenuBg:#fff;
$subMenuHover:#3a8aeb;
$subMenuHover:#fff;
$sideBarWidth: 264px;

2
src/layout/components/Sidebar/Item.vue

@ -21,7 +21,7 @@ export default {
}
if (title) {
vnodes.push(<span slot='title'>{(title)}</span>)
vnodes.push(<span class='test' slot='title'>{(title)}</span>)
}
return vnodes
}

19
src/layout/components/Sidebar/SidebarItem.vue

@ -23,7 +23,7 @@ import { isExternal } from '@/utils/validate'
import Item from './Item'
import AppLink from './Link'
import FixiOSBug from './FixiOSBug'
// import { FetchChildMenus } from '@/api/system/menu'
export default {
name: 'SidebarItem',
components: { Item, AppLink },
@ -48,6 +48,20 @@ export default {
return {}
},
methods: {
getChildMenu(item) {
// console.log(item)
// const param = {
// id: item.id
// }
// console.log(param)
// FetchChildMenus(param).then(res => {
// if (res.code == 200) {
// console.log(res)
// } else {
// return this.$message.error('')
// }
// })
},
hasOneShowingChild(children = [], parent) {
const showingChildren = children.filter((item) => {
if (item.hidden) {
@ -58,6 +72,9 @@ export default {
}
})
// console.log(showingChildren)
// console.log(showingChildren.length)
if (showingChildren.length === 1) {
return true
}

1
src/layout/components/TagsView/index.vue

@ -49,7 +49,6 @@ export default {
},
computed: {
visitedViews() {
console.log(this.$store.state.tagsView.visitedViews)
return this.$store.state.tagsView.visitedViews
},
routes() {

1
src/router/index.js

@ -48,7 +48,6 @@ router.beforeEach((to, from, next) => {
if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入
next()
} else {
console.log('efdlsdkadjas;dkasdk')
next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
NProgress.done()
}

109
src/router/routers.js

@ -57,36 +57,34 @@ export const constantRouterMap = [
noCache: true
}
}]
},
{
path: '/user',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: 'menu1',
component: (resolve) => require(['@/views/user/menu1'], resolve),
name: '',
meta: { title: '' }
}
]
}
// {
// path: '/system',
// path: '/user',
// component: Layout,
// hidden: true,
// redirect: 'noredirect',
// children: [
// {
// path: 'menu1',
// component: (resolve) => require(['@/views/user/menu1'], resolve),
// name: '',
// meta: { title: '' }
// }
// ]
// },
// {
// path: '/system',
// component: Layout,
// meta: {
// title: '权限管理',
// icon: 'documentation'
// title: '用户管理',
// icon: 'quanxianguanli'
// },
// children: [{
// path: '/user',
// component: () => import('@/views/system/user/index'),
// meta: {
// title: '用户管理',
// icon: 'edit'
// icon: ''
// }
// },
// {
@ -94,15 +92,23 @@ export const constantRouterMap = [
// component: () => import('@/views/system/role/index'),
// meta: {
// title: '角色管理',
// icon: 'edit'
// icon: ''
// }
// }]
// },
// {
// path: '/dept',
// component: Layout,
// meta: {
// title: '机构管理',
// icon: 'jigouguanli'
// },
// {
// children: [{
// path: '/dept',
// component: () => import('@/views/system/dept/index'),
// meta: {
// title: '机构管理',
// icon: 'edit'
// icon: ''
// }
// },
// {
@ -110,24 +116,7 @@ export const constantRouterMap = [
// component: () => import('@/views/system/menu/index'),
// meta: {
// title: '权限管理',
// icon: 'edit'
// }
// }]
// },
// {
// path: '/role',
// component: Layout,
// redirect: '/system',
// meta: {
// title: '权限管理',
// icon: 'documentation'
// },
// children: [{
// path: '/system/role',
// component: () => import('@/views/system/role/index'),
// meta: {
// title: '角色管理',
// icon: 'edit'
// icon: ''
// }
// }]
// },
@ -136,22 +125,22 @@ export const constantRouterMap = [
// component: Layout,
// meta: {
// title: '设备管理',
// icon: 'documentation'
// icon: 'shebeiguanli'
// },
// children: [{
// path: '/device',
// component: () => import('@/views/device/index'),
// component: () => import('@/views/device/list/index'),
// meta: {
// title: '设备列表',
// icon: 'edit'
// icon: ''
// }
// },
// {
// path: '/deviceConfig',
// component: () => import('@/views/device/deviceConfig'),
// component: () => import('@/views/device/config/index'),
// meta: {
// title: '开关机配置',
// icon: 'edit'
// icon: ''
// }
// }]
// },
@ -160,30 +149,30 @@ export const constantRouterMap = [
// component: Layout,
// meta: {
// title: '内容管理',
// icon: 'documentation'
// icon: 'neirongguanli'
// },
// children: [{
// path: '/content',
// component: () => import('@/views/materialContent/index'),
// component: () => import('@/views/content/material/index'),
// meta: {
// title: '素材库',
// icon: 'edit'
// icon: ''
// }
// },
// {
// path: '/publish',
// component: () => import('@/views/publishContent/index'),
// path: '/display',
// component: () => import('@/views/content/publish/index'),
// meta: {
// title: '上屏发布',
// icon: 'edit'
// icon: ''
// }
// },
// {
// path: '/theme',
// component: () => import('@/views/ThemeGallery/index'),
// path: '/\r\ntheme',
// component: () => import('@/views/content/theme/index'),
// meta: {
// title: '主题库',
// icon: 'edit'
// icon: ''
// }
// },
// {
@ -191,20 +180,6 @@ export const constantRouterMap = [
// component: () => import('@/views/immediateRelease/index')
// }]
// }
// {
// path: '/user',
// component: Layout,
// hidden: true,
// redirect: 'noredirect',
// children: [
// {
// path: 'center',
// component: resolve => require(['@/views/system/user/center'], resolve),
// name: '个人中心',
// meta: { title: '个人中心' }
// }
// ]
// }
]
export default new Router({

9
src/store/modules/user.js

@ -45,9 +45,10 @@ const user = {
// 忘记密码
SetPassword({ commit }, userInfo) {
return new Promise((resolve, reject) => {
setPassword(userInfo.phone, userInfo.new_pass, userInfo.code, userInfo.uuid).then(res => {
setUserInfo(res.data, commit)
resolve(res)
setPassword(userInfo.phone, userInfo.newPass, userInfo.code, userInfo.uuid).then(res => {
if (res.code == 200) {
resolve(res)
}
}).catch(error => {
reject(error)
})
@ -58,7 +59,6 @@ const user = {
return new Promise((resolve, reject) => {
const token = getToken()
getInfo(token).then(res => {
console.log(res)
setUserInfo(res.data, commit)
resolve(res)
}).catch(error => {
@ -94,7 +94,6 @@ export const logOut = (commit) => {
}
export const setUserInfo = (res, commit) => {
console.log(res)
// 如果没有任何权限,则赋予一个默认的权限,避免请求死循环
if (res.roles.length === 0) {
commit('SET_ROLES', ['ROLE_SYSTEM_DEFAULT'])

4
src/views/components/MyAlbum.vue

@ -182,13 +182,11 @@ export default {
getMyAlbum() {
let inOrOutFolderId
if (this.$route.query.folderTag) {
console.log('文件夹内')
this.isToFolder = true
this.currentFolder = localStorage.getItem('currentFolder')
this.currentFolderId = localStorage.getItem('currentFolderId')
inOrOutFolderId = this.currentFolderId
} else {
console.log('文件夹外')
this.isToFolder = false
localStorage.removeItem('currentFolder')
localStorage.removeItem('currentFolderId')
@ -319,7 +317,6 @@ export default {
},
//
deleteMaterialFolder() {
console.log(this.folderForm.id)
this.$confirm('此操作将永久删除该文件夹, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -351,7 +348,6 @@ export default {
// - /
submitFolderForm(formName) {
this.folderForm.img_path = this.$refs.childUpload.imageUrl
console.log(this.folderForm)
this.$refs[formName].validate((valid) => {
if (valid) {
FetchSaveThemeFolder(this.folderForm).then(res => {

3
src/views/components/ThemeGalleryList.vue

@ -119,7 +119,7 @@ export default {
}
},
isMyAlbum(newName, oldName) {
console.log(newName)
// console.log(newName)
}
},
mounted() {
@ -202,7 +202,6 @@ export default {
}
FetchAddToMyAlbum(params).then(res => {
if (res.code == 200) {
console.log(res)
this.$message.success('已成功添加到我的画册里啦~')
} else {
this.$message.error(res.msg)

111
src/views/components/upload.vue

@ -2,13 +2,13 @@
<div class="components_upload">
<div v-if="isTheme">
<el-button class="cont_upload_btn" round type="primary">选择文件</el-button>
<input id="upFile" type="file" name="upFile" @change="changeFile($event)" />
<input id="upFile" ref="inputfile" type="file" name="upFile" @change="changeFile($event)" />
</div>
<el-button v-if="!isTheme" class="cont_upload_btn" round type="primary">上传</el-button>
<input v-if="!isTheme" id="upFile" type="file" name="upFile" @change="changeFile($event)" />
<input type="button" name="开始上传" value="开始上传" class="start_upload" @click="uploadFile()" />
<!-- <input type="button" name="开始上传" value="开始上传" class="start_upload" @click="uploadFile()" /> -->
<!-- <img v-if="coverUrl" :src="coverUrl" alt="封面" /> -->
<el-progress v-if="filePercent" :percentage="filePercent" />
<!-- <el-progress v-if="filePercent" :percentage="filePercent" /> -->
<!-- {{ filePercent }} -->
<!-- 上传列表layer -->
<div v-if="!isTheme" class="upload_layer">
@ -20,21 +20,18 @@
:visible.sync="uploadListVisible"
height="384px"
>
<!-- :status="percentage === 100 ? undefined : 'success'" -->
<el-table :data="fileData" :header-cell-style="{ color: '#333' }">
<el-table-column align="center" prop="fileNames" label="文件名" />
<el-table-column align="center" prop="formatType" label="类型" />
<el-table-column align="center" prop="fileSize" label="大小" />
<el-table-column align="center" prop="filePercentTxt" label="状态">
<el-table-column align="center" prop="filePercent" label="状态">
<template>
<div class="loadingModal" :style="{ 'height': '100%' }">
<!-- :format="format" -->
<!-- <el-progress
<el-progress
:stroke-width="6"
:percentage="filePercent"
:color="colors"
/> -->
{{ filePercentTxt }}
/>
</div>
</template>
</el-table-column>
@ -44,11 +41,13 @@
type="primary"
round
class="on_off_btn"
style="width: 50px; display: inline-block;"
@click="end(scope.$index, scope.row)"
>{{ loading_txt }}</el-button>
<el-button
type="info"
round
style="width: 50px; display: inline-block;"
class="upload_delt"
@click="handleRecord(scope.$index, scope.row)"
>删除</el-button>
@ -56,15 +55,10 @@
</el-table-column>
</el-table>
<div class="upload_list_right">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
multiple
:limit="3"
>
<div class="right_upload">点击上传</div>
</el-upload>
<div>
<el-button class="cont_upload_btn" round type="primary">点击上传</el-button>
<input id="upFile" ref="inputfile" type="file" name="upFile" @change="changeFile($event)" />
</div>
<div class="upload_return" @click="uploadListVisible=false">返回</div>
</div>
</el-dialog>
@ -74,7 +68,9 @@
<script>
// import axios from 'axios'
import * as qiniu from 'qiniu-js'
import { getQiniuToken } from '@/api/upload/upload'
import { getQiniuToken, FectchUploadTokenAndOps } from '@/api/upload/upload'
var observable
export default {
name: 'Qiniu',
props: {
@ -146,19 +142,56 @@ export default {
}
}
// this.uploadListVisible = true
// this.fileData.push({
// fileNames: this.fileNames,
// formatType: this.formatType,
// fileSize: this.fileSize,
// filePercentTxt: this.filePercentTxt
// })
// console.log(this.fileData[0].filePercent)
this.fileData.push({
fileNames: this.fileNames,
formatType: this.formatType,
fileSize: this.fileSize,
filePercent: this.filePercent
})
setTimeout(() => {
this.uploadFile()
}, 1000)
// this.getOpsToken()
this.uploadListVisible = true
},
getQiniuToken() {
getQiniuToken().then(res => {
this.token = res.data
})
},
getOpsToken() {
const name = Date.parse(new Date()) + '.mp4'
const name1 = Date.parse(new Date())
const param = {
tFileName: name1,
tExtName: this.postfix
}
FectchUploadTokenAndOps(param).then(res => {
this.token = res.data
const _this = this
const putExtra = {
fname: name1,
params: {},
mimeType: null
}
const config = {
useCdnDomain: true,
region: qiniu.region.z0,
concurrentRequestLimit: 3,
checkByMD5: true,
retryCount: 3
}
const token = this.token
observable = qiniu.upload(
this.file,
name,
token,
putExtra,
config
)
_this.percentage = 10
})
},
// format(percentage) {
// return percentage === 100 ? '100%' : `${percentage}%`
// },
@ -167,7 +200,6 @@ export default {
const audioElement = new Audio(fileUrl)
audioElement.addEventListener('loadedmetadata', function() {
_this.duration = parseInt(audioElement.duration) // 182.36
console.log(_this.duration)
// self.ruleForm.videoDuration = parseInt(result) // int
})
},
@ -176,7 +208,6 @@ export default {
const _this = this
// token
const token = _this.token
console.log(token)
//
var config = {
useCdnDomain: true
@ -194,24 +225,12 @@ export default {
//
next(res) {
//
console.log(res)
console.log(res.total.size)
_this.filePercent = parseInt(res.total.percent)
console.log(_this.filePercent)
this.filePercentTxt = '上传中'
_this.filePercentTxt = '上传中'
if (_this.filePercent == 100) {
// _this.fileData.push(_this.filePercent)
// _this.fileData.forEach((value, index) => {
// value['filePercent'] = parseInt(res.total.percent)
// })
this.filePercentTxt = '上传成功'
console.log('success')
_this.filePercentTxt = '上传成功'
}
// _this.fileData[0].filePercent = parseInt(res.total.percent)
// console.log(_this.fileData[0].filePercent)
// _this.fileData.forEach((value, index) => {
// value['filePercent'] = parseInt(res.total.percent)
// })
_this.$set(_this.fileData, 0, _this.fileData[0])
},
//
error(err) {
@ -220,11 +239,9 @@ export default {
//
complete(res) {
this.filePercentTxt = '上传成功'
console.log(res)
console.log(res.key)
_this.filePercentTxt = '上传成功'
_this.fileData[0].filePercentTxt = _this.filePercentTxt
_this.uploadFileUrl = 'http://' + _this.baseurl + '/' + res.key
console.log(_this.uploadFileUrl)
//
_this.getVideoDuration(_this.uploadFileUrl)
setTimeout(() => {

62
src/views/content/material/materialList/index.vue

@ -25,7 +25,7 @@
<span v-if="folderChecked == index" class="checked_btn"></span>
</div>
<!-- 素材库list -->
<div v-for="(item, index) in materialList" :key="'list-'+index" :class="['material_item', 'item_cont', { 'item_multi': selectedListId.includes(item.material_id) }]">
<div v-for="(item, index) in materialList" :key="'list-'+index" :class="['material_item', 'item_cont', { 'item_multi': selectedListId.includes(item.material_id) }]" @click.stop="previewMaterial(item)">
<div v-if="item.img_path || item.material_type == 1" class="img_box">
<img :src="item.img_path" :onerror="defaultImg" alt />
</div>
@ -35,10 +35,23 @@
<span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span>
</div>
<div class="file_name">{{ item.material_name }}</div>
<span v-if="isMultiSelected" class="checked_btn" @click="selectedItem(item)"></span>
<span v-if="isMultiSelected" class="checked_btn" @click.stop="selectedItem(item)"></span>
</div>
</div>
<!-- 素材点击预览 -->
<div class="">
<el-dialog
title="预览"
:visible.sync="previewVisible"
:show-close="false"
>
<img v-if="previewType==0" :src="previewSrc" :onerror="defaultImg" fit="contain" />
<video v-if="previewType==1" :src="previewSrc" controls width="100%"></video>
<audio v-if="previewType==2" :src="previewSrc" controls></audio>
</el-dialog>
</div>
<!-- 创建文件夹layer / 编辑 -->
<div class="publish_layer">
<el-dialog :title="layerTitle" :close-on-click-modal="false" :show-close="false" :visible.sync="mkdirVisible" width="616px">
@ -70,7 +83,7 @@
<el-button type="button" class="mulit_btn" @click="publishHandle(0)">即时发布</el-button>
<el-button type="button" class="mulit_btn" @click="publishHandle(1)">定时发布</el-button>
<el-button type="button" class="mulit_btn" :disabled="selectedListId.length > 1" @click="editContent()">编辑</el-button>
<el-button type="button" class="mulit_btn">下载</el-button>
<el-button type="button" class="mulit_btn" :disabled="selectedListId.length > 1" @click="downloadMaterial">下载</el-button>
<el-button type="button" class="mulit_btn" @click="moveingTo()">移动</el-button>
<el-button type="button" class="mulit_btn mulit_delt_btn" @click="deleteMyMaterial">删除</el-button>
</div>
@ -128,6 +141,7 @@ export default {
},
data() {
return {
isTheme: false,
orga_id: '133221333123111', // ID
rootFolderId: null, // ID
@ -167,7 +181,10 @@ export default {
tabType: null,
audioNum: 0,
imgNum: 0,
videoNum: 0
videoNum: 0,
previewVisible: false, //
previewSrc: null,
previewType: null
}
},
computed: {
@ -177,7 +194,6 @@ export default {
},
watch: {
isMultiSelected(newName, oldName) {
console.log('newName', newName)
if (newName === false) {
this.selectedListId = []
}
@ -205,23 +221,44 @@ export default {
})
},
'$route.query.folderTag'(Val) {
console.log(Val)
// console.log(Val)
}
},
created() {
// console.log(localStorage.getItem('materialTabIndex'))
},
mounted: function() {
console.log(this.$route.query.folderTag)
this.getMaterialList()
document.addEventListener('click', this.hiddenFolderActiveClick)
},
methods: {
//
downloadMaterial() {
// console.log(this.selectedMaterial[0])
// const url = this.selectedMaterial[0].deposit_url.lastIndexOf('.')
// console.log(url)
},
//
previewMaterial(item) {
this.previewVisible = true
this.folderChecked = -1
this.isEditFolder = false
switch (item.material_type) {
case '0':
this.previewType = 0
this.previewSrc = item.img_path
break
case '1':
this.previewType = 1
this.previewSrc = item.deposit_url
break
case '2':
this.previewType = 2
this.previewSrc = item.deposit_url
break
}
},
// list
getMaterialList() {
let params
if (this.$route.query.folderTag) {
console.log('文件夹内')
this.isToFolder = true
this.currentFolder = localStorage.getItem('currentFolder')
this.currentFolderId = localStorage.getItem('currentFolderId')
@ -233,7 +270,6 @@ export default {
'orga_id': this.orga_id
}
} else {
console.log('文件夹外')
this.isToFolder = false
localStorage.removeItem('currentFolder')
localStorage.removeItem('currentFolderId')
@ -427,7 +463,6 @@ export default {
//
saveMaterial() {
if (!this.isEditMaterial) {
console.log(this.$refs.uploadMaterial.fileSize)
const formatType = this.$refs.uploadMaterial.formatType
this.uploadFileUrl = this.$refs.uploadMaterial.uploadFileUrl
//
@ -473,7 +508,6 @@ export default {
'orga_id': this.orga_id, // id
'store_type': 1 // 1. 2.
}
console.log(params)
if (!this.isEditMaterial) {
//
delete params.material_id

2
src/views/content/publish/historyList/index.vue

@ -106,7 +106,6 @@ export default {
item.release_weekly = ''
}
})
console.log(this.publishHistoryList)
}
})
},
@ -117,7 +116,6 @@ export default {
} else {
this.clearBtnDisabled = true
}
console.log(val)
},
//
handleSizeChange(size) {

9
src/views/content/publish/urgentMessage/index.vue

@ -221,7 +221,6 @@ export default {
if (res.code == 200) {
this.urgentMessage = res.data.content
this.total = res.data.totalElements
// console.log(this.urgentMessage);
}
})
},
@ -237,10 +236,7 @@ export default {
})
},
// is_state1 2
// row.is_state == 1 ? "" : ""
isStopHandle(index, row) {
console.log(row)
// console.log(index)
if (row.is_state == 1) {
row.is_state = 2
} else {
@ -251,7 +247,6 @@ export default {
state: row.is_state
}
reqChangeMessage(params).then(res => {
// console.log(res)
if (res.code == 200) {
if (params.state == 1) {
this.$message({
@ -325,8 +320,6 @@ export default {
//
submit() {
this.$refs.form.validate((valid) => {
console.log(this.deviceTags)
console.log(this.form.notice_devices)
if (this.form.notice_device == 2) {
if (this.deviceTags.length != 0) {
this.deviceTags.forEach(item => {
@ -350,7 +343,6 @@ export default {
notice_id: this.form.notice_id,
orga_id: '133221333123111'
}
console.log(params)
reqEditMessage(params).then((res) => {
if (res.code == 200) {
this.$message({
@ -393,7 +385,6 @@ export default {
},
//
selectPosition(selVal) {
console.log(selVal)
this.form.context_position = selVal.key
this.form.context_position_name = selVal.name
},

1
src/views/content/theme/index.vue

@ -259,7 +259,6 @@ export default {
methods: {
parent() {
this.isMyAlbum = this.$refs.ThemeGalleryList.themeItemActive == 2
console.log(this.$refs.ThemeGalleryList.themeItemActive)
this.$refs.MyAlbum.selectInFolderid = []
this.$refs.MyAlbum.getMyAlbum()
},

2
src/views/dashboard/HomeThemeGallery.vue

@ -14,6 +14,7 @@
:is-multi-selected="isMultiSelected"
:mulit-text="mulitText"
:show-item-info="false"
:is-my-album="isMyAlbum"
/>
</div>
</template>
@ -25,6 +26,7 @@ export default {
components: { ThemeGalleryList },
data() {
return {
isMyAlbum: false,
mulitText: '多选',
isMultiSelected: false
}

7
src/views/device/list/index.vue

@ -196,7 +196,6 @@ export default {
// this.queryInfo.page = pager
const params = this.queryInfo
ReqDeviceList(params).then(res => {
console.log(res)
if (res.code == 200) {
this.deviceList = res.data.content
this.total = res.data.totalElements
@ -217,13 +216,11 @@ export default {
},
//
selectDirection(selVal) {
console.log(selVal)
this.form.orientation = selVal.key
this.form.orientation_name = selVal.name
},
//
removeDevice(row) {
// console.log(row.device_id)
this.$confirm(`你确定解绑${row.device_name}?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@ -254,14 +251,12 @@ export default {
},
//
handleClick(row) {
console.log(row)
this.contentVisible = true
const params = {
device_id: row.device_id
}
FetchFindReleaseDetailsByDeviceId(params).then(res => {
if (res.code === 200) {
console.log(res)
this.contentDevice = res.data
}
})
@ -277,7 +272,6 @@ export default {
device_id: this.form.device_id,
orga_id: '13000'
}
console.log(params)
ReqDeviceEdit(params).then(res => {
if (res.code == 200) {
this.$message({
@ -300,7 +294,6 @@ export default {
device_id: id
}
ReqQueryDevice(params).then(res => {
console.log(res)
if (res.code == 200) {
this.getDevice()
}

24
src/views/forgetPassword/index.vue

@ -70,7 +70,8 @@
<script>
import { encrypt } from '@/utils/rsaEncrypt'
import { isvalidPhone } from '@/utils/validate'
import { getMsg } from '@/api/login'
// import { getMsg } from '@/api/login'
import { FetchCodeMsg } from '@/api/login'
import Background from '@/assets/images/background.jpg'
export default {
name: 'ForgetPassword',
@ -135,13 +136,20 @@ export default {
},
created() { },
methods: {
//
getAuthCode() {
const user = {
const param = {
phone: this.modifyForm.phone
}
getMsg(user.phone).then(res => {
FetchCodeMsg(param).then(res => {
if (res.code == 200) {
this.modifyForm.uuid = res.data.uuid
this.countdown()
} else {
this.$message.error(res.msg)
}
}).catch(res => {
console.log(res)
this.modifyForm.uuid = res.uuid
})
},
countdown() {
@ -162,7 +170,6 @@ export default {
clearInterval(timer)
this.verification = '重新获取'
this.disabledSendCode = false
console.log('倒计时结束')
}
}, 1000)
},
@ -173,20 +180,17 @@ export default {
this.$refs.modifyForm.validate(valid => {
const user = {
phone: this.modifyForm.phone,
new_pass: this.modifyForm.password,
newPass: encrypt(this.modifyForm.password),
code: this.modifyForm.code,
uuid: this.modifyForm.uuid
}
if (user.new_pass !== this.cookiePass) {
user.new_pass = encrypt(user.new_pass)
}
if (valid) {
this.loading = true
this.$store
.dispatch('SetPassword', user)
.then(() => {
this.loading = false
this.$router.push({ path: this.redirect || '/' })
this.$router.push({ path: '/login' })
})
.catch(() => {
this.loading = false

9
src/views/immediateRelease/index.vue

@ -476,7 +476,6 @@ export default {
if (res.code == 200) {
const releaseInfo = res.data.release
this.releaseInfo = releaseInfo
console.log(releaseInfo)
this.form.orga_id = releaseInfo.orga_id
this.form.relaase_name = releaseInfo.relaase_name
this.form.release_cycle = releaseInfo.release_cycle
@ -632,13 +631,10 @@ export default {
json.ranking = index + 1
return json
})
console.log(this.form.release_materialDTOs)
// bgm
const isBgm = this.selectedMaterial.find(item => {
return item.material_type == 2
})
console.log('有啊')
console.log(isBgm)
if (isBgm) {
this.form.bgm_name = isBgm.name
this.form.bgm_main = isBgm.deposit_url
@ -646,7 +642,6 @@ export default {
this.form.bgm_main = null
this.form.bgm_name = null
}
console.log(this.form)
//
FetchSaveRelease(this.form).then(res => {
if (res.code == 200) {
@ -779,8 +774,6 @@ export default {
})
},
dragEnd() {
// console.log(this.selectedEditData)
// console.log(this.selectedMaterial)
},
//
selectAudioCont(type, index) {
@ -881,7 +874,6 @@ export default {
this.isMultiSelected = !this.isMultiSelected
if (this.isMultiSelected) {
this.mulitText = '取消'
console.log(this.activeItemIndex)
if (this.activeIndex == 0) {
this.$refs.MaterialList.selectedListId = []
this.$refs.MaterialList.selectedMaterial = []
@ -940,7 +932,6 @@ export default {
})
}
// localStorage.setItem('selectedMaterial', JSON.stringify(this.selectedMaterial))
console.log(this.selectedMaterial)
this.getSelectTotal()
this.getSelectTimeTotal()
this.mulitText = '多选'

4
src/views/system/role/index.vue

@ -114,7 +114,7 @@
style="display: inline-block"
>
<el-tag
v-if="tag.type != 2"
v-if="tag.type == 1"
type="primary"
>
{{ tag.label }}
@ -156,6 +156,7 @@ export default {
roleList: [],
page: 1,
size: 10,
total: 0,
blurry: null,
form: {
id: null,
@ -265,7 +266,6 @@ export default {
this.roleTree[index].isCheck = false
this.roleTree[index].isIndeterminate = true
}
console.log(tickCount)
},
checkboxT(row) {
return row.level >= this.level

437
src/views/system/user/index.vue

@ -1,6 +1,5 @@
<template>
<div class="app-container">
fff
<!--工具栏-->
<div class="head-container">
<el-row type="flex">
@ -9,28 +8,29 @@
<div class="form_item">
<span>角色名称</span>
<el-input
v-model="blurry"
v-model="query.role_name"
clearable
size="small"
placeholder="角色名称"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
@keyup.enter.native="getUserList(page,query.role_name)"
@clear="getUserList(page,query.role_name)"
/>
</div>
<div class="form_item">
<span>管理员名称</span>
<el-input
v-model="blurry"
v-model="query.nickName"
clearable
size="small"
placeholder="管理员名称"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="crud.toQuery"
@keyup.enter.native="getUserList(page,query.nickName)"
@clear="getUserList(page,query.nickName)"
/>
</div>
<rrOperation />
</el-col>
<el-col class="page_add" :span="4">
<el-button class="table_add" type="primary" round @click="addDialogVisible = true">新增</el-button>
@ -46,54 +46,45 @@
title="新增"
width="576px"
>
<el-form ref="form" :inline="true" :model="form" size="small" label-width="100px">
<el-form ref="form" :inline="true" :rules="rules" :model="form" size="small" label-width="100px">
<el-form-item
label="手机号"
prop="account"
:rules="[
{ required: true, message: '请输入手机号', trigger: 'blur' }
]"
prop="username"
>
<el-input v-model="form.account" style="width: 336px" />
<el-input v-model="form.username" style="width: 336px" />
</el-form-item>
<el-form-item
label="管理员名称"
prop="nickName"
:rules="[
{ required: true, message: '请输入管理员名称', trigger: 'blur' },
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
]"
>
<el-input v-model="form.nickName" style="width: 336px" />
</el-form-item>
<el-form-item
label="管理员角色"
prop="roles"
:rules="[
{ required: true, message: '请选择管理员角色', trigger: 'change' }
]"
prop="rolesName"
>
<el-select v-model="form.roles" placeholder="请选择管理员角色" style="width: 336px">
<el-option label="机构超级管理员" value="1" />
<el-option label="普通用户" value="2" />
<el-select v-model="form.rolesName" placeholder="请选择管理员角色" style="width: 336px" @change="selectRoles">
<el-option
v-for="item in roleList"
:key="item.id"
:value="item.name"
:label="item.name"
/>
</el-select>
</el-form-item>
<el-form-item
label="管理员状态"
prop="enabled"
:rules="[
{ required: true, trigger: 'change', message: '请选择管理员状态' }
]"
>
<el-select v-model="form.enabled" placeholder="请选择管理员状态" style="width: 336px">
<el-option label="启用" value="1" />
<el-option label="关闭" value="0" />
<el-option label="启用" value="true" />
<el-option label="关闭" value="false" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="crud.status.cu === 2" type="primary" round @click="crud.submitCU">保存</el-button>
<el-button round @click="addDialogVisible=false">关闭</el-button>
<el-button type="primary" round @click="addUser('form')">保存</el-button>
<el-button round @click="resetForm('form')">关闭</el-button>
</div>
</el-dialog>
<!-- 编辑用户 -->
@ -106,7 +97,7 @@
width="576px"
>
<el-form
ref="form"
ref="editForm"
:inline="true"
:model="editForm"
:rules="rules"
@ -116,107 +107,105 @@
<el-form-item label="管理员名称" prop="nickName">
<el-input v-model="editForm.nickName" style="width: 336px" />
</el-form-item>
<el-form-item label="管理员角色" prop="roles">
<el-input v-model="editForm.roles" disabled style="width: 336px" />
<el-form-item label="管理员角色" prop="rolesName">
<el-input v-model="editForm.rolesName" disabled style="width: 336px" />
</el-form-item>
<el-form-item label="机构名称" prop="orgName">
<el-input v-model="editForm.orgName" disabled style="width: 336px" />
</el-form-item>
<el-form-item label="更改手机号" prop="phone">
<el-input v-model.number="editForm.phone" style="width: 336px" />
</el-form-item>
<el-form-item label="验证码" prop="code" class="auth_code">
<el-input v-model.number="editForm.code" style="width: 336px" />
<div class="login-code">
<span @click="countdown()">{{ verification }}</span>
</div>
<el-form-item label="管理员状态" prop="enabledName">
<el-select v-model="editForm.enabledName" style="width: 336px" @change="selectEnabled">
<el-option v-for="item in enabledData" :key="item.key" :label="item.name" :value="item" />
</el-select>
</el-form-item>
<el-form-item label="登录密码" prop="password">
<el-input v-model="editForm.password" style="width: 336px" />
<el-form-item label="登录账号" prop="phone">
<el-input v-model.number="editForm.phone" disabled style="width: 336px" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="crud.status.cu === 2" type="primary" round @click="crud.submitCU">保存</el-button>
<el-button round @click="editDialogVisible=false">关闭</el-button>
<el-button type="primary" round @click="editUser('editForm')">保存</el-button>
<el-button round @click="resetForm('editForm')">关闭</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-row :gutter="15">
<el-col>
<!-- :data="crud.data" -->
<el-table
ref="table"
v-loading="crud.loading"
:data="tableData"
:data="userList"
:header-cell-style="{ background: '#3a8aeb', color: '#fff' }"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column :selectable="checkboxT" type="selection" width="55" />
<el-table-column prop="account" width="135" align="center" label="登录账号" />
<el-table-column prop="username" width="135" align="center" label="登录账号" />
<el-table-column prop="nickName" align="center" label="管理员名称" />
<el-table-column prop="roles" align="center" label="管理角色" />
<el-table-column prop="orgName" align="center" label="机构名称" />
<el-table-column prop="roles" align="center" label="管理角色">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.roles" :key="index">
<div>{{ item.name }}</div>
</div>
</template>
</el-table-column>
<el-table-column prop="org" align="center" label="机构名称">
<template slot-scope="scope">
<div>{{ scope.row.org ? scope.row.org.name : '' }}</div>
</template>
</el-table-column>
<el-table-column prop="phone" align="center" label="手机号码" />
<el-table-column label="状态" align="center" prop="enabled">
<template slot-scope="scope">
<div>{{ scope.row.enabled == 0 ? '启用' : '关闭' }}</div>
<div>{{ scope.row.enabled ? '启用' : '关闭' }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" width="155" align="center" label="创建日期">
<template slot-scope="{row}">
<div>{{ row.createTime | parseTime }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" width="135" label="创建日期" />
<!-- v-if="checkPer(['admin','user:edit','user:del'])" -->
<el-table-column label="操作" width="120" align="center" fixed="right">
<template slot-scope="scope">
<!-- <udOperation
:data="scope.row"
:permission="permission"
:disabled-dle="scope.row.id === user.id"
/>-->
<el-button
type="primary"
class="edit_btn"
@click="editFormData(scope.$index, scope.row)"
>编辑</el-button>
<el-button type="danger" class="delt_btn">删除</el-button>
<el-button
type="danger"
class="delt_btn"
:disabled="scope.row.id === user.id"
@click="deleteUser(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
<el-pagination style="margin-top: 20px;" background :current-page="page" :total="total" :page-size="size" :pager-count="5" :page-sizes="[3, 5, 10]" layout="prev, pager, next, jumper,->,sizes,total" @current-change="getUserList" @size-change="handleSizeChange" />
</el-col>
</el-row>
</div>
</template>
<script>
// import crudUser from '@/api/system/user'
import { FetchUserList, FetchAddUser, FetchDeleteUser, FetchEditUser } from '@/api/system/user'
import { FetchDropDownList } from '@/api/system/role'
import { isvalidPhone } from '@/utils/validate'
// import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
// import crudOperation from '@crud/CRUD.operation'
// import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import { parseTime } from '@/utils/index.js'
import { mapGetters } from 'vuex'
// const defaultForm = {
// id: null,
// account: null,
// nickName: '',
// roles: null,
// enabled: ''
// }
export default {
name: 'User',
components: { rrOperation, pagination },
// cruds() {
// return CRUD({ title: '', url: 'api/users', crudMethod: { ...crudUser }})
// },
// mixins: [presenter(), header(), form(defaultForm), crud()],
filters: {
parseTime(time, cFormat) {
return parseTime(time, cFormat)
}
},
components: { },
//
data() {
//
const validPhone = (rule, value, callback) => {
if (!value) {
callback(new Error('请输入电话号码'))
callback(new Error('请输入手机号码'))
} else if (!isvalidPhone(value)) {
callback(new Error('请输入正确的11位手机号码'))
} else {
@ -224,37 +213,45 @@ export default {
}
}
return {
// list
userList: [],
total: 0,
page: 1,
size: 10,
// list
roleList: [],
//
query: {
role_name: '',
nickName: ''
},
// form
addDialogVisible: false,
form: {
username: null,
nickName: '',
roles: [],
rolesName: '',
enabled: null,
org: null,
phone: null
},
//
editDialogVisible: false,
editForm: {
id: null,
nickName: '',
roles: '',
orgName: '',
roles: [],
rolesName: '',
org: '',
orgName: null,
username: null,
phone: '',
code: '',
password: ''
},
disabledSendCode: false,
verification: '获取验证码',
countNum: 60,
height: document.documentElement.clientHeight - 180 + 'px;',
permission: {
add: ['admin', 'user:add'],
edit: ['admin', 'user:edit'],
del: ['admin', 'user:del']
enabled: null,
enabledName: null
},
tableData: [
{
id: 1,
account: '15100701025',
nickName: '王XX',
roles: '机构超级管理员',
orgName: 'XX机构',
phone: '15100701025',
enabled: '0',
createTime: '2021-11-10'
}
],
enabledData: [{ key: 'true', name: '开启' }, { key: 'false', name: '关闭' }],
//
rules: {
nickName: [
{ required: true, message: '请输入管理员名称', trigger: 'blur' },
@ -266,8 +263,20 @@ export default {
code: [
{ required: true, trigger: 'blur', message: '请输入验证码' }
],
password: [
{ required: true, trigger: 'blur', message: '请输入密码' }
username: [
{ required: true, trigger: 'blur', validator: validPhone }
],
rolesName: [
{ required: true, message: '请选择管理员角色', trigger: 'change' }
],
enabled: [
{ required: true, trigger: 'change', message: '请选择管理员状态' }
],
enabledName: [
{ required: true, trigger: 'change', message: '请选择管理员状态' }
],
orgName: [
{ required: true, trigger: 'blur', message: '请输入机构名称' }
]
}
}
@ -277,87 +286,163 @@ export default {
'user'
])
},
created() {
// this.crud.msg.add = '123456'
},
mounted: function() {
const that = this
window.onresize = function temp() {
that.height = document.documentElement.clientHeight - 180 + 'px;'
}
this.getUserList()
this.getDropdownList()
},
methods: {
//
getUserList(pager = 1, name) {
this.page = pager
const param = {
page: this.page,
size: this.size,
blurry: name
}
FetchUserList(param).then(res => {
if (res.code == 200) {
this.userList = res.data.content
this.total = res.data.totalElements
// this.size = res.data.size
} else {
return this.$message.error('获取用户列表数据失败!')
}
})
},
//
handleSizeChange(size) {
//
this.size = size
this.getUserList()
},
// list
getDropdownList() {
const param = {
}
FetchDropDownList(param).then(res => {
if (res.code == 200) {
this.roleList = res.data
} else {
return this.$message.error('获取角色下拉列表数据失败!')
}
})
},
//
addEditUser(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
if (this.user) {
this.form.org = this.user.org
}
if (this.form.username) {
this.form.phone = this.form.username
}
const param = this.form
delete param.rolesName
FetchAddUser(param).then(res => {
if (res.code == 200) {
this.$message.success('用户创建成功')
this.addDialogVisible = false
this.getUserList(this.page)
} else {
this.$message.error(res.msg)
}
})
} else {
console.log('error submit!!')
return false
}
})
},
//
deleteUser(row) {
const param = []
param.push(row.id)
this.$confirm('你确定要删除该用户, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
FetchDeleteUser(param).then(res => {
if (res.code == 200) {
this.$message.success('用户删除成功 !')
this.getUserList(this.page)
} else {
this.$message.error(res.msg)
}
})
}).catch(() => {
this.$message({ type: 'success', message: '已取消删除' })
})
},
// select -
selectRoles(vId) {
let obj = {}
obj = this.roleList.find((item) => {
return item.name === vId
})
obj.description = '全部'
this.form.rolesName = obj.name
this.form.roles.push(obj)
},
//
selectEnabled(selVal) {
this.editForm.enabled = selVal.key
this.editForm.enabledName = selVal.name
},
//
checkboxT(row, rowIndex) {
return row.id !== this.user.id
},
//
editFormData(index, row) {
this.editDialogVisible = true
this.editForm.nickName = row.nickName
this.editForm.roles = row.roles
this.editForm.orgName = row.orgName
this.editForm.id = row.id
if (row.roles) {
row.roles.forEach(item => {
this.editForm.rolesName = item.name
item.description = '全部'
this.editForm.roles.push(item)
})
}
if (row.org) {
this.editForm.orgName = row.org.name
this.editForm.org = row.org
}
this.editForm.phone = row.phone
this.editForm.username = row.username
this.editForm.enabledName = row.enabled ? '开启' : '关闭'
this.editForm.enabled = row.enabled
},
//
getAuthCode() {
// const param = {
// phone: this.editForm.phone
// }
// proxy.$http
// .post(proxy.$API.SENDMSGCODE,
// param
// )
// .then(res => {
// if (res.type == 200) {
// this.countdown()
// } else {
// console.log(res.content)
// }
// })
// .catch(res => {
// console.log(res)
// })
},
countdown() {
if (this.disabledSendCode) {
return
}
if (!/^1\d{10}$/.test(this.editForm.phone)) {
this.$message.error('手机号错误,请重新输入')
return
}
this.getAuthCode()
this.disabledSendCode = true
// this.isSendAuth = true
this.countNum = 60
const timer = setInterval(() => {
this.verification = this.countNum + '重新获取'
this.countNum -= 1
if (this.countNum < 1) {
clearInterval(timer)
this.verification = '重新获取'
this.disabledSendCode = false
// this.isSendAuth = false
console.log('倒计时结束')
// -
editUser(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
const param = this.editForm
delete param.rolesName
delete param.enabledName
delete param.orgName
FetchEditUser(param).then(res => {
if (res.code == 200) {
this.$message.success('该用户编辑成功')
this.editDialogVisible = false
this.getUserList(this.page)
} else {
this.$message.error(res.msg)
}
})
} else {
console.log('error submit!!')
return false
}
}, 1000)
})
},
//
// changeEnabled(data, val) {
// this.$confirm(' "' + this.dict.label.user_status[val] + '" ' + data.username + ', ', '', {
// confirmButtonText: '',
// cancelButtonText: '',
// type: 'warning'
// }).then(() => {
// crudUser.edit(data).then(res => {
// this.crud.notify(this.dict.label.user_status[val] + '', CRUD.NOTIFICATION_TYPE.SUCCESS)
// }).catch(() => {
// data.enabled = !data.enabled
// })
// }).catch(() => {
// data.enabled = !data.enabled
// })
// },
checkboxT(row, rowIndex) {
return row.id !== this.user.id
//
resetForm(formName) {
this.addDialogVisible = false
this.editDialogVisible = false
this.$refs[formName].resetFields()
}
}
}

516
src/views/user/menu1.vue

@ -1,516 +0,0 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<el-row type="flex">
<el-col :span="20" class="col_flex">
<!-- 搜索 -->
<div class="form_item">
<span>角色名称</span>
<el-input
v-model="query.role_name"
clearable
size="small"
placeholder="角色名称"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="getUserList(page,query.role_name)"
@clear="getUserList(page,query.role_name)"
/>
</div>
<div class="form_item">
<span>管理员名称</span>
<el-input
v-model="query.nickName"
clearable
size="small"
placeholder="管理员名称"
style="width: 200px;"
class="filter-item"
@keyup.enter.native="getUserList(page,query.nickName)"
@clear="getUserList(page,query.nickName)"
/>
</div>
</el-col>
<el-col class="page_add" :span="4">
<el-button class="table_add" type="primary" round @click="addDialogVisible = true">新增</el-button>
</el-col>
</el-row>
</div>
<!--新增用户-->
<el-dialog
append-to-body
:close-on-click-modal="false"
:show-close="false"
:visible.sync="addDialogVisible"
title="新增"
width="576px"
>
<el-form ref="form" :inline="true" :rules="rules" :model="form" size="small" label-width="100px">
<el-form-item
label="手机号"
prop="username"
>
<el-input v-model="form.username" style="width: 336px" />
</el-form-item>
<el-form-item
label="管理员名称"
prop="nickName"
>
<el-input v-model="form.nickName" style="width: 336px" />
</el-form-item>
<el-form-item
label="管理员角色"
prop="rolesName"
>
<el-select v-model="form.rolesName" placeholder="请选择管理员角色" style="width: 336px" @change="selectRoles">
<el-option
v-for="item in roleList"
:key="item.id"
:value="item.name"
:label="item.name"
/>
</el-select>
</el-form-item>
<el-form-item
label="管理员状态"
prop="enabled"
>
<el-select v-model="form.enabled" placeholder="请选择管理员状态" style="width: 336px">
<el-option label="启用" value="true" />
<el-option label="关闭" value="false" />
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" round @click="addUser('form')">保存</el-button>
<el-button round @click="resetForm('form')">关闭</el-button>
</div>
</el-dialog>
<!-- 编辑用户 -->
<el-dialog
append-to-body
:close-on-click-modal="false"
:show-close="false"
:visible.sync="editDialogVisible"
title="编辑"
width="576px"
>
<el-form
ref="editForm"
:inline="true"
:model="editForm"
:rules="rules"
size="small"
label-width="100px"
>
<el-form-item label="管理员名称" prop="nickName">
<el-input v-model="editForm.nickName" style="width: 336px" />
</el-form-item>
<el-form-item label="管理员角色" prop="rolesName">
<el-input v-model="editForm.rolesName" disabled style="width: 336px" />
</el-form-item>
<el-form-item label="机构名称" prop="orgName">
<el-input v-model="editForm.orgName" disabled style="width: 336px" />
</el-form-item>
<!-- <el-form-item
label="管理员状态"
prop="enabled"
>
<el-select v-model="editForm.enabled" placeholder="请选择管理员状态" @change="selectEnabled">
<el-option label="启用" value="true" />
<el-option label="关闭" value="false" />
</el-select>
</el-form-item> -->
<el-form-item label="管理员状态" prop="enabledName">
<el-select v-model="editForm.enabledName" style="width: 336px" @change="selectEnabled">
<el-option v-for="item in enabledData" :key="item.key" :label="item.name" :value="item" />
</el-select>
</el-form-item>
<el-form-item label="登录账号" prop="phone">
<el-input v-model.number="editForm.phone" disabled style="width: 336px" />
</el-form-item>
<el-form-item label="登录密码" prop="password">
<el-input v-model="editForm.password" style="width: 336px" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" round @click="editUser('editForm')">保存</el-button>
<el-button round @click="resetForm('editForm')">关闭</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-row :gutter="15">
<el-col>
<el-table
ref="table"
:data="userList"
:header-cell-style="{ background: '#3a8aeb', color: '#fff' }"
style="width: 100%;"
>
<el-table-column :selectable="checkboxT" type="selection" width="55" />
<el-table-column prop="username" width="135" align="center" label="登录账号" />
<el-table-column prop="nickName" align="center" label="管理员名称" />
<el-table-column prop="roles" align="center" label="管理角色">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.roles" :key="index">
<div>{{ item.name }}</div>
</div>
</template>
</el-table-column>
<el-table-column prop="org" align="center" label="机构名称">
<template slot-scope="scope">
<div>{{ scope.row.org ? scope.row.org.name : '' }}</div>
</template>
</el-table-column>
<el-table-column prop="phone" align="center" label="手机号码" />
<el-table-column label="状态" align="center" prop="enabled">
<template slot-scope="scope">
<div>{{ scope.row.enabled ? '启用' : '关闭' }}</div>
</template>
</el-table-column>
<el-table-column prop="createTime" width="155" align="center" label="创建日期">
<template slot-scope="{row}">
<div>{{ row.createTime | parseTime }}</div>
</template>
</el-table-column>
<!-- v-if="checkPer(['admin','user:edit','user:del'])" -->
<el-table-column label="操作" width="120" align="center" fixed="right">
<template slot-scope="scope">
<el-button
type="primary"
class="edit_btn"
@click="editFormData(scope.$index, scope.row)"
>编辑</el-button>
<el-button
type="danger"
class="delt_btn"
:disabled="scope.row.id === user.id"
@click="deleteUser(scope.row)"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<el-pagination style="margin-top: 20px;" background :current-page="page" :total="total" :page-size="size" :pager-count="5" :page-sizes="[3, 5, 10]" layout="prev, pager, next, jumper,->,sizes,total" @current-change="getUserList" @size-change="handleSizeChange" />
</el-col>
</el-row>
</div>
</template>
<script>
import { FetchUserList, FetchAddUser, FetchDeleteUser, FetchEditUser } from '@/api/system/user'
import { FetchDropDownList } from '@/api/system/role'
// import { FetchCodeMsg } from '@/api/login'
import { isvalidPhone } from '@/utils/validate'
import { parseTime } from '@/utils/index.js'
import { mapGetters } from 'vuex'
export default {
name: 'User',
filters: {
parseTime(time, cFormat) {
return parseTime(time, cFormat)
}
},
components: { },
//
data() {
//
const validPhone = (rule, value, callback) => {
if (!value) {
callback(new Error('请输入手机号码'))
} else if (!isvalidPhone(value)) {
callback(new Error('请输入正确的11位手机号码'))
} else {
callback()
}
}
return {
// list
userList: [],
total: 0,
page: 1,
size: 10,
// list
roleList: [],
//
query: {
role_name: '',
nickName: ''
},
// form
addDialogVisible: false,
form: {
username: null,
nickName: '',
roles: [],
rolesName: '',
enabled: null,
org: null,
phone: null
},
//
editDialogVisible: false,
editForm: {
id: null,
nickName: '',
roles: [],
rolesName: '',
org: '',
orgName: null,
username: null,
phone: '',
password: '',
enabled: null,
enabledName: null
},
enabledData: [{ key: 'true', name: '开启' }, { key: 'false', name: '关闭' }],
//
rules: {
nickName: [
{ required: true, message: '请输入管理员名称', trigger: 'blur' },
{ min: 2, max: 20, message: '长度在 2 到 20 个字符', trigger: 'blur' }
],
phone: [
{ required: true, trigger: 'blur', validator: validPhone }
],
code: [
{ required: true, trigger: 'blur', message: '请输入验证码' }
],
password: [
{ required: true, trigger: 'blur', message: '请输入密码' }
],
username: [
{ required: true, trigger: 'blur', validator: validPhone }
],
rolesName: [
{ required: true, message: '请选择管理员角色', trigger: 'change' }
],
enabled: [
{ required: true, trigger: 'change', message: '请选择管理员状态' }
],
enabledName: [
{ required: true, trigger: 'change', message: '请选择管理员状态' }
],
orgName: [
{ required: true, trigger: 'blur', message: '请输入机构名称' }
]
}
}
},
computed: {
...mapGetters([
'user'
])
},
mounted: function() {
this.getUserList()
this.getDropdownList()
},
methods: {
//
getUserList(pager = 1, name) {
this.page = pager
const param = {
page: this.page,
size: this.size,
blurry: name
}
FetchUserList(param).then(res => {
if (res.code == 200) {
this.userList = res.data.content
this.total = res.data.totalElements
// this.size = res.data.size
} else {
return this.$message.error('获取用户列表数据失败!')
}
})
},
//
handleSizeChange(size) {
//
this.size = size
this.getUserList()
},
// list
getDropdownList() {
const param = {
}
FetchDropDownList(param).then(res => {
if (res.code == 200) {
this.roleList = res.data
} else {
return this.$message.error('获取角色下拉列表数据失败!')
}
})
},
//
addEditUser(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
if (this.user) {
this.form.org = this.user.org
}
if (this.form.username) {
this.form.phone = this.form.username
}
const param = this.form
delete param.rolesName
FetchAddUser(param).then(res => {
if (res.code == 200) {
this.$message.success('用户创建成功')
this.addDialogVisible = false
this.getUserList(this.page)
} else {
this.$message.error(res.msg)
}
})
} else {
console.log('error submit!!')
return false
}
})
},
//
deleteUser(row) {
const param = []
param.push(row.id)
this.$confirm('你确定要删除该用户, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
FetchDeleteUser(param).then(res => {
if (res.code == 200) {
this.$message.success('用户删除成功 !')
this.getUserList(this.page)
} else {
this.$message.error(res.msg)
}
})
}).catch(() => {
this.$message({ type: 'success', message: '已取消删除' })
})
},
// select -
selectRoles(vId) {
let obj = {}
obj = this.roleList.find((item) => {
return item.name === vId
})
obj.description = '全部'
this.form.rolesName = obj.name
this.form.roles.push(obj)
},
//
selectEnabled(selVal) {
this.editForm.enabled = selVal.key
this.editForm.enabledName = selVal.name
},
//
checkboxT(row, rowIndex) {
return row.id !== this.user.id
},
//
editFormData(index, row) {
console.log(row)
this.editDialogVisible = true
this.editForm.nickName = row.nickName
this.editForm.id = row.id
if (row.roles) {
row.roles.forEach(item => {
this.editForm.rolesName = item.name
item.description = '全部'
this.editForm.roles.push(item)
})
}
if (row.org) {
this.editForm.orgName = row.org.name
this.editForm.org = row.org
}
this.editForm.phone = row.phone
this.editForm.username = row.username
this.editForm.enabledName = row.enabled ? '开启' : '关闭'
this.editForm.enabled = row.enabled
},
// -
editUser(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
const param = this.editForm
delete param.rolesName
delete param.enabledName
delete param.orgName
console.log(param)
console.log('param')
FetchEditUser(param).then(res => {
if (res.code == 200) {
this.$message.success('该用户编辑成功')
this.editDialogVisible = false
this.getUserList(this.page)
} else {
this.$message.error(res.msg)
}
})
} else {
console.log('error submit!!')
return false
}
})
},
// //
// getAuthCode() {
// const param = {
// phone: this.editForm.phone
// }
// FetchCodeMsg(param).then(res => {
// if (res.code == 200) {
// this.countdown()
// } else {
// this.$message.error(res.msg)
// }
// }).catch(res => {
// console.log(res)
// })
// },
// //
// countdown() {
// if (this.disabledSendCode) {
// return
// }
// if (!/^1\d{10}$/.test(this.editForm.phone)) {
// this.$message.error('')
// return
// }
// this.getAuthCode()
// this.disabledSendCode = true
// this.countNum = 60
// const timer = setInterval(() => {
// this.verification = this.countNum + ''
// this.countNum -= 1
// if (this.countNum < 1) {
// clearInterval(timer)
// this.verification = ''
// this.disabledSendCode = false
// console.log('')
// }
// }, 1000)
// },
//
resetForm(formName) {
this.addDialogVisible = false
this.editDialogVisible = false
this.$refs[formName].resetFields()
}
}
}
</script>
<style rel="stylesheet/scss" lang="scss" scoped>
.el-dialog__header {
background-color: #f1f1f1;
}
.edit_code {
margin-left: 20px;
}
</style>
Loading…
Cancel
Save