This commit is contained in:
2026-06-17 21:32:18 +08:00
commit ae96f2c9ff
615 changed files with 22334 additions and 0 deletions
+190
View File
@@ -0,0 +1,190 @@
<template>
<div>
<data-table ref="pagingTable" :options="options" :list-query="listQuery" @multi-actions="handleMultiAction">
<template slot="filter-content">
<el-input v-model="listQuery.params.userName" style="width: 200px" placeholder="搜索登录名" class="filter-item"/>
<el-input v-model="listQuery.params.applyTimeParam" style="width: 200px" placeholder="搜索日期格式yyyyMM"
class="filter-item"/>
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>
</template>
<template slot="data-columns">
<el-table-column type="selection" width="55"/>
<el-table-column align="center" label="用户名">
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.userName }}</a>
</template>
</el-table-column>
<el-table-column align="center" label="类型" prop="applyFlag" class-name="APPLY_TYPE" :formatter="dataFormatter"/>
<el-table-column align="center" label="打车或地铁金额(元)" prop="applyMoney"/>
<el-table-column align="center" label="日期" prop="applyTime" :formatter="formatDate"/>
</template>
</data-table>
<el-dialog :visible.sync="dialogVisible" title="添加申请" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="用户">
<el-select v-model="formData.userId" placeholder="请选择用户" :disabled="flag">
<el-option
v-for="item in userIdOptions"
:key="item.id"
:label="item.realName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="报销类型">
<el-select v-model="formData.applyFlag" placeholder="请选择报销类型">
<el-option
v-for="item in applyFlagOptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="金额(元)">
<el-input type="number" v-model="formData.applyMoney"/>
</el-form-item>
<el-form-item label="日期">
<el-date-picker
v-model="formData.applyTime"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import {userList} from '@/api/sys/user/user'
import {saveData} from '@/api/apply/apply'
import {mapGetters} from "vuex";
import {formatDate} from '@/utils/index'
import {dataFormatter} from '@/utils'
import {getSelectOptions} from '@/api/sys/dict/dict'
export default {
name: 'XmApply',
components: {DataTable},
computed: {
...mapGetters([
'userId'
])
},
data() {
return {
userIdOptions: [],
applyFlagOptions: [],
flag: true,
defaultProps: {
value: 'id',
label: 'deptName',
children: 'children'
},
dialogVisible: false,
listQuery: {
current: 1,
size: 10,
params: {
userName: '',
applyTimeParam: ''
}
},
formData: {
userId: '',
avatar: '',
applyFlag: '',
applyMoney: 0,
applyTime: null
},
options: {
// 列表请求URL
listUrl: '/apply/api/input/paging',
// 启用禁用
stateUrl: '/apply/api/input/state',
deleteUrl: '/apply/api/input/delete',
// 批量操作列表
multiActions: [
{
value: 'delete',
label: '删除'
}
]
}
}
},
created() {
userList().then(response => {
this.userIdOptions = response.data
});
getSelectOptions('APPLY_TYPE').then(response => {
this.applyFlagOptions = response.data
});
},
methods: {
dataFormatter,
formatDate,
handleUploadSuccess(response) {
// 上传图片赋值
this.formData.avatar = response.data.url
},
handleAdd() {
this.formData = {}
if (this.userId === '10001') {
this.flag = false
} else {
this.formData.userId = this.userId
this.flag = true
}
this.dialogVisible = true
},
handleUpdate(row) {
if (this.userId === '10001') {
this.flag = false
}
this.dialogVisible = true
this.formData = row
console.log(JSON.stringify(this.formData))
},
departSelected(data) {
this.formData.departId = data.id
},
handleSave() {
saveData(this.formData).then(() => {
this.$message({
type: 'success',
message: '用户修改成功!'
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+133
View File
@@ -0,0 +1,133 @@
<template>
<div class="app-container">
<el-row :gutter="20">
<el-col :span="16">
<el-card class="box">
<div slot="header" class="clearfix">
<span>项目信息</span>
<el-button style="float: right; padding: 3px 0; font-size: 12px" type="text">系统版本1.0.0</el-button>
</div>
<div style="line-height: 32px;">
<div class="title" style="padding-top: 0px">系统介绍</div>
本毕设图书管理系统是一款基于SpringBoot+Vue开发的管理系统包含用户体系权限管理图书信息管理借还流程等业务闭环功能流程通畅
<div class="title">技术栈</div>
<div class="tags">
<el-tag>SpringBoot</el-tag>
<el-tag>Shiro</el-tag>
<el-tag>MyBatis Plus</el-tag>
<el-tag>Redis</el-tag>
<el-tag>JWT</el-tag>
<el-tag>Vue</el-tag>
<el-tag>Vue2</el-tag>
<el-tag>ElementUI</el-tag>
</div>
<div class="title">产品功能</div>
<div>
<div>系统完善完善的前后端分离架构规范的接口文档</div>
<div>权限控制基于Shiro和JWT开发的权限控制功能</div>
<div>基础功能系统配置用户管理部门管理角色管理等</div>
<div>图书管理图书的信息管理借还流程的完善</div>
<div>人员权限暂时设置管理员和学生两个角色</div>
</div>
</div>
</el-card>
</el-col>
<el-col :span="8">
<el-card class="box">
<div slot="header" class="clearfix">
<span>支持信息</span>
</div>
<div>
<div class="title" style="padding-top: 0px">商业咨询</div>
<div style="display: flex;">
<div style="flex-grow: 1;">
<div>微信yx755141微信号或搜索手机 17640541176</div>
<div>手机<a href="tel:17640541176">陈昊东</a></div>
<div>邮箱<a href="mailto:haodongchen@aliyun.com">haodongchen@aliyun.com</a> </div>
</div>
<!-- <div style="width: 120px; display: flex; align-items: center; flex-direction: column; align-content: flex-end">
<img style="width: 100px; height: 100px" src="@/assets/contact.png" >
<div style="font-size: 12px; text-align: center; width: 100%">微信扫码加我好友</div>
</div> -->
</div>
<!-- <div class="title">支持网站</div>
<div>
<div>企业官网<a href="https://www.yfhl.net">https://www.yfhl.net</a></div>
<div>在线试用<a href="https://exam.yfhl.net">https://exam.yfhl.net</a></div>
</div>
<div class="title">在线试用</div>
<div style="display: flex; align-items: center">
<img src="@/assets/h5.png" style="width: 150px; height: 150px; border: #efefef 1px solid">
<img src="@/assets/mp.jpg" style="width: 150px; height: 150px; border: #efefef 1px solid; margin-left: 20px">
</div> -->
</div>
</el-card>
</el-col>
</el-row>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
name: 'Dashboard',
data() {
return {
currentRole: 'adminDashboard'
}
},
computed: {
...mapGetters([
'roles',
'siteData'
])
},
created() {
}
}
</script>
<style scoped>
.box{
height: calc(100vh - 120px);
font-size: 14px;
line-height: 28px;
}
.title{
font-size: 18px;
font-weight: 700;
padding-bottom: 10px;
padding-top: 20px;
margin-bottom: 10px;
border-bottom: #eee 1px dotted;
}
.tags span{
margin-right: 10px;
}
.box a{
color: #20a0ff;
}
.box a:hover{
color: #ff0000;
}
</style>
@@ -0,0 +1,13 @@
<template>
<div>
<!--error code-->
{{ a.a }}
<!--error code-->
</div>
</template>
<script>
export default {
name: 'ErrorTestA'
}
</script>
@@ -0,0 +1,11 @@
<template>
<div />
</template>
<script>
export default {
created() {
this.b = b // eslint-disable-line
}
}
</script>
+32
View File
@@ -0,0 +1,32 @@
<template>
<div class="errPage-container">
<ErrorA />
<ErrorB />
<h3>Please click the bug icon in the upper right corner</h3>
<aside>
Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.
<a target="_blank" class="link-type" href="https://panjiachen.github.io/vue-element-admin-site/guide/advanced/error.html">
Document introduction
</a>
</aside>
<a href="#">
<img src="https://wpimg.wallstcn.com/360e4842-4db5-42d0-b078-f9a84a825546.gif">
</a>
</div>
</template>
<script>
import ErrorA from './components/ErrorTestA'
import ErrorB from './components/ErrorTestB'
export default {
name: 'ErrorLog',
components: { ErrorA, ErrorB }
}
</script>
<style scoped>
.errPage-container {
padding: 30px;
}
</style>
+99
View File
@@ -0,0 +1,99 @@
<template>
<div class="errPage-container">
<el-button icon="el-icon-arrow-left" class="pan-back-btn" @click="back">
返回
</el-button>
<el-row>
<el-col :span="12">
<h1 class="text-jumbo text-ginormous">
Oops!
</h1>
gif来源<a href="https://zh.airbnb.com/" target="_blank">airbnb</a> 页面
<h2>你没有权限去该页面</h2>
<h6>如有不满请联系你领导</h6>
<ul class="list-unstyled">
<li>或者你可以去:</li>
<li class="link-type">
<router-link to="/dashboard">
回首页
</router-link>
</li>
<li class="link-type">
<a href="https://www.taobao.com/">随便看看</a>
</li>
<li><a href="#" @click.prevent="dialogVisible=true">点我看图</a></li>
</ul>
</el-col>
<el-col :span="12">
<img :src="errGif" width="313" height="428" alt="Girl has dropped her ice cream.">
</el-col>
</el-row>
<el-dialog :visible.sync="dialogVisible" title="随便看">
<img :src="ewizardClap" class="pan-img">
</el-dialog>
</div>
</template>
<script>
import errGif from '@/assets/401_images/401.gif'
export default {
name: 'Page401',
data() {
return {
errGif: errGif + '?' + +new Date(),
ewizardClap: 'https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646',
dialogVisible: false
}
},
methods: {
back() {
if (this.$route.query.noGoBack) {
this.$router.push({ path: '/dashboard' })
} else {
this.$router.go(-1)
}
}
}
}
</script>
<style lang="scss" scoped>
.errPage-container {
width: 800px;
max-width: 100%;
margin: 100px auto;
.pan-back-btn {
background: #008489;
color: #fff;
border: none!important;
}
.pan-gif {
margin: 0 auto;
display: block;
}
.pan-img {
display: block;
margin: 0 auto;
width: 100%;
}
.text-jumbo {
font-size: 60px;
font-weight: 700;
color: #484848;
}
.list-unstyled {
font-size: 14px;
li {
padding-bottom: 5px;
}
a {
color: #008489;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
}
}
</style>
+228
View File
@@ -0,0 +1,228 @@
<template>
<div class="wscn-http404-container">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" src="@/assets/404_images/404.png" alt="404">
<img class="pic-404__child left" src="@/assets/404_images/404_cloud.png" alt="404">
<img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png" alt="404">
<img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
</div>
<div class="bullshit">
<div class="bullshit__oops">OOPS!</div>
<div class="bullshit__info">All rights reserved
<a style="color:#20a0ff" href="https://wallstreetcn.com" target="_blank">wallstreetcn</a>
</div>
<div class="bullshit__headline">{{ message }}</div>
<div class="bullshit__info">Please check that the URL you entered is correct, or click the button below to return to the homepage.</div>
<a href="" class="bullshit__return-home">Back to home</a>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Page404',
computed: {
message() {
return 'The webmaster said that you can not enter this page...'
}
}
}
</script>
<style lang="scss" scoped>
.wscn-http404-container{
transform: translate(-50%,-50%);
position: absolute;
top: 40%;
left: 50%;
}
.wscn-http404 {
position: relative;
width: 1200px;
padding: 0 50px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
overflow: hidden;
&__parent {
width: 100%;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 30px 0;
overflow: hidden;
&__oops {
font-size: 32px;
font-weight: bold;
line-height: 40px;
color: #1482f0;
opacity: 0;
margin-bottom: 20px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;
}
&__headline {
font-size: 20px;
line-height: 24px;
color: #222;
font-weight: bold;
opacity: 0;
margin-bottom: 10px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;
}
&__info {
font-size: 13px;
line-height: 21px;
color: grey;
opacity: 0;
margin-bottom: 30px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.2s;
animation-fill-mode: forwards;
}
&__return-home {
display: block;
float: left;
width: 110px;
height: 36px;
background: #1482f0;
border-radius: 100px;
text-align: center;
color: #ffffff;
opacity: 0;
font-size: 14px;
line-height: 36px;
cursor: pointer;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
@@ -0,0 +1,45 @@
<template>
<div class="login-container">
<div class="login-box">
<div class="logo-box">
<div>
<a class="logo-title">
<img :src="siteData.backLogo" class="logo-img">
<span class="site-title">{{ siteData.siteName }}</span>
</a>
</div>
</div>
<app-main />
</div>
<div class="footer" v-html="siteData.copyRight" />
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import AppMain from '@/layout/components/AppMain'
export default {
name: 'LoginLayout',
components: { AppMain },
computed: {
...mapGetters([
'siteData'
])
}
}
</script>
<style lang="scss" scoped>
@import "~@/styles/login.scss";
</style>
+94
View File
@@ -0,0 +1,94 @@
<template>
<div>
<div class="title-box">
<div>用户登录</div>
</div>
<el-form ref="postForm" :model="postForm" :rules="loginRules">
<el-form-item prop="username">
<el-input
v-model="postForm.username"
style="width: 100%"
placeholder="用户名"
prefix-icon="el-icon-user"
/>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="postForm.password"
show-password
style="width: 100%"
placeholder="密码"
type="password"
prefix-icon="el-icon-lock"
/>
</el-form-item>
<el-form-item>
<el-button :loading="loading" type="primary" style="width: 100%" @click.native.prevent="accountLogin">登录</el-button>
</el-form-item>
</el-form>
<div style="display: flex; align-items: center; justify-content: flex-end">
<el-link type="primary" href="/#/register">立即注册</el-link>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
data() {
return {
loading: false,
postForm: {
username: '',
password: ''
},
loginRules: {
username: [{ required: true, trigger: 'blur', message: '用户名不能为空' }],
password: [{ required: true, trigger: 'blur', message: '密码不能为空' }]
}
}
},
computed: {
...mapGetters([
'siteData'
])
},
methods: {
loginBack() {
// 其它跳到后台
this.$router.push({ path: '/admin/dashboard' })
setTimeout(function() {
this.loading = false
}, 1800)
},
accountLogin() {
this.$refs.postForm.validate(valid => {
if (valid) {
this.loading = true
this.$store.dispatch('user/login', this.postForm)
.then(() => {
this.loginBack()
})
.catch(() => {
this.loading = false
})
}
})
}
}
}
</script>
+99
View File
@@ -0,0 +1,99 @@
<template>
<div>
<div class="title-box">
<div>用户注册</div>
</div>
<el-form ref="postForm" :model="postForm" :rules="loginRules">
<el-form-item prop="userName">
<el-input
v-model="postForm.userName"
style="width: 100%"
placeholder="用户名"
prefix-icon="el-icon-mobile"
/>
</el-form-item>
<el-form-item prop="realName">
<el-input
v-model="postForm.realName"
style="width: 100%"
placeholder="姓名"
prefix-icon="el-icon-user"
/>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="postForm.password"
show-password
style="width: 100%"
placeholder="密码"
type="password"
prefix-icon="el-icon-lock"
/>
</el-form-item>
<el-form-item>
<el-button :loading="loading" type="primary" style="width: 100%" @click.native.prevent="handleReg">注册</el-button>
</el-form-item>
</el-form>
<div style="display: flex; align-items: center; justify-content: flex-end">
<el-link type="primary" href="/#/login">已有账号</el-link>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
data() {
return {
postForm: {
mobile: '',
password: ''
},
loginRules: {
password: [{ required: true, trigger: 'blur', message: '登录密码不能为空!' }],
userName: [{ required: true, trigger: 'blur', message: '用户名不能为空!' }],
realName: [{ required: true, trigger: 'blur', message: '姓名不能为空!' }],
captchaValue: [{ required: true, trigger: 'blur', message: '验证码不能为空' }]
},
loading: false
}
},
computed: {
...mapGetters([
'siteData'
])
},
methods: {
handleReg() {
this.$refs.postForm.validate(valid => {
if (valid) {
this.loading = true
this.$store.dispatch('user/reg', this.postForm)
.then(() => {
this.$router.push({ path: this.redirect || '/admin/dashboard' })
this.loading = false
})
.catch(() => {
this.loading = false
})
}
})
}
}
}
</script>
@@ -0,0 +1,49 @@
<template>
<el-form>
<el-form-item label="用户名">
<el-input v-model.trim="user.name" readonly />
</el-form-item>
<el-form-item label="密码">
<el-input v-model.trim="user.password" type="password" placeholder="不修改请留空" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit">修改</el-button>
</el-form-item>
</el-form>
</template>
<script>
import { updateData } from '@/api/sys/user/user'
export default {
props: {
user: {
type: Object,
default: () => {
return {
password: ''
}
}
}
},
methods: {
async logout() {
await this.$store.dispatch('user/logout')
this.$router.push(`/login?redirect=${this.$route.fullPath}`)
},
async submit() {
updateData(this.user).then(() => {
this.$notify({
title: '成功',
message: '用户资料保存成功!!',
type: 'success',
duration: 2000
})
this.logout()
})
}
}
}
</script>
@@ -0,0 +1,101 @@
<template>
<el-card style="margin-bottom:20px;">
<div slot="header" class="clearfix">
<span>个人资料</span>
</div>
<div class="user-profile">
<div class="box-center">
<pan-thumb :image="user.avatar" :height="'100px'" :width="'100px'" :hoverable="false">
<div>欢迎</div>
{{ user.role }}
</pan-thumb>
</div>
<div class="box-center">
<div class="user-name text-center">{{ user.name }}</div>
<div class="user-role text-center text-muted">{{ user.role | uppercaseFirst }}</div>
</div>
</div>
</el-card>
</template>
<script>
import PanThumb from '@/components/PanThumb'
export default {
components: { PanThumb },
props: {
user: {
type: Object,
default: () => {
return {
name: '',
email: '',
avatar: '',
roles: ''
}
}
}
}
}
</script>
<style lang="scss" scoped>
.box-center {
margin: 0 auto;
display: table;
}
.text-muted {
color: #777;
}
.user-profile {
.user-name {
font-weight: bold;
}
.box-center {
padding-top: 10px;
}
.user-role {
padding-top: 10px;
font-weight: 400;
font-size: 14px;
}
.box-social {
padding-top: 30px;
.el-table {
border-top: 1px solid #dfe6ec;
}
}
.user-follow {
padding-top: 20px;
}
}
.user-bio {
margin-top: 20px;
color: #606266;
span {
padding-left: 4px;
}
.user-bio-section {
font-size: 14px;
padding: 15px 0;
.user-bio-section-header {
border-bottom: 1px solid #dfe6ec;
padding-bottom: 10px;
margin-bottom: 10px;
font-weight: bold;
}
}
}
</style>
+60
View File
@@ -0,0 +1,60 @@
<template>
<div class="app-container">
<div v-if="user">
<el-row :gutter="20">
<el-col :span="6" :xs="24">
<user-card :user="user" />
</el-col>
<el-col :span="18" :xs="24">
<el-card>
<el-tabs v-model="activeTab">
<el-tab-pane label="修改资料" name="account">
<account :user="user" />
</el-tab-pane>
</el-tabs>
</el-card>
</el-col>
</el-row>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import UserCard from './components/UserCard'
import Account from './components/Account'
export default {
name: 'Profile',
components: { UserCard, Account },
data() {
return {
user: {},
activeTab: 'account'
}
},
computed: {
...mapGetters([
'name',
'avatar',
'roles'
])
},
created() {
this.getUser()
},
methods: {
getUser() {
this.user = {
name: this.name,
role: this.roles.join(' | '),
email: 'admin@test.com',
avatar: this.avatar
}
}
}
}
</script>
+12
View File
@@ -0,0 +1,12 @@
<script>
export default {
created() {
const { params, query } = this.$route
const { path } = params
this.$router.replace({ path: '/' + path, query })
},
render: function(h) {
return h() // avoid warning message
}
}
</script>
+284
View File
@@ -0,0 +1,284 @@
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.isbn" style="width: 200px" placeholder="搜索ISBN书号" class="filter-item"/>
<el-input v-model="listQuery.params.bName" style="width: 200px" placeholder="搜索书名" class="filter-item"/>
<el-input v-model="listQuery.params.bAuthor" style="width: 200px" placeholder="搜索作者" class="filter-item"/>
<el-select v-model="listQuery.params.bType" style="width: 200px" placeholder="搜索图书种类" class="filter-item">
<el-option
v-for="item in tszlDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<el-select v-model="listQuery.params.bState" style="width: 200px" placeholder="搜索图书状态" class="filter-item">
<el-option
v-for="item in stateDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<!-- <el-input v-model="listQuery.params.qctype" style="width: 200px" placeholder="搜索器材种类" class="filter-item"/>-->
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>
</template>
<!-- 表格-->
<template slot="data-columns">
<el-table-column type="selection" width="55"/>
<el-table-column align="center" label="ISBN书号" prop="isbn"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="书名" prop="bName" />
<el-table-column :formatter="dataFormatter" align="center" label="图书种类" prop="bType" class-name="DIC_TSZL"/>
<el-table-column align="center" label="价格" prop="bPrice" />
<el-table-column align="center" label="作者" prop="bAuthor" />
<el-table-column align="center" label="出版商" prop="bPublisher" />
<el-table-column align="center" label="封面" >
<template slot-scope="scope">
<el-popover placement="right" trigger="hover">
<el-image slot="reference" :src="scope.row.bPath" width="80" height="80"/>
<el-image style="width: 250px; height: 250px" :src="scope.row.bPath" fit="cover"/>
</el-popover>
</template>
</el-table-column>
<el-table-column align="center" label="出版日期">
<template slot-scope="scope">
{{ scope.row.bPublicationTime | xmDateFormat }}
</template>
</el-table-column>
<!-- <el-table-column align="center" label="出版日期" type="dateformatter" prop="bPublicationTime" />-->
<el-table-column align="center" label="库存数量" prop="bNum" />
<el-table-column align="center" label="介绍" prop="bIntroduce" />
<el-table-column align="center" label="借阅次数" prop="bLendNum" />
<el-table-column :formatter="dataFormatter" align="center" label="状态" prop="bState" class-name="STATE"/>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small"
>编辑
</el-button>
</a>
</template>
</el-table-column>
</template>
<!-- 表格end-->
</data-table>
<!-- 新增按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="书籍信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="Isbn书号">
<el-input v-model="formData.isbn" />
</el-form-item>
<el-form-item label="书名">
<el-input v-model="formData.bName" />
</el-form-item>
<el-form-item label="图书类型">
<el-select v-model="formData.bType" placeholder="请选图书类型" >
<el-option
v-for="item in tszlDicData"
:key="item.value"
:label="item.text"
:value="item.value" >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="价格">
<el-input type="number" v-model="formData.bPrice"/>
</el-form-item>
<el-form-item label="作者">
<el-input v-model="formData.bAuthor" />
</el-form-item>
<el-form-item label="出版商">
<el-input v-model="formData.bPublisher" />
</el-form-item>
<el-form-item label="出版日期">
<el-date-picker
v-model="formData.bPublicationTime"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="数量">
<el-input type="number" v-model="formData.bNum" />
</el-form-item>
<el-form-item label="封面图片地址">
<el-input v-model="formData.bPath" />
</el-form-item>
<el-form-item label="介绍">
<el-input v-model="formData.bIntroduce" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {fetchTree} from '@/api/sys/depart/depart'
import {getSelectOptions} from '@/api/sys/dict/dict'
import {dataFormatter} from '@/utils'
import {saveData} from '@/api/sys/bookgl/bookgl'
import {getBjList, getZyList} from "@/api/sys/grxxgl/grxxgl";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {}
},
formData: {
avatar: ''
},
stateDicData:[],// 状态字典
tszlDicData:[],// 图书种类字典DIC_TSZL
options: {
// 列表请求URL
listUrl: '/tsjxxb/controller/paging',
// 启用禁用
stateUrl: '/tsjxxb/controller/state',
// 删除
deleteUrl: '/tsjxxb/controller/delete',
// 批量操作列表
multiActions: [
{
value: 'enable',
label: '启用'
}, {
value: 'disable',
label: '禁用'
},
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
getSelectOptions('DIC_TSZL').then(response => {
// 图书种类字典
this.tszlDicData = response.data
})
getSelectOptions('STATE').then(response => {
// 图书种类字典
this.stateDicData = response.data
})
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
console.log('新增')
},
//借出申请按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
// this.formData.roles = row.roleIds.split(',')
//this.formData.password = null
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 确认按钮按下
handleSave() {
saveData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '编辑成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+88
View File
@@ -0,0 +1,88 @@
<template>
<div class="app-container">
<el-form ref="postForm" :model="postForm" :rules="rules" label-position="left" label-width="100px">
<el-card>
<el-form-item label="系统名称">
<el-input v-model="postForm.siteName" placeholder="系统显示名称" />
</el-form-item>
<!--
<el-form-item label="系统LOGO">
<file-upload v-model="postForm.backLogo"/>
</el-form-item>
-->
<el-form-item label="版权信息">
<el-input v-model="postForm.copyRight" placeholder="登录页底部版权信息" />
</el-form-item>
<el-row>
<el-button type="primary" @click="submitForm">保存</el-button>
</el-row>
</el-card>
</el-form>
</div>
</template>
<script>
import { fetchDetail, saveData } from '@/api/sys/config/config'
import FileUpload from '@/components/FileUpload'
export default {
name: 'Config',
components: { FileUpload },
data() {
return {
postForm: {
id: '1'
},
loading: false,
rules: {
}
}
},
created() {
this.fetchData()
},
methods: {
fetchData() {
fetchDetail().then(response => {
this.postForm = response.data
})
},
submitForm() {
console.log(JSON.stringify(this.postForm))
this.$refs.postForm.validate((valid) => {
if (!valid) {
return
}
this.loading = true
this.postForm.id = '1'
saveData(this.postForm).then(() => {
this.$notify({
title: '成功',
message: '配置保存成功!',
type: 'success',
duration: 2000
})
})
this.loading = false
})
}
}
}
</script>
<style scoped>
</style>
+344
View File
@@ -0,0 +1,344 @@
<!-- 器材报修验收-->
<!-- 库管员业务管理页面 这里操作报修验收 验收后设置状态为验收完成--><!-- 管理员器材报修审核-->
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.id" style="width: 200px" placeholder="搜索学生编码" class="filter-item"/>
<el-input v-model="listQuery.params.xm" style="width: 200px" placeholder="搜索学生姓名" class="filter-item"/>
<el-select v-model="listQuery.params.nj" style="width: 200px" placeholder="搜索年级" class="filter-item">
<el-option
v-for="item in njDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<el-select v-model="listQuery.params.yuanxi" style="width: 200px" placeholder="搜索学院" class="filter-item" @change="changeXy">
<el-option
v-for="item in yxDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<el-select v-model="listQuery.params.zhuanye" style="width: 200px" placeholder="搜索专业" class="filter-item" @change="changgeZy">
<el-option
v-for="item in selectZyData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<el-select v-model="listQuery.params.banji" style="width: 200px" placeholder="搜索班级" class="filter-item" >
<el-option
v-for="item in selectBjData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<!-- <el-input v-model="listQuery.params.qctype" style="width: 200px" placeholder="搜索器材种类" class="filter-item"/>-->
<!-- <el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>-->
</template>
<template slot="data-columns">
<el-table-column align="center" label="学生编号" prop="id"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="学生姓名" prop="xm">
</el-table-column>
<el-table-column :formatter="dataFormatter" align="center" label="性别" prop="xb" class-name="DIC_XB"/>
<el-table-column :formatter="dataFormatter" align="center" label="年级" prop="nj" class-name="DIC_NJ"/>
<el-table-column :formatter="dataFormatter" align="center" label="学院" prop="yuanxi" class-name="DIC_XY"
width="150px"/>
<el-table-column :formatter="dataFormatter" align="center" label="专业" prop="zhuanye" class-name="DIC_ZY"
width="150px"/>
<el-table-column :formatter="dataFormatter" align="center" label="班级" prop="banji" class-name="DIC_BJ"
width="100px"/>
<el-table-column :formatter="dataFormatter" align="center" label="去向省" prop="txdzsf" class-name="DIC_SF"
width="100px"/>
<el-table-column :formatter="dataFormatter" align="center" label="去向市" prop="txdzs" class-name="DIC_SS"
width="100px"/>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small"
>编辑
</el-button>
</a>
</template>
</el-table-column>
</template>
</data-table>
<!-- 编辑按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="编辑人员信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="器材编号">
<el-input v-model="formData.id" disabled="disabled"/>
</el-form-item>
<el-form-item label="器材名">
<el-input v-model="formData.qcmc" disabled="disabled"/>
</el-form-item>
<el-form-item label="器材类型">
<el-select v-model="formData.qctype" placeholder="请选器材类型" disabled="disabled">
<!-- <el-option
v-for="item in treeData"
:key="item.value"
:label="item.text"
:value="item.value" >
</el-option>-->
</el-select>
</el-form-item>
<el-form-item label="主管教师">
<el-select v-model="formData.teacherid" placeholder="请选主管教师" disabled="disabled">
<!-- <el-option
v-for="item in teacherData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>-->
</el-select>
</el-form-item>
<el-form-item label="附言">
<el-input v-model="formData.bz" disabled="disabled"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
// import { jcqsqrData} from '@/api/sys/baseqcgl/baseqcgl'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {fetchTree} from '@/api/sys/depart/depart'
import {getSelectOptions} from '@/api/sys/dict/dict'
import {dataFormatter} from '@/utils'
import {getBjList, getZyList} from "@/api/sys/grxxgl/grxxgl";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {}
},
formData: {
avatar: ''
},
selectZyData:[],// 查询专业字典
selectBjData:[],// 查询班级字典
xbDicData: [], // 性别字典 DIC_XB
mzDicData: [],// 民族字典 DIC_MZ
pyfxDicData: [],// 培养方向字典 DIC_PYFX
zzmmDicData: [],// 政治面貌字典 DIC_ZZMM
njDicData: [],// 年级字典 DIC_NJ
yxDicData: [],// 院系字典 DIC_XY
zyDicData: [],// 专业字典 DIC_ZY
bjDicData: [],// 班级字典 DIC_BJ
dwxzData: [],// 单位性质 DIC_DWXZ
dwhyData: [],// 单位行业 DIC_DWHY
sssfData: [],// 所在省份 DIC_SF
ssssData: [],// 所在市 DIC_SS
sssqData: [],// 所在区 DIC_SQ
options: {
// 列表请求URL
listUrl: '/student/student/paging',
// 删除
deleteUrl: '/lsjqcxx/lsj-qcgl/delete',
// 批量操作列表
multiActions: [
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
getSelectOptions('DIC_XB').then(response => {
// 性别字典
this.xbDicData = response.data
})
getSelectOptions('DIC_MZ').then(response => {
// 教师民族字典字典
this.mzDicData = response.data
})
getSelectOptions('DIC_PYFX').then(response => {
// 培养方向字典
this.pyfxDicData = response.data
})
getSelectOptions('DIC_ZZMM').then(response => {
// 政治面貌字典
this.zzmmDicData = response.data
})
getSelectOptions('DIC_NJ').then(response => {
// 年级字典
this.njDicData = response.data
})
getSelectOptions('DIC_XY').then(response => {
// 院系字典
this.yxDicData = response.data
})
getSelectOptions('DIC_ZY').then(response => {
// 专业字典
this.zyDicData = response.data
this.selectZyData = response.data
})
getSelectOptions('DIC_BJ').then(response => {
// 班级字典
this.bjDicData = response.data
this.selectBjData =response.data
})
getSelectOptions('DIC_DWXZ').then(response => {
// 单位性质字典
this.dwxzData = response.data
})
getSelectOptions('DIC_DWHY').then(response => {
// 单位行业字典字典
this.dwhyData = response.data
})
getSelectOptions('DIC_SF').then(response => {
// 所在省份字典
this.sssfData = response.data
})
getSelectOptions('DIC_SS').then(response => {
// 所在市字典
this.ssssData = response.data
})
getSelectOptions('DIC_SQ').then(response => {
// 所在区字典
this.sssqData = response.data
})
},
// 方法
methods: {
// 格式化字典
dataFormatter,
// 根据学院获取专业list
changeXy(){
getZyList(this.form).then((response) => {
this.listQuery.params.zhuanye='' // 专业输入框清空
this.listQuery.params.banji='' // 班级输入框清空
this.selectZyData=[] // 重置专业字典
this.selectBjData=[] // 班级字典清空
this.selectZyData = response.data // 专业字典重新赋值
})
},
// 根据专业获取班级list
changgeZy(){
getBjList(this.form).then((response) =>{
this.listQuery.params.banji='' // 班级输入框清空
this.selectBjData=[] // 班级字典清空
this.selectBjData = response.data
})
},
//借出申请按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
// this.formData.roles = row.roleIds.split(',')
//this.formData.password = null
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 确认返还按钮按下 入参返还教师id 返还备注信息 返还器材编号
handleSave() {
//this.qcglData=this.formData;
this.qcglData.bz = this.formData.bz;// 库存数量
this.qcglData.teacherid = this.formData.teacherid; // 教师id
this.qcglData.id = this.formData.id;//器材id
this.qcglData.jcqcid = this.formData.jcqcid;//器材id
jcqsqrData(this.qcglData).then((response) => {
this.$message({
type: 'success',
message: '验收成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.dialogVisibleb = false
this.dialogVisiblec = false
this.$refs.pagingTable.getList()
console.log('handlesave')
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+252
View File
@@ -0,0 +1,252 @@
<template>
<div>
<data-table ref="pagingTypeTable" :options="typeOptions" :list-query="typeListQuery"
@multi-actions="handleMultiAction">
<template slot="filter-content">
<el-input v-model="typeListQuery.params.userName" style="width: 200px" placeholder="搜索登录名" class="filter-item"/>
<el-input v-model="typeListQuery.params.realName" style="width: 200px" placeholder="搜索姓名" class="filter-item"/>
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleTypeAdd">
添加
</el-button>
</template>
<template slot="data-columns">
<el-table-column type="selection" width="55"/>
<el-table-column align="center" label="码值类型">
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleTypeUpdate(scope.row)">{{ scope.row.code }}</a>
</template>
</el-table-column>
<el-table-column align="center" label="码值描述" prop="content"/>
<el-table-column align="center" label="码值来源" prop="sourceType"/>
<el-table-column align="center" label="码值来源sql" prop="sourceSql"/>
<el-table-column align="center" label="状态" prop="state" class-name="STATE" :formatter="dataFormatter"/>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" icon="el-icon-view" @click="initDictData(scope.row)">码值详情</el-button>
</template>
</el-table-column>
</template>
</data-table>
<data-table ref="pagingDataTable" :options="dataOptions" :list-query="dataListQuery"
@multi-actions="handleMultiAction">
<template slot="filter-content">
<el-input v-model="dataListQuery.params.userName" style="width: 200px" placeholder="搜索登录名" class="filter-item"/>
<el-input v-model="dataListQuery.params.realName" style="width: 200px" placeholder="搜索姓名" class="filter-item"/>
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleDataAdd">
添加
</el-button>
</template>
<template slot="data-columns">
<el-table-column type="selection" width="55"/>
<el-table-column align="center" label="码值类型">
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleDataUpdate(scope.row)">{{ scope.row.code }}</a>
</template>
</el-table-column>
<el-table-column align="center" label="码值中文名称" prop="text"/>
<el-table-column align="center" label="码值" prop="value"/>
<el-table-column align="center" label="状态" prop="state" class-name="STATE" :formatter="dataFormatter"/>
<el-table-column align="center" label="优先级(越小越靠前)" prop="priority"/>
</template>
</data-table>
<el-dialog :visible.sync="dialogVisible" title="编辑码值大类" width="500px">
<el-form :model="typeFormData" label-position="left" label-width="100px">
<el-form-item label="码值类型">
<el-input v-model="typeFormData.code" :disabled="typeFlag"/>
</el-form-item>
<el-form-item label="码值描述">
<el-input v-model="typeFormData.content"/>
</el-form-item>
<el-form-item label="码值来源">
<el-input v-model="typeFormData.sourceType"/>
</el-form-item>
<el-form-item label="码值来源sql">
<el-input v-model="typeFormData.sourceSql"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleTypeCancel"> </el-button>
<el-button type="primary" @click="handleTypeSave"> </el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="dialogVisibleData" title="编辑码值" width="500px">
<el-form :model="dataFormData" label-position="left" label-width="100px">
<el-form-item label="码值类型">
<el-input v-model="dataFormData.code" :disabled="true"/>
</el-form-item>
<el-form-item label="码值中文名称">
<el-input v-model="dataFormData.text"/>
</el-form-item>
<el-form-item label="码值">
<el-input v-model="dataFormData.value"/>
</el-form-item>
<el-form-item label="优先级">
<el-input v-model="dataFormData.priority"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleDataCancel"> </el-button>
<el-button type="primary" @click="handleDataSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import {saveTypeData, saveData} from '@/api/sys/dict/dict'
import {dataFormatter} from '@/utils'
export default {
name: 'SysDict',
components: {DataTable},
data() {
return {
// 码值 是否可编辑
typeFlag: true,
treeData: [],
defaultProps: {
value: 'id',
label: 'deptName',
children: 'children'
},
dialogVisible: false,
dialogVisibleData: false,
typeListQuery: {
current: 1,
size: 10,
params: {}
},
typeFormData: {
code: "",
content: "",
sourceType: "",
sourceSql: ""
},
dataFormData: {
code: "",
text: "",
value: ""
},
typeOptions: {
// 列表请求URL
listUrl: '/sys/api/dict/type/paging',
// 启用禁用
stateUrl: '/sys/api/dict/type/state',
deleteUrl: '/sys/api/dict/type/delete',
// 批量操作列表
multiActions: [
{
value: 'enable',
label: '启用'
}, {
value: 'disable',
label: '禁用'
},
{
value: 'delete',
label: '删除'
}
]
},
dataListQuery: {
current: 1,
size: 10,
params: {}
},
dataOptions: {
// 列表请求URL
listUrl: '/sys/api/dict/data/paging',
// 启用禁用
stateUrl: '/sys/api/dict/data/state',
deleteUrl: '/sys/api/dict/data/delete',
// 批量操作列表
multiActions: [
{
value: 'enable',
label: '启用'
}, {
value: 'disable',
label: '禁用'
},
{
value: 'delete',
label: '删除'
}
]
}
}
},
created() {
},
methods: {
dataFormatter,
// 根据type 初始化 码值列表
initDictData(row) {
this.dataListQuery.params.code = row.code
this.$refs.pagingDataTable.getList()
},
// 码值大类添加 按钮
handleTypeAdd() {
this.typeFormData = {}
this.typeFlag = false
this.dialogVisible = true
},
handleDataAdd(){
this.dataFormData = {}
this.dataFormData.code = this.dataListQuery.params.code
this.dialogVisibleData = true
},
handleTypeUpdate(row) {
this.dialogVisible = true
this.typeFlag = true
this.typeFormData = row
},
handleDataUpdate(row) {
this.dialogVisibleData = true
this.dataFormData = row
},
handleTypeSave() {
saveTypeData(this.typeFormData).then(() => {
this.$message({
type: 'success',
message: '码值修改成功!'
})
this.handleTypeCancel()
})
},
handleTypeCancel(){
this.dialogVisible = false
this.$refs.pagingTypeTable.getList()
},
handleDataCancel(){
this.dialogVisibleData = false
this.$refs.pagingDataTable.getList()
},
handleDataSave(){
saveData(this.dataFormData).then(() => {
this.$message({
type: 'success',
message: '码值修改成功!'
})
this.handleDataCancel()
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
},
}
}
</script>
+212
View File
@@ -0,0 +1,212 @@
<!-- 毕业生信息管理-->
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.id" style="width: 200px" placeholder="搜索公告编码" class="filter-item"/>
<el-input v-model="listQuery.params.title" style="width: 200px" placeholder="搜索公告标题" class="filter-item"/>
<el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索公告内容" class="filter-item" />
<label>开始时间</label>
<el-date-picker style="width: 200px" placeholder="开始时间" class="filter-item"
v-model="listQuery.params.createTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<label>截至时间</label>
<el-date-picker style="width: 200px" placeholder="截至时间" class="filter-item"
v-model="listQuery.params.updateTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>
</template>
<template slot="data-columns">
<el-table-column type="selection" width="55"/>
<el-table-column align="center" label="公告编号" prop="id"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="公告标题" prop="title"/>
<el-table-column align="center" label="公告内容" prop="text"/>
<el-table-column align="center" label="发布时间">
<template slot-scope="scope">
{{ scope.row.createTime | xmDateFormat }}
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<a @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small"
>编辑公告内容
</el-button>
</a>
</template>
</el-table-column>
</template>
</data-table>
<!-- 编辑按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="编辑公告信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="公告编号">
<el-input v-model="formData.id" disabled="disabled"/>
</el-form-item>
<el-form-item label="公告标题">
<el-input v-model="formData.title"/>
</el-form-item>
<el-form-item label="公告内容">
<el-input v-model="formData.text"/>
</el-form-item>
<el-form-item label="发布日期">
<el-date-picker
v-model="formData.createTime" disabled="disabled"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {dataFormatter} from '@/utils'
import {saveOrUpData} from "@/api/sys/gggl/gggl";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {
banji: '',
zhuanye: ''
}
},
formData: {
avatar: ''
},
options: {
// 列表请求URL
listUrl: '/gonggao/gggl/paging',
// 删除
deleteUrl: '/gonggao/gggl/delete',
// 批量操作列表
multiActions: [
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
},
//编辑按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 确认按钮按下
handleSave() {
saveOrUpData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '保存成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
console.log('handlesave')
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+297
View File
@@ -0,0 +1,297 @@
<template>
<div style="width: 30%;margin: 4% 10%">
<el-form ref="form" :model="form" label-position="left" label-width="100px">
<el-form-item label="姓名">
<el-input v-model="form.xm"></el-input>
</el-form-item>
<el-form-item label="身份证号">
<el-input v-model="form.sfzh"></el-input>
</el-form-item>
<el-form-item label="年级">
<el-select v-model="form.nj" placeholder="请选择年级">
<el-option
v-for="item in njDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="院系">
<el-select v-model="form.yuanxi" placeholder="请选择院系" @change="changeXy">
<el-option
v-for="item in yxDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="专业">
<el-select v-model="form.zhuanye" placeholder="请选择专业" @change="changgeZy">
<el-option
v-for="item in zyDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="班级">
<el-select v-model="form.banji" placeholder="请选择班级">
<el-option
v-for="item in bjDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="性别">
<el-select v-model="form.xb" placeholder="请选择性别">
<el-option
v-for="item in xbDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="民族">
<el-select v-model="form.mz" placeholder="请选择民族">
<el-option
v-for="item in mzDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="政治面貌">
<el-select v-model="form.zzmm" placeholder="请选择政治面貌">
<el-option
v-for="item in zzmmDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="培养方向">
<el-select v-model="form.pyfx" placeholder="请选择培养方向">
<el-option
v-for="item in pyfxDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="户籍所在地">
<el-input v-model="form.hjszd" placeholder="请输入户籍所在地"></el-input>
</el-form-item>
<el-form-item label="学号">
<el-input v-model="form.xh" placeholder="请输入学号"></el-input>
</el-form-item>
<el-form-item label="手机号">
<el-input v-model="form.sjh" placeholder="请输入手机号"></el-input>
</el-form-item>
<el-form-item label="邮箱">
<el-input v-model="form.email" placeholder="请输入邮箱"></el-input>
</el-form-item>
<!-- <el-form-item label="即时配送">
<el-switch v-model="form.delivery"></el-switch>
</el-form-item>
<el-form-item label="活动性质">
<el-checkbox-group v-model="form.type">
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
<el-checkbox label="地推活动" name="type"></el-checkbox>
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊资源">
<el-radio-group v-model="form.resource">
<el-radio label="线上品牌商赞助"></el-radio>
<el-radio label="线下场地免费"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活动形式">
<el-input type="textarea" v-model="form.desc"></el-input>
</el-form-item>-->
<el-form-item>
<el-button type="primary" @click="onSubmit">更新个人信息</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import {queryData,saveData, getZyList, getBjList} from '@/api/sys/grxxgl/grxxgl'
import DepartTreeSelect from '@/components/DepartTreeSelect'
// import { fetchTree } from '@/api/sys/depart/depart'
import {getSelectOptions} from '@/api/sys/dict/dict'
import {dataFormatter} from '@/utils'
export default {
name: 'qrxxgl',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
form: {
zhuanye: '',
userid: '',
xb: '',
sfzh: '',
email: '',
id: '',
xh: '',
banji: '',
nj: '',
pyfx: '',
hjszd: '',
yuanxi: '',
zzmm: '',
xm: '',
mz: '',
sjh: ''
},
xbDicData: [], // 性别字典 DIC_XB
mzDicData: [],// 民族字典 DIC_MZ
pyfxDicData: [],// 培养方向字典 DIC_PYFX
zzmmDicData: [],// 政治面貌字典 DIC_ZZMM
njDicData: [],// 年级字典 DIC_NJ
yxDicData: [],// 院系字典 DIC_XY
zyDicData: [],// 专业字典 DIC_ZY
bjDicData: [],// 班级字典 DIC_BJ
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
}
},
// 页面初始化
created() {
getSelectOptions('DIC_XB').then(response => {
// 性别字典
this.xbDicData = response.data
})
getSelectOptions('DIC_MZ').then(response => {
// 教师民族字典字典
this.mzDicData = response.data
})
getSelectOptions('DIC_PYFX').then(response => {
// 培养方向字典
this.pyfxDicData = response.data
})
getSelectOptions('DIC_ZZMM').then(response => {
// 政治面貌字典
this.zzmmDicData = response.data
})
getSelectOptions('DIC_NJ').then(response => {
// 年级字典
this.njDicData = response.data
})
getSelectOptions('DIC_XY').then(response => {
// 院系字典
this.yxDicData = response.data
})
getSelectOptions('DIC_ZY').then(response => {
// 专业字典
this.zyDicData = response.data
})
getSelectOptions('DIC_BJ').then(response => {
// 班级字典
this.bjDicData = response.data
})
queryData().then((response) =>{
if(response.data){
this.form=response.data;
}
})
},
// 方法
methods: {
// 根据学院获取专业list
changeXy(){
getZyList(this.form).then((response) => {
this.form.zhuanye='' // 专业输入框清空
this.form.banji='' // 班级输入框清空
this.zyDicData=[] // 重置专业字典
this.bjDicData=[] // 班级字典清空
this.zyDicData = response.data // 专业字典重新赋值
})
},
// 根据专业获取班级list
changgeZy(){
getBjList(this.form).then((response) =>{
this.form.banji='' // 班级输入框清空
this.bjDicData=[] // 班级字典清空
this.bjDicData = response.data
})
},
onSubmit() {
saveData(this.form).then((response) =>{
this.$message({
type: 'success',
message: '更新成功!'
},{
type:'error',
message: response.msg
})
})
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+307
View File
@@ -0,0 +1,307 @@
<!-- 器材报修验收-->
<!-- 库管员业务管理页面 这里操作报修验收 验收后设置状态为验收完成--><!-- 管理员器材报修审核-->
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.isbn" style="width: 200px" placeholder="搜索ISBN书号" class="filter-item"/>
<el-input v-model="listQuery.params.bName" style="width: 200px" placeholder="搜索书名" class="filter-item"/>
<el-input v-model="listQuery.params.bAuthor" style="width: 200px" placeholder="搜索作者" class="filter-item"/>
<el-select v-model="listQuery.params.bType" style="width: 200px" placeholder="搜索图书种类" class="filter-item">
<el-option
v-for="item in tszlDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<el-select v-model="listQuery.params.state" style="width: 200px" placeholder="搜索是否逾期"
class="filter-item">
<el-option
v-for="item in stateDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<!-- <el-input v-model="listQuery.params.qctype" style="width: 200px" placeholder="搜索器材种类" class="filter-item"/>-->
<!-- <el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">-->
<!-- 添加-->
<!-- </el-button>-->
</template>
<!-- 表格-->
<template slot="data-columns">
<!-- <el-table-column type="selection" width="55"/>-->
<el-table-column align="center" label="ISBN书号" prop="isbn"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="书名" prop="bName"/>
<el-table-column :formatter="dataFormatter" align="center" label="图书种类" prop="bType" class-name="DIC_TSZL"/>
<el-table-column align="center" label="价格" prop="bPrice"/>
<el-table-column align="center" label="作者" prop="bAuthor"/>
<el-table-column align="center" label="出版商" prop="bPublisher"/>
<el-table-column align="center" label="封面">
<template slot-scope="scope">
<el-popover placement="right" trigger="hover">
<el-image slot="reference" :src="scope.row.bPath" width="80" height="80"/>
<el-image style="width: 250px; height: 250px" :src="scope.row.bPath" fit="cover"/>
</el-popover>
</template>
</el-table-column>
<!-- <el-table-column align="center" label="出版日期">
<template slot-scope="scope">
{{ scope.row.bPublicationTime | xmDateFormat }}
</template>
</el-table-column>-->
<el-table-column align="center" label="借阅时间">
<template slot-scope="scope">
{{ scope.row.startTime | xmDateFormat }}
</template>
</el-table-column>
<el-table-column align="center" label="应归还时间">
<template slot-scope="scope">
{{ scope.row.endTime | xmDateFormat }}
</template>
</el-table-column>
<el-table-column align="center" label="实际归还时间">
<template v-if="scope.row.state==='1'" slot-scope="scope" >
{{ scope.row.returnTime | xmDateFormat }}
</template>
</el-table-column>
<!-- <el-table-column align="center" label="出版日期" type="dateformatter" prop="bPublicationTime" />-->
<el-table-column align="center" label="库存数量" prop="bNum"/>
<el-table-column align="center" label="介绍" prop="bIntroduce"/>
<el-table-column align="center" label="借阅次数" prop="bLendNum"/>
<!-- <el-table-column :formatter="dataFormatter" align="center" label="状态" prop="bState" class-name="STATE"/>-->
<el-table-column :formatter="dataFormatter" align="center" label="借还状态" prop="state" class-name="DIC_JHZT"/>
<el-table-column :formatter="dataFormatter" align="center" label="是否逾期" prop="exceedState" class-name="DIC_SFYQ"/>
<el-table-column align="center" label="操作">
<template slot-scope="scope" v-if="scope.row.state=='0'">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small"
>还书
</el-button>
</a>
</template>
</el-table-column>
</template>
<!-- 表格end-->
</data-table>
<!-- 新增按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="书籍信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px" disabled="disabled">
<el-form-item label="Isbn书号">
<el-input v-model="formData.isbn"/>
</el-form-item>
<el-form-item label="书名">
<el-input v-model="formData.bName"/>
</el-form-item>
<el-form-item label="图书类型">
<el-select v-model="formData.bType" placeholder="请选图书类型">
<el-option
v-for="item in tszlDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="价格">
<el-input type="number" v-model="formData.bPrice"/>
</el-form-item>
<el-form-item label="作者">
<el-input v-model="formData.bAuthor"/>
</el-form-item>
<el-form-item label="出版商">
<el-input v-model="formData.bPublisher"/>
</el-form-item>
<el-form-item label="出版日期">
<el-date-picker
v-model="formData.bPublicationTime"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="数量">
<el-input type="number" v-model="formData.bNum"/>
</el-form-item>-->
<!-- <el-form-item label="封面图片地址">-->
<!-- <el-input v-model="formData.bPath" />-->
<!-- </el-form-item>-->
<el-form-item label="介绍">
<el-input v-model="formData.bIntroduce"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave">确认还书</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {fetchTree} from '@/api/sys/depart/depart'
import {getSelectOptions} from '@/api/sys/dict/dict'
import {dataFormatter} from '@/utils'
import {saveData} from '@/api/sys/bookgl/bookgl'
import {getBjList, getZyList} from "@/api/sys/grxxgl/grxxgl";
import {jieshuData} from "@/api/sys/jieshu/jieshu";
import {huanshuData} from "@/api/sys/huanshu/huanshu";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {}
},
formData: {
avatar: ''
},
stateDicData: [],// 状态字典
tszlDicData: [],// 图书种类字典DIC_TSZL
options: {
// 列表请求URL
listUrl: '/tjhxxb/controller/queryUserSj',
// 启用禁用
stateUrl: '/tsjxxb/controller/state',
// 删除
deleteUrl: '/tsjxxb/controller/delete',
// 批量操作列表
multiActions: [
{
value: 'enable',
label: '启用'
}, {
value: 'disable',
label: '禁用'
},
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
getSelectOptions('DIC_TSZL').then(response => {
// 图书种类字典
this.tszlDicData = response.data
})
getSelectOptions('DIC_SFYQ').then(response => {
// 图书种类字典
this.stateDicData = response.data
})
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
console.log('新增')
},
//借出申请按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
// this.formData.roles = row.roleIds.split(',')
//this.formData.password = null
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 还书按钮按下
handleSave() {
//this.formData.bid = this.formData.id;
huanshuData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
@@ -0,0 +1,208 @@
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.bookname" style="width: 200px" placeholder="搜索书名" class="filter-item"/>
<el-select v-model="listQuery.params.state" style="width: 200px" placeholder="搜索借还类型"
class="filter-item">
<el-option
v-for="item in stateDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<el-date-picker
v-model="listQuery.params.createTime"
type="datetime"
format="yyyy-MM-dd"
placeholder="选择开始时间"
value-format="yyyy-MM-dd"
class="filter-item" style="width: 200px"
/>
<el-date-picker
v-model="listQuery.params.updateTime"
type="datetime"
format="yyyy-MM-dd"
placeholder="选择结束时间"
value-format="yyyy-MM-dd"
class="filter-item" style="width: 200px"
/>
</template>
<!-- 表格-->
<template slot="data-columns">
<!-- <el-table-column type="selection" width="55"/>-->
<el-table-column align="center" label="书名" prop="bookname"/>
<el-table-column :formatter="dataFormatter" align="center" label="借还类型" prop="state" class-name="DIC_JHTYPE"/>
<el-table-column align="center" label="发生时间">
<template slot-scope="scope">
{{ scope.row.createTime | xmDateFormat }}
</template>
</el-table-column>
</template>
<!-- 表格end-->
</data-table>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {fetchTree} from '@/api/sys/depart/depart'
import {getSelectOptions} from '@/api/sys/dict/dict'
import {dataFormatter} from '@/utils'
import {saveData} from '@/api/sys/bookgl/bookgl'
import {getBjList, getZyList} from "@/api/sys/grxxgl/grxxgl";
import {jieshuData} from "@/api/sys/jieshu/jieshu";
import {huanshuData} from "@/api/sys/huanshu/huanshu";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {}
},
formData: {
avatar: ''
},
stateDicData: [],// 状态字典
tszlDicData: [],// 图书种类字典DIC_TSZL
options: {
// 列表请求URL
listUrl: '/tlog/logcontrol/paging',
// 启用禁用
stateUrl: '/tsjxxb/controller/state',
// 删除
deleteUrl: '/tsjxxb/controller/delete',
// 批量操作列表
multiActions: [
{
value: 'enable',
label: '启用'
}, {
value: 'disable',
label: '禁用'
},
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
getSelectOptions('DIC_TSZL').then(response => {
// 图书种类字典
this.tszlDicData = response.data
})
getSelectOptions('DIC_JHTYPE').then(response => {
// 借书还书字典
this.stateDicData = response.data
})
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
console.log('新增')
},
//借出申请按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
// this.formData.roles = row.roleIds.split(',')
//this.formData.password = null
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 还书按钮按下
handleSave() {
//this.formData.bid = this.formData.id;
huanshuData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+286
View File
@@ -0,0 +1,286 @@
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.isbn" style="width: 200px" placeholder="搜索ISBN书号" class="filter-item"/>
<el-input v-model="listQuery.params.bName" style="width: 200px" placeholder="搜索书名" class="filter-item"/>
<el-input v-model="listQuery.params.bAuthor" style="width: 200px" placeholder="搜索作者" class="filter-item"/>
<el-select v-model="listQuery.params.bType" style="width: 200px" placeholder="搜索图书种类" class="filter-item">
<el-option
v-for="item in tszlDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<el-select v-model="listQuery.params.bState" style="width: 200px" placeholder="搜索图书状态" class="filter-item">
<el-option
v-for="item in stateDicData"
:key="item.value"
:label="item.text"
:value="item.value">
</el-option>
</el-select>
<!-- <el-input v-model="listQuery.params.qctype" style="width: 200px" placeholder="搜索器材种类" class="filter-item"/>-->
<!-- <el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">-->
<!-- 添加-->
<!-- </el-button>-->
</template>
<!-- 表格-->
<template slot="data-columns">
<!-- <el-table-column type="selection" width="55"/>-->
<el-table-column align="center" label="ISBN书号" prop="isbn"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="书名" prop="bName" />
<el-table-column :formatter="dataFormatter" align="center" label="图书种类" prop="bType" class-name="DIC_TSZL"/>
<el-table-column align="center" label="价格" prop="bPrice" />
<el-table-column align="center" label="作者" prop="bAuthor" />
<el-table-column align="center" label="出版商" prop="bPublisher" />
<el-table-column align="center" label="封面" >
<template slot-scope="scope">
<el-popover placement="right" trigger="hover">
<el-image slot="reference" :src="scope.row.bPath" width="80" height="80"/>
<el-image style="width: 250px; height: 250px" :src="scope.row.bPath" fit="cover"/>
</el-popover>
</template>
</el-table-column>
<el-table-column align="center" label="出版日期">
<template slot-scope="scope">
{{ scope.row.bPublicationTime | xmDateFormat }}
</template>
</el-table-column>
<!-- <el-table-column align="center" label="出版日期" type="dateformatter" prop="bPublicationTime" />-->
<el-table-column align="center" label="库存数量" prop="bNum" />
<el-table-column align="center" label="介绍" prop="bIntroduce" />
<el-table-column align="center" label="借阅次数" prop="bLendNum" />
<el-table-column :formatter="dataFormatter" align="center" label="状态" prop="bState" class-name="STATE"/>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small" v-if="0===scope.row.bState"
>借书
</el-button>
</a>
</template>
</el-table-column>
</template>
<!-- 表格end-->
</data-table>
<!-- 新增按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="书籍信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px" disabled="disabled">
<el-form-item label="Isbn书号">
<el-input v-model="formData.isbn"/>
</el-form-item>
<el-form-item label="书名">
<el-input v-model="formData.bName" />
</el-form-item>
<el-form-item label="图书类型">
<el-select v-model="formData.bType" placeholder="请选图书类型" >
<el-option
v-for="item in tszlDicData"
:key="item.value"
:label="item.text"
:value="item.value" >
</el-option>
</el-select>
</el-form-item>
<el-form-item label="价格">
<el-input type="number" v-model="formData.bPrice"/>
</el-form-item>
<el-form-item label="作者">
<el-input v-model="formData.bAuthor" />
</el-form-item>
<el-form-item label="出版商">
<el-input v-model="formData.bPublisher" />
</el-form-item>
<el-form-item label="出版日期">
<el-date-picker
v-model="formData.bPublicationTime"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item label="数量">
<el-input type="number" v-model="formData.bNum" />
</el-form-item>
<!-- <el-form-item label="封面图片地址">-->
<!-- <el-input v-model="formData.bPath" />-->
<!-- </el-form-item>-->
<el-form-item label="介绍">
<el-input v-model="formData.bIntroduce" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave">确认借书</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {fetchTree} from '@/api/sys/depart/depart'
import {getSelectOptions} from '@/api/sys/dict/dict'
import {dataFormatter} from '@/utils'
import {saveData} from '@/api/sys/bookgl/bookgl'
import {getBjList, getZyList} from "@/api/sys/grxxgl/grxxgl";
import {jieshuData} from "@/api/sys/jieshu/jieshu";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {}
},
formData: {
avatar: ''
},
stateDicData:[],// 状态字典
tszlDicData:[],// 图书种类字典DIC_TSZL
options: {
// 列表请求URL
listUrl: '/tsjxxb/controller/paging',
// 启用禁用
stateUrl: '/tsjxxb/controller/state',
// 删除
deleteUrl: '/tsjxxb/controller/delete',
// 批量操作列表
multiActions: [
{
value: 'enable',
label: '启用'
}, {
value: 'disable',
label: '禁用'
},
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
getSelectOptions('DIC_TSZL').then(response => {
// 图书种类字典
this.tszlDicData = response.data
})
getSelectOptions('STATE').then(response => {
// 图书种类字典
this.stateDicData = response.data
})
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
console.log('新增')
},
//借出申请按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
// this.formData.roles = row.roleIds.split(',')
//this.formData.password = null
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 确认按钮按下
handleSave() {
this.formData.bid=this.formData.id;
jieshuData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+212
View File
@@ -0,0 +1,212 @@
<!-- 毕业生信息管理-->
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.id" style="width: 200px" placeholder="搜索留言编码" class="filter-item"/>
<el-input v-model="listQuery.params.itemname" style="width: 200px" placeholder="搜索发布人昵称" class="filter-item"/>
<el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索留言内容" class="filter-item" />
<label>开始时间</label>
<el-date-picker style="width: 200px" placeholder="开始时间" class="filter-item"
v-model="listQuery.params.createTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<label>截至时间</label>
<el-date-picker style="width: 200px" placeholder="截至时间" class="filter-item"
v-model="listQuery.params.updateTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>
</template>
<template slot="data-columns">
<el-table-column type="selection" width="55"/>
<el-table-column align="center" label="留言编号" prop="id"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="留言人昵称" prop="itemname"/>
<el-table-column align="center" label="留言内容" prop="text"/>
<el-table-column align="center" label="发布时间">
<template slot-scope="scope">
{{ scope.row.createTime | xmDateFormat }}
</template>
</el-table-column>
<el-table-column align="center" label="操作">
<template slot-scope="scope">
<a @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small"
>编辑留言内容
</el-button>
</a>
</template>
</el-table-column>
</template>
</data-table>
<!-- 编辑按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="编辑留言信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="留言编号">
<el-input v-model="formData.id" disabled="disabled"/>
</el-form-item>
<el-form-item label="留言人昵称">
<el-input v-model="formData.itemname"/>
</el-form-item>
<el-form-item label="留言内容">
<el-input v-model="formData.text"/>
</el-form-item>
<el-form-item label="发布日期">
<el-date-picker
v-model="formData.createTime" disabled="disabled"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {dataFormatter} from '@/utils'
import {saveLyOrUpData} from "@/api/sys/liuyangl/liuyangl";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {
banji: '',
zhuanye: ''
}
},
formData: {
avatar: ''
},
options: {
// 列表请求URL
listUrl: '/liuyan/lygl/paging',
// 删除
deleteUrl: '/liuyan/lygl/delete',
// 批量操作列表
multiActions: [
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
},
//编辑按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 确认按钮按下
handleSave() {
saveLyOrUpData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '保存成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
console.log('handlesave')
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+103
View File
@@ -0,0 +1,103 @@
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
>
<template slot="filter-content">
<el-select v-model="listQuery.params.title" clearable class="filter-item">
<el-option
v-for="item in types"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<el-input v-model="listQuery.params.userName" clearable placeholder="操作人" style="width: 200px;" class="filter-item" />
</template>
<template slot="data-columns">
<el-table-column
label="日志类型"
prop="title"
/>
<el-table-column
label="操作人"
prop="userName"
/>
<el-table-column
label="IP"
prop="ip"
/>
<el-table-column
label="操作时间"
prop="createTime"
/>
</template>
</data-table>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
export default {
name: 'SysLogList',
components: { DataTable },
filters: {
// 订单状态
userState(value) {
const map = {
'0': '正常',
'1': '禁用'
}
return map[value]
}
},
data() {
return {
listQuery: {
current: 1,
size: 10,
params: {
}
},
options: {
// 列表请求URL
listUrl: '/exam/api/sys/log/paging'
},
types: [
{
value: '登录系统',
label: '登录系统'
}
]
}
},
methods: {
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+76
View File
@@ -0,0 +1,76 @@
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="data-columns">
<el-table-column
label="角色ID"
prop="id"
/>
<el-table-column
label="角色名称"
prop="roleName"
/>
</template>
</data-table>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
export default {
name: 'SysRoleList',
components: { DataTable },
filters: {
// 订单状态
userState(value) {
const map = {
'0': '正常',
'1': '禁用'
}
return map[value]
}
},
data() {
return {
listQuery: {
current: 1,
size: 10,
params: {
}
},
options: {
// 列表请求URL
listUrl: '/exam/api/sys/role/paging',
// 启用禁用
stateUrl: '/sys/user/state'
}
}
},
methods: {
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+209
View File
@@ -0,0 +1,209 @@
<!-- 毕业生信息管理-->
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.id" style="width: 200px" placeholder="搜索公告编码" class="filter-item"/>
<el-input v-model="listQuery.params.title" style="width: 200px" placeholder="搜索公告标题" class="filter-item"/>
<el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索公告内容" class="filter-item" />
<label>开始时间</label>
<el-date-picker style="width: 200px" placeholder="开始时间" class="filter-item"
v-model="listQuery.params.createTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<label>截至时间</label>
<el-date-picker style="width: 200px" placeholder="截至时间" class="filter-item"
v-model="listQuery.params.updateTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<!-- <el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>-->
</template>
<template slot="data-columns">
<!-- <el-table-column type="selection" width="55"/>-->
<el-table-column align="center" label="公告编号" prop="id"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="公告标题" prop="title"/>
<el-table-column align="center" label="公告内容" prop="text"/>
<el-table-column align="center" label="发布时间">
<template slot-scope="scope">
{{ scope.row.createTime | xmDateFormat }}
</template>
</el-table-column>
<!-- <el-table-column align="center" label="操作">
<template slot-scope="scope">
<a @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small"
>编辑公告内容
</el-button>
</a>
</template>
</el-table-column>-->
</template>
</data-table>
<!-- 编辑按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="编辑公告信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="公告编号">
<el-input v-model="formData.id" disabled="disabled"/>
</el-form-item>
<el-form-item label="公告标题">
<el-input v-model="formData.title"/>
</el-form-item>
<el-form-item label="公告内容">
<el-input v-model="formData.text"/>
</el-form-item>
<el-form-item label="发布日期">
<el-date-picker
v-model="formData.createTime" disabled="disabled"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {dataFormatter} from '@/utils'
import {saveOrUpData} from "@/api/sys/gggl/gggl";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {
banji: '',
zhuanye: ''
}
},
formData: {
avatar: ''
},
options: {
// 列表请求URL
listUrl: '/gonggao/gggl/paging',
// 删除
deleteUrl: '/gonggao/gggl/delete',
// 批量操作列表
multiActions: [
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
},
//编辑按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 确认按钮按下
handleSave() {
saveOrUpData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '保存成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
console.log('handlesave')
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+209
View File
@@ -0,0 +1,209 @@
<!-- 毕业生信息管理-->
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.id" style="width: 200px" placeholder="搜索留言编码" class="filter-item"/>
<el-input v-model="listQuery.params.itemname" style="width: 200px" placeholder="搜索发布人昵称" class="filter-item"/>
<el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索留言内容" class="filter-item" />
<label>开始时间</label>
<el-date-picker style="width: 200px" placeholder="开始时间" class="filter-item"
v-model="listQuery.params.createTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<label>截至时间</label>
<el-date-picker style="width: 200px" placeholder="截至时间" class="filter-item"
v-model="listQuery.params.updateTime"
type="datetime"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
></el-date-picker>
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>
</template>
<template slot="data-columns">
<!-- <el-table-column type="selection" width="55"/>-->
<el-table-column align="center" label="留言编号" prop="id"/>
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
<el-table-column align="center" label="留言人昵称" prop="itemname"/>
<el-table-column align="center" label="留言内容" prop="text"/>
<el-table-column align="center" label="发布时间">
<template slot-scope="scope">
{{ scope.row.createTime | xmDateFormat }}
</template>
</el-table-column>
<!-- <el-table-column align="center" label="操作">
<template slot-scope="scope">
<a @click="handleUpdate(scope.row)">
<el-button link type="primary" size="small"
>编辑留言内容
</el-button>
</a>
</template>
</el-table-column>-->
</template>
</data-table>
<!-- 编辑按钮按下-->
<el-dialog :visible.sync="dialogVisible" title="编辑留言信息" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="留言编号">
<el-input v-model="formData.id" disabled="disabled"/>
</el-form-item>
<el-form-item label="留言人昵称">
<el-input v-model="formData.itemname"/>
</el-form-item>
<el-form-item label="留言内容">
<el-input v-model="formData.text"/>
</el-form-item>
<el-form-item label="发布日期">
<el-date-picker
v-model="formData.createTime" disabled="disabled"
type="datetime"
placeholder="选择日期时间"
format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleUpCancel"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import {dataFormatter} from '@/utils'
import {saveLyOrUpData} from "@/api/sys/liuyangl/liuyangl";
export default {
name: 'BysxxglList',
components: {
DepartTreeSelect,
DataTable,
MeetRole
},
data() {
return {
defaultProps: {
value: 'value',
text: 'text',
label: 'deptName',
children: 'children'
},
qcglData: {},
dialogVisible: false,// 编辑是否显示
listQuery: {
current: 0,
size: 10,
total: 0,
params: {
banji: '',
zhuanye: ''
}
},
formData: {
avatar: ''
},
options: {
// 列表请求URL
listUrl: '/liuyan/lygl/paging',
// 删除
deleteUrl: '/liuyan/lygl/delete',
// 批量操作列表
multiActions: [
{
value: 'delete',
label: '删除'
}
]
}
}
},
// 页面初始化
created() {
},
// 方法
methods: {
// 格式化字典
dataFormatter,
handleAdd() {
this.formData = {}
this.dialogVisible = true
},
//编辑按钮按下
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
},
//取消按钮按下
handleUpCancel() {
this.dialogVisible = false;
},
departSelected(data) {
this.formData.id = data.id
console.log(data + "----depart")
},
// 确认按钮按下
handleSave() {
saveLyOrUpData(this.formData).then((response) => {
this.$message({
type: 'success',
message: '保存成功!'
}, {
type: 'error',
message: response.msg
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
console.log('handlesave')
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>
+200
View File
@@ -0,0 +1,200 @@
<template>
<div>
<data-table
ref="pagingTable"
:options="options"
:list-query="listQuery"
@multi-actions="handleMultiAction"
>
<template slot="filter-content">
<el-input v-model="listQuery.params.userName" style="width: 200px" placeholder="搜索登录名" class="filter-item" />
<el-input v-model="listQuery.params.realName" style="width: 200px" placeholder="搜索姓名" class="filter-item" />
<el-button class="filter-item" type="primary" icon="el-icon-plus" @click="handleAdd">
添加
</el-button>
</template>
<template slot="data-columns">
<el-table-column type="selection" width="55"/>
<el-table-column align="center" label="用户名">
<template slot-scope="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.userName }}</a>
</template>
</el-table-column>
<el-table-column align="center" label="姓名" prop="realName"/>
<el-table-column align="center" label="角色" prop="roleIds"/>
<el-table-column align="center" label="创建时间" prop="createTime"/>
<el-table-column align="center" label="创建时间">
<template slot-scope="scope">
{{ scope.row.createTime | xmDateFormat }}
</template>
</el-table-column>
<el-table-column align="center" label="状态">
<template slot-scope="scope">
{{ scope.row.state | stateFilter }}
</template>
</el-table-column>
</template>
</data-table>
<el-dialog :visible.sync="dialogVisible" title="添加用户" width="500px">
<el-form :model="formData" label-position="left" label-width="100px">
<el-form-item label="用户名">
<el-input v-model="formData.userName" />
</el-form-item>
<el-form-item label="姓名">
<el-input v-model="formData.realName" />
</el-form-item>
<el-form-item label="密码">
<el-input v-model="formData.password" placeholder="不修改请留空" type="password" />
</el-form-item>
<!-- <el-form-item label="部门">
<depart-tree-select v-model="formData.departId" :options="treeData" :props="defaultProps" />
</el-form-item>-->
<el-form-item label="角色">
<meet-role v-model="formData.roles" />
</el-form-item>
<!-- <el-form-item label="头像" prop="avatar">-->
<!-- <single-upload-->
<!-- v-model="formData.avatar"-->
<!-- />-->
<!-- </el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="handleSave"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import DataTable from '@/components/DataTable'
import MeetRole from '@/components/MeetRole'
import { saveData } from '@/api/sys/user/user'
import DepartTreeSelect from '@/components/DepartTreeSelect'
import { fetchTree } from '@/api/sys/depart/depart'
export default {
name: 'SysUserList',
components: { DepartTreeSelect, DataTable, MeetRole },
filters: {
// 订单状态
userState(value) {
const map = {
'0': '正常',
'1': '禁用'
}
return map[value]
}
},
data() {
return {
treeData: [],
defaultProps: {
value: 'id',
label: 'deptName',
children: 'children'
},
dialogVisible: false,
listQuery: {
current: 1,
size: 10,
params: {
}
},
formData: {
avatar: ''
},
options: {
// 列表请求URL
listUrl: '/exam/api/sys/user/paging',
// 启用禁用
stateUrl: '/exam/api/sys/user/state',
deleteUrl: '/exam/api/sys/user/delete',
// 批量操作列表
multiActions: [
{
value: 'enable',
label: '启用'
}, {
value: 'disable',
label: '禁用'
},
{
value: 'delete',
label: '删除'
}
]
}
}
},
created() {
fetchTree({}).then(response => {
this.treeData = response.data
})
},
methods: {
handleUploadSuccess(response) {
// 上传图片赋值
this.formData.avatar = response.data.url
},
handleAdd() {
this.formData = {}
this.dialogVisible = true
},
handleUpdate(row) {
this.dialogVisible = true
this.formData = row
this.formData.roles = row.roleIds.split(',')
this.formData.password = null
console.log(JSON.stringify(this.formData))
},
departSelected(data) {
this.formData.departId = data.id
},
handleSave() {
saveData(this.formData).then(() => {
this.$message({
type: 'success',
message: '用户修改成功!'
})
this.dialogVisible = false
this.$refs.pagingTable.getList()
})
},
// 批量操作监听
handleMultiAction(obj) {
if (obj.opt === 'cancel') {
this.handleCancelOrder(obj.ids)
}
}
}
}
</script>