This commit is contained in:
20932067@zju.edu.cn 2021-03-19 23:06:30 +08:00
parent d007f63e70
commit 246411c839
16 changed files with 579 additions and 1023 deletions

23
src/api/mail.js Normal file
View File

@ -0,0 +1,23 @@
import axios from './api.config'
import qs from 'qs'
// 获取邮箱配置信息
export const getMailInfo = () => {
return axios.request({
url: 'getmailconfig',
})
}
// 获取用户所以信息列表
export const editMailInfo = (data) => {
return axios.request({
url: 'editmailconfig',
data: qs.stringify(data, { arrayFormat: 'brackets' })
})
}
// 获取用户所以信息列表
export const testMailInfo = () => {
return axios.request({
url: 'testsendmail'
})
}

View File

@ -14,20 +14,20 @@ export const getAllFlats = () => {
url: 'getallflats',
})
}
// 获取所有公寓信息
// 获取所有价格信息
export const getPriceList = () => {
return axios.request({
url: 'getpricelist'
})
}
// 获取所有公寓信息
// 获取所有自己的订单列表信息
export const getSelfOrderLst = (data) => {
return axios.request({
url: 'getselforderlist',
data: qs.stringify(data, { arrayFormat: 'brackets' })
})
}
// 获取所有公寓信息
// 快递员获取所有订单
export const getCourierLst = (data) => {
return axios.request({
url: 'couriergetalllist',
@ -56,7 +56,7 @@ export const courierGetSelfList = (data) => {
data: qs.stringify(data, { arrayFormat: 'brackets' })
})
}
// 获取所有公寓信息
// 改变订单
export const delivery = (data) => {
return axios.request({
url: 'delivery',
@ -71,3 +71,10 @@ export const charge = (data) => {
data: qs.stringify(data, { arrayFormat: 'brackets' })
})
}
export const adminGetAllOrder = (data) =>{
return axios.request({
url: 'admingetorderlist',
data: qs.stringify(data, { arrayFormat: 'brackets' })
})
}

View File

@ -8,3 +8,10 @@ export const getAllAccount = (data) => {
data: qs.stringify(data, { arrayFormat: 'brackets' })
})
}
// 获取用户所以信息列表
export const changIdentity = (data) => {
return axios.request({
url: 'getallaccount',
data: qs.stringify(data, { arrayFormat: 'brackets' })
})
}

View File

