注释删除

This commit is contained in:
cookiemy 2025-05-15 18:03:40 +08:00
parent 2d101ebf42
commit 3496c86599
15 changed files with 944 additions and 699 deletions

View File

@ -1,29 +1,40 @@
<template> <template>
<!-- <el-dialog
作者luoyiming title="选择优惠券"
时间2019-10-25 v-model="dialogVisible"
描述会员-添加 @close="dialogFormVisible"
--> :close-on-click-modal="false"
<el-dialog title="选择优惠券" v-model="dialogVisible" @close="dialogFormVisible" :close-on-click-modal="false" :close-on-press-escape="false"
:close-on-press-escape="false" width="600px"> width="600px"
>
<!--内容--> <!--内容-->
<div class="product-content"> <div class="product-content">
<div class="table-wrap"> <div class="table-wrap">
<el-table :data="tableData" border style="width: 100%" v-loading="loading" <el-table
@current-change="handleCurrentChange"> :data="tableData"
border
style="width: 100%"
v-loading="loading"
@current-change="handleCurrentChange"
>
<el-table-column prop="name" label="名称"></el-table-column> <el-table-column prop="name" label="名称"></el-table-column>
<el-table-column prop="minPrice" label="最低消费"></el-table-column> <el-table-column prop="minPrice" label="最低消费"></el-table-column>
<el-table-column prop="totalNum" label="数量"> <el-table-column prop="totalNum" label="数量">
<template #default="scope"> <template #default="scope">
<span v-if="scope.row.totalNum>0">{{scope.row.totalNum}}</span> <span v-if="scope.row.totalNum > 0">{{
scope.row.totalNum
}}</span>
<span v-else>无限制</span> <span v-else>无限制</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="80"> <el-table-column label="操作" width="80">
<template #default="scope"> <template #default="scope">
<el-button type="primary" size="small" @click="selectUser(scope.row)">选择</el-button> <el-button
type="primary"
size="small"
@click="selectUser(scope.row)"
>选择</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -31,13 +42,20 @@
<!--分页--> <!--分页-->
<div class="pagination"> <div class="pagination">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" background <el-pagination
:current-page="curPage" :page-sizes="[2, 10, 20, 50, 100]" :page-size="pageSize" @size-change="handleSizeChange"
layout="total, prev, pager, next, jumper" :total="totalDataNumber"></el-pagination> @current-change="handleCurrentChange"
background
:current-page="curPage"
:page-sizes="[2, 10, 20, 50, 100]"
:page-size="pageSize"
layout="total, prev, pager, next, jumper"
:total="totalDataNumber"
></el-pagination>
</div> </div>
</div> </div>
<!-- <div slot="footer" class="dialog-footer"> <!-- <div slot="footer" class="dialog-footer">
<el-button size="small" @click="dialogFormVisible"> </el-button> <el-button size="small" @click="dialogFormVisible"> </el-button>
<el-button size="small" type="primary" @click="addClerk"> </el-button> <el-button size="small" type="primary" @click="addClerk"> </el-button>
</div> --> </div> -->
@ -45,8 +63,8 @@
</template> </template>
<script> <script>
import CouponApi from '@/api/coupon.js'; import CouponApi from "@/api/coupon.js";
export default { export default {
data() { data() {
return { return {
/*是否加载完成*/ /*是否加载完成*/
@ -58,32 +76,33 @@
/*一共多少条数据*/ /*一共多少条数据*/
totalDataNumber: 0, totalDataNumber: 0,
formInline: { formInline: {
name: '', name: "",
}, },
// //
tableData: [], tableData: [],
formRules: { formRules: {
name: [{ name: [
{
required: true, required: true,
message: '请输入等级名称', message: "请输入等级名称",
trigger: 'blur' trigger: "blur",
}, },
{ {
min: 3, min: 3,
max: 5, max: 5,
message: '长度在 3 到 5 个字符', message: "长度在 3 到 5 个字符",
trigger: 'blur' trigger: "blur",
} },
] ],
}, },
multipleSelection: [], multipleSelection: [],
/*左边长度*/ /*左边长度*/
formLabelWidth: '120px', formLabelWidth: "120px",
/*是否显示*/ /*是否显示*/
dialogVisible: false dialogVisible: false,
}; };
}, },
props: ['open_add'], props: ["open_add"],
created() { created() {
this.dialogVisible = this.open_add; this.dialogVisible = this.open_add;
/*获取列表*/ /*获取列表*/
@ -108,47 +127,46 @@
params.pageIndex = self.curPage; params.pageIndex = self.curPage;
params.pageSize = self.pageSize; params.pageSize = self.pageSize;
CouponApi.couponList(params, true) CouponApi.couponList(params, true)
.then(res => { .then((res) => {
if (res.code == 1) { if (res.code == 1) {
self.loading = false; self.loading = false;
self.tableData = res.data.records; self.tableData = res.data.records;
self.totalDataNumber = res.data.total; self.totalDataNumber = res.data.total;
self.gradeList = res.data.grade; self.gradeList = res.data.grade;
} else { } else {
ElMessage .error('错了哦,这是一条错误消息'); ElMessage.error("错了哦,这是一条错误消息");
} }
}) })
.catch(error => {}); .catch((error) => {});
}, },
// //
selectUser(e) { selectUser(e) {
let self = this; let self = this;
let params = e; let params = e;
this.$emit('closeDialog', { this.$emit("closeDialog", {
type: 'success', type: "success",
openDialog: false, openDialog: false,
params: params params: params,
}); });
}, },
/*关闭弹窗*/ /*关闭弹窗*/
dialogFormVisible(e) { dialogFormVisible(e) {
if (e) { if (e) {
this.$emit('closeDialog', { this.$emit("closeDialog", {
type: 'success', type: "success",
openDialog: false openDialog: false,
}); });
} else { } else {
this.$emit('closeDialog', { this.$emit("closeDialog", {
type: 'error', type: "error",
openDialog: false openDialog: false,
}); });
} }
}, },
} },
}; };
</script> </script>
<style></style> <style></style>

View File

