注释删除

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,21 +1,33 @@
<template>
<!--
作者 luoyiming
时间2019-10-26
描述设置-退货地址列表-添加
-->
<div class="product-add">
<!--form表单-->
<el-form size="small" ref="form" :model="form" label-width="200px">
<!--新增退货地址-->
<div class="common-form">新增退货地址</div>
<el-form-item 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
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 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-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-form-item>
<el-form-item label="排序">
@ -25,73 +37,67 @@
<!--提交-->
<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>
</el-form>
</div>
</template>
<script>
import SettingApi from '@/api/setting.js';
export default {
data() {
return {
loading: false,
/*切换菜单*/
// activeIndex: '1',
/*form表单数据*/
form: {
name: '',
phone: '',
detail: '',
sort: 1,
},
};
},
created() {},
methods: {
//
onSubmit() {
let self = this;
let form = self.form;
self.$refs.form.validate((valid) => {
if (valid) {
self.loading = true;
SettingApi.addAddress(form, true)
.then(data => {
self.loading = false;
ElMessage ({
message: '恭喜你,添加成功',
type: 'success'
});
self.$router.push('/setting/address/index');
})
.catch(error => {
self.loading = false;
});
}
});
import SettingApi from "@/api/setting.js";
export default {
data() {
return {
loading: false,
/*切换菜单*/
// activeIndex: '1',
/*form表单数据*/
form: {
name: "",
phone: "",
detail: "",
sort: 1,
},
};
},
created() {},
}
};
methods: {
//
onSubmit() {
let self = this;
let form = self.form;
self.$refs.form.validate((valid) => {
if (valid) {
self.loading = true;
SettingApi.addAddress(form, true)
.then((data) => {
self.loading = false;
ElMessage({
message: "恭喜你,添加成功",
type: "success",
});
self.$router.push("/setting/address/index");
})
.catch((error) => {
self.loading = false;
});
}
});
},
},
};
</script>
<style>
.tips {
color: #ccc;
}
.tips {
color: #ccc;
}
</style>