Browse Source

commit

master
xuhuihui 3 years ago
parent
commit
58a0ee5bac
  1. 8
      04.系统编码/Frontend/.idea/workspace.xml
  2. 3
      04.系统编码/Frontend/src/components/Login.vue
  3. 19
      04.系统编码/Frontend/src/components/Shared/Header.vue
  4. 696
      04.系统编码/Frontend/src/components/SystemManagement.vue
  5. 1
      04.系统编码/Frontend/src/uilts/axios.ts

8
04.系统编码/Frontend/.idea/workspace.xml

@ -3,6 +3,8 @@
<component name="ChangeListManager">
<list default="true" id="4b7d7b72-f5b8-41e4-85d5-6267bdc12fc5" name="默认变更列表" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/components/Login.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Login.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/components/Shared/Header.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Shared/Header.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/components/SystemManagement.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/SystemManagement.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/uilts/axios.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/uilts/axios.ts" afterDir="false" />
</list>
@ -31,12 +33,16 @@
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/src" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
<property name="ts.external.directory.path" value="D:\project\NanJingLamanRadarProject\04.系统编码\Frontend\node_modules\typescript\lib" />
<property name="vue.rearranger.settings.migration" value="true" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\project\NanJingLamanRadarProject\04.系统编码\Frontend\src" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="D:\project\NanJingLamanRadarProject\04.系统编码\Frontend\src\uilts" />
<recent name="D:\project\NanJingLamanRadarProject\04.系统编码\Frontend\public\images" />
@ -79,7 +85,7 @@
<workItem from="1638441956659" duration="5371000" />
<workItem from="1638447904778" duration="262000" />
<workItem from="1638496246090" duration="1527000" />
<workItem from="1638497917929" duration="1734000" />
<workItem from="1638497917929" duration="11910000" />
</task>
<task id="LOCAL-00001" summary="2021 12 01">
<created>1638357539757</created>

3
04.系统编码/Frontend/src/components/Login.vue

@ -23,6 +23,7 @@ import {reactive, toRefs} from "vue";
import { post } from "./../uilts/axios";
import { useRouter } from "vue-router"
import { ElMessage } from 'element-plus'
import { setStaff } from "../uilts/storage";
export default {
name: 'Login',
@ -61,7 +62,7 @@ export default {
type: 'error'
});
}else {
console.log(res)
setStaff('login_staff', res.data)
router.push("/MicrowaveRadiation")
}
})

19
04.系统编码/Frontend/src/components/Shared/Header.vue

