This commit is contained in:
LittleBoy 2023-04-06 11:09:32 +08:00
parent 7c37f8f30a
commit eea9cf61d6
13 changed files with 1341 additions and 1211 deletions

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
<!-- 上传提示 --> <!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip"> <div class="el-upload__tip" slot="tip" v-if="showTip">
请上传 请上传
@ -76,7 +76,7 @@ export default {
dialogImageUrl: "", dialogImageUrl: "",
dialogVisible: false, dialogVisible: false,
hideUpload: false, hideUpload: false,
baseUrl: process.env.VUE_APP_BASE_API, baseUrl: '',//process.env.VUE_APP_BASE_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", //
headers: { headers: {
Authorization: "Bearer " + getToken(), Authorization: "Bearer " + getToken(),
@ -155,7 +155,7 @@ export default {
// //
handleUploadSuccess(res, file) { handleUploadSuccess(res, file) {
if (res.code === 200) { if (res.code === 200) {
this.uploadList.push({ name: res.fileName, url: res.fileName }); this.uploadList.push({ name: res.fileName, url: res.url });
this.uploadedSuccessfully(); this.uploadedSuccessfully();
} else { } else {
this.number--; this.number--;

View File

@ -35,7 +35,7 @@ export default {
}, },
data() { data() {
return { return {
title: '若依管理系统', title: '外卖管理系统',
logo: logoImg logo: logoImg
} }
} }

View File

@ -0,0 +1,19 @@
export const AreaData = [{ 'code': '510104', 'name': '锦江区' }, { 'code': '510105', 'name': '青羊区' }, {
'code': '510106',
'name': '金牛区'
}, { 'code': '510107', 'name': '武侯区' }, { 'code': '510108', 'name': '成华区' }, {
'code': '510112',
'name': '龙泉驿区'
}, { 'code': '510113', 'name': '青白江区' }, { 'code': '510114', 'name': '新都区' }, {
'code': '510115',
'name': '温江区'
}, { 'code': '510116', 'name': '双流区' }, { 'code': '510117', 'name': '郫都区' }, {
'code': '510118',
'name': '新津区'
}, { 'code': '510121', 'name': '金堂县' }, { 'code': '510129', 'name': '大邑县' }, {
'code': '510131',
'name': '蒲江县'
}, { 'code': '510181', 'name': '都江堰市' }, { 'code': '510182', 'name': '彭州市' }, {
'code': '510183',
'name': '邛崃市'
}, { 'code': '510184', 'name': '崇州市' }, { 'code': '510185', 'name': '简阳市' }]

View File

@ -1,18 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用户编号" prop="uid"> <el-form-item label="姓名" prop="username">
<el-input
v-model="queryParams.uid"
placeholder="请输入用户编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="收货人" prop="username">
<el-input <el-input
v-model="queryParams.username" v-model="queryParams.username"
placeholder="请输入收货人" placeholder="请输入用户昵称或收货人姓名"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
@ -80,7 +72,7 @@
<el-table v-loading="loading" :data="addressList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="addressList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="地址编号" align="center" prop="id" /> <el-table-column label="地址编号" align="center" prop="id" />
<el-table-column label="用户编号" align="center" prop="uid" /> <el-table-column label="用户昵称" align="center" prop="userNickname" />
<el-table-column label="收货人" align="center" prop="username" /> <el-table-column label="收货人" align="center" prop="username" />
<el-table-column label="收货电话" align="center" prop="phone" /> <el-table-column label="收货电话" align="center" prop="phone" />
<el-table-column label="省编号" align="center" prop="provice" /> <el-table-column label="省编号" align="center" prop="provice" />
@ -109,7 +101,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"

View File

@ -44,14 +44,6 @@
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['admin:food:edit']">修改</el-button> v-hasPermi="['admin:food:edit']">修改</el-button>
</el-col> </el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['admin:food:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['admin:food:export']">导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
@ -60,7 +52,7 @@
<el-table-column label="食品编号" align="center" prop="id" /> <el-table-column label="食品编号" align="center" prop="id" />
<el-table-column label="分类编号" align="center" prop="cid"> <el-table-column label="分类编号" align="center" prop="cid">
<template slot-scope="scope"> <template slot-scope="scope">
{{ categoryList.find(c=>c.id == scope.row.cid).title }} {{ getCategoryName(scope.row.cid) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="食品标题" align="center" prop="title" /> <el-table-column label="食品标题" align="center" prop="title" />
@ -100,7 +92,7 @@
@pagination="getList" /> @pagination="getList" />
<!-- 添加或修改食品对话框 --> <!-- 添加或修改食品对话框 -->
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false">
<el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top"> <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="18"> <el-col :span="18">
@ -168,8 +160,28 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="售卖区域(匹配收货地址,null表示不限制)" prop="area"> <el-form-item label="售卖区域" prop="area">
<el-input v-model="form.area" placeholder="请输入售卖区域(匹配收货地址,null表示不限制)" /> <el-select v-model="form.area" multiple placeholder="请输入售卖区域(匹配收货地址,null表示不限制)">
<el-option
v-for="item in areaData"
:key="item.code"
:label="item.name"
:value="item.code">
</el-option>
</el-select>
<!-- <el-cascader-->
<!-- placeholder="请输入售卖区域(匹配收货地址,null表示不限制)"-->
<!-- :options="areaData"-->
<!-- :show-all-levels="false"-->
<!-- v-model="form.area"-->
<!-- :props="{-->
<!-- multiple:true,-->
<!-- label:'name',-->
<!-- value:'code'-->
<!-- }"-->
<!-- collapse-tags-->
<!-- clearable></el-cascader>-->
<!-- <el-input v-model="form.area" placeholder="请输入售卖区域(匹配收货地址,null表示不限制)" />-->
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -210,12 +222,14 @@
<script> <script>
import { listFood, getFood, delFood, addFood, updateFood } from "@/api/admin/food"; import { listFood, getFood, delFood, addFood, updateFood } from "@/api/admin/food";
import { listCategory } from '@/api/admin/category' import { listCategory } from '@/api/admin/category'
import { AreaData } from '@/utils/pca-code'
export default { export default {
name: "Food", name: "Food",
dicts: ['data_state'], dicts: ['data_state'],
data() { data() {
return { return {
areaData:AreaData,
// //
loading: true, loading: true,
// //
@ -273,6 +287,11 @@ export default {
}) })
}, },
methods: { methods: {
getCategoryName(cid){
if(!cid || !this.categoryList) return '';
const c = this.categoryList.find(c=>c.id == cid)
return c ? c.title : '';
},
/** 查询食品列表 */ /** 查询食品列表 */
getList() { getList() {
this.loading = true; this.loading = true;
@ -346,6 +365,9 @@ export default {
this.reset(); this.reset();
const id = row.id || this.ids const id = row.id || this.ids
getFood(id).then(response => { getFood(id).then(response => {
if(response.data.area){
response.data.area = response.data.area.split(',')
}
this.form = response.data; this.form = response.data;
this.open = true; this.open = true;
this.title = "修改食品"; this.title = "修改食品";
@ -354,6 +376,9 @@ export default {
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if(this.form.area){
this.form.area = this.form.area.join(',')
}
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
updateFood(this.form).then(response => { updateFood(this.form).then(response => {

View File

@ -1,26 +1,26 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="订单标题" prop="orderTitle"> <!-- <el-form-item label="订单标题" prop="orderTitle">-->
<!-- <el-input-->
<!-- v-model="queryParams.orderTitle"-->
<!-- placeholder="请输入订单标题"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="价格" prop="price">-->
<!-- <el-input-->
<!-- v-model="queryParams.price"-->
<!-- placeholder="请输入价格"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="用户名称" prop="uid">
<el-input <el-input
v-model="queryParams.orderTitle" v-model="queryParams.username"
placeholder="请输入订单标题" placeholder="请输入账号或者昵称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="价格" prop="price">
<el-input
v-model="queryParams.price"
placeholder="请输入价格"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户编号" prop="uid">
<el-input
v-model="queryParams.uid"
placeholder="请输入用户编号"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
@ -53,16 +53,6 @@
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['admin:orders:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="success" type="success"
@ -102,8 +92,18 @@
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="订单编号" align="center" prop="id" /> <el-table-column label="订单编号" align="center" prop="id" />
<el-table-column label="订单标题" align="center" prop="orderTitle" /> <el-table-column label="订单标题" align="center" prop="orderTitle" />
<el-table-column label="价格" align="center" prop="price" /> <el-table-column label="价格" align="center" prop="price" >
<el-table-column label="用户编号" align="center" prop="uid" /> <!-- username-->
<template #default="scope">
{{(scope.row.price / 100).toFixed(2)}}
</template>
</el-table-column>
<el-table-column label="用户编号" align="center" prop="uid">
<!-- username-->
<template #default="scope">
{{scope.row.username}}({{scope.row.nickname}})
</template>
</el-table-column>
<el-table-column label="订单状态" align="center" prop="orderStatus"> <el-table-column label="订单状态" align="center" prop="orderStatus">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.order_state" :value="scope.row.orderStatus"/> <dict-tag :options="dict.type.order_state" :value="scope.row.orderStatus"/>
@ -133,7 +133,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@ -166,13 +166,13 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.price" placeholder="请输入价格" /> <el-input v-model="scope.row.price" placeholder="请输入价格" />
</template> </template>
</el-table-column> </el-table-column>username
<el-table-column label="购买数量" prop="count" width="150"> <el-table-column label="购买数量" prop="count" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.count" placeholder="请输入购买数量" /> <el-input v-model="scope.row.count" placeholder="请输入购买数量" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="优惠(0无优惠 正数涨价 负数:降价)" prop="coupon" width="150"> <el-table-column label="优惠" prop="coupon" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.coupon" placeholder="请输入优惠(0无优惠 正数涨价 负数:降价)" /> <el-input v-model="scope.row.coupon" placeholder="请输入优惠(0无优惠 正数涨价 负数:降价)" />
</template> </template>
@ -235,7 +235,7 @@ export default {
pageSize: 10, pageSize: 10,
orderTitle: null, orderTitle: null,
price: null, price: null,
uid: null, username: null,
orderStatus: null, orderStatus: null,
createTime: null, createTime: null,
}, },

View File

@ -29,12 +29,20 @@
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="state"> <el-form-item label="状态" prop="state">
<el-input <el-select v-model="queryParams.state" placeholder="请选择用户状态" clearable>
v-model="queryParams.state" <el-option
placeholder="请输入状态" v-for="dict in dict.type.data_state"
clearable :key="dict.value"
@keyup.enter.native="handleQuery" :label="dict.label"
/> :value="dict.value"
/>
</el-select>
<!-- <el-input-->
<!-- v-model="queryParams.state"-->
<!-- placeholder="请输入状态"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -90,7 +98,7 @@
<el-table v-loading="loading" :data="usersList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="usersList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户编号" align="center" prop="id" /> <el-table-column label="用户编号" width="80" align="center" prop="id" />
<el-table-column label="用户名" align="center" prop="username" /> <el-table-column label="用户名" align="center" prop="username" />
<el-table-column label="昵称" align="center" prop="nickname" /> <el-table-column label="昵称" align="center" prop="nickname" />
<el-table-column label="头像" align="center" prop="avatar" width="100"> <el-table-column label="头像" align="center" prop="avatar" width="100">
@ -128,7 +136,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@ -147,8 +155,19 @@
<el-input v-model="form.nickname" placeholder="请输入昵称" /> <el-input v-model="form.nickname" placeholder="请输入昵称" />
</el-form-item> </el-form-item>
<el-form-item label="头像" prop="avatar"> <el-form-item label="头像" prop="avatar">
<image-upload v-model="form.avatar"/> <image-upload v-model="form.avatar" :limit="1"/>
</el-form-item> </el-form-item>
<el-form-item label="用户状态" prop="state">
<el-select v-model="form.state" placeholder="请选择用户状态" clearable>
<el-option
v-for="dict in dict.type.data_state"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" /> <el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -166,6 +185,7 @@ import { listUsers, getUsers, delUsers, addUsers, updateUsers } from "@/api/admi
export default { export default {
name: "Users", name: "Users",
dicts: ['data_state'],
data() { data() {
return { return {
// //

View File

@ -40,6 +40,10 @@ module.exports = {
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''
} }
},
'/api/1/upload':{
target: `https://cdnjson.com`,
changeOrigin: true,
} }
}, },
disableHostCheck: true disableHostCheck: true

View File

@ -22,6 +22,9 @@ public class Address extends BaseEntity
@Excel(name = "用户编号") @Excel(name = "用户编号")
private Long uid; private Long uid;
private String userNickname;
/** 收货人 */ /** 收货人 */
@Excel(name = "收货人") @Excel(name = "收货人")
private String username; private String username;
@ -177,4 +180,12 @@ public class Address extends BaseEntity
.append("remark", getRemark()) .append("remark", getRemark())
.toString(); .toString();
} }
public String getUserNickname() {
return userNickname;
}
public void setUserNickname(String userNickname) {
this.userNickname = userNickname;
}
} }

View File

@ -31,6 +31,9 @@ public class Orders extends BaseEntity
@Excel(name = "用户编号") @Excel(name = "用户编号")
private Integer uid; private Integer uid;
private String nickname;
private String username;
/** 订单数据 */ /** 订单数据 */
private String data; private String data;
@ -147,4 +150,20 @@ public class Orders extends BaseEntity
.append("orderFoodsList", getOrderFoodsList()) .append("orderFoodsList", getOrderFoodsList())
.toString(); .toString();
} }
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
} }

View File

@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="Address" id="AddressResult"> <resultMap type="Address" id="AddressResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="uid" column="uid" /> <result property="uid" column="uid" />
<result property="userNickname" column="user_nickname" />
<result property="username" column="username" /> <result property="username" column="username" />
<result property="phone" column="phone" /> <result property="phone" column="phone" />
<result property="provice" column="provice" /> <result property="provice" column="provice" />
@ -26,10 +27,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql> </sql>
<select id="selectAddressList" parameterType="Address" resultMap="AddressResult"> <select id="selectAddressList" parameterType="Address" resultMap="AddressResult">
<include refid="selectAddressVo"/> <!-- <include refid="selectAddressVo"/>-->
<where> select
<if test="uid != null "> and uid = #{uid}</if> addr.id, uid, u.nickname as user_nickname,addr.username, phone, provice, city, county, street, detail,
<if test="username != null and username != ''"> and username like concat('%', #{username}, '%')</if> is_default,
addr.create_time, addr.update_time, addr.state, addr.remark
from address as addr,users as u
<where>
addr.uid = u.id
<if test="username != null and username != ''"> and (
addr.username like concat('%', #{username}, '%')
or
u.username like concat('%', #{username}, '%')
or
nickname like concat('%', #{username}, '%')
)</if>
<if test="phone != null and phone != ''"> and phone like concat('%', #{phone}, '%')</if> <if test="phone != null and phone != ''"> and phone like concat('%', #{phone}, '%')</if>
</where> </where>
</select> </select>

View File

@ -9,6 +9,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="orderTitle" column="order_title" /> <result property="orderTitle" column="order_title" />
<result property="price" column="price" /> <result property="price" column="price" />
<result property="uid" column="uid" /> <result property="uid" column="uid" />
<result property="nickname" column="nickname" />
<result property="username" column="username" />
<result property="data" column="data" /> <result property="data" column="data" />
<result property="receiveInfo" column="receive_info" /> <result property="receiveInfo" column="receive_info" />
<result property="orderStatus" column="order_status" /> <result property="orderStatus" column="order_status" />
@ -40,8 +42,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql> </sql>
<select id="selectOrdersList" parameterType="Orders" resultMap="OrdersResult"> <select id="selectOrdersList" parameterType="Orders" resultMap="OrdersResult">
<include refid="selectOrdersVo"/> select
<where> o.*,
u.nickname,
u.username
from orders as o,users as u
<where>
o.uid = u.id
<if test="username != null and username != ''"> and (
username like concat('%', #{username}, '%')
or
nickname like concat('%', #{username}, '%')
)</if>
<if test="orderTitle != null and orderTitle != ''"> and order_title = #{orderTitle}</if> <if test="orderTitle != null and orderTitle != ''"> and order_title = #{orderTitle}</if>
<if test="params.beginPrice != null and params.beginPrice != '' and params.endPrice != null and params.endPrice != ''"> and price between #{params.beginPrice} and #{params.endPrice}</if> <if test="params.beginPrice != null and params.beginPrice != '' and params.endPrice != null and params.endPrice != ''"> and price between #{params.beginPrice} and #{params.endPrice}</if>
<if test="uid != null "> and uid = #{uid}</if> <if test="uid != null "> and uid = #{uid}</if>