@ -43,9 +43,7 @@ export default {
icon: 'el-icon-location',
title: '所有用户',
menuItem: [
{route: 'au', listTitle: '普通用户'},
{route: 'aw', listTitle: '工作人员'},
{route: 'fp', listTitle: '查找用户'}
{route: 'au', listTitle: '所有用户'},
]
},
{
@ -53,9 +51,7 @@ export default {
icon: 'el-icon-tickets',
title: '所有订单',
menuItem: [
{route: 'anro', listTitle: '未接订单'},
{route: 'aro', listTitle: '已接订单'},
{route: 'aho', listTitle: '历史订单'}
{route: 'all', listTitle: '所有订单'}
]
},
{
@ -63,7 +59,8 @@ export default {
icon: 'el-icon-message',
title: '消息系统',
menuItem: [
{route: 'sm', listTitle: '发送消息'}
{route: 'sm', listTitle: '发送消息'},
{route: 'mail', listTitle: '邮箱配置'}
]
},
{

View File

@ -1,202 +0,0 @@
<template>
<el-table
:data="theUserOrder"
:border='false'
class="adminOrderList"
:default-sort = "{prop: 'createTime', order: 'descending'}"
style="width: 100%">
<el-table-column type="expand" >
<template slot-scope="props">
<el-form label-position="left"
inline class="admin-table-expand">
<el-form-item label="发布时间 :" >
<span>{{ props.row.createTime }}</span>
</el-form-item>
<el-form-item label="订单状态 :" >
<span>{{ props.row.orderState }}</span>
</el-form-item>
<el-form-item label="订单号 :" >
<span>{{ props.row.orderId }}</span>
</el-form-item>
<el-form-item label="发布人员 :" >
<span>{{ props.row.createOrderPeople }}</span>
</el-form-item>
<el-form-item label="联系电话 :" >
<span>{{ props.row.createOrderPeoplePhone }}</span>
</el-form-item>
<el-form-item label="取货码 :" >
<span v-for="it in props.row.goodsCode"
:key='it'>{{it}}</span>
</el-form-item>
<el-form-item label="快递公司 :" >
<span v-for="it in props.row.company"
:key='it'>{{it}}</span>
</el-form-item>
<el-form-item label="快递数量 :" >
<span>{{ props.row.goodsNumber }} </span>
</el-form-item>
<el-form-item label="快递类型 :" >
<span>{{ props.row.goodsTpye }}</span>
</el-form-item>
<el-form-item label="快递大小 :" >
<span>{{ props.row.goodsSize }}</span>
</el-form-item>
<el-form-item label="订单价格 :" >
<span>{{ props.row.Price | priceInit }} </span>
</el-form-item>
<el-form-item label="备注 :" >
<span>{{ props.row.remarks }}</span>
</el-form-item>
<el-form-item label="收货地址 :" class="address">
<span>{{ props.row.address }}</span>
</el-form-item>
<template v-if="props.row.orderState!='未接单'">
<el-form-item label="接单时间 :" >
<span>{{ props.row.receivedDate }}</span>
</el-form-item>
<el-form-item label="接单人员 :" >
<span>{{ props.row.courierPeople }}</span>
</el-form-item>
<el-form-item label="接单人电话 :" >
<span>{{ props.row.courierPhone }}</span>
</el-form-item>
</template>
<el-form-item label="完成时间 :" v-if="props.row.completedData">
<span>{{ props.row.completedData }}</span>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column
v-for="item in tabletitleList"
:key='item.id'
:sortable='item.sortable'
:label="item.columnTitle"
:prop="item.prop">
</el-table-column>
<el-table-column
prop='Price'
:formatter='genderInit'
label="价格">
</el-table-column>
<el-table-column align="right">
<template slot="header" slot-scope="scope">
<span style="margin-right:3rem">操作</span>
</template>
<template slot-scope="scope">
<template >
<el-button
size="mini"
type='danger'
class="DeletePerson"
key='Delete'
@click="$emit('deleteOrder',scope.row)"
>删除订单</el-button>
</template>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
props:{
userOrder:Array,
titleList:{
id: Number ,
columnTitle: String,
prop: String,
sortable:Boolean
},
defaultSolt:{
prop: {type:String,defult:'createTime'},
order:{type:String,defult:'descending'}
}
},
data(){
return{
tabletitleList:this.titleList,
search:''
}
},
computed:{
theUserOrder(){
return this.userOrder
}
},
methods:{
// filterGoodsSize(value, row) {
// return row.goodsSize === value;
// }
genderInit(row, column, cellValue, index){
return '¥'+Number.parseFloat(cellValue).toFixed(2)
}
}
}
</script>
<style lang='scss'>
.adminOrderList{
.el-button{
width: 4.2rem;
height: 1.5rem;
line-height: 1.5rem;
padding: 0;
span{
font-size: 0.6rem;
}
}
.DeletePerson{
margin-right: 2rem;
}
td{
border-right: none;
}
.el-message{
top: 5rem;
}
//
.btn-cancel{
margin-right: 0.2rem;
margin-bottom: 0.3rem;
}
.btn-success{
background-color: #409eff;
color: #fff;
&:hover{
background-color:lighten(#409eff,5%);
}
}
//
.emptyTip a{
color: rgb(226, 137, 137);
&:hover{
color: rgb(214, 29, 29);
}
}
.el-button+.el-button{
margin-left: 0;
}
// span
.el-form-item__content span{
margin-right: 0.5rem;
}
.admin-table-expand {
font-size: 0;
}
.admin-table-expand label {
width: 90px;
color: #99a9bf;
}
.admin-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 50%;
}
.el-form-item.address{
width: 100%;
}
}
</style>

View File

@ -1,93 +0,0 @@
<template>
<div class="allHistoryOrder-page">
<person-title>当前位置 :: 所有订单 >> <em>历史订单</em></person-title>
<div class="allHistoryOrder-cont">
<adminOrderList
:userOrder='horder'
:titleList='titleList'
@deleteOrder='handleDeleteOrder'>
</adminOrderList>
</div>
</div>
</template>
<script>
import adminOrderList from './adminOrderList'
import axios from 'axios'
export default {
components:{
adminOrderList
},
data(){
return{
titleList:[
{id:1,columnTitle:'发布时间',prop:'createTime',sortable:true},
{id:2,columnTitle:'发布人',prop:'createOrderPeople',sortable:false},
{id:3,columnTitle:'接单人',prop:'courierPeople',sortable:false}
],
horder:[]
}
},
created() {
this.getAllHistoryOrder();
},
methods:{
getAllHistoryOrder(){
let loading = this.$loading({lock:true,text:'玩命加载中...'});
axios.get(`/admin/allHistoryOrder`).then(response=>{
let res = response.data;
loading.close();
if(res.status=='0'){
this.horder = res.result;
}else{
console.log(res.msg);
}
}).catch(err=>{
console.log(err);
loading.close();
})
},
handleDeleteOrder(orderData){
//
this.$confirm(`此订单删除无法恢复! 确认删除订单?`,
'完成订单', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error'
}).then(() => {
// let loading = this.$loading({lock:true,text:'...'});
// axios.post(`/wokers/deleteHistoryOrder`,{orderId:orderData.orderId}).then(response=>{
// let res = response.data;
// loading.close();
// if(res.status=='0'){
this.$message({
type: 'success',
message: '删除成功!'
});
// this.gehistoryOrderList();
// }else{
// this.$message({
// type: 'error',
// message: res.msg
// });
// }
// }).catch(err=>{
// loading.close();
// console.log(err);
// });
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
});
});
}
}
}
</script>
<style>
</style>

View File