@ -11,18 +11,20 @@
<div class="nav-item" @click="onNavClick('DecisionSupport')" :class="{'active': currentPath === 'DecisionSupport'}">决策支持</div>
<div class="nav-item" @click="onNavClick('SystemManagement')" :class="{'active': currentPath === 'SystemManagement'}">系统管理</div>
</div>
<span @click="Logout">退出登录</span>
</div>
</template>
<script lang="ts">
import { reactive, onMounted, toRefs } from "vue";
import { useRouter } from 'vue-router';
import { clear } from "../../uilts/storage";
export default {
name: 'Header',
setup() {
const router = useRouter();
let options = reactive({
currentPath: 'MicrowaveRadiation'
})
@ -32,9 +34,15 @@
router.push({path: path});
}
const Logout = () => {
clear()
router.replace('/Login')
}
return {
...toRefs(options),
onNavClick
onNavClick,
Logout
}
}
}
@ -47,6 +55,13 @@
display: flex;
align-items: center;
color: #ffffff;
span{
padding: 10px;
cursor: pointer;
border: 1px solid grey;
background-color: #498DF0;
border-radius: 10px;
}
.logo {
margin-left: 0.2rem;
display: flex;

696
04.系统编码/Frontend/src/components/SystemManagement.vue

@ -1,391 +1,395 @@
<template>
<div class="tabs">
</div>
<div class="main">
<div class="container system-container panel">
<div class="box">
<div class="left">
<h1>用户姓名</h1>
<input type="text" v-model="state1" class="textInput"/>
<div><img src="/images/search.png" @click="onSearch"></div>
</div>
<div class="right">
<span @click="onAddClick">添加新用户</span>
</div>
</div>
<div class="tableMessage">
<el-table :data="tableData" border style="color: black;">
<el-table-column type="index" label="序号" align="center" width="100px"/>
<el-table-column prop="userName" label="用户姓名" align="center"/>
<el-table-column prop="userAccountNumber" label="用户账号" align="center"/>
<el-table-column prop="userPhone" label="电话" align="center"/>
<el-table-column prop="userEmail" label="邮箱" align="center"/>
<el-table-column prop="operation" label="操作" align="center">
<template #default="scope">
<div class="operation">
<span @click.prevent="onAmendClick(scope.$index, tableData)">修改信息</span>
<!--删除-->
<el-popconfirm
confirm-button-text="确认"
cancel-button-text="取消"
@confirm="confirmEvent(scope.$index, tableData)"
title="确认删除?">
<template #reference>
<span>删除用户</span>
</template>
</el-popconfirm>
</div>
</template>
</el-table-column>
</el-table>
<!---分页-->
<div class="pagination">
<el-pagination background
layout="prev, pager, next"
:total="total"
@prev-click="prev"
@next-click="next"
@current-change="changEnum">
</el-pagination>
</div>
</div>
<div class="tabs">
</div>
<div class="main">
<div class="container system-container panel">
<div class="box">
<div class="left">
<h1>用户姓名</h1>
<input type="text" v-model="state1" class="textInput"/>
<div><img src="/images/search.png" @click="onSearch"></div>
</div>
<div class="right">
<span @click="onAddClick">添加新用户</span>
</div>
<!--弹出框--->
<el-dialog v-model="dialogFormVisible" :title="title" center=true width="900px" top="17%">
<el-form :model="form">
<el-form-item label="用户账号:" :label-width="formLabelWidth" >
<el-input v-model="form.userAccountNumber" autocomplete="off" style="width: 260px" :disabled="isDisabled"></el-input>
</el-form-item>
<el-form-item label="用户密码:" :label-width="formLabelWidth">
<el-input v-model="form.userPassword" autocomplete="off" style="width: 260px" type="password"></el-input>
</el-form-item>
<el-form-item label="电话:" :label-width="formLabelWidth">
<el-input v-model="form.userPhone" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
<el-form-item label="邮箱:" :label-width="formLabelWidth">
<el-input v-model="form.userEmail" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
<el-form-item label="用户姓名:" :label-width="formLabelWidth">
<el-input v-model="form.userName" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
</el-form>
<template #footer>
</div>
<div class="tableMessage">
<el-table :data="tableData" border style="color: black;">
<el-table-column type="index" label="序号" align="center" width="100px"/>
<el-table-column prop="userName" label="用户姓名" align="center"/>
<el-table-column prop="userAccountNumber" label="用户账号" align="center"/>
<el-table-column prop="userPhone" label="电话" align="center"/>
<el-table-column prop="userEmail" label="邮箱" align="center"/>
<el-table-column prop="operation" label="操作" align="center">
<template #default="scope">
<div class="operation">
<span @click.prevent="onAmendClick(scope.$index, tableData)">修改信息</span>
<!--删除-->
<el-popconfirm
confirm-button-text="确认"
cancel-button-text="取消"
@confirm="confirmEvent(scope.$index, tableData)"
title="确认删除?">
<template #reference>
<span>删除用户</span>
</template>
</el-popconfirm>
</div>
</template>
</el-table-column>
</el-table>
<!---分页-->
<div class="pagination">
<el-pagination background
layout="prev, pager, next"
:total="total"
hide-on-single-page="hide-on-single-page"
@prev-click="prev"
@next-click="next"
@current-change="changEnum">
</el-pagination>
</div>
</div>
</div>
<!--弹出框--->
<el-dialog v-model="dialogFormVisible" :title="title" center=center width="900px" top="17%">
<el-form :model="form">
<el-form-item label="用户账号:" :label-width="formLabelWidth">
<el-input v-model="form.userAccountNumber" autocomplete="off" style="width: 260px"
:disabled="isDisabled"></el-input>
</el-form-item>
<el-form-item label="用户密码:" :label-width="formLabelWidth">
<el-input v-model="form.userPassword" autocomplete="off" style="width: 260px" type="password"></el-input>
</el-form-item>
<el-form-item label="电话:" :label-width="formLabelWidth">
<el-input v-model="form.userPhone" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
<el-form-item label="邮箱:" :label-width="formLabelWidth">
<el-input v-model="form.userEmail" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
<el-form-item label="用户姓名:" :label-width="formLabelWidth">
<el-input v-model="form.userName" autocomplete="off" style="width: 260px"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="submit" style="color:#FFFFFF;">保存</el-button>
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button @click="dialogFormVisible = false">取消</el-button>
</span>
</template>
</el-dialog>
</template>
</el-dialog>
</div>
</div>
</template>
<script lang="ts">
import {onMounted, reactive, toRefs} from 'vue';
import {post} from "../uilts/axios";
import {ElMessage} from 'element-plus'
import {format} from '../uilts/String';
<script lang="ts">
import {onMounted, reactive, toRefs} from 'vue';
import { post } from "../uilts/axios";
import { ElMessage } from 'element-plus'
import { format } from '../uilts/String';
export default {
name: 'SystemManagement',
setup() {
let option = reactive({
state1:'',
dialogFormVisible:false,
isDisabled:false,
title:'',
formLabelWidth:"100px",
total:null,
current:1,
size:10,
form:{
userName:'',
userAccountNumber:'',
userPhone:'',
userEmail:'',
userPassword:''
},
tableData:[]
})
onMounted(() => {
findAllUser();
})
const findAllUser = ()=>{
return post("user/findUserByUserName",{
userName: option.state1.trim(),
current:option.current,
size:option.size
}).then((res:any)=>{
option.tableData= res.data.records;
option.total = res.data.total;
})
}
name: 'SystemManagement',
setup() {
let option = reactive({
state1: '',
dialogFormVisible: false,
isDisabled: false,
title: '',
formLabelWidth: "100px",
total: null,
current: 1,
size: 10,
form: {
userName: '',
userAccountNumber: '',
userPhone: '',
userEmail: '',
userPassword: ''
},
tableData: []
})
onMounted(() => {
findAllUser();
})
const findAllUser = () => {
return post("user/findUserByUserName", {
userName: option.state1.trim(),
current: option.current,
size: option.size
}).then((res: any) => {
option.tableData = res.data.records;
option.total = res.data.total;
})
}
//
const onAddClick = ()=> {
option.isDisabled=false
option.title = '添加用户'
option.dialogFormVisible = true
option.form = {
userName:'',
userAccountNumber:'',
userPhone:'',
userEmail:'',
userPassword:''
}
}
//
const onAddClick = () => {
option.isDisabled = false
option.title = '添加用户'
option.dialogFormVisible = true
option.form = {
userName: '',
userAccountNumber: '',
userPhone: '',
userEmail: '',
userPassword: ''
}
}
//
const onAmendClick = (index, rows)=>{
option.isDisabled = true
option.title = '修改信息'
option.dialogFormVisible = true
option.form = JSON.parse(JSON.stringify(rows[index]))
}
//
const onAmendClick = (index, rows) => {
option.isDisabled = true
option.title = '修改信息'
option.dialogFormVisible = true
option.form = JSON.parse(JSON.stringify(rows[index]))
}
//
const confirmEvent = (index, rows)=>{
console.log(rows[index].userAccountNumber)
post('user/delUser',{
userAccountNumber:rows[index].userAccountNumber
}).then((res:any)=>{
if (res.error != 0){
ElMessage.error({
message: "删除失败",
type: 'error'
});
return;
}else {
findAllUser()
ElMessage.success({
message: "删除成功",
type: 'success'
});
}
})
}
//
const confirmEvent = (index, rows) => {
post('user/delUser', {
userAccountNumber: rows[index].userAccountNumber
}).then((res: any) => {
if (res.error != 0) {
ElMessage.error({
message: "删除失败",
type: 'error'
});
return;
} else {
findAllUser()
ElMessage.success({
message: "删除成功",
type: 'success'
});
}
})
}
//
const onSearch = ()=> {
post("user/findUserByUserName",{
current: option.current,
size: option.size,
userName: option.state1
}).then((res:any) => {
option.tableData= res.data.records;
option.total = res.data.total;
console.log(res)
})
}
//
const onSearch = () => {
post("user/findUserByUserName", {
current: option.current,
size: option.size,
userName: option.state1
}).then((res: any) => {
option.tableData = res.data.records;
option.total = res.data.total;
})
}
const prev = (e)=>{
option.current= e
findAllUser()
}
const prev = (e) => {
option.current = e
findAllUser()
}
const next = (e)=>{
option.current= e
findAllUser()
}
const next = (e) => {
option.current = e
findAllUser()
}
const changEnum = (e)=> {
option.current = e;
findAllUser()
}
const changEnum = (e) => {
option.current = e;
findAllUser()
}
const verify = () => {
let errors = [];
if (option.form.userAccountNumber == null || option.form.userAccountNumber.trim() == "") {
errors.push("用户账号");
}
if (option.form.userPassword == null || option.form.userPassword.trim() == "") {
errors.push("用户密码");
}
if (option.form.userName == null || option.form.userName.trim() == "") {
errors.push("用户姓名");
}
if (errors.length > 0) {
ElMessage.error({
message: format("{0}不能为空", errors.join(", ")),
type: 'error'
});
}
return errors.length > 0;
}
const verify = () => {
let errors = [];
if (option.form.userAccountNumber == null || option.form.userAccountNumber.trim() == ""){
errors.push("用户账号");
}
if (option.form.userPassword == null || option.form.userPassword.trim() == ""){
errors.push("用户密码");
}
if (option.form.userName == null || option.form.userName.trim() == ""){
errors.push("用户姓名");
}
if (errors.length > 0){
ElMessage.error({
message: format("{0}不能为空", errors.join(", ")),
type: 'error'
});
}
return errors.length > 0;
const submit = () => {
if (verify()) return;
if (option.title === '修改信息') {
post("user/updateUser", option.form, "application/json").then((res: any) => {
option.dialogFormVisible = false
if (res.error != 0) {
ElMessage.error({
message: "修改失败",
type: 'error'
});
return;
} else {
findAllUser()
ElMessage.success({
message: "修改成功",
type: 'success'
});
}
})
}
const submit = ()=> {
if (verify()) return;
if(option.title === '修改信息'){
post("user/updateUser", option.form, "application/json").then((res: any) => {
option.dialogFormVisible=false
if (res.error != 0){
ElMessage.error({
message: "修改失败",
type: 'error'
});
return;
}else {
findAllUser()
ElMessage.success({
message: "修改成功",
type: 'success'
});
}
})
}
if(option.title === '添加用户'){
if (verify()) return;
post("user/insertUser",option.form,"application/json").then((res:any)=>{
option.dialogFormVisible = false
if (res.error != 0){
ElMessage.error({
message: "修改失败",
type: 'error'
});
return;
}else {
findAllUser()
ElMessage.success({
message: "修改成功",
type: 'success'
});
}
})
}
if (option.title === '添加用户') {
if (verify()) return;
post("user/insertUser", option.form, "application/json").then((res: any) => {
option.dialogFormVisible = false
if (res.error != 0) {
ElMessage.error({
message: "修改失败",
type: 'error'
});
return;
} else {
findAllUser()
ElMessage.success({
message: "修改成功",
type: 'success'
});
}
})
}
}
return {
...toRefs(option),
onAddClick,
onAmendClick,
onSearch,
submit,
findAllUser,
confirmEvent,
prev,
next,
changEnum
}
}
return {
...toRefs(option),
onAddClick,
onAmendClick,
onSearch,
submit,
findAllUser,
confirmEvent,
prev,
next,
changEnum
}
}
}
</script>
<style lang="less" scoped>
.system-container {
width: 100%;
margin-left: 0;
.system-container {
width: 100%;
margin-left: 0;
.pagination{
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
.pagination {
margin-top: 10px;
display: flex;
justify-content: flex-end;
}
.box{
padding: 28px 20px 0px ;
display: flex;
justify-content: space-between;
.left{
display: flex;
justify-content: space-between;
align-items: center;
.textInput{
width: 305px;
height: 35px;
line-height: 35px;
font-size: 20px;
text-indent: 10px;
}
h1{
width: 100px;
height: 26px;
font-size: 20px;
font-weight: bold;
line-height: 26px;
color: #000000;
opacity: 1;
}
img{
width: 44px;
height: 44px;
margin-left: 10px;
padding-top: 4px;
cursor: pointer;
}
}
.box {
padding: 28px 20px 0px;
display: flex;
justify-content: space-between;
.right{
width: 100px;
height: 26px;
font-size: 20px;
font-weight: bold;
line-height: 26px;
color: #498DF0;
opacity: 1;
span{
width: 96px;
height: 0px;
border-bottom: 1px solid #498DF0;
opacity: 1;
cursor: pointer;
}
}
.left {
display: flex;
justify-content: space-between;
align-items: center;
.textInput {
width: 305px;
height: 35px;
line-height: 35px;
font-size: 20px;
text-indent: 10px;
}
.tableMessage{
padding: 36px 20px 20px;
font-size: 18px;
h1 {
width: 100px;
height: 26px;
font-size: 20px;
font-weight: bold;
line-height: 26px;
color: #000000;
opacity: 1;
}
.operation {
display: flex;
justify-content: space-evenly;
img {
width: 44px;
height: 44px;
margin-left: 10px;
padding-top: 4px;
cursor: pointer;
}
}
span {
border-bottom: 1px solid #000000;
opacity: 1;
cursor: pointer;
font-weight: 400;
}
.right {
width: 100px;
height: 26px;
font-size: 20px;
font-weight: bold;
line-height: 26px;
color: #498DF0;
opacity: 1;
}
:deep(.el-table thead){
color: black;
span {
width: 96px;
height: 0px;
border-bottom: 1px solid #498DF0;
opacity: 1;
cursor: pointer;
}
}
}
}
:deep(.el-form-item__label){
text-align: left;
color: #000000;
}
.tableMessage {
padding: 36px 20px 20px;
font-size: 18px;
:deep(.el-form){
.operation {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin: 0 auto;
width: 90%;
//align-content: flex-start;
justify-content: space-evenly;
span {
border-bottom: 1px solid #000000;
opacity: 1;
cursor: pointer;
font-weight: 400;
}
}
:deep(.el-button){
width: 159px;
height: 44px;
opacity: 1;
border-radius: 4px;
border: 1px solid #498DF0;
font-weight: 400;
color: #498DF0;
:deep(.el-table thead) {
color: black;
}
}
}
:deep(.el-form-item__label) {
text-align: left;
color: #000000;
}
:deep(.el-form) {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin: 0 auto;
width: 90%;
//align-content: flex-start;
}
:deep(.el-button) {
width: 159px;
height: 44px;
opacity: 1;
border-radius: 4px;
border: 1px solid #498DF0;
font-weight: 400;
color: #498DF0;
}
</style>

1
04.系统编码/Frontend/src/uilts/axios.ts

@ -10,6 +10,7 @@ const service = axios.create({
})
service.interceptors.request.use(config => {
loading = ElLoading.service({
customClass: 'loading',
spinner: 'el-icon-loading',

Loading…
Cancel
Save