@ -1,28 +1,41 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-26
描述获取腾讯坐标
-->
<div class="getpoint-container"> <div class="getpoint-container">
<div> <div>
<div id="cur_city"> <div id="cur_city">
<div class="d-s-c map-header-box"> <div class="d-s-c map-header-box">
<span class="pr16">{{ select_city }}</span> <span class="pr16">{{ select_city }}</span>
<a href="javascript:void(0);" @click="selectCityFunc" class="btn-city"> <a
href="javascript:void(0);"
@click="selectCityFunc"
class="btn-city"
>
[ [
<span style="text-decoration:underline;">更换城市</span> <span style="text-decoration: underline">更换城市</span>
] ]
</a> </a>
<span class="pl16">当前缩放等级{{ zoom }}</span> <span class="pl16">当前缩放等级{{ zoom }}</span>
<div class="d-s-c pl16 pr"> <div class="d-s-c pl16 pr">
<div class="search-word-list"> <div class="search-word-list">
<ul> <ul>
<li :class="{ curr: searchlist_index == index }" v-for="(item, index) in searchWordList" :key="index" @click="ChooseSeatchValue(item.title)">{{ item.title }}</li> <li
:class="{ curr: searchlist_index == index }"
v-for="(item, index) in searchWordList"
:key="index"
@click="ChooseSeatchValue(item.title)"
>
{{ item.title }}
</li>
</ul> </ul>
</div> </div>
<input class="search-box" type="text" @keyup="keyupFunc" v-model="searchValue" /> <input
<span class="ml4"><el-button @click="searchFunc">搜索</el-button></span> class="search-box"
type="text"
@keyup="keyupFunc"
v-model="searchValue"
/>
<span class="ml4"
><el-button @click="searchFunc">搜索</el-button></span
>
</div> </div>
</div> </div>
@ -56,9 +69,11 @@
<span class="city_name">重庆</span> <span class="city_name">重庆</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">内蒙古</span></div> <div class="city_container_left">
<span class="style_color">内蒙古</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">呼和浩特</span> <span class="city_name">呼和浩特</span>
<span class="city_name">包头</span> <span class="city_name">包头</span>
@ -74,9 +89,11 @@
<span class="city_name">阿拉善盟</span> <span class="city_name">阿拉善盟</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">山西</span></div> <div class="city_container_left">
<span class="style_color">山西</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">太原</span> <span class="city_name">太原</span>
<span class="city_name">大同</span> <span class="city_name">大同</span>
@ -91,9 +108,11 @@
<span class="city_name">吕梁</span> <span class="city_name">吕梁</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">陕西</span></div> <div class="city_container_left">
<span class="style_color">陕西</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">西安</span> <span class="city_name">西安</span>
<span class="city_name">铜川</span> <span class="city_name">铜川</span>
@ -107,9 +126,11 @@
<span class="city_name">商洛</span> <span class="city_name">商洛</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">河北</span></div> <div class="city_container_left">
<span class="style_color">河北</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">石家庄</span> <span class="city_name">石家庄</span>
<span class="city_name">唐山</span> <span class="city_name">唐山</span>
@ -124,9 +145,11 @@
<span class="city_name">衡水</span> <span class="city_name">衡水</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">辽宁</span></div> <div class="city_container_left">
<span class="style_color">辽宁</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">沈阳</span> <span class="city_name">沈阳</span>
<span class="city_name">大连</span> <span class="city_name">大连</span>
@ -144,9 +167,11 @@
<span class="city_name">葫芦岛</span> <span class="city_name">葫芦岛</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">吉林</span></div> <div class="city_container_left">
<span class="style_color">吉林</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">长春</span> <span class="city_name">长春</span>
<span class="city_name">吉林市</span> <span class="city_name">吉林市</span>
@ -159,9 +184,11 @@
<span class="city_name">延边</span> <span class="city_name">延边</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">黑龙江</span></div> <div class="city_container_left">
<span class="style_color">黑龙江</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">哈尔滨</span> <span class="city_name">哈尔滨</span>
<span class="city_name">齐齐哈尔</span> <span class="city_name">齐齐哈尔</span>
@ -178,9 +205,11 @@
<span class="city_name">大兴安岭</span> <span class="city_name">大兴安岭</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">江苏</span></div> <div class="city_container_left">
<span class="style_color">江苏</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">南京</span> <span class="city_name">南京</span>
<span class="city_name">无锡</span> <span class="city_name">无锡</span>
@ -197,9 +226,11 @@
<span class="city_name">宿迁</span> <span class="city_name">宿迁</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">安徽</span></div> <div class="city_container_left">
<span class="style_color">安徽</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">合肥</span> <span class="city_name">合肥</span>
<span class="city_name">蚌埠</span> <span class="city_name">蚌埠</span>
@ -219,9 +250,11 @@
<span class="city_name">亳州</span> <span class="city_name">亳州</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">山东</span></div> <div class="city_container_left">
<span class="style_color">山东</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">济南</span> <span class="city_name">济南</span>
<span class="city_name">青岛</span> <span class="city_name">青岛</span>
@ -241,9 +274,11 @@
<span class="city_name">菏泽</span> <span class="city_name">菏泽</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">浙江</span></div> <div class="city_container_left">
<span class="style_color">浙江</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">杭州</span> <span class="city_name">杭州</span>
<span class="city_name">宁波</span> <span class="city_name">宁波</span>
@ -258,9 +293,11 @@
<span class="city_name">湖州</span> <span class="city_name">湖州</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">江西</span></div> <div class="city_container_left">
<span class="style_color">江西</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">南昌</span> <span class="city_name">南昌</span>
<span class="city_name">景德镇</span> <span class="city_name">景德镇</span>
@ -275,9 +312,11 @@
<span class="city_name">上饶</span> <span class="city_name">上饶</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">福建</span></div> <div class="city_container_left">
<span class="style_color">福建</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">福州</span> <span class="city_name">福州</span>
<span class="city_name">厦门</span> <span class="city_name">厦门</span>
@ -290,9 +329,11 @@
<span class="city_name">宁德</span> <span class="city_name">宁德</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">湖南</span></div> <div class="city_container_left">
<span class="style_color">湖南</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">长沙</span> <span class="city_name">长沙</span>
<span class="city_name">株洲</span> <span class="city_name">株洲</span>
@ -310,9 +351,11 @@
<span class="city_name">湘西</span> <span class="city_name">湘西</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">湖北</span></div> <div class="city_container_left">
<span class="style_color">湖北</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">武汉</span> <span class="city_name">武汉</span>
<span class="city_name">黄石</span> <span class="city_name">黄石</span>
@ -333,9 +376,11 @@
<span class="city_name">神农架</span> <span class="city_name">神农架</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">河南</span></div> <div class="city_container_left">
<span class="style_color">河南</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">郑州</span> <span class="city_name">郑州</span>
<span class="city_name">开封</span> <span class="city_name">开封</span>
@ -357,9 +402,11 @@
<span class="city_name">济源</span> <span class="city_name">济源</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">海南</span></div> <div class="city_container_left">
<span class="style_color">海南</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">海口</span> <span class="city_name">海口</span>
<span class="city_name">三亚</span> <span class="city_name">三亚</span>
@ -382,9 +429,11 @@
<span class="city_name">琼中</span> <span class="city_name">琼中</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">广东</span></div> <div class="city_container_left">
<span class="style_color">广东</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">广州</span> <span class="city_name">广州</span>
<span class="city_name">深圳</span> <span class="city_name">深圳</span>
@ -409,9 +458,11 @@
<span class="city_name">云浮</span> <span class="city_name">云浮</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">广西</span></div> <div class="city_container_left">
<span class="style_color">广西</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">南宁</span> <span class="city_name">南宁</span>
<span class="city_name">柳州</span> <span class="city_name">柳州</span>
@ -429,9 +480,11 @@
<span class="city_name">崇左</span> <span class="city_name">崇左</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">贵州</span></div> <div class="city_container_left">
<span class="style_color">贵州</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">贵阳</span> <span class="city_name">贵阳</span>
<span class="city_name">遵义</span> <span class="city_name">遵义</span>
@ -444,9 +497,11 @@
<span class="city_name">黔南</span> <span class="city_name">黔南</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">四川</span></div> <div class="city_container_left">
<span class="style_color">四川</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">成都</span> <span class="city_name">成都</span>
<span class="city_name">自贡</span> <span class="city_name">自贡</span>
@ -471,9 +526,11 @@
<span class="city_name">凉山</span> <span class="city_name">凉山</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">云南</span></div> <div class="city_container_left">
<span class="style_color">云南</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">昆明</span> <span class="city_name">昆明</span>
<span class="city_name">保山</span> <span class="city_name">保山</span>
@ -493,9 +550,11 @@
<span class="city_name">迪庆</span> <span class="city_name">迪庆</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">甘肃</span></div> <div class="city_container_left">
<span class="style_color">甘肃</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">兰州</span> <span class="city_name">兰州</span>
<span class="city_name">嘉峪关</span> <span class="city_name">嘉峪关</span>
@ -513,9 +572,11 @@
<span class="city_name">甘南</span> <span class="city_name">甘南</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">宁夏</span></div> <div class="city_container_left">
<span class="style_color">宁夏</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">银川</span> <span class="city_name">银川</span>
<span class="city_name">石嘴山</span> <span class="city_name">石嘴山</span>
@ -524,9 +585,11 @@
<span class="city_name">中卫</span> <span class="city_name">中卫</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">青海</span></div> <div class="city_container_left">
<span class="style_color">青海</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">西宁</span> <span class="city_name">西宁</span>
<span class="city_name">玉树</span> <span class="city_name">玉树</span>
@ -538,9 +601,11 @@
<span class="city_name">海南</span> <span class="city_name">海南</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">西藏</span></div> <div class="city_container_left">
<span class="style_color">西藏</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">拉萨</span> <span class="city_name">拉萨</span>
<span class="city_name">那曲</span> <span class="city_name">那曲</span>
@ -551,9 +616,11 @@
<span class="city_name">林芝</span> <span class="city_name">林芝</span>
</div> </div>
</div> </div>
<div style="clear:both"></div> <div style="clear: both"></div>
<div class="city_container"> <div class="city_container">
<div class="city_container_left"><span class="style_color">新疆</span></div> <div class="city_container_left">
<span class="style_color">新疆</span>
</div>
<div class="city_container_right"> <div class="city_container_right">
<span class="city_name">乌鲁木齐</span> <span class="city_name">乌鲁木齐</span>
<span class="city_name">克拉玛依</span> <span class="city_name">克拉玛依</span>
@ -588,8 +655,15 @@
<div class="pr map-container"> <div class="pr map-container">
<div id="mapContainer"></div> <div id="mapContainer"></div>
<!--搜索出来的地方--> <!--搜索出来的地方-->
<div :class="searchList.length > 0 ? 'map-city-list open' : 'map-city-list'"> <div
<div :class="select_address == index ? 'd-s-s item active' : 'd-s-s item'" v-for="(item, index) in searchList" :key="index" @click="choseItem(item, index)"> :class="searchList.length > 0 ? 'map-city-list open' : 'map-city-list'"
>
<div
:class="select_address == index ? 'd-s-s item active' : 'd-s-s item'"
v-for="(item, index) in searchList"
:key="index"
@click="choseItem(item, index)"
>
<span class="index-box">{{ index + 1 }}</span> <span class="index-box">{{ index + 1 }}</span>
<div class="flex-1"> <div class="flex-1">
<p class="title">{{ item.title }}</p> <p class="title">{{ item.title }}</p>
@ -602,9 +676,9 @@
</template> </template>
<script> <script>
import marker10 from '@/assets/img/marker10.png'; import marker10 from "@/assets/img/marker10.png";
import { TMap } from '@/utils/txmap.js'; import { TMap } from "@/utils/txmap.js";
import { getJson } from '@/utils/getJson.js'; import { getJson } from "@/utils/getJson.js";
export default { export default {
data() { data() {
return { return {
@ -625,19 +699,19 @@ export default {
/*城市列表是否显示*/ /*城市列表是否显示*/
is_city: false, is_city: false,
/*关键字*/ /*关键字*/
searchValue: '', searchValue: "",
/*搜索字母*/ /*搜索字母*/
searchWord: '', searchWord: "",
/*键盘事件搜索的数据*/ /*键盘事件搜索的数据*/
searchWordList: [], searchWordList: [],
/*选择搜索出来的数据列表*/ /*选择搜索出来的数据列表*/
searchlist_index: null, searchlist_index: null,
/*图标临时对象*/ /*图标临时对象*/
marker_temp: null marker_temp: null,
}; };
}, },
props: { props: {
form: Object form: Object,
}, },
watch: { watch: {
/* 'form.is_search_map': { /* 'form.is_search_map': {
@ -657,50 +731,60 @@ export default {
/*初始化*/ /*初始化*/
start() { start() {
const self = this; const self = this;
TMap().then(qq => { TMap().then((qq) => {
self.map = new qq.maps.Map(document.getElementById('mapContainer'), { self.map = new qq.maps.Map(document.getElementById("mapContainer"), {
// //
center: new qq.maps.LatLng(39.916527, 116.397128), center: new qq.maps.LatLng(39.916527, 116.397128),
draggableCursor: 'crosshair', draggableCursor: "crosshair",
draggingCursor: 'crosshair', draggingCursor: "crosshair",
zoom: 8 zoom: 8,
}); });
// //
let cityservice = new qq.maps.CityService({ let cityservice = new qq.maps.CityService({
complete: function(result) { complete: function (result) {
self.select_city = result.detail.name; self.select_city = result.detail.name;
self.map.panTo(new qq.maps.LatLng(result.detail.latLng.lat, result.detail.latLng.lng)); self.map.panTo(
new qq.maps.LatLng(
result.detail.latLng.lat,
result.detail.latLng.lng
)
);
self.map.zoomTo(13); self.map.zoomTo(13);
} },
}); });
cityservice.searchLocalCity(); cityservice.searchLocalCity();
// //
qq.maps.event.addListener(self.map, 'click', function(event) { qq.maps.event.addListener(self.map, "click", function (event) {
let lat=event.latLng.getLat(), let lat = event.latLng.getLat(),
lng=event.latLng.getLng(); lng = event.latLng.getLng();
let url = encodeURI("https://apis.map.qq.com/ws/geocoder/v1/?location=" + lat + "," + lng + let url = encodeURI(
"&key=LS7BZ-NHSWK-CWOJQ-AJC7Y-H5HE2-UGBWR&output=jsonp&&callback=?"); "https://apis.map.qq.com/ws/geocoder/v1/?location=" +
getJson(url, 'QQmap', function(res) { lat +
"," +
lng +
"&key=LS7BZ-NHSWK-CWOJQ-AJC7Y-H5HE2-UGBWR&output=jsonp&&callback=?"
);
getJson(url, "QQmap", function (res) {
if (res.status == 0) { if (res.status == 0) {
self.$emit('chose', res.result); self.$emit("chose", res.result);
} }
}); });
}); });
// //
qq.maps.event.addListener(self.map, 'zoom_changed', function() { qq.maps.event.addListener(self.map, "zoom_changed", function () {
self.zoom = self.map.getZoom(); self.zoom = self.map.getZoom();
}); });
self.qq = qq; self.qq = qq;
// //
let cityList = document.getElementById('city'); let cityList = document.getElementById("city");
cityList.onclick = function(ev) { cityList.onclick = function (ev) {
var ev = ev || event; var ev = ev || event;
if (ev.target.className == 'city_name') { if (ev.target.className == "city_name") {
var name = ev.target.innerText; var name = ev.target.innerText;
self.select_city = name; self.select_city = name;
self.is_city = false; self.is_city = false;
@ -712,7 +796,7 @@ export default {
/*监听键盘事件*/ /*监听键盘事件*/
keyupFunc(e) { keyupFunc(e) {
/*如果已经有搜索内容,按下向下的键盘*/ /*如果已经有搜索内容,按下向下的键盘*/
if (e.key == 'ArrowDown') { if (e.key == "ArrowDown") {
if (this.searchWordList.length > 0) { if (this.searchWordList.length > 0) {
if (this.searchlist_index == null) { if (this.searchlist_index == null) {
this.searchlist_index = 0; this.searchlist_index = 0;
@ -728,7 +812,7 @@ export default {
} }
/*如果已经有搜索内容,按下向上的键盘*/ /*如果已经有搜索内容,按下向上的键盘*/
if (e.key == 'ArrowUp') { if (e.key == "ArrowUp") {
if (this.searchWordList.length > 0) { if (this.searchWordList.length > 0) {
if (this.searchlist_index == null) { if (this.searchlist_index == null) {
this.searchlist_index = this.searchWordList.length - 1; this.searchlist_index = this.searchWordList.length - 1;
@ -744,7 +828,11 @@ export default {
} }
/*如果搜索有数据,选中也有值,则直接赋值*/ /*如果搜索有数据,选中也有值,则直接赋值*/
if (e.key == 'Enter' && this.searchWordList.length > 0 && this.searchlist_index != null) { if (
e.key == "Enter" &&
this.searchWordList.length > 0 &&
this.searchlist_index != null
) {
this.searchValue = this.searchWordList[this.searchlist_index].title; this.searchValue = this.searchWordList[this.searchlist_index].title;
this.searchWordList = []; this.searchWordList = [];
this.searchlist_index = null; this.searchlist_index = null;
@ -760,16 +848,19 @@ export default {
this.getSearchWord(this.searchValue); this.getSearchWord(this.searchValue);
} }
} else { } else {
if (e.key == 'Backspace') { if (e.key == "Backspace") {
if (this.searchValue.length < 1) { if (this.searchValue.length < 1) {
this.searchWord = this.searchWord.substr(0, this.searchWord.length - 1); this.searchWord = this.searchWord.substr(
0,
this.searchWord.length - 1
);
this.getSearchWord(this.searchWord); this.getSearchWord(this.searchWord);
} else { } else {
this.getSearchWord(this.searchValue); this.getSearchWord(this.searchValue);
} }
} else if (e.key == 'Process' || e.key == 'Enter') { } else if (e.key == "Process" || e.key == "Enter") {
if (this.searchValue.length > 0) { if (this.searchValue.length > 0) {
this.searchWord == ''; this.searchWord == "";
} }
this.getSearchWord(this.searchValue); this.getSearchWord(this.searchValue);
} }
@ -779,14 +870,18 @@ export default {
/*搜索关键字变化时,触发获取类似列表*/ /*搜索关键字变化时,触发获取类似列表*/
getSearchWord(Value) { getSearchWord(Value) {
let self = this; let self = this;
if (Value == '') { if (Value == "") {
return; return;
} }
let url = encodeURI( let url = encodeURI(
'https://apis.map.qq.com/ws/place/v1/suggestion/?keyword=' + Value + '&region=' + this.select_city + '&key=LS7BZ-NHSWK-CWOJQ-AJC7Y-H5HE2-UGBWR&output=jsonp&&callback=?' "https://apis.map.qq.com/ws/place/v1/suggestion/?keyword=" +
Value +
"&region=" +
this.select_city +
"&key=LS7BZ-NHSWK-CWOJQ-AJC7Y-H5HE2-UGBWR&output=jsonp&&callback=?"
); );
getJson(url, 'QQmap', function(res) { getJson(url, "QQmap", function (res) {
if (res.status == 0) { if (res.status == 0) {
self.searchWordList = res.data; self.searchWordList = res.data;
} }
@ -812,11 +907,11 @@ export default {
self.is_city = false; self.is_city = false;
} }
if (self.select_city == null) { if (self.select_city == null) {
ElMessage .error('请选择城市!'); ElMessage.error("请选择城市!");
return; return;
} }
if (self.searchValue == '') { if (self.searchValue == "") {
ElMessage .error('请填写搜索的内容!'); ElMessage.error("请填写搜索的内容!");
return; return;
} }
@ -824,36 +919,38 @@ export default {
let query_city = self.select_city; let query_city = self.select_city;
let url = encodeURI( let url = encodeURI(
'https://apis.map.qq.com/ws/place/v1/search?keyword=' + "https://apis.map.qq.com/ws/place/v1/search?keyword=" +
value + value +
'&boundary=region(' + "&boundary=region(" +
query_city + query_city +
',0)&page_size=9&page_index=1&key=LS7BZ-NHSWK-CWOJQ-AJC7Y-H5HE2-UGBWR&output=jsonp&&callback=?' ",0)&page_size=9&page_index=1&key=LS7BZ-NHSWK-CWOJQ-AJC7Y-H5HE2-UGBWR&output=jsonp&&callback=?"
); );
/*通过关键字搜索*/ /*通过关键字搜索*/
getJson(url, 'QQmap', function(res) { getJson(url, "QQmap", function (res) {
self.searchList = res.data; self.searchList = res.data;
for (let n = 0; n < res.data.length; n++) { for (let n = 0; n < res.data.length; n++) {
let ele = res.data[n]; let ele = res.data[n];
let latlng = new self.qq.maps.LatLng(ele.location.lat, ele.location.lng); let latlng = new self.qq.maps.LatLng(
ele.location.lat,
ele.location.lng
);
let left = n * 27; let left = n * 27;
let marker = new self.qq.maps.Marker({ let marker = new self.qq.maps.Marker({
map: self.map, map: self.map,
position: latlng, position: latlng,
zIndex: 10 zIndex: 10,
}); });
marker.index = n; marker.index = n;
marker.isClicked = false; marker.isClicked = false;
self.markerPoint(marker, true); self.markerPoint(marker, true);
/*给图标加事件*/ /*给图标加事件*/
self.qq.maps.event.addDomListener(marker, "click", function(e) { self.qq.maps.event.addDomListener(marker, "click", function (e) {
//console.log('',e.target.index); //console.log('',e.target.index);
self.choseItem(self.searchList[e.target.index],e.target.index); self.choseItem(self.searchList[e.target.index], e.target.index);
}); });
} }
}); });
}, },
@ -867,28 +964,41 @@ export default {
var anchor = new self.qq.maps.Point(10, 30), var anchor = new self.qq.maps.Point(10, 30),
origin = new self.qq.maps.Point(left, 0), origin = new self.qq.maps.Point(left, 0),
size = new self.qq.maps.Size(27, 33), size = new self.qq.maps.Size(27, 33),
icon = new self.qq.maps.MarkerImage(self.marker10_url, size, origin, anchor); icon = new self.qq.maps.MarkerImage(
self.marker10_url,
size,
origin,
anchor
);
marker.setIcon(icon); marker.setIcon(icon);
} else { } else {
var anchor = new self.qq.maps.Point(10, 30), var anchor = new self.qq.maps.Point(10, 30),
origin = new self.qq.maps.Point(left, 35), origin = new self.qq.maps.Point(left, 35),
size = new self.qq.maps.Size(27, 33), size = new self.qq.maps.Size(27, 33),
icon = new self.qq.maps.MarkerImage(self.marker10_url, size, origin, anchor); icon = new self.qq.maps.MarkerImage(
self.marker10_url,
size,
origin,
anchor
);
marker.setIcon(icon); marker.setIcon(icon);
} }
}, },
/*选择地点*/ /*选择地点*/
choseItem(item, _index) { choseItem(item, _index) {
let self=this; let self = this;
self.select_address = _index; self.select_address = _index;
self.map.panTo(new qq.maps.LatLng(item.location.lat, item.location.lng)); self.map.panTo(new qq.maps.LatLng(item.location.lat, item.location.lng));
self.map.zoomTo(13); self.map.zoomTo(13);
let latlng = new self.qq.maps.LatLng(item.location.lat, item.location.lng); let latlng = new self.qq.maps.LatLng(
item.location.lat,
item.location.lng
);
let marker = new self.qq.maps.Marker({ let marker = new self.qq.maps.Marker({
map: self.map, map: self.map,
position: latlng, position: latlng,
zIndex: 10 zIndex: 10,
}); });
marker.index = _index; marker.index = _index;
marker.isClicked = false; marker.isClicked = false;
@ -897,11 +1007,11 @@ export default {
} }
self.markerPoint(marker, false); self.markerPoint(marker, false);
self.marker_temp = marker; self.marker_temp = marker;
self.qq.maps.event.addDomListener(marker, "click", function() { self.qq.maps.event.addDomListener(marker, "click", function () {
self.choseItem(item,_index); self.choseItem(item, _index);
}); });
self.$emit('chose', item); self.$emit("chose", item);
}, },
/*选择城市*/ /*选择城市*/
@ -918,8 +1028,8 @@ export default {
searchMap() {}, searchMap() {},
/*获取坐标*/ /*获取坐标*/
getMap(e) {} getMap(e) {},
} },
}; };
</script> </script>

View File

@ -1,17 +1,28 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-25
描述权限-登录日志
-->
<div class="user"> <div class="user">
<!--搜索表单--> <!--搜索表单-->
<div class="common-seach-wrap"> <div class="common-seach-wrap">
<el-form size="small" :inline="true" :model="searchForm" class="demo-form-inline"> <el-form
<el-form-item><el-input size="small" v-model="searchForm.search" placeholder="请输入用户名和真实姓名"></el-input></el-form-item> size="small"
:inline="true"
:model="searchForm"
class="demo-form-inline"
>
<el-form-item
><el-input
size="small"
v-model="searchForm.search"
placeholder="请输入用户名和真实姓名"
></el-input
></el-form-item>
<el-form-item> <el-form-item>
<el-button size="small" type="primary" icon="Search" @click="searchSubmit">查询</el-button> <el-button
size="small"
type="primary"
icon="Search"
@click="searchSubmit"
>查询</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -19,7 +30,13 @@
<!--内容--> <!--内容-->
<div class="product-content"> <div class="product-content">
<div class="table-wrap"> <div class="table-wrap">
<el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading"> <el-table
size="small"
:data="tableData"
border
style="width: 100%"
v-loading="loading"
>
<el-table-column prop="loginLogId" label="ID"></el-table-column> <el-table-column prop="loginLogId" label="ID"></el-table-column>
<el-table-column prop="ip" label="IP"></el-table-column> <el-table-column prop="ip" label="IP"></el-table-column>
<el-table-column prop="result" label="登录状态"></el-table-column> <el-table-column prop="result" label="登录状态"></el-table-column>
@ -45,10 +62,10 @@
</template> </template>
<script> <script>
import AuthApi from '@/api/auth.js'; import AuthApi from "@/api/auth.js";
export default { export default {
components: {}, components: {},
inject: ['reload'], inject: ["reload"],
data() { data() {
return { return {
/*是否加载完成*/ /*是否加载完成*/
@ -63,14 +80,14 @@ export default {
curPage: 1, curPage: 1,
/*横向表单数据模型*/ /*横向表单数据模型*/
searchForm: { searchForm: {
search:'' search: "",
}, },
/*是否打开添加弹窗*/ /*是否打开添加弹窗*/
open_add: false, open_add: false,
/*是否打开编辑弹窗*/ /*是否打开编辑弹窗*/
open_edit: false, open_edit: false,
/*当前编辑的对象*/ /*当前编辑的对象*/
userModel: {} userModel: {},
}; };
}, },
created() { created() {
@ -78,9 +95,8 @@ export default {
this.getTableList(); this.getTableList();
}, },
methods: { methods: {
/*搜索*/ /*搜索*/
searchSubmit(){ searchSubmit() {
this.curPage = 1; this.curPage = 1;
this.getTableList(); this.getTableList();
}, },
@ -106,31 +122,31 @@ export default {
let Params = { let Params = {
pageIndex: self.curPage, pageIndex: self.curPage,
pageSize: self.pageSize, pageSize: self.pageSize,
username: self.searchForm.search username: self.searchForm.search,
}; };
AuthApi.loginlog(Params, true) AuthApi.loginlog(Params, true)
.then(res => { .then((res) => {
self.loading = false; self.loading = false;
self.tableData = res.data.records; self.tableData = res.data.records;
self.totalDataNumber = res.data.total; self.totalDataNumber = res.data.total;
}) })
.catch(error => {}); .catch((error) => {});
}, },
/*打开添加*/ /*打开添加*/
addClick() { addClick() {
this.$router.push('/auth/user/add'); this.$router.push("/auth/user/add");
}, },
/*打开编辑*/ /*打开编辑*/
editClick(row) { editClick(row) {
let self = this; let self = this;
this.$router.push({ this.$router.push({
path: '/auth/user/edit', path: "/auth/user/edit",
query: { query: {
shop_user_id: row.shop_user_id shop_user_id: row.shop_user_id,
} },
}); });
}, },
@ -143,25 +159,25 @@ export default {
/*删除*/ /*删除*/
deleteClick(row) { deleteClick(row) {
let self = this; let self = this;
ElMessageBox.confirm('此操作将永久删除该记录, 是否继续?', '提示', { ElMessageBox.confirm("此操作将永久删除该记录, 是否继续?", "提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消",
type: 'warning' type: "warning",
}) })
.then(() => { .then(() => {
self.loading = true; self.loading = true;
AuthApi.userDelete( AuthApi.userDelete(
{ {
shop_user_id: row.shop_user_id shop_user_id: row.shop_user_id,
}, },
true true
) )
.then(data => { .then((data) => {
self.loading = false; self.loading = false;
if (data.code == 1) { if (data.code == 1) {
ElMessage ({ ElMessage({
message: '恭喜你,该管理员删除成功', message: "恭喜你,该管理员删除成功",
type: 'success' type: "success",
}); });
// //
self.getTableList(); self.getTableList();
@ -169,13 +185,13 @@ export default {
self.loading = false; self.loading = false;
} }
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
}) })
.catch(() => {}); .catch(() => {});
} },
} },
}; };
</script> </script>

View File

@ -1,17 +1,28 @@
<template> <template>
<!--
作者luoyiming
时间2020-07-25
描述权限-操作日志
-->
<div class="user"> <div class="user">
<!--搜索表单--> <!--搜索表单-->
<div class="common-seach-wrap"> <div class="common-seach-wrap">
<el-form size="small" :inline="true" :model="searchForm" class="demo-form-inline"> <el-form
<el-form-item><el-input size="small" v-model="searchForm.search" placeholder="请输入用户名"></el-input></el-form-item> size="small"
:inline="true"
:model="searchForm"
class="demo-form-inline"
>
<el-form-item
><el-input
size="small"
v-model="searchForm.search"
placeholder="请输入用户名"
></el-input
></el-form-item>
<el-form-item> <el-form-item>
<el-button size="small" type="primary" icon="Search" @click="searchSubmit">查询</el-button> <el-button
size="small"
type="primary"
icon="Search"
@click="searchSubmit"
>查询</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
@ -19,13 +30,27 @@
<!--内容--> <!--内容-->
<div class="product-content"> <div class="product-content">
<div class="table-wrap"> <div class="table-wrap">
<el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading"> <el-table
<el-table-column prop="optLogId" label="id" width="70"></el-table-column> size="small"
:data="tableData"
border
style="width: 100%"
v-loading="loading"
>
<el-table-column
prop="optLogId"
label="id"
width="70"
></el-table-column>
<el-table-column prop="userName" label="用户名"></el-table-column> <el-table-column prop="userName" label="用户名"></el-table-column>
<el-table-column prop="realName" label="真实姓名"></el-table-column> <el-table-column prop="realName" label="真实姓名"></el-table-column>
<el-table-column prop="url" label="Url" width="300"> <el-table-column prop="url" label="Url" width="300">
<template #default="scope"> <template #default="scope">
<el-input size="small" placeholder="请输入内容" v-model="scope.row.url"> <el-input
size="small"
placeholder="请输入内容"
v-model="scope.row.url"
>
<el-button @click="gotoUrl(scope.row.url)" icon="Link"> <el-button @click="gotoUrl(scope.row.url)" icon="Link">
<template #append> <template #append>
<el-button icon="Link" /> <el-button icon="Link" />
@ -36,12 +61,21 @@
</el-table-column> </el-table-column>
<el-table-column prop="title" label="标题"></el-table-column> <el-table-column prop="title" label="标题"></el-table-column>
<el-table-column prop="ip" label="IP" width="120"></el-table-column> <el-table-column prop="ip" label="IP" width="120"></el-table-column>
<el-table-column prop="browser" label="Browser" width="120"></el-table-column> <el-table-column
prop="browser"
label="Browser"
width="120"
></el-table-column>
<el-table-column prop="createTime" label="添加时间"></el-table-column> <el-table-column prop="createTime" label="添加时间"></el-table-column>
<el-table-column fixed="right" label="操作" width="80"> <el-table-column fixed="right" label="操作" width="80">
<template #default="scope"> <template #default="scope">
<el-button @click="openDetail(scope.row)" type="primary" <el-button
link size="small">详情</el-button> @click="openDetail(scope.row)"
type="primary"
link
size="small"
>详情</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -62,18 +96,17 @@
</div> </div>
<Detail :open="open" :form="userModel" @close="closeDetail"></Detail> <Detail :open="open" :form="userModel" @close="closeDetail"></Detail>
</div> </div>
</template> </template>
<script> <script>
import AuthApi from '@/api/auth.js'; import AuthApi from "@/api/auth.js";
import Detail from './dialog/Detail.vue' import Detail from "./dialog/Detail.vue";
export default { export default {
components: { components: {
Detail Detail,
}, },
inject: ['reload'], inject: ["reload"],
data() { data() {
return { return {
/*是否加载完成*/ /*是否加载完成*/
@ -88,12 +121,12 @@ export default {
curPage: 1, curPage: 1,
/*横向表单数据模型*/ /*横向表单数据模型*/
searchForm: { searchForm: {
search:'' search: "",
}, },
/*是否打开弹窗*/ /*是否打开弹窗*/
open: false, open: false,
/*编辑对象*/ /*编辑对象*/
userModel: {} userModel: {},
}; };
}, },
created() { created() {
@ -101,9 +134,8 @@ export default {
this.getTableList(); this.getTableList();
}, },
methods: { methods: {
/*搜索*/ /*搜索*/
searchSubmit(){ searchSubmit() {
this.curPage = 1; this.curPage = 1;
this.getTableList(); this.getTableList();
}, },
@ -129,16 +161,16 @@ export default {
let Params = { let Params = {
pageIndex: self.curPage, pageIndex: self.curPage,
pageSize: self.pageSize, pageSize: self.pageSize,
username: self.searchForm.search username: self.searchForm.search,
}; };
AuthApi.optlog(Params, true) AuthApi.optlog(Params, true)
.then(res => { .then((res) => {
self.loading = false; self.loading = false;
self.tableData = res.data.records; self.tableData = res.data.records;
self.totalDataNumber = res.data.total; self.totalDataNumber = res.data.total;
}) })
.catch(error => {}); .catch((error) => {});
}, },
/*跳转链接*/ /*跳转链接*/
@ -146,8 +178,7 @@ export default {
let self = this; let self = this;
this.$router.push({ this.$router.push({
path: row, path: row,
query: { query: {},
}
}); });
}, },
@ -157,17 +188,16 @@ export default {
}, },
/*打开详情*/ /*打开详情*/
openDetail(row){ openDetail(row) {
this.userModel=row; this.userModel = row;
this.open=true; this.open = true;
}, },
/*关闭详情*/ /*关闭详情*/
closeDetail(){ closeDetail() {
this.open=false; this.open = false;
} },
},
}
}; };
</script> </script>

View File

@ -1,52 +1,76 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-25
描述权限-角色管理-添加角色
-->
<div v-loading="loading"> <div v-loading="loading">
<!--form表单--> <!--form表单-->
<el-form size="small" ref="form" :model="form" label-width="180px"> <el-form size="small" ref="form" :model="form" label-width="180px">
<!--添加门店--> <!--添加门店-->
<div class="common-form">添加角色</div> <div class="common-form">添加角色</div>
<el-form-item label="角色名称:" prop="roleName" :rules="[{ required: true, message: ' ' }]"> <el-form-item
<el-input v-model="form.roleName" placeholder="请输入角色名称" class="max-w460"></el-input> label="角色名称:"
prop="roleName"
:rules="[{ required: true, message: ' ' }]"
>
<el-input
v-model="form.roleName"
placeholder="请输入角色名称"
class="max-w460"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="权限列表:" v-model="form.accessId"> <el-form-item label="权限列表:" v-model="form.accessId">
<el-tree :data="data" show-checkbox node-key="accessId" :default-expand-all="true" :default-checked-keys="[]" :props="defaultProps" @check="handleCheckChange"></el-tree> <el-tree
:data="data"
show-checkbox
node-key="accessId"
:default-expand-all="true"
:default-checked-keys="[]"
:props="defaultProps"
@check="handleCheckChange"
></el-tree>
</el-form-item> </el-form-item>
<el-form-item label="排序:"><el-input type="number" v-model="form.sort" placeholder="请输入排序" class="max-w460"></el-input></el-form-item> <el-form-item label="排序:"
><el-input
type="number"
v-model="form.sort"
placeholder="请输入排序"
class="max-w460"
></el-input
></el-form-item>
<!--提交--> <!--提交-->
<div class="common-button-wrapper"> <div class="common-button-wrapper">
<el-button size="small" type="info" @click="cancelFunc">取消</el-button> <el-button size="small" type="info" @click="cancelFunc">取消</el-button>
<el-button type="primary" size="small" @click="onSubmit" :loading="loading">提交</el-button> <el-button
type="primary"
size="small"
@click="onSubmit"
:loading="loading"
>提交</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
import AuthApi from '@/api/auth.js'; import AuthApi from "@/api/auth.js";
export default { export default {
data() { data() {
return { return {
/*是否正在加载*/ /*是否正在加载*/
loading:true, loading: true,
/*表单数据对象*/ /*表单数据对象*/
form: { form: {
accessId: [], accessId: [],
sort: 1 sort: 1,
}, },
data: [], data: [],
defaultProps: { defaultProps: {
children: 'children', children: "children",
label: 'name' label: "name",
} },
}; };
}, },
created() { created() {
@ -58,19 +82,19 @@ export default {
onSubmit() { onSubmit() {
let self = this; let self = this;
let form = self.form; let form = self.form;
self.$refs.form.validate(valid => { self.$refs.form.validate((valid) => {
if (valid) { if (valid) {
self.loading = true; self.loading = true;
AuthApi.roleAdd(form, true) AuthApi.roleAdd(form, true)
.then(data => { .then((data) => {
self.loading = false; self.loading = false;
ElMessage ({ ElMessage({
message: '添加成功', message: "添加成功",
type: 'success' type: "success",
}); });
self.$router.push('/auth/role/index'); self.$router.push("/auth/role/index");
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
} }
@ -81,11 +105,11 @@ export default {
getData() { getData() {
let self = this; let self = this;
AuthApi.roleAddInfo() AuthApi.roleAddInfo()
.then(res => { .then((res) => {
self.data = res.data; self.data = res.data;
self.loading = false; self.loading = false;
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
}, },
@ -98,8 +122,8 @@ export default {
/*取消*/ /*取消*/
cancelFunc() { cancelFunc() {
this.$router.back(-1); this.$router.back(-1);
} },
} },
}; };
</script> </script>

View File

@ -1,16 +1,19 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-25
描述权限-角色管理-编辑角色
-->
<div v-loading="loading"> <div v-loading="loading">
<!--form表单--> <!--form表单-->
<el-form size="small" ref="form" :model="form" label-width="180px"> <el-form size="small" ref="form" :model="form" label-width="180px">
<!--编辑角色--> <!--编辑角色-->
<div class="common-form">编辑角色</div> <div class="common-form">编辑角色</div>
<el-form-item label="角色名称:" prop="roleName" :rules="[{ required: true, message: ' ' }]"> <el-form-item
<el-input v-model="form.roleName" placeholder="请输入角色名称" class="max-w460"></el-input> label="角色名称:"
prop="roleName"
:rules="[{ required: true, message: ' ' }]"
>
<el-input
v-model="form.roleName"
placeholder="请输入角色名称"
class="max-w460"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="权限列表:" v-model="form.accessId"> <el-form-item label="权限列表:" v-model="form.accessId">
<el-tree <el-tree
@ -24,28 +27,41 @@
></el-tree> ></el-tree>
</el-form-item> </el-form-item>
<el-form-item label="排序:"><el-input type="number" v-model="form.sort" placeholder="请输入排序" class="max-w460"></el-input></el-form-item> <el-form-item label="排序:"
><el-input
type="number"
v-model="form.sort"
placeholder="请输入排序"
class="max-w460"
></el-input
></el-form-item>
<!--提交--> <!--提交-->
<div class="common-button-wrapper"> <div class="common-button-wrapper">
<el-button size="small" type="info" @click="cancelFunc">取消</el-button> <el-button size="small" type="info" @click="cancelFunc">取消</el-button>
<el-button type="primary" size="small" @click="onSubmit" :loading="loading">提交</el-button> <el-button
type="primary"
size="small"
@click="onSubmit"
:loading="loading"
>提交</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
import AuthApi from '@/api/auth.js'; import AuthApi from "@/api/auth.js";
export default { export default {
data() { data() {
return { return {
/*是否正在加载*/ /*是否正在加载*/
loading:true, loading: true,
/*表单数据对象*/ /*表单数据对象*/
form: { form: {
accessId: [] accessId: [],
}, },
data: [], data: [],
/*角色列表*/ /*角色列表*/
@ -54,10 +70,10 @@ export default {
selectMenu: [], selectMenu: [],
/*权限树菜单重新自定义字段*/ /*权限树菜单重新自定义字段*/
defaultProps: { defaultProps: {
children: 'children', children: "children",
label: 'name' label: "name",
}, },
roleId: 0 roleId: 0,
}; };
}, },
created() { created() {
@ -70,24 +86,27 @@ export default {
onSubmit() { onSubmit() {
let self = this; let self = this;
let form = self.form; let form = self.form;
self.$refs.form.validate(valid => { self.$refs.form.validate((valid) => {
if (valid) { if (valid) {
self.loading = true; self.loading = true;
AuthApi.roleEdit({ AuthApi.roleEdit(
{
roleId: self.form.roleId, roleId: self.form.roleId,
roleName: self.form.roleName, roleName: self.form.roleName,
sort: self.form.sort, sort: self.form.sort,
accessId: self.form.accessId, accessId: self.form.accessId,
}, true) },
.then(data => { true
)
.then((data) => {
self.loading = false; self.loading = false;
ElMessage({ ElMessage({
message: '修改成功', message: "修改成功",
type: 'success' type: "success",
}); });
self.$router.push('/auth/role/index'); self.$router.push("/auth/role/index");
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
} }
@ -98,9 +117,9 @@ export default {
getData() { getData() {
let self = this; let self = this;
AuthApi.roleEditInfo({ AuthApi.roleEditInfo({
roleId: self.roleId roleId: self.roleId,
}) })
.then(data => { .then((data) => {
let obj = self.clearData(data.data.menu, data.data.selectMenu); let obj = self.clearData(data.data.menu, data.data.selectMenu);
self.selectMenu = data.data.selectMenu; self.selectMenu = data.data.selectMenu;
self.form = data.data.model; self.form = data.data.model;
@ -108,11 +127,11 @@ export default {
self.data = data.data.menu; self.data = data.data.menu;
self.form.accessId = self.selectMenu; self.form.accessId = self.selectMenu;
if (self.form.parentId == 0) { if (self.form.parentId == 0) {
self.form.parentId = 0 + ''; self.form.parentId = 0 + "";
} }
self.loading = false; self.loading = false;
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
}, },
@ -151,9 +170,8 @@ export default {
/*取消*/ /*取消*/
cancelFunc() { cancelFunc() {
this.$router.back(-1); this.$router.back(-1);
} },
},
}
}; };
</script> </script>

View File

@ -1,28 +1,48 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-25
描述权限-角色管理
-->
<div class="user"> <div class="user">
<div class="common-level-rail"> <div class="common-level-rail">
<el-button size="small" type="primary" icon="Plus" @click="addClick" v-auth="'/auth/role/add'">添加角色</el-button> <el-button
size="small"
type="primary"
icon="Plus"
@click="addClick"
v-auth="'/auth/role/add'"
>添加角色</el-button
>
</div> </div>
<!--内容--> <!--内容-->
<div class="product-content"> <div class="product-content">
<div class="table-wrap"> <div class="table-wrap">
<el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading"> <el-table
size="small"
:data="tableData"
border
style="width: 100%"
v-loading="loading"
>
<el-table-column prop="roleId" label="角色ID"></el-table-column> <el-table-column prop="roleId" label="角色ID"></el-table-column>
<el-table-column prop="roleName" label="角色名称"></el-table-column> <el-table-column prop="roleName" label="角色名称"></el-table-column>
<el-table-column prop="sort" label="排序"></el-table-column> <el-table-column prop="sort" label="排序"></el-table-column>
<el-table-column prop="createTime" label="添加时间"></el-table-column> <el-table-column prop="createTime" label="添加时间"></el-table-column>
<el-table-column fixed="right" label="操作" width="120"> <el-table-column fixed="right" label="操作" width="120">
<template #default="scope"> <template #default="scope">
<el-button @click="editClick(scope.row)" type="primary" <el-button
link size="small" v-auth="'/auth/role/edit'">编辑</el-button> @click="editClick(scope.row)"
<el-button @click="deleteClick(scope.row)" type="primary" type="primary"
link size="small" v-auth="'/auth/role/delete'">删除</el-button> link
size="small"
v-auth="'/auth/role/edit'"
>编辑</el-button
>
<el-button
@click="deleteClick(scope.row)"
type="primary"
link
size="small"
v-auth="'/auth/role/delete'"
>删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -32,14 +52,14 @@
</template> </template>
<script> <script>
import AuthApi from '@/api/auth.js'; import AuthApi from "@/api/auth.js";
export default { export default {
data() { data() {
return { return {
/*是否加载完成*/ /*是否加载完成*/
loading: true, loading: true,
/*列表数据*/ /*列表数据*/
tableData: [] tableData: [],
}; };
}, },
created() { created() {
@ -52,28 +72,28 @@ export default {
let self = this; let self = this;
self.loading = true; self.loading = true;
AuthApi.roleList({}, true) AuthApi.roleList({}, true)
.then(res => { .then((res) => {
self.loading = false; self.loading = false;
self.tableData = res.data; self.tableData = res.data;
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
}, },
/*打开添加*/ /*打开添加*/
addClick() { addClick() {
this.$router.push('/auth/role/add'); this.$router.push("/auth/role/add");
}, },
/*打开编辑*/ /*打开编辑*/
editClick(row) { editClick(row) {
let self = this; let self = this;
this.$router.push({ this.$router.push({
path: '/auth/role/edit', path: "/auth/role/edit",
query: { query: {
roleId: row.roleId roleId: row.roleId,
} },
}); });
}, },
@ -86,38 +106,38 @@ export default {
/*删除*/ /*删除*/
deleteClick(row) { deleteClick(row) {
let self = this; let self = this;
ElMessageBox.confirm('此操作将永久删除该记录, 是否继续?', '提示', { ElMessageBox.confirm("此操作将永久删除该记录, 是否继续?", "提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消",
type: 'warning' type: "warning",
}) })
.then(() => { .then(() => {
self.loading = true; self.loading = true;
AuthApi.roleDelete( AuthApi.roleDelete(
{ {
roleId: row.roleId roleId: row.roleId,
}, },
true true
) )
.then(data => { .then((data) => {
self.loading = false; self.loading = false;
if (data.code == 1) { if (data.code == 1) {
ElMessage ({ ElMessage({
message: '恭喜你,该角色删除成功', message: "恭喜你,该角色删除成功",
type: 'success' type: "success",
}); });
self.getTableList(); self.getTableList();
} else { } else {
self.loading = false; self.loading = false;
} }
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
}) })
.catch(() => {}); .catch(() => {});
} },
} },
}; };
</script> </script>

View File

@ -1,38 +1,63 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-25
描述权限-管理员列表
-->
<div class="user"> <div class="user">
<!--添加管理员--> <!--添加管理员-->
<div class="common-level-rail"> <div class="common-level-rail">
<el-button size="small" type="primary" icon="Plus" @click="addClick" v-auth="'/auth/user/add'">添加管理员</el-button> <el-button
size="small"
type="primary"
icon="Plus"
@click="addClick"
v-auth="'/auth/user/add'"
>添加管理员</el-button
>
</div> </div>
<!--内容--> <!--内容-->
<div class="product-content"> <div class="product-content">
<div class="table-wrap"> <div class="table-wrap">
<el-table size="small" :data="tableData" border style="width: 100%" v-loading="loading"> <el-table
size="small"
:data="tableData"
border
style="width: 100%"
v-loading="loading"
>
<el-table-column prop="shopUserId" label="管理员ID"></el-table-column> <el-table-column prop="shopUserId" label="管理员ID"></el-table-column>
<el-table-column prop="userName" label="用户名"></el-table-column> <el-table-column prop="userName" label="用户名"></el-table-column>
<el-table-column label="所属角色"> <el-table-column label="所属角色">
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.isSuper == 0"> <div v-if="scope.row.isSuper == 0">
<span class="mr10 green" v-for="(item, index) in scope.row.roleList" :key="index">{{ item.roleName }}</span> <span
</div> class="mr10 green"
<div class="gray" v-if="scope.row.isSuper"> v-for="(item, index) in scope.row.roleList"
超级管理员 :key="index"
>{{ item.roleName }}</span
>
</div> </div>
<div class="gray" v-if="scope.row.isSuper">超级管理员</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="添加时间"></el-table-column> <el-table-column prop="createTime" label="添加时间"></el-table-column>
<el-table-column fixed="right" label="操作" width="120"> <el-table-column fixed="right" label="操作" width="120">
<template #default="scope"> <template #default="scope">
<el-button v-if="!scope.row.isSuper" @click="editClick(scope.row)" type="primary" <el-button
link size="small" v-auth="'/auth/user/edit'">编辑</el-button> v-if="!scope.row.isSuper"
<el-button v-if="!scope.row.isSuper" @click="deleteClick(scope.row)" type="primary" @click="editClick(scope.row)"
link size="small" v-auth="'/auth/user/delete'">删除</el-button> type="primary"
link
size="small"
v-auth="'/auth/user/edit'"
>编辑</el-button
>
<el-button
v-if="!scope.row.isSuper"
@click="deleteClick(scope.row)"
type="primary"
link
size="small"
v-auth="'/auth/user/delete'"
>删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -54,21 +79,25 @@
<Add :open="open_add" :roleList="roleList" @close="closeAdd"></Add> <Add :open="open_add" :roleList="roleList" @close="closeAdd"></Add>
<Edit :open="open_edit" :roleList="roleList" :model="curModel" @close="closeEdit"></Edit> <Edit
:open="open_edit"
:roleList="roleList"
:model="curModel"
@close="closeEdit"
></Edit>
</div> </div>
</template> </template>
<script> <script>
import AuthApi from '@/api/auth.js'; import AuthApi from "@/api/auth.js";
import Add from './dialog/Add.vue'; import Add from "./dialog/Add.vue";
import Edit from './dialog/Edit.vue'; import Edit from "./dialog/Edit.vue";
export default { export default {
components: { components: {
Add, Add,
Edit Edit,
}, },
inject: ['reload'], inject: ["reload"],
data() { data() {
return { return {
/*是否加载完成*/ /*是否加载完成*/
@ -88,7 +117,7 @@ export default {
/*当前编辑的对象*/ /*当前编辑的对象*/
curModel: {}, curModel: {},
/*角色列表*/ /*角色列表*/
roleList:[] roleList: [],
}; };
}, },
created() { created() {
@ -118,38 +147,38 @@ export default {
Params.pageIndex = self.curPage; Params.pageIndex = self.curPage;
Params.pageSize = self.pageSize; Params.pageSize = self.pageSize;
AuthApi.userList(Params, true) AuthApi.userList(Params, true)
.then(res => { .then((res) => {
self.loading = false; self.loading = false;
self.tableData = res.data.userList.records; self.tableData = res.data.userList.records;
self.totalDataNumber = res.data.userList.total; self.totalDataNumber = res.data.userList.total;
self.roleList = res.data.roleList; self.roleList = res.data.roleList;
}) })
.catch(error => {}); .catch((error) => {});
}, },
/*打开添加*/ /*打开添加*/
addClick() { addClick() {
this.open_add=true; this.open_add = true;
}, },
/*关闭添加*/ /*关闭添加*/
closeAdd(e){ closeAdd(e) {
this.open_add=false; this.open_add = false;
if(e && e.type=='success'){ if (e && e.type == "success") {
this.getTableList(); this.getTableList();
} }
}, },
/*打开编辑*/ /*打开编辑*/
editClick(row) { editClick(row) {
this.curModel=row; this.curModel = row;
this.open_edit=true; this.open_edit = true;
}, },
/*关闭添加*/ /*关闭添加*/
closeEdit(e){ closeEdit(e) {
this.open_edit=false; this.open_edit = false;
if(e && e.type=='success'){ if (e && e.type == "success") {
this.getTableList(); this.getTableList();
} }
}, },
@ -157,25 +186,25 @@ export default {
/*删除*/ /*删除*/
deleteClick(row) { deleteClick(row) {
let self = this; let self = this;
ElMessageBox.confirm('此操作将永久删除该记录, 是否继续?', '提示', { ElMessageBox.confirm("此操作将永久删除该记录, 是否继续?", "提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消",
type: 'warning' type: "warning",
}) })
.then(() => { .then(() => {
self.loading = true; self.loading = true;
AuthApi.userDelete( AuthApi.userDelete(
{ {
shopUserId: row.shopUserId shopUserId: row.shopUserId,
}, },
true true
) )
.then(data => { .then((data) => {
self.loading = false; self.loading = false;
if (data.code == 1) { if (data.code == 1) {
ElMessage ({ ElMessage({
message: '恭喜你,该管理员删除成功', message: "恭喜你,该管理员删除成功",
type: 'success' type: "success",
}); });
// //
self.getTableList(); self.getTableList();
@ -183,13 +212,13 @@ export default {
self.loading = false; self.loading = false;
} }
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
}) })
.catch(() => {}); .catch(() => {});
} },
} },
}; };
</script> </script>

View File

@ -1,9 +1,4 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-24
描述统计-销售统计-商品统计
-->
<div class="sales-product-box mt30"> <div class="sales-product-box mt30">
<div class="common-form">商品统计</div> <div class="common-form">商品统计</div>
<div class="d-s-stretch bd-box"> <div class="d-s-stretch bd-box">
@ -21,19 +16,24 @@
</template> </template>
<script> <script>
import Total from './product/Total.vue'; import Total from "./product/Total.vue";
import LineChart from './product/LineChart.vue'; import LineChart from "./product/LineChart.vue";
import Ranking from './product/Ranking.vue' import Ranking from "./product/Ranking.vue";
export default{ export default {
components: { components: {
Total, Total,
LineChart, LineChart,
Ranking Ranking,
} },
} };
</script> </script>
<style> <style>
.sales-product-box .bd-box{ border-top: 1px solid #EEEEEE;} .sales-product-box .bd-box {
.sales-product-box .left-box{ width: 69%; border-right: 1px solid #EEEEEE;} border-top: 1px solid #eeeeee;
}
.sales-product-box .left-box {
width: 69%;
border-right: 1px solid #eeeeee;
}
</style> </style>

View File

@ -1,68 +1,54 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-24
描述统计-销售统计-总计
-->
<div class="d-a-c lh30 ww100 pt16"> <div class="d-a-c lh30 ww100 pt16">
<div class="pt30 tc" style="width: 80px;"> <div class="pt30 tc" style="width: 80px">
<p class="gray9">今日</p> <p class="gray9">今日</p>
<p class="gray9">昨日</p> <p class="gray9">昨日</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>成交额</p> <p>成交额</p>
<p class="f20 fb gray3">{{dataModel.order.order_total_price.today}}</p> <p class="f20 fb gray3">{{ dataModel.order.order_total_price.today }}</p>
<p class="gray">{{dataModel.order.order_total_price.yesterday}}</p> <p class="gray">{{ dataModel.order.order_total_price.yesterday }}</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>客单价</p> <p>客单价</p>
<p class="f20 fb gray3">{{dataModel.order.order_per_price.today}}</p> <p class="f20 fb gray3">{{ dataModel.order.order_per_price.today }}</p>
<p class="gray">{{dataModel.order.order_per_price.yesterday}}</p> <p class="gray">{{ dataModel.order.order_per_price.yesterday }}</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>付款订单</p> <p>付款订单</p>
<p class="f20 fb gray3">{{dataModel.order.order_total.today}}</p> <p class="f20 fb gray3">{{ dataModel.order.order_total.today }}</p>
<p class="gray">{{dataModel.order.order_total.yesterday}}</p> <p class="gray">{{ dataModel.order.order_total.yesterday }}</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>付款人数</p> <p>付款人数</p>
<p class="f20 fb gray3">{{dataModel.order.order_user_total.today}}</p> <p class="f20 fb gray3">{{ dataModel.order.order_user_total.today }}</p>
<p class="gray">{{dataModel.order.order_user_total.yesterday}}</p> <p class="gray">{{ dataModel.order.order_user_total.yesterday }}</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>成功退款金额</p> <p>成功退款金额</p>
<p class="f20 fb gray3">{{dataModel.order.order_refund_money.today}}</p> <p class="f20 fb gray3">{{ dataModel.order.order_refund_money.today }}</p>
<p class="gray">{{dataModel.order.order_refund_money.yesterday}}</p> <p class="gray">{{ dataModel.order.order_refund_money.yesterday }}</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>退款订单</p> <p>退款订单</p>
<p class="f20 fb gray3">{{dataModel.order.order_refund_total.today}}</p> <p class="f20 fb gray3">{{ dataModel.order.order_refund_total.today }}</p>
<p class="gray">{{dataModel.order.order_refund_total.yesterday}}</p> <p class="gray">{{ dataModel.order.order_refund_total.yesterday }}</p>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
components:{ components: {},
},
data() { data() {
return { return {
/*是否正在加载*/ /*是否正在加载*/
loading: true, loading: true,
}; };
}, },
inject: ['dataModel'], inject: ["dataModel"],
created() { created() {},
methods: {},
},
methods: {
}
}; };
</script> </script>
<style> <style></style>
</style>

View File

@ -1,9 +1,4 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-24
描述统计-销售统计-交易统计
-->
<div class="mt30"> <div class="mt30">
<div class=""> <div class="">
<div class="Echarts"> <div class="Echarts">

View File

@ -1,9 +1,4 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-24
描述统计-销售统计-商品统计-已付款商品
-->
<div class="ww100 mt30"> <div class="ww100 mt30">
<el-tabs v-model="activeName"> <el-tabs v-model="activeName">
<el-tab-pane label="已付款商品" name="first"></el-tab-pane> <el-tab-pane label="已付款商品" name="first"></el-tab-pane>
@ -33,50 +28,50 @@
</template> </template>
<script> <script>
import StatisticsApi from '@/api/statistics.js'; import StatisticsApi from "@/api/statistics.js";
import { formatDate } from '@/utils/DateTime.js' import { formatDate } from "@/utils/DateTime.js";
import * as echarts from "echarts"; import * as echarts from "echarts";
let myChart; let myChart;
export default { export default {
data() { data() {
let endDate=new Date(); let endDate = new Date();
let startDate=new Date(); let startDate = new Date();
startDate.setTime(startDate.getTime()- 3600 * 1000 * 24 * 7); startDate.setTime(startDate.getTime() - 3600 * 1000 * 24 * 7);
return { return {
activeName: 'first', activeName: "first",
/*时间快捷选项*/ /*时间快捷选项*/
shortcuts: [ shortcuts: [
{ {
text: '最近一周', text: "最近一周",
value: () => { value: () => {
const end = new Date(); const end = new Date();
const start = new Date(); const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
return [start, end]; return [start, end];
} },
}, },
{ {
text: '最近一个月', text: "最近一个月",
value: () => { value: () => {
const end = new Date(); const end = new Date();
const start = new Date(); const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
return [start, end]; return [start, end];
} },
}, },
{ {
text: '最近三个月', text: "最近三个月",
value: () => { value: () => {
const end = new Date(); const end = new Date();
const start = new Date(); const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
return [start, end]; return [start, end];
} },
} },
], ],
startDate: formatDate(startDate,'YYYY-MM-DD'), startDate: formatDate(startDate, "YYYY-MM-DD"),
endDate: formatDate(endDate,'YYYY-MM-DD'), endDate: formatDate(endDate, "YYYY-MM-DD"),
/*数据对象*/ /*数据对象*/
dataList: null, dataList: null,
/*交易统计图表对象*/ /*交易统计图表对象*/
@ -87,23 +82,22 @@ export default {
//text: 'ECharts ' //text: 'ECharts '
}, },
grid: { grid: {
left: '3%', left: "3%",
right: '4%', right: "4%",
bottom: '3%', bottom: "3%",
containLabel: true containLabel: true,
}, },
tooltip: { tooltip: {
trigger: 'axis' trigger: "axis",
},
yAxis: {},
}, },
yAxis: {}
}
}; };
}, },
mounted() { mounted() {
this.myEcharts(); this.myEcharts();
}, },
methods: { methods: {
/*选择时间*/ /*选择时间*/
changeDate() { changeDate() {
this.getData(); this.getData();
@ -111,7 +105,7 @@ export default {
myEcharts() { myEcharts() {
// domecharts // domecharts
myChart = echarts.init(document.getElementById('LineChart')); myChart = echarts.init(document.getElementById("LineChart"));
/*获取列表*/ /*获取列表*/
this.getData(); this.getData();
}, },
@ -122,18 +116,18 @@ export default {
let names = []; let names = [];
let xAxis = this.dataList.days; let xAxis = this.dataList.days;
let series1 = []; let series1 = [];
this.dataList.data.forEach(item => { this.dataList.data.forEach((item) => {
series1.push(item.totalNum); series1.push(item.totalNum);
}); });
names = [ '商品件数']; names = ["商品件数"];
// //
this.option.xAxis = { this.option.xAxis = {
type: 'category', type: "category",
boundaryGap: false, boundaryGap: false,
data: xAxis data: xAxis,
}; };
this.option.color=["red", "#409EFF"]; this.option.color = ["red", "#409EFF"];
/* this.option.legend = { /* this.option.legend = {
data: [{ name: names[0], color: '#ccc' }] data: [{ name: names[0], color: '#ccc' }]
@ -141,12 +135,12 @@ export default {
this.option.series = [ this.option.series = [
{ {
name: names[0], name: names[0],
type: 'line', type: "line",
data: series1, data: series1,
lineStyle: { lineStyle: {
color: 'red' color: "red",
} },
} },
]; ];
myChart.setOption(this.option); myChart.setOption(this.option);
@ -162,22 +156,28 @@ export default {
{ {
startDate: self.startDate, startDate: self.startDate,
endDate: self.endDate, endDate: self.endDate,
type: self.activeName type: self.activeName,
}, },
true true
) )
.then(res => { .then((res) => {
self.dataList = res.data; self.dataList = res.data;
self.loading = false; self.loading = false;
self.createOption(); self.createOption();
}) })
.catch(error => {}); .catch((error) => {});
} },
} },
}; };
</script> </script>
<style scoped="scoped"> <style scoped="scoped">
.Echarts{ box-sizing: border-box;} .Echarts {
.Echarts>div{ width: 100%; height: 360px; box-sizing: border-box;} box-sizing: border-box;
}
.Echarts > div {
width: 100%;
height: 360px;
box-sizing: border-box;
}
</style> </style>

View File

@ -1,9 +1,4 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-24
描述统计-销售统计-商品统计-排行榜
-->
<div class="right-box d-s-s d-c"> <div class="right-box d-s-s d-c">
<div class="lh30 f16 tl">商品排行榜</div> <div class="lh30 f16 tl">商品排行榜</div>
<div class="ww100 mt10"> <div class="ww100 mt10">
@ -14,29 +9,39 @@
</el-tabs> </el-tabs>
</div> </div>
<div class="list ww100"> <div class="list ww100">
<ul v-if="listData.length>0"> <ul v-if="listData.length > 0">
<li v-for="(item, index) in listData" :key="index" class="d-s-c p-6-0 border-b-d"> <li
v-for="(item, index) in listData"
:key="index"
class="d-s-c p-6-0 border-b-d"
>
<span class="key-box">{{ index + 1 }}</span> <span class="key-box">{{ index + 1 }}</span>
<span> <span>
<template v-if="activeName=='sale'"> <template v-if="activeName == 'sale'">
<img v-img-url="item.image.file_path" alt="" class="ml10" /> <img v-img-url="item.image.file_path" alt="" class="ml10" />
</template> </template>
<template v-if="activeName=='refund'"> <template v-if="activeName == 'refund'">
<img v-img-url="item.orderproduct.image.file_path" alt="" class="ml10" /> <img
v-img-url="item.orderproduct.image.file_path"
alt=""
class="ml10"
/>
</template> </template>
<template v-if="activeName=='view'"> <template v-if="activeName == 'view'">
<img v-img-url="item.image[0].file_path" alt="" class="ml10" /> <img v-img-url="item.image[0].file_path" alt="" class="ml10" />
</template> </template>
</span> </span>
<span class="text-ellipsis-2 flex-1 ml10">{{ item.product_name }}</span> <span class="text-ellipsis-2 flex-1 ml10">{{
<span class="gray9 tr" style="width: 80px;" > item.product_name
<template v-if="activeName=='sale'"> }}</span>
<span class="gray9 tr" style="width: 80px">
<template v-if="activeName == 'sale'">
销量{{ item.total_sales_num }} 销量{{ item.total_sales_num }}
</template> </template>
<template v-if="activeName=='view'"> <template v-if="activeName == 'view'">
浏览{{ item.view_times }} 浏览{{ item.view_times }}
</template> </template>
<template v-if="activeName=='refund'"> <template v-if="activeName == 'refund'">
退款{{ item.refund_count }} 退款{{ item.refund_count }}
</template> </template>
</span> </span>
@ -51,12 +56,12 @@
export default { export default {
data() { data() {
return { return {
activeName: 'sale', activeName: "sale",
/*列表数据*/ /*列表数据*/
listData: [] listData: [],
}; };
}, },
inject: ['dataModel'], inject: ["dataModel"],
created() { created() {
this.listData = this.dataModel.productSaleRanking; this.listData = this.dataModel.productSaleRanking;
}, },
@ -64,15 +69,15 @@ export default {
methods: { methods: {
handleClick(e) { handleClick(e) {
this.activeName = e; this.activeName = e;
if(this.activeName=='sale'){ if (this.activeName == "sale") {
this.listData=this.dataModel.productSaleRanking; this.listData = this.dataModel.productSaleRanking;
}else if(this.activeName=='view'){ } else if (this.activeName == "view") {
this.listData=this.dataModel.productViewRanking; this.listData = this.dataModel.productViewRanking;
}else if(this.activeName=='refund'){ } else if (this.activeName == "refund") {
this.listData=this.dataModel.productRefundRanking; this.listData = this.dataModel.productRefundRanking;
}
}
} }
},
},
}; };
</script> </script>

View File

@ -1,52 +1,40 @@
<template> <template>
<!--
作者luoyiming
时间2019-10-24
描述统计-销售统计-商品统计-汇总
-->
<div class="d-a-c lh30 ww100 pt16"> <div class="d-a-c lh30 ww100 pt16">
<div class="pt30 tc" style="width: 80px;"> <div class="pt30 tc" style="width: 80px">
<p class="gray9">今日</p> <p class="gray9">今日</p>
<p class="gray9">昨日</p> <p class="gray9">昨日</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p class="lh30">在售商品</p> <p class="lh30">在售商品</p>
<p class="f20 fb gray3">{{dataModel.product.sale.today}}</p> <p class="f20 fb gray3">{{ dataModel.product.sale.today }}</p>
<p class="gray">{{dataModel.product.sale.yesterday}}</p> <p class="gray">{{ dataModel.product.sale.yesterday }}</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>未付款商品()</p> <p>未付款商品()</p>
<p class="f20 fb gray3">{{dataModel.product.no_pay.today}}</p> <p class="f20 fb gray3">{{ dataModel.product.no_pay.today }}</p>
<p class="gray">{{dataModel.product.no_pay.yesterday}}</p> <p class="gray">{{ dataModel.product.no_pay.yesterday }}</p>
</div> </div>
<div class="flex-1 tc"> <div class="flex-1 tc">
<p>已付款商品()</p> <p>已付款商品()</p>
<p class="f20 fb gray3">{{dataModel.product.pay.today}}</p> <p class="f20 fb gray3">{{ dataModel.product.pay.today }}</p>
<p class="gray">{{dataModel.product.pay.yesterday}}</p> <p class="gray">{{ dataModel.product.pay.yesterday }}</p>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
components:{ components: {},
},
data() { data() {
return { return {
/*是否正在加载*/ /*是否正在加载*/
loading: true, loading: true,
}; };
}, },
inject: ['dataModel'], inject: ["dataModel"],
created() { created() {},
methods: {},
}, };
methods: {
}
};
</script> </script>
<style></style> <style></style>

View File

@ -1,21 +1,33 @@
<template> <template>
<!--
作者 luoyiming
时间2019-10-26
描述设置-退货地址列表-添加
-->
<div class="product-add"> <div class="product-add">
<!--form表单--> <!--form表单-->
<el-form size="small" ref="form" :model="form" label-width="200px"> <el-form size="small" ref="form" :model="form" label-width="200px">
<!--新增退货地址--> <!--新增退货地址-->
<div class="common-form">新增退货地址</div> <div class="common-form">新增退货地址</div>
<el-form-item label="收货人姓名" prop="name" :rules="[{required: true,message: ' '}]"> <el-form-item
<el-input type="text" v-model="form.name" class="max-w460" prop="name"></el-input> label="收货人姓名"
prop="name"
:rules="[{ required: true, message: ' ' }]"
>
<el-input
type="text"
v-model="form.name"
class="max-w460"
prop="name"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="phone" :rules="[{required: true,message: ' '}]"> <el-form-item
label="联系电话"
prop="phone"
:rules="[{ required: true, message: ' ' }]"
>
<el-input type="text" v-model="form.phone" class="max-w460"></el-input> <el-input type="text" v-model="form.phone" class="max-w460"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="详细地址" prop="detail" :rules="[{required: true,message: ' '}]"> <el-form-item
label="详细地址"
prop="detail"
:rules="[{ required: true, message: ' ' }]"
>
<el-input type="text" v-model="form.detail" class="max-w460"></el-input> <el-input type="text" v-model="form.detail" class="max-w460"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="排序"> <el-form-item label="排序">
@ -25,21 +37,22 @@
<!--提交--> <!--提交-->
<div class="common-button-wrapper"> <div class="common-button-wrapper">
<el-button size="small" type="primary" @click="onSubmit()" :loading="loading">提交</el-button> <el-button
size="small"
type="primary"
@click="onSubmit()"
:loading="loading"
>提交</el-button
>
</div> </div>
</el-form> </el-form>
</div> </div>
</template> </template>
<script> <script>
import SettingApi from '@/api/setting.js'; import SettingApi from "@/api/setting.js";
export default { export default {
data() { data() {
return { return {
loading: false, loading: false,
@ -47,13 +60,11 @@
// activeIndex: '1', // activeIndex: '1',
/*form表单数据*/ /*form表单数据*/
form: { form: {
name: '', name: "",
phone: '', phone: "",
detail: '', detail: "",
sort: 1, sort: 1,
}, },
}; };
}, },
created() {}, created() {},
@ -67,31 +78,26 @@
if (valid) { if (valid) {
self.loading = true; self.loading = true;
SettingApi.addAddress(form, true) SettingApi.addAddress(form, true)
.then(data => { .then((data) => {
self.loading = false; self.loading = false;
ElMessage ({ ElMessage({
message: '恭喜你,添加成功', message: "恭喜你,添加成功",
type: 'success' type: "success",
}); });
self.$router.push('/setting/address/index'); self.$router.push("/setting/address/index");
}) })
.catch(error => { .catch((error) => {
self.loading = false; self.loading = false;
}); });
} }
}); });
}, },
},
} };
};
</script> </script>
<style> <style>
.tips { .tips {
color: #ccc; color: #ccc;
} }
</style> </style>