Browse Source

ADD file via upload

main
bin_open_source 2 years ago
parent
commit
20adafe17c
1 changed files with 351 additions and 0 deletions
  1. +351
    -0
      stock_predic_web/views/sys/mans/index.vue

+ 351
- 0
stock_predic_web/views/sys/mans/index.vue View File

@@ -0,0 +1,351 @@
<template>
<div class="intemShow">
<!-- 搜索框-->
<div style="padding: 10px 0">
<el-input style="width: 250px" placeholder="请输入名称" :suffix-icon="Search" v-model="searchname"></el-input>
<!-- <el-input style="width: 250px;margin-left: 5px" placeholder="请输入类型" :suffix-icon="Search" v-model="searchtype"></el-input>-->
<el-select
style="margin-left: 5px"
v-model="typeState"
filterable
allow-create
default-first-option
:reserve-keyword="false"
placeholder="请输入或选择类型"
>
<el-option
v-for="item in typeForm"
:key="item.roleId"
:label="item.rolename"
:value="item.roleId"
>
</el-option>
</el-select>
<el-button type="primary" style="margin-left: 5px" @click="network">
<el-icon style="vertical-align: middle;">
<search />
</el-icon>
<span style="vertical-align: middle;"> 搜索 </span>
</el-button>
</div>
<div style="padding: 10px 0">
<el-button type="primary" @click="addItem">新增 <el-icon style="margin-left: 3px"><circle-plus /></el-icon></el-button>
<el-button type="danger" @click="Batchdele">批量删除 <el-icon style="margin-left: 3px"><delete /></el-icon></el-button>
<el-upload action="http://127.0.0.1:8081/user/import" style="display: inline-block;margin-left: 5px" :on-success="successimport" :on-error="errimport" :show-file-list="false">
<el-popconfirm confirm-button-text="下载"
cancel-button-text="不用了"
:icon="InfoFilled"
icon-color="red"
title="是否需要下载导入模板?"
@confirm="confirmEvent">
<template #reference>
<el-button type="success">导入 <el-icon style="margin-left: 3px"><upload-filled /></el-icon></el-button>
</template>
</el-popconfirm>
</el-upload>
<el-button type="success" @click="itemexport" style="margin-left: 5px">导出 <el-icon style="margin-left: 3px"><download /></el-icon></el-button>
</div>
<el-table :data="tableData" border style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column fixed type="selection" width="70" align="center"></el-table-column>
<el-table-column fixed prop="id" label="id" width="100" sortable align="center"></el-table-column>
<el-table-column prop="userid" label="人员编号" width="200" align="center"></el-table-column>
<el-table-column prop="username" label="人员名称" width="300" align="center"></el-table-column>
<el-table-column prop="roleName" label="角色类型" width="300" align="center"></el-table-column>
<el-table-column prop="description" label="人员描述" width="480" align="center"></el-table-column>
<el-table-column fixed="right" label="操作" width="190" align="center">
<template v-slot="scope">
<el-button @click="handleClick(scope.row)" type="warning" size="default">编辑 <el-icon><edit /></el-icon></el-button>
<el-button @click="delOne(scope.row.id)" type="danger" size="default">删除 <el-icon><remove /></el-icon></el-button>
</template>
</el-table-column>
</el-table>
<el-config-provider :locale="locale">
<div style="padding: 10px 0">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
v-model:currentPage="pageNum"
:page-sizes="[5, 15, 50, 100]"
v-model:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total">
</el-pagination>
</div>
</el-config-provider>
<!-- 弹窗信息-->
<el-dialog title="人员信息" v-model="dialogFormVisible" width="50%">
<el-form :model="form" size="medium" :rules="rules" ref="form">
<el-form-item label="ID" :label-width="formLabelWidth">
<el-input v-model="form.id" autocomplete="off" disabled></el-input>
</el-form-item>
<el-form-item label="人员编号" :label-width="formLabelWidth" prop="userid">
<el-input v-model="form.userid" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="人员名称" :label-width="formLabelWidth" prop="username">
<el-input v-model="form.username" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="角色类型" :label-width="formLabelWidth" prop="roleId">
<!-- <el-input v-model="form.typeid" autocomplete="off"></el-input>-->
<el-select
style="margin-left: 5px"
v-model="form.roleId"
filterable
allow-create
default-first-option
:reserve-keyword="false"
placeholder="请输入或选择类型"
>
<el-option
v-for="item in typeForm"
:key="item.roleId"
:label="item.rolename"
:value="item.roleId"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="人员描述" :label-width="formLabelWidth">
<el-input v-model="form.description" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogFormVisible = false"> 取消</el-button>
<el-button type="primary" @click="saveData('form')"> 确认</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script>
import zhCn from 'element-plus/lib/locale/lang/zh-cn'
import {Search} from '@element-plus/icons-vue'
import {ElMessageBox, ElMessage } from 'element-plus'
import fileDownload from 'js-file-download'
export default {
name: "index",
components:{
Search,
},
data() {
return {
Search,
locale:zhCn,
tableData: [],
total: 0, //数据总条数
pageNum: 1, //当前页
pageSize: 5, //页大小
searchname: "", //搜索名称
searchtype: 0, //搜索类型
dialogFormVisible: false, //增加的弹窗
form: {}, //弹窗中的数据
typeForm: [], //类型列表
typeState: 0, //选中的物品类型编号
multipleSelection: [], //存储批量删除的数据id
formLabelWidth: '100px',
rules: {
username: [{ required: true, message: '请输入角色名称', trigger: 'blur' }],
userid:[{required: true, message: '请输入角色编号', trigger: 'blur'}],
roleId:[{required: true, message: '请选择角色类型', trigger: 'blur'}]
}
}
},
methods:{
confirmEvent(){ //下载导入模板
this.$http.get("/user/exportMB", {
responseType: 'arraybuffer'
}).then((res)=>{
ElMessage({
message: '下载成功!',
type: 'success',
})
fileDownload(res,'导入模板_'+ new Date().toLocaleString()+'.xlsx')
}).catch(()=>{
ElMessage.error('下载失败!')
})
},
errimport(){ //导入失败
ElMessage.error('导入失败!')
},
successimport(){ //导入成功
this.network()
ElMessage({
message: '导入成功!',
type: 'success',
})
},
itemexport(){ //导出
this.$http.get("/user/export", {
responseType: 'arraybuffer'
}).then((res)=>{
ElMessage({
message: '导出成功!',
type: 'success',
})
fileDownload(res,'下载信息_'+ new Date().toLocaleString()+'.xlsx')
}).catch(()=>{
ElMessage.error('导出失败!')
})
},
itemTypeGet(){ //获取类型数据
this.$http.get("/userRole/userRoleAll").then(res=>{
if(res.statusCode == '200'){
this.typeForm = res.data
}
}).catch(()=>{
ElMessage.error('角色加载失败!')
})
},
handleSelectionChange(row){ //批量删除选择的数据
this.multipleSelection = row
},
Batchdele(){ //批量删除
let ids = this.multipleSelection.map(v=>v.id)
ElMessageBox.confirm(
'是否批量删除选中数据?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
this.$http.post("/user/batch/del",ids).then(res=>{
if(res.statusCode == '200'){
ElMessage({
message: '删除成功!',
type: 'success',
})
this.network()
}
}).catch(()=>{
ElMessage.error('删除失败!')
})
}).catch(() => {
ElMessage({
type: 'info',
message: '已取消!',
})
})
},
delOne(id){ //删除
ElMessageBox.confirm(
'是否删除选中数据?',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
this.$http.delete("/user/del/"+id).then(res=>{
if(res.statusCode == '200'){
ElMessage({
message: '删除成功!',
type: 'success',
})
this.network()
}
}).catch(()=>{
ElMessage.error('删除失败!')
})
}).catch(() => {
ElMessage({
type: 'info',
message: '已取消!',
})
})
},
handleClick(row){ //编辑
this.itemTypeGet()
this.form = row
this.dialogFormVisible=true
},
saveData(resetForm){ //用于数据的添加和更新
this.itemTypeGet()
this.$refs[resetForm].validate((valid)=>{
if(valid){
this.$http.post("/user/save",this.form).then(res=>{
if(res.statusCode == '200'){
ElMessage({
message: '成功!',
type: 'success',
})
this.dialogFormVisible=false
this.network()
}
}).catch(()=>{
ElMessage.error('失败!')
})
}else{
ElMessage({
message: '已取消!',
type: 'warning',
})
return false;
}
})
},
handleSizeChange(val){ //页大小改变
this.pageSize = val
this.network()
},
handleCurrentChange(val){ //当前页改变
this.pageNum = val
this.network()
},
addItem(){ //添加物品
this.itemTypeGet()
this.dialogFormVisible = true
this.form = {}
},
network(){ //分页查询
this.searchtype = this.typeState
this.$http.get("/user/pageAll",{
params: {
pageNum: this.pageNum,
PageSize: this.pageSize,
itemname: this.searchname,
searchtype: this.searchtype
}
}).then(res=>{
if(res.statusCode == '200'){
this.total = res.data.total
this.tableData = res.data.records
}
}).catch(()=>{
ElMessage.error('数据加载失败,请刷新!')
})
},
},
created() {
this.network()
this.itemTypeGet()
}
}
</script>
<style scoped>
.intemShow{
margin-left: 15px;
}
</style>

Loading…
Cancel
Save