style: 修改部分页面中展示细节,分销订单中新增状态展示,统计模块优化代码,热词模块 历史热词默认展示昨天热词,以及优化热词统计

master
学习很差啦 2023-04-03 14:22:07 +08:00
parent 3498de4529
commit 170244cc9c
15 changed files with 149 additions and 83 deletions

View File

@ -139,7 +139,7 @@ export default {
"Button",
{
props: {
type: "success",
type: "primary",
size: "small",
},
style: {

View File

@ -212,6 +212,7 @@
filterStatus (status) { //
const arr = [
{status: 'WAIT_BILL', title: '待结算'},
{status: 'NO_COMPLETED', title: '未完成'},
{status: 'WAIT_CASH', title: '待提现'},
{status: 'COMPLETE_CASH', title: '提现完成'},
{status: 'CANCEL', title: '订单取消'},
@ -229,6 +230,7 @@
{status: 'WAIT_CASH', color: 'orange'},
{status: 'COMPLETE_CASH', color: 'green'},
{status: 'CANCEL', color: 'red'},
{status: 'NO_COMPLETED', color: 'red'},
{status: 'REFUND', color: 'magenta'},
]
for (let i=0;i<arr.length;i++) {

View File

@ -337,6 +337,7 @@ export default {
//
async initOrderChartList(name) {
this.orderChart ? this.orderChart.clear() : ''
const res = await API_Goods.getOrderChart(this.orderParams);
if (res.success) {
this.chartList = res.result;
@ -446,6 +447,7 @@ export default {
//
async getPvChart() {
this.pvChart ? this.pvChart.clear() : ''
API_Member.getStatisticsList(this.params).then((res) => {
if (res.result) {
this.data = res.result;
@ -464,6 +466,7 @@ export default {
},
//
async initHistoryMemberChartList() {
this.historyMemberChart ? this.historyMemberChart.clear() : ''
const res = await API_Member.historyMemberChartList();
if (res.success) {
this.chartList = res.result;

View File

@ -28,18 +28,16 @@
</div>
<div slot="footer" style="text-align: right">
<Button v-if="tab === 'WECHAT'" type="success" size="large" @click="wechatFormDataEdit"></Button>
<Button v-if="tab === 'WECHAT'" type="primary" @click="wechatFormDataEdit"></Button>
<Button v-else type="success" size="large" @click="wechatMPFormDataEdit"></Button>
<Button v-else type="primary" @click="wechatMPFormDataEdit"></Button>
</div>
</Modal>
<Card>
<Tabs @on-click="tabPaneChange" v-model="tab">
<TabPane label="微信消息" name="WECHAT">
<div class="search">
<Card>
<Row class="operation mt_10">
<Button @click="weChatSync" type="primary">同步微信消息</Button>
</Row>
@ -61,14 +59,11 @@
size="small"
></Page>
</Row>
</Card>
</div>
</TabPane>
<TabPane label="微信小程序订阅消息" name="WECHATMP">
<div class="search">
<Card>
<Row class="operation mt_10">
<Button @click="weChatSync('mp')" type="primary">同步微信小程序订阅消息</Button>
</Row>
@ -91,10 +86,10 @@
size="small"
></Page>
</Row>
</Card>
</div>
</TabPane>
</Tabs>
</Card>
</div>

View File

@ -2,10 +2,15 @@
<div class="box">
<Row class="operation">
<Col span="12">
<DatePicker @on-change="search" show-week-numbers type="date" placement="bottom-end" placeholder="选择查看日期"
style="width: 200px"></DatePicker>
<DatePicker
:options="options"
@on-change="search"
type="date"
placement="bottom-end"
placeholder="选择查看日期"
style="width: 200px"
v-model="yestDate"
></DatePicker>
</Col>
</Row>
<Row>
@ -16,16 +21,15 @@
</p>
</Row>
<div id="container"></div>
</div>
</template>
<script>
import {Chart} from "@antv/g2";
import {getHotWordsHistory} from "@/api/index";
import { Chart } from "@antv/g2";
import { getHotWordsHistory } from "@/api/index";
import affixTime from "@/components/affix-time";
import {Message} from "view-design";
import { Message } from "view-design";
export default {
components: {
@ -33,37 +37,54 @@ export default {
},
data() {
return {
yestDate:new Date(new Date().getTime() - 24 * 60 * 60 * 1000).toString(),
yestDate:this.$options.filters.unixToDate(
(new Date().getTime() / 1000) - (24 * 60 * 60),
"yyyy年MM月dd日"
),
params: {
date:this.$options.filters.unixToDate(new Date().getTime() / 1000,'yyyy-MM-dd')
date: this.$options.filters.unixToDate(
(new Date().getTime() / 1000) - (24 * 60 * 60),
"yyyy-MM-dd"
),
},
hotWordsChart: "", //
hotWordsData: [] //
hotWordsData: [], //
options: {
disabledDate: (date) => {
if (this.endMonth) {
let endDate = this.getDate(this.endMonth);
return (date && date > endDate) || date > new Date();
} else {
return date && date > new Date();
}
},
},
};
},
computed: {},
methods: {
clickBreadcrumb(val) {
this.params = {...this.params, ...val}
this.params = { ...this.params, ...val };
},
//
async search(val) {
val ? this.params.date = val : ''
console.log(val)
val ? (this.params.date = val) : "";
const res = await getHotWordsHistory(this.params);
if (res.success) {
this.hotWordsData = res.result;
this.hotWordsChart.data(this.hotWordsData)
this.hotWordsChart.data(this.hotWordsData);
this.hotWordsChart.render();
if (!this.hotWordsData) {
Message.error("暂无数据");
}
}
},
handleClickSearch() {
},
handleClickSearch() {},
init() {
let chart = this.hotWordsChart
let chart = this.hotWordsChart;
chart = new Chart({
container: "container",
autoFit: true,
@ -84,11 +105,11 @@ export default {
chart.tooltip({
showMarkers: false,
});
chart.interval().position("keywords*score");
chart.interval().position("keywords*score").color("#f59b99");
chart.interaction("element-active");
this.hotWordsChart = chart;
this.search();
}
},
},
mounted() {
this.init();
@ -99,10 +120,12 @@ export default {
<style lang="scss" scoped>
.affix-time {
padding-left: 15px;
}
.box {
min-height: 400px;
margin-left: 50px;
}
</style>

View File

@ -3,7 +3,7 @@
<div class="affix-time">
<Affix :offset-top="100">
<div class="flex affix-box">
<affixTime :closeShop="true" @selected="clickBreadcrumb"/>
<affixTime :closeShop="true" @selected="clickBreadcrumb" />
<InputNumber
placeholder="展示前N"
@ -22,8 +22,8 @@
</template>
<script>
import {Chart} from "@antv/g2";
import {getHotWordsStatistics} from "@/api/index";
import { Chart } from "@antv/g2";
import { getHotWordsStatistics } from "@/api/index";
import affixTime from "@/components/affix-time";
export default {
@ -37,9 +37,9 @@ export default {
searchType: "LAST_SEVEN",
year: "",
month: "",
top: 50
top: 50,
},
columns:[
columns: [
{
title: "热词名称",
key: "keywords",
@ -49,54 +49,87 @@ export default {
key: "score",
},
],
hotWordsChart:"", //
hotWordsData:[] //
hotWordsChart: "", //
hotWordsData: [], //
orderChart: "",
};
},
computed: {},
watch: {
params: {
handler(val) {
this.search();
},
deep: true,
immediate: true,
},
year(val) {
this.params.year = new Date(val).getFullYear();
},
},
methods: {
clickBreadcrumb(val) {
this.params = {...this.params, ...val}
this.params = { ...this.params, ...val };
},
//
async search() {
const res = await getHotWordsStatistics(this.params);
if (res.success) {
this.hotWordsData=res.result;
this.hotWordsChart.data(this.hotWordsData)
this.hotWordsChart.render();
}
},
handleClickSearch() {
},
init(){
let chart = this.hotWordsChart
chart = new Chart({
this.hotWordsData = res.result;
if (!this.hotWordsChart) {
this.hotWordsChart = new Chart({
container: "container",
autoFit: true,
height: 500,
padding: [50, 20, 50, 20],
});
chart.scale("score", {
}
this.init();
}
},
handleClickSearch() {},
init() {
if (this.hotWordsChart) {
this.hotWordsChart.data(this.hotWordsData);
this.hotWordsChart.scale("score", {
alias: "搜索次数",
});
chart.axis("keywords", {
this.hotWordsChart.axis("keywords", {
tickLine: {
alignTick: false,
},
});
chart.axis("score", false);
this.hotWordsChart.axis("score", false);
chart.tooltip({
this.hotWordsChart.tooltip({
showMarkers: false,
});
chart.interval().position("keywords*score");
chart.interaction("element-active");
this.hotWordsChart=chart;
this.search();
this.hotWordsChart
.interval()
.position("keywords*score")
.color("#f59b99");
this.hotWordsChart.interaction("element-active");
//
// this.hotWordsData.forEach((item) => {
// this.hotWordsChart
// .annotation()
// .text({
// position: [item.keywords, item.score],
// content: item.score,
// style: {
// textAlign: "center",
// },
// offsetY: -30,
// })
// });
this.hotWordsChart.render();
}
},
},
mounted() {
this.init();
},
@ -107,5 +140,4 @@ export default {
.affix-time {
padding-left: 15px;
}
</style>

View File

@ -3,6 +3,7 @@
<Row>
<Col span="24">
<Card class="article-detail">
<Alert>隐私协议在移动端中 设置->关于我们->对应的文章展示</Alert>
<Table :loading="loading" border :columns="columns" :data="data" ref="table">
</Table>
</Card>

View File

@ -180,6 +180,7 @@ export default {
},
//
init() {
this.orderChart ? this.orderChart.clear() : ''
API_Member.getMemberStatistics(this.params).then((res) => {
if (res.result) {
res.result.forEach((item) => {

View File

@ -586,6 +586,7 @@ export default {
},
//
async initOrderChartList(name) {
this.orderChart ? this.orderChart.clear() : ''
const res = await API_Goods.getOrderChart(this.orderParams);
if (res.success) {
this.chartList = res.result;

View File

@ -185,6 +185,7 @@ export default {
},
//
init() {
this.orderChart ? this.orderChart.clear() : ''
API_Member.getStatisticsList(this.params).then((res) => {
if (res.result) {
this.data = res.result;

View File

@ -47,16 +47,16 @@
openTip ? "关闭提示" : "开启提示"
}}</Button>
</Row>
<Row v-show="openTip">
<div v-show="openTip">
<Alert show-icon>
<span>展示详细内容</span>
<Icon type="ios-bulb-outline" slot="icon"></Icon>
<i-switch size="large" v-model="showDev">
<i-switch class="switch" size="large" v-model="showDev">
<span slot="open">开发</span>
<span slot="close">普通</span>
</i-switch>
</Alert>
</Row>
</div>
<Table
v-if="showDev"
@ -323,3 +323,8 @@ export default {
},
};
</script>
<style lang="scss" scoped>
.switch{
margin-left: 20px;
}
</style>

View File

@ -49,7 +49,7 @@
<script>
import { setSetting } from "@/api/index";
import { handleSubmit } from "../setting/validate";
import { getPaymentSupportForm } from "@/api/setting";
export default {
data() {
return {

View File

@ -9,7 +9,7 @@
</FormItem>
<FormItem label="最低提现金额" prop="minPrice">
<Input class="label-appkey" v-model="formValidate.minPrice" />
<Input class="label-appkey" v-model="formValidate.minPrice" />
</FormItem>
<FormItem label="提现方式" prop="type">

View File

@ -523,6 +523,7 @@ export default {
},
//
async initOrderChartList(name) {
this.orderChart ? this.orderChart.clear() : ''
const res = await API_Goods.getOrderChart(this.orderParams);
if (res.success) {
this.chartList = res.result;

View File

@ -190,6 +190,7 @@ export default {
},
//
init() {
this.orderChart ? this.orderChart.clear() : ''
API_Member.getStatisticsList(this.params).then((res) => {
if (res.result) {
this.data = res.result;