@ -1,111 +0,0 @@
<template>
<div class="allNotReceiveOrder-page">
<person-title>当前位置 :: 所有订单 >> <em>未接订单</em></person-title>
<div class="allNotReceiveOrder-cont">
<adminOrderList
:userOrder='NotReceiveOrder'
:titleList='titleList'
@deleteOrder='handleDeleteOrder'>
</adminOrderList>
</div>
</div>
</template>
<script>
import adminOrderList from './adminOrderList'
import axios from 'axios'
export default {
components:{
adminOrderList
},
data(){
return{
titleList:[
{id:1,columnTitle:'发布时间',prop:'createTime',sortable:true},
{id:2,columnTitle:'发布人',prop:'createOrderPeople',sortable:false},
{id:3,columnTitle:'类型',prop:'goodsTpye',sortable:false}
],
NotReceiveOrder:[
{
"orderState" : "未接单",
"company" : [
"韵达"
],
"goodsCode" : [
"655656"
],
"goodsTpye" : "衣物",
"goodsSize" : "小",
"Price" : 3.00,
"goodsNumber" : 1,
"remarks" : "",
"orderId" : "8477181203092909",
"createTime" : "2018-12-03 09:29:09",
"createOrderPeople" : "张洪波",
"createOrderPeoplePhone" : "15279778477",
"address" : "南昌大学共青学院 8栋 518"
}
]
}
},
created() {
this.getAllNotReceiveOrder();
},
methods:{
getAllNotReceiveOrder(){
let loading = this.$loading({lock:true,text:'玩命加载中...'});
axios.get(`/admin/allNotReceiveOrder`).then(response=>{
let res = response.data;
loading.close();
if(res.status=='0'){
this.NotReceiveOrder = res.result;
}else{
console.log(res.msg);
}
}).catch(err=>{
console.log(err);
})
},
handleDeleteOrder(orderData){
//
this.$confirm(`此订单删除无法恢复! 确认删除订单?`,
'完成订单', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error'
}).then(() => {
// let loading = this.$loading({lock:true,text:'...'});
// axios.post(`/wokers/deleteHistoryOrder`,{orderId:orderData.orderId}).then(response=>{
// let res = response.data;
// loading.close();
// if(res.status=='0'){
this.$message({
type: 'success',
message: '删除成功!'
});
// this.gehistoryOrderList();
// }else{
// this.$message({
// type: 'error',
// message: res.msg
// });
// }
// }).catch(err=>{
// loading.close();
// console.log(err);
// });
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
});
});
}
}
}
</script>
<style>
</style>

View File

@ -0,0 +1,271 @@
<template>
<div class="currentorder">
<person-title>当前位置 :: 我的订单 >> <em>所有订单</em></person-title>
<div class="currentorder-cont">
<div class="findOrder-search">
<el-form :inline="true" :model="selectData" class="user-findOrder">
<el-form-item label="查询条件">
<el-select v-model="selectData.status" clearable placeholder="选择查询条件">
<!-- 状态1:待取件 2:运输 3:送到 4:收取 前端返回值为-->
<el-option label="待取件" :value="1"></el-option>
<el-option label="运输中" :value="2"></el-option>
<el-option label="待收取" :value="3"></el-option>
<el-option label="完成" :value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="请输入">
<el-input v-model="selectData.name" clearable placeholder="姓名"></el-input>
</el-form-item>
<el-form-item label="请输入">
<el-input v-model="selectData.phone" clearable placeholder="电话"></el-input>
</el-form-item>
<el-form-item label="请输入">
<el-input v-model="selectData.company" clearable placeholder="快递公司"></el-input>
</el-form-item>
<el-button type="primary" v-on:click="queryData()">查询</el-button>
</el-form>
</div>
<el-table
:data="OrderData"
class="userOrderList"
:default-sort="{prop: 'createTime', order: 'descending'}"
style="width: 100%">
<div class="emptyTip" slot="empty">
暂时没有订单 , 赶紧去
<a href="" @click.prevent="handleGotoNewOrde"
> 发布订单 </a>
</div>
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="left"
inline class="userTable demo-table-expand">
<el-form-item label="订单号 :">
<span>{{ props.row.id }}</span>
</el-form-item>
<el-form-item label="收货人姓名 :">
<span>{{props.row.name}}</span>
</el-form-item>
<el-form-item label="电话 :">
<span>{{props.row.phone}}</span>
</el-form-item>
<el-form-item label="快递大小 :">
<span>{{ props.row.typeDesc }}</span>
</el-form-item>
<el-form-item label="快递公司 :">
<span>{{ props.row.company}}</span>
</el-form-item>
<el-form-item label="取货码 :">
<span>{{props.row.number}}</span>
</el-form-item>
<el-form-item label="公寓 :">
<span>{{props.row.flats}}</span>
</el-form-item>
<el-form-item label="寝室号 :">
<span>{{props.row.hostel}}</span>
</el-form-item>
<el-form-item label="发布时间 :">
<span v-text="timeChange(props.row.createTime)"></span>
</el-form-item>
<el-form-item label="备注 :">
<span>{{ props.row.decs }}</span>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column
v-for="item in titleList"
:key='item.id'
:sortable='item.sortable'
:label="item.columnTitle"
:prop="item.prop">
</el-table-column>
<el-table-column
prop="status"
label="快递状态"
filter-placement="bottom-end">
<template slot-scope="scope">
<el-tag
v-if="scope.row.status==1">待取件
</el-tag>
<el-tag
type="warning" v-if="scope.row.status==2"
>运输中
</el-tag>
<el-tag
type="danger" v-if="scope.row.status==3"
disable-transitions>待收取
</el-tag>
<el-tag
type="success" v-if="scope.row.status==4"
disable-transitions>完成
</el-tag>
</template>
</el-table-column>
</el-table>
</div>
<div class="pageination-oder">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="selectData.page"
:page-sizes="[10, 50, 80, 100]"
:page-size="selectData.size"
layout="total, sizes, prev, pager, next, jumper"
:total="totalOrder">
</el-pagination>
</div>
</div>
</template>
<script>
import {adminGetAllOrder} from '../../../api/order'
import {formData} from '../../../unit/formDate'
export default {
data () {
return {
findOrderForm: {
condition: '',
answers: ''
},
OrderData: null,
selectData: {
page: 1,
size: 10,
id: '',
flats: '',
name: '',
phone: '',
company: '',
starttime: '',
endtime: '',
type: '',
status: ''
},
totalOrder: 0,
showPagination: true,
listType: {
noCompBtn: true
},
titleList: [
{id: 1, columnTitle: '订单号', prop: 'id'},
{id: 2, columnTitle: '姓名', prop: 'name'},
{id: 3, columnTitle: '发布时间', prop: 'createTime'}
]
}
},
created () {
this.getUserOrder()
},
methods: {
queryData () {
this.getUserOrder()
},
timeChange (time) {
return formData(time, 'yyyy-MM-dd hh:mm:ss')
},
getUserOrder () {
let loading = this.$loading({lock: true, text: '玩命加载中...'})
adminGetAllOrder(this.selectData).then((res) => {
var data = res.data
setTimeout(loading.close(),1000)
if (data.success) {
this.OrderData = data.data.list
this.totalOrder = data.data.count
} else {
this.$message({
type: 'info',
message: data.msg
})
}
})
setTimeout(loading.close(),1000)
},
handleSizeChange (val) {
this.selectData.size = val
this.getUserOrder()
},
handleCurrentChange (val) {
this.selectData.page = val
this.getUserOrder()
}
}
}
</script>
<style lang='scss'>
.userOrderList {
.el-message {
top: 5rem;
}
.el-button {
width: 4.2rem;
height: 1.5rem;
line-height: 1.5rem;
padding: 0;
span {
font-size: 0.6rem;
}
}
//
.btn-cancel {
margin-right: 0.2rem;
margin-bottom: 0.3rem;
}
.btn-success {
/*background-color: #409eff;*/
/*color: #fff;*/
&:hover {
/*background-color: lighten(#409eff, 5%);*/
}
}
//
.emptyTip a {
color: rgb(226, 137, 137);
&:hover {
color: rgb(214, 29, 29);
}
}
.el-button + .el-button {
margin-left: 0;
}
// span
.horder .el-form-item__content span,
.currentorder .el-form-item__content span {
margin-right: 0.5rem;
}
.demo-table-expand {
font-size: 0;
}
.demo-table-expand label {
width: 6.2rem;
color: #99a9bf;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 50%;
}
}
.el-button {
margin: 0 auto;
}
.findOrder-search {
padding-top: 1rem;
}
</style>

View File

@ -1,92 +0,0 @@
<template>
<div class="allReceiveOrder-page">
<person-title>当前位置 :: 所有订单 >> <em>已接订单</em></person-title>
<div class="allReceiveOrder-cont">
<adminOrderList
:userOrder='ReceivedOrder'
:titleList='titleList'
@deleteOrder='handleDeleteOrder'>
</adminOrderList>
</div>
</div>
</template>
<script>
import adminOrderList from './adminOrderList'
import axios from 'axios'
export default {
components:{
adminOrderList
},
data(){
return{
titleList:[
{id:1,columnTitle:'发布时间',prop:'createTime',sortable:true},
{id:2,columnTitle:'发布人',prop:'createOrderPeople',sortable:false},
{id:3,columnTitle:'接单人',prop:'courierPeople',sortable:false}
],
ReceivedOrder:[]
}
},
created() {
this.getAllReceiveOrder();
},
methods:{
getAllReceiveOrder(){
let loading = this.$loading({lock:true,text:'玩命加载中...'});
axios.get(`/admin/allReceiveOrder`).then(response=>{
let res = response.data;
loading.close();
if(res.status=='0'){
this.ReceivedOrder = res.result;
}else{
console.log(res.msg);
}
}).catch(err=>{
console.log(err);
loading.close();
})
},
handleDeleteOrder(orderData){
//
this.$confirm(`此订单删除无法恢复! 确认删除订单?`,
'完成订单', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error'
}).then(() => {
// let loading = this.$loading({lock:true,text:'...'});
// axios.post(`/wokers/deleteHistoryOrder`,{orderId:orderData.orderId}).then(response=>{
// let res = response.data;
// loading.close();
// if(res.status=='0'){
this.$message({
type: 'success',
message: '删除成功!'
});
// this.gehistoryOrderList();
// }else{
// this.$message({
// type: 'error',
// message: res.msg
// });
// }
// }).catch(err=>{
// loading.close();
// console.log(err);
// });
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
});
});
}
}
}
</script>
<style>
</style>

View File

@ -1,140 +0,0 @@
<template>
<div class="findOneOrder-page">
<person-title>当前位置 :: 所有订单 >> <em>查找订单</em></person-title>
<div class="findOrder-search">
<el-form :inline="true" :model="findOrderForm" class="admin-findOrder">
<el-form-item label="查询条件">
<el-select v-model="findOrderForm.condition" placeholder="选择查询条件">
<el-option label="订单号" value="订单号"></el-option>
<el-option label="普通用户id" value="普通用户id"></el-option>
<el-option label="工作人员id" value="工作人员id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="请输入">
<el-input v-model="findOrderForm.answers" placeholder="查询条件"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchOrder">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="findOneOrder-cont">
<adminOrderList
:userOrder='findOrderList'
:titleList='titleList'
@deleteOrder='handleDeleteOrder'>
</adminOrderList>
</div>
</div>
</template>
<script>
import adminOrderList from './adminOrderList'
import axios from 'axios'
export default {
components:{
adminOrderList
},
data(){
return{
titleList:[
{id:1,columnTitle:'发布时间',prop:'createTime',sortable:true},
{id:2,columnTitle:'发布人',prop:'createOrderPeople',sortable:false},
{id:3,columnTitle:'订单状态',prop:'orderState',sortable:false}
],
findOrderForm: {
condition: '',
answers: ''
},
findOrderList:[]
}
},
methods:{
searchTest(){
let testVal = this.findOrderForm.answers;
switch(this.findOrderForm.condition){
case "订单号" :
return /^\d{16}$/.test(testVal)
case "普通用户id" :
case "工作人员id" :
return /^1[3-8][0-9]{9}$/.test(testVal)
default : return false
}
},
searchOrder(){
let flag = this.searchTest();
if(flag){
let loading = this.$loading({lock:true,text:'玩命加载中...'});
axios.post(`/admin/searchOrder`,this.findOrderForm).then(response=>{
let res = response.data;
loading.close();
if(res.status=='0'){
this.findOrderList = res.result;
}else{
this.$message({
type: 'error',
message: res.msg,
showClose:true
});
}
}).catch(err=>{
console.log(err);
loading.close();
});
}else{
this.$message({
type: 'error',
message: '条件格式不正确!',
showClose:true
});
}
},
handleDeleteOrder(orderData){
//
this.$confirm(`此订单删除无法恢复! 确认删除订单?`,
'完成订单', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error'
}).then(() => {
// let loading = this.$loading({lock:true,text:'...'});
// axios.post(`/wokers/deleteHistoryOrder`,{orderId:orderData.orderId}).then(response=>{
// let res = response.data;
// loading.close();
// if(res.status=='0'){
this.$message({
type: 'success',
message: '删除成功!'
});
// this.gehistoryOrderList();
// }else{
// this.$message({
// type: 'error',
// message: res.msg
// });
// }
// }).catch(err=>{
// loading.close();
// console.log(err);
// });
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
});
});
}
}
}
</script>
<style scoped >
.findOrder-search{
padding-top: 1rem;
}
.findOneOrder-cont{
border-top: 1px solid #ccc;
}
</style>

View File

@ -1,21 +1,33 @@
<template>
<div class="allUser-page">
<person-title>当前位置 :: 所有用户 >> <em>普通用户</em></person-title>
<person-title>当前位置 :: 所有用户</person-title>
<div class="allUser-page-cont">
<div class="findOrder-search">
<el-form :inline="true" :model="findOrderForm" class="user-findOrder">
<el-form-item label="查询条件">
<el-select v-model="selectData.identiyId" clearable placeholder="选择查询条件">
<el-option label="用户名" :value="3"></el-option>
<el-option label="电话" value="phone"></el-option>
<el-option label="快递公司" value="company"></el-option>
<el-form :inline="true" :model="selectData" class="user-findOrder">
<el-form-item label="用户类型">
<el-select v-model="selectData.identiyId"
size="small"
clearable placeholder="用户类型">
<el-option label="普通用户" :value="3"></el-option>
<el-option label="快递员" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="请输入">
<el-input v-model="selectData.username" placeholder="用户名" clearable></el-input>
<el-input v-model="selectData.username"
size="small"
placeholder="用户名" clearable></el-input>
</el-form-item>
<el-button type="primary" v-on:click="queryData()">查询</el-button>
<el-form-item label="请输入">
<el-input v-model="selectData.email"
size="small"
placeholder="电子邮箱" clearable></el-input>
</el-form-item>
<el-form-item label="请输入">
<el-input v-model="selectData.phone"
size="small"
placeholder="手机号码" clearable></el-input>
</el-form-item>
<el-button type="primary" v-on:click="queryData()">查询</el-button>
</el-form>
</div>
<el-table
@ -30,55 +42,30 @@
<template slot-scope="props">
<el-form label-position="left"
inline class="userTable demo-table-expand">
<el-form-item label="订单号 :">
<el-form-item label="号 :">
<span>{{ props.row.id }}</span>
</el-form-item>
<el-form-item label="收货人姓名 :">
<span>{{ props.row.name }}</span>
<el-form-item label="用户名 :">
<span>{{ props.row.username }}</span>
</el-form-item>
<el-form-item label="电话 :">
<el-form-item label="联系电话 :">
<span>{{ props.row.phone }}</span>
</el-form-item>
<el-form-item label="快递大小 :">
<span>{{ props.row.typeDesc }}</span>
<el-form-item label="电子邮箱 :">
<span>{{ props.row.email }}</span>
</el-form-item>
<el-form-item label="快递公司 :">
<span>{{ props.row.company }}</span>
<el-form-item label="性别 :">
<span>{{ props.row.sex === 1 ? '男' : '女' }}</span>
</el-form-item>
<el-form-item label="取货码 :">
<span>{{ props.row.number }}</span>
<el-form-item label="保密问题 :">
<span>{{ props.row.ncryptedProble }}</span>
</el-form-item>
<el-form-item label="公寓 :">
<span>{{ props.row.flats }}</span>
<el-form-item label="注册时间 :">
<span v-text="timeChange(props.row.registrationTime)"></span>
</el-form-item>
<el-form-item label="寝室号 :">
<span>{{ props.row.hostel }}</span>
<el-form-item label="生日 :">
<span>{{ props.row.birthday }}</span>
</el-form-item>
<el-form-item label="备注 :">
<span>{{ props.row.decs }}</span>
</el-form-item>
<el-form-item>
</el-form-item>
<template v-if="props.row.status!=2">
<el-form-item label="接单人员 :">
<span>{{ props.row.courier.username }}</span>
</el-form-item>
<el-form-item label="接单人电话 :">
<span>{{ props.row.courier.phone }}</span>
</el-form-item>
<el-form-item v-if="props.row.status==2" label="接单时间 :">
<span>{{ props.row.lastTime }}</span>
</el-form-item>
<el-form-item v-if="props.row.status==3" label="送达时间 :">
<span>{{ props.row.lastTime }}</span>
</el-form-item>
<el-form-item v-if="props.row.status==4" label="收取时间 :">
<span>{{ props.row.lastTime }}</span>
</el-form-item>
</template>
<!-- <el-form-item label="发布时间 :">-->
<!-- <span>{{ props.row.createTime }}</span>-->
<!-- </el-form-item>-->
</el-form>
</template>
</el-table-column>
@ -89,49 +76,25 @@
:label="item.columnTitle"
:prop="item.prop">
</el-table-column>
<el-table-column
prop="status"
label="快递状态"
filter-placement="bottom-end">
<template slot-scope="scope">
<el-tag
v-if="scope.row.status==1">待取件
</el-tag>
<el-tag
type="warning" v-if="scope.row.status==2"
>运输中
</el-tag>
<el-tag
type="danger" v-if="scope.row.status==3"
disable-transitions>待收取
</el-tag>
<el-tag
type="success" v-if="scope.row.status==4"
disable-transitions>完成
</el-tag>
</template>
</el-table-column>
<el-table-column>
<template slot="header" slot-scope="scope">操作
</template>
<template slot-scope="scope">
<template v-if="scope.row.status==1">
<template v-if="scope.row.identityId==3">
<el-button
size="mini"
class="btn-cancel"
type='danger'
key='Cancel'
v-on:click="cancel(scope.row.id)"
>取消订单
type='success'
size="medium"
v-on:click="changUser(scope.row)"
>设为快递员
</el-button>
<!-- handleSuccess(scope.$index, scope.row) -->
</template>
<template v-if="scope.row.status==3">
<template v-if="scope.row.identityId==2">
<el-button
size="mini"
key='Delete'
v-on:click="chargeOrder(scope.row.id)"
>确认收货
size="medium"
v-on:click="changUser(scope.row)"
>设为普通用户
</el-button>
</template>
</template>
@ -142,9 +105,9 @@
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="4"
:current-page="selectData.page"
:page-sizes="[10, 50, 80, 100]"
:page-size="10"
:page-size="selectData.size"
layout="total, sizes, prev, pager, next, jumper"
:total="totalOrder">
</el-pagination>
@ -153,42 +116,59 @@
</template>
<script>
import {getAllAccount} from '../../../api/user'
import {getAllAccount, changIdentity} from '../../../api/user'
import {formData} from '../../../unit/formDate'
export default {
data () {
return {
theUserList: [],
titleList: [
{id: 1, columnTitle: '注册时间', prop: 'regDate', sortable: true},
{id: 2, columnTitle: '名字', prop: 'userName', sortable: false},
{id: 3, columnTitle: '账号', prop: 'userId', sortable: false}
{id: 1, columnTitle: '用户名', prop: 'username', sortable: true},
{id: 2, columnTitle: '电话', prop: 'phone', sortable: false},
{id: 3, columnTitle: '电子邮件', prop: 'email', sortable: false}
],
selectData:{
selectData: {
page: 1,
size: 10,
identiyId:3,
username:'',
email:'',
phone:'',
identiyId: '',
username: '',
email: '',
phone: '',
},
totalOrder:0,
totalOrder: 0,
}
},
created () {
this.getAllUser()
},
methods: {
queryData(){
this.getAllUser();
queryData () {
this.selectData.page = 1
this.selectData.size = 10
this.getAllUser()
},
changUser (row) {
let data = {
id: row.id,
identity: row.identityId === 2 ? 2 : 3
}
changIdentity(data).then(res => {
console.log(res)
})
},
timeChange (time) {
return formData(time, 'yyyy-MM-dd hh:mm:ss')
},
getAllUser () {
let loading = this.$loading({lock: true, text: '玩命加载中...'})
getAllAccount(this.selectData).then(res => {
loading.close()
let data = res.data
this.theUserList = data.data.list
console.log(data)
this.totalOrder = data.data.count
})
loading.close()
// if(res.status=='0'){
// this.theUserList = res.result;
// }else{
@ -201,17 +181,17 @@ export default {
},
handleSizeChange (val) {
this.selectData.size = val
this.getUserOrder()
this.getAllUser()
},
handleCurrentChange (val) {
this.selectData.page = val
this.getUserOrder()
this.getAllUser()
}
}
}
</script>
<style>
<style lang="scss">
.allUser-page {
position: relative;
width: 100%;
@ -221,4 +201,78 @@ export default {
position: relative;
width: 100%;
}
.userOrderList {
.el-message {
top: 5rem;
}
.el-button {
width: 4.2rem;
height: 1.5rem;
line-height: 1.5rem;
padding: 0;
span {
font-size: 0.6rem;
}
}
//
.btn-cancel {
margin-right: 0.2rem;
margin-bottom: 0.3rem;
}
.btn-success {
/*background-color: #409eff;*/
/*color: #fff;*/
&:hover {
/*background-color: lighten(#409eff, 5%);*/
}
}
//
.emptyTip a {
color: rgb(226, 137, 137);
&:hover {
color: rgb(214, 29, 29);
}
}
.el-button + .el-button {
margin-left: 0;
}
// span
.horder .el-form-item__content span,
.currentorder .el-form-item__content span {
margin-right: 0.5rem;
}
.demo-table-expand {
font-size: 0;
}
.demo-table-expand label {
width: 6.2rem;
color: #99a9bf;
}
.demo-table-expand .el-form-item {
margin-right: 0;
margin-bottom: 0;
width: 50%;
}
}
.el-button {
margin: 0 auto;
}
.findOrder-search {
padding-top: 1rem;
}
</style>

View File

@ -1,88 +0,0 @@
<template>
<div class="allWoker-page">
<person-title>当前位置 :: 所有用户 >> <em>工作人员</em></person-title>
<div class="allWoker-page-cont">
<personList
:titleList='titleList'
:userList='wokerList'
@DeletePerson='handleDeletePerson'></personList>
</div>
</div>
</template>
<script>
import personList from './personList'
import axios from 'axios'
export default {
components:{
personList
},
data(){
return{
titleList:[
{id:1,columnTitle:'注册时间',prop:'regDate',sortable:true},
{id:2,columnTitle:'名字',prop:'userName',sortable:false},
{id:3,columnTitle:'账号',prop:'userId',sortable:false}
],
wokerList:[]
}
},
created() {
this.getAllWoker();
},
methods:{
getAllWoker(){
let loading = this.$loading({lock:true,text:'玩命加载中...'});
axios.get(`/admin/allWoker`).then(response=>{
let res = response.data;
loading.close();
if(res.status=='0'){
this.wokerList = res.result;
}else{
console.log(res.msg);
}
}).catch(err=>{
console.log(err);
})
},
handleDeletePerson(data){
//
this.$confirm('此操作将永久删除该用户, 是否继续?',
'提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error'
}).then(() => {
// axios.get(``).then(response=>{
// let res = response.data;
// if(res.status=='0'){
this.$message({
type: 'success',
message: '删除成功!'
});
// this.getHistoryOrder();
// }else{
// this.$message({
// type: 'error',
// message:res.msg
// });
// }
// }).catch(err=>{
// console.log(err);
// });
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
}
}
}
</script>
<style>
</style>

View File

@ -1,132 +0,0 @@
<template>
<div class="findPeople-page">
<person-title>当前位置 :: 所有用户 >> <em>查找用户</em></person-title>
<div class="findPeople-search">
<el-form :inline="true" :model="findPeople" class="admin-findPeople">
<el-form-item label="用户级别 :">
<el-radio-group v-model="findPeople.grade">
<el-radio :label="0" >普通用户</el-radio>
<el-radio :label="1" >工作人员</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="">
<el-input v-model="findPeople.userId" placeholder="请输入账号"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchPeople">查询</el-button>
</el-form-item>
</el-form>
</div>
<div class="findPeople-page-cont">
<personList
:titleList='titleList'
:userList='theUserList'
:showBalance='Boolean(findPeople.grade)'
@DeletePerson='handleDeletePerson'></personList>
</div>
</div>
</template>
<script>
import personList from './personList'
import axios from 'axios'
export default {
components:{
personList
},
data(){
return{
titleList:[
{id:1,columnTitle:'注册时间',prop:'regDate',sortable:true},
{id:2,columnTitle:'名字',prop:'userName',sortable:false},
{id:3,columnTitle:'账号',prop:'userId',sortable:false}
],
userList:[],
findPeople:{
grade:0,
userId:''
}
}
},
computed:{
theUserList(){
if(this.findPeople.grade==0){
return this.userList.filter(it=>it.grade==0)
}else{
return this.userList.filter(it=>it.grade==1)
}
}
},
methods:{
searchPeople(){
if(/^1[3-8][0-9]{9}$/.test(this.findPeople.userId)){
let loading = this.$loading({lock:true,text:'玩命加载中...'});
axios.post(`/admin/findPeople`,this.findPeople).then(response=>{
let res = response.data;
loading.close();
if(res.status=='0'){
this.userList = res.result;
}else{
this.$message({
type: 'error',
message: res.msg,
showClose:true
});
}
}).catch(err=>{
console.log(err);
loading.close();
});
}else{
this.$message({
type: 'error',
message: '账号格式不正确!',
showClose:true
});
}
},
handleDeletePerson(data){
//
this.$confirm('此操作将永久删除该用户, 是否继续?',
'提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error'
}).then(() => {
// axios.get(``).then(response=>{
// let res = response.data;
// if(res.status=='0'){
this.$message({
type: 'success',
message: '删除成功!'
});
// this.getHistoryOrder();
// }else{
// this.$message({
// type: 'error',
// message:res.msg
// });
// }
// }).catch(err=>{
// console.log(err);
// });
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
}
}
}
</script>
<style>
.findPeople-search{
padding-top: 1rem;
}
.findPeople-page-cont{
border-top: 1px solid #ccc;
}
</style>

View File

@ -0,0 +1,103 @@
<template>
<div class="mail">
<h1>邮件配置</h1>
<div>
<el-form ref="mailConfig"
label-width="120px" :model="mailForm">
<el-form-item label="发件人地址:">
<el-input v-model="mailForm.sender"></el-input>
</el-form-item>
<el-form-item label="发件人昵称:">
<el-input v-model="mailForm.personal"></el-input>
</el-form-item>
<el-form-item label="用户名:">
<el-input v-model="mailForm.username"></el-input>
</el-form-item>
<el-form-item label="密码:">
<el-input v-model="mailForm.password"></el-input>
</el-form-item>
<el-form-item label="加密(默认SSL):">
<el-input v-model="mailForm.encryption"></el-input>
</el-form-item>
<el-form-item label="服务器地址:">
<el-input v-model="mailForm.emailSmtpHost"></el-input>
</el-form-item>
<el-form-item label="服务器端口:">
<el-input v-model="mailForm.emailSmtpPort"></el-input>
</el-form-item>
<el-form-item label="测试邮箱:" >
<el-input v-model="mailForm.testMail"></el-input>
</el-form-item>
<el-form-item
label-position="left" >
<div class="test">
<el-button>测试</el-button>
</div>
</el-form-item>
<el-form-item
size="medium"
label="系统默认发送邮件">
</el-form-item>
<el-form-item>
<el-button>刷新</el-button>
<el-button
size="medium"
type="primary"
>保存更改</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import {getMailInfo,editMailInfo,testMailInfo} from '../../../api/mail'
export default {
name: 'Index',
data () {
return {
mailForm: {
sender: '',
personal: '',
emailSmtpHost: '',
emailSmtpPort: '',
username: '',
password: '',
encryption: '',
state: 0,
testMail: ''
}
}
},
created () {
this.getMailConfig()
},
methods:{
getMailConfig(){
getMailInfo().then(res=>{
console.log(res)
this.mailForm = res.data.data
})
},
}
}
</script>
<style scoped>
h1{
text-align: left;
margin-left: 15px;
margin-bottom: 15px;
font-size: 35px;
}
.mail {
border: 1px solid #ebeef5;
margin: 20px;
padding: 20px;
}
.test{
width: 100%;
height: 100%;
text-align: left;
}
</style>

View File

@ -20,7 +20,6 @@
<script>
import leftMenu from '../LeftMenu'
import appFooter from '../../AppFooter'
import axios from 'axios'
export default {
components: {
leftMenu,
@ -72,39 +71,8 @@ export default {
methods: {
handleIsCollapse (newVal) {
this.isCollapse = newVal
},
checkLogin () {
let loading = this.$loading({lock: true, text: '正在加载...'})
// axios.get("/users/checkLogin").then((response)=>{
// let res = response.data;
// loading.close();
// if(res.status==="0"){
// if(Number.parseInt(res.result.grade) !==1){
// this.$message({
// message: '!',
// type: 'error',
// showClose:true
// });
// this.$router.push({ path: '/person' });
// }
// }else{
// this.$message({
// message: '!',
// type: 'error',
// showClose:true
// });
// this.$router.push({ path: '/login' });
// }
// }).catch(err=>{
// loading.close();
// console.log(err);
// })
}
},
created () {
this.checkLogin()
}
}
</script>

View File

@ -153,33 +153,17 @@ const router = new Router({
path: '/',
redirect: 'au'
},
{
path: 'mail',
component: () => import('@comadmin/mail/Index')
},
{
path: 'au',
component: () => import('@comadmin/allperson/AllUser')
},
{
path: 'aw',
component: () => import('@comadmin/allperson/AllWoker')
},
{
path: 'fp',
component: () => import('@comadmin/allperson/FindPeople')
},
{
path: 'foo',
component: () => import('@comadmin/allorder/findOneOrder')
},
{
path: 'anro',
component: () => import('@comadmin/allorder/AllNotReceiveOrder')
},
{
path: 'aro',
component: () => import('@comadmin/allorder/AllReceivedOrder')
},
{
path: 'aho',
component: () => import('@comadmin/allorder/AllHistoryOrder')
path: 'all',
component: () => import('@comadmin/allorder/allOrderList')
},
{
path: 'sm',