|
@@ -55,7 +55,7 @@
|
|
|
align="center"
|
|
align="center"
|
|
|
header-align="center"
|
|
header-align="center"
|
|
|
height="700"
|
|
height="700"
|
|
|
- size="mini"
|
|
|
|
|
|
|
+ size="small"
|
|
|
:default-sort="{ prop: 'task_id', order: 'ascending' }"
|
|
:default-sort="{ prop: 'task_id', order: 'ascending' }"
|
|
|
v-loading="loading"
|
|
v-loading="loading"
|
|
|
>
|
|
>
|
|
@@ -166,26 +166,26 @@
|
|
|
min-width="70"
|
|
min-width="70"
|
|
|
align="center"
|
|
align="center"
|
|
|
/>
|
|
/>
|
|
|
- <el-table-column label="活跃成功" align="center">
|
|
|
|
|
|
|
+ <el-table-column label="完成" align="center">
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
prop="num_new_success"
|
|
prop="num_new_success"
|
|
|
- label="新增成功"
|
|
|
|
|
- min-width="70"
|
|
|
|
|
|
|
+ label="新增"
|
|
|
|
|
+ min-width="60"
|
|
|
align="center"
|
|
align="center"
|
|
|
/>
|
|
/>
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
prop="num_lc_success"
|
|
prop="num_lc_success"
|
|
|
- label="留存成功"
|
|
|
|
|
- min-width="70"
|
|
|
|
|
|
|
+ label="留存"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_pay_success"
|
|
|
|
|
+ label="付费"
|
|
|
|
|
+ min-width="60"
|
|
|
align="center"
|
|
align="center"
|
|
|
/>
|
|
/>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column
|
|
|
|
|
- prop="num_pay_success"
|
|
|
|
|
- label="付费成功"
|
|
|
|
|
- min-width="70"
|
|
|
|
|
- align="center"
|
|
|
|
|
- />
|
|
|
|
|
<el-table-column label="订单数" align="center">
|
|
<el-table-column label="订单数" align="center">
|
|
|
<el-table-column label="付费成功" align="center">
|
|
<el-table-column label="付费成功" align="center">
|
|
|
<el-table-column
|
|
<el-table-column
|
|
@@ -280,43 +280,23 @@
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <!-- <el-table-column label="微信扫码" align="center">
|
|
|
|
|
- <el-table-column label="新增成功" align="center">
|
|
|
|
|
- <el-table-column
|
|
|
|
|
- prop="num_into_game,num_start_game"
|
|
|
|
|
- label="成功率"
|
|
|
|
|
- align="center"
|
|
|
|
|
- sortable
|
|
|
|
|
- :sort-method="sortBySuccess3"
|
|
|
|
|
- >
|
|
|
|
|
- <template #default="scope">
|
|
|
|
|
- {{ scope.row.num_start_script }}
|
|
|
|
|
- <el-divider style="margin: 0 5px" direction="vertical" />{{
|
|
|
|
|
- scope.row.num_into_game
|
|
|
|
|
- }}
|
|
|
|
|
- <el-divider style="margin: 0" />
|
|
|
|
|
- {{ Math.round(scope.row.rate3 * 10000) / 100 + "%" }}
|
|
|
|
|
- </template>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- </el-table-column>
|
|
|
|
|
- </el-table-column> -->
|
|
|
|
|
- <!-- <el-table-column
|
|
|
|
|
|
|
+ <el-table-column
|
|
|
fixed="right"
|
|
fixed="right"
|
|
|
label="操作"
|
|
label="操作"
|
|
|
- width="60"
|
|
|
|
|
|
|
+ width="80"
|
|
|
align="center"
|
|
align="center"
|
|
|
header-align="center"
|
|
header-align="center"
|
|
|
>
|
|
>
|
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
|
<el-button
|
|
<el-button
|
|
|
- size="mini"
|
|
|
|
|
|
|
+ size="small"
|
|
|
type="primary"
|
|
type="primary"
|
|
|
plain
|
|
plain
|
|
|
@click="showSevenTab(scope.row)"
|
|
@click="showSevenTab(scope.row)"
|
|
|
- >7天</el-button
|
|
|
|
|
|
|
+ >7日</el-button
|
|
|
>
|
|
>
|
|
|
</template>
|
|
</template>
|
|
|
- </el-table-column> -->
|
|
|
|
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
|
<div class="gva-pagination">
|
|
<div class="gva-pagination">
|
|
|
<el-pagination
|
|
<el-pagination
|
|
@@ -330,6 +310,211 @@
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <el-dialog
|
|
|
|
|
+ :title="title"
|
|
|
|
|
+ v-model="dialogVisible"
|
|
|
|
|
+ :center="true"
|
|
|
|
|
+ :close-on-click-modal="false"
|
|
|
|
|
+ :close-on-press-escape="true"
|
|
|
|
|
+ width="80%"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-table
|
|
|
|
|
+ :data="sevenDataList"
|
|
|
|
|
+ border
|
|
|
|
|
+ style="width: 100%"
|
|
|
|
|
+ max-height="800"
|
|
|
|
|
+ v-loading="loading2"
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="new_date"
|
|
|
|
|
+ label="日期"
|
|
|
|
|
+ min-width="80"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column label="留存账号" align="center">
|
|
|
|
|
+ <el-table-column prop="num_could_pay" align="center" label="能付费">
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ {{ scope.row.num_account_lc }}
|
|
|
|
|
+ <el-divider style="margin: 0" />
|
|
|
|
|
+ {{ scope.row.num_could_pay }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_frozen"
|
|
|
|
|
+ label="封号数"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column prop="new_target" label="目标" align="center">
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="new_target"
|
|
|
|
|
+ label="新增"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="retained_target"
|
|
|
|
|
+ label="留存"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="pay_target"
|
|
|
|
|
+ label="付费"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_pull_account"
|
|
|
|
|
+ label="下发账号"
|
|
|
|
|
+ min-width="70"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_start_script"
|
|
|
|
|
+ label="脚本启动"
|
|
|
|
|
+ min-width="70"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_start_simulator"
|
|
|
|
|
+ label="模拟器启动"
|
|
|
|
|
+ min-width="80"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_ip"
|
|
|
|
|
+ label="查询IP"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_start_game"
|
|
|
|
|
+ label="启动游戏"
|
|
|
|
|
+ min-width="70"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_login_success"
|
|
|
|
|
+ label="账号登录"
|
|
|
|
|
+ min-width="70"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_into_game"
|
|
|
|
|
+ label="进入游戏"
|
|
|
|
|
+ min-width="70"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column label="完成" align="center">
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_new_success"
|
|
|
|
|
+ label="新增"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_lc_success"
|
|
|
|
|
+ label="留存"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_pay_success"
|
|
|
|
|
+ label="付费"
|
|
|
|
|
+ min-width="60"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="订单数" align="center">
|
|
|
|
|
+ <el-table-column label="付费成功" align="center">
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_order_pay,num_pay"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ label="成功率"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ {{ scope.row.step6 }}
|
|
|
|
|
+ <el-divider style="margin: 0" />
|
|
|
|
|
+ {{ scope.row.rate_pay_success }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="脚本启动" align="center">
|
|
|
|
|
+ <el-table-column label="进入游戏" align="center">
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_into_game,num_start_game"
|
|
|
|
|
+ label="成功率"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ {{ scope.row.num_start_script }}
|
|
|
|
|
+ <el-divider style="margin: 0 5px" direction="vertical" />{{
|
|
|
|
|
+ scope.row.num_into_game
|
|
|
|
|
+ }}
|
|
|
|
|
+ <el-divider style="margin: 0" />
|
|
|
|
|
+ {{ Math.round(scope.row.rate3 * 10000) / 100 + "%" }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="下发账号" align="center">
|
|
|
|
|
+ <el-table-column label="脚本启动" align="center">
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_pull_account,num_start_script"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ label="成功率"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ {{ scope.row.step2 }}
|
|
|
|
|
+ <el-divider style="margin: 0" />
|
|
|
|
|
+ {{ Math.round(scope.row.rate2 * 10000) / 100 + "%" }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="脚本启动" align="center">
|
|
|
|
|
+ <el-table-column label="活跃成功" align="center">
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_start_script,num_active"
|
|
|
|
|
+ label="成功率"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ {{ scope.row.num_start_script }}
|
|
|
|
|
+ <el-divider style="margin: 0 5px" direction="vertical" />{{
|
|
|
|
|
+ scope.row.num_active
|
|
|
|
|
+ }}
|
|
|
|
|
+ <el-divider style="margin: 0" />
|
|
|
|
|
+ {{ Math.round(scope.row.rate4 * 10000) / 100 + "%" }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ <el-table-column label="下发付费" align="center">
|
|
|
|
|
+ <el-table-column label="付费成功" align="center">
|
|
|
|
|
+ <el-table-column
|
|
|
|
|
+ prop="num_start_script,num_new_success,num_lc_success"
|
|
|
|
|
+ label="成功率"
|
|
|
|
|
+ align="center"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #default="scope">
|
|
|
|
|
+ {{ scope.row.num_pull_pay }}
|
|
|
|
|
+ <el-divider style="margin: 0 5px" direction="vertical" />{{
|
|
|
|
|
+ scope.row.num_pay_success
|
|
|
|
|
+ }}
|
|
|
|
|
+ <el-divider style="margin: 0" />
|
|
|
|
|
+ {{ Math.round(scope.row.rate5 * 10000) / 100 + "%" }}
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table-column>
|
|
|
|
|
+ </el-table>
|
|
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -352,11 +537,15 @@ const page = ref(1);
|
|
|
const total = ref(0);
|
|
const total = ref(0);
|
|
|
const pageSize = ref(100);
|
|
const pageSize = ref(100);
|
|
|
const tableData = ref([]);
|
|
const tableData = ref([]);
|
|
|
-let spanArr = [];
|
|
|
|
|
const searchInfo = ref({});
|
|
const searchInfo = ref({});
|
|
|
const userStore = useUserStore();
|
|
const userStore = useUserStore();
|
|
|
const loading = ref(false);
|
|
const loading = ref(false);
|
|
|
|
|
+const loading2 = ref(false);
|
|
|
|
|
+const searchInfo2 = ref({});
|
|
|
|
|
+const dialogVisible = ref(false);
|
|
|
const directorOptions = ref();
|
|
const directorOptions = ref();
|
|
|
|
|
+const title = ref("");
|
|
|
|
|
+const sevenDataList = ref([]);
|
|
|
|
|
|
|
|
const disabledDate = (time) => {
|
|
const disabledDate = (time) => {
|
|
|
return time.getTime() > Date.now();
|
|
return time.getTime() > Date.now();
|
|
@@ -435,7 +624,6 @@ const sortChange = ({ prop, order }) => {
|
|
|
|
|
|
|
|
// 搜索
|
|
// 搜索
|
|
|
const onSubmit = () => {
|
|
const onSubmit = () => {
|
|
|
- loading.value = true;
|
|
|
|
|
page.value = 1;
|
|
page.value = 1;
|
|
|
pageSize.value = 100;
|
|
pageSize.value = 100;
|
|
|
|
|
|
|
@@ -465,16 +653,16 @@ const onSubmit = () => {
|
|
|
// console.log(searchInfo.value);
|
|
// console.log(searchInfo.value);
|
|
|
|
|
|
|
|
getTableData();
|
|
getTableData();
|
|
|
- loading.value = false;
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 查询
|
|
// 查询
|
|
|
const getTableData = async () => {
|
|
const getTableData = async () => {
|
|
|
- ElMessage({
|
|
|
|
|
- message: "查询中,请稍等",
|
|
|
|
|
- type: "success",
|
|
|
|
|
- offset: 50,
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ loading.value = true;
|
|
|
|
|
+ // ElMessage({
|
|
|
|
|
+ // message: "查询中,请稍等",
|
|
|
|
|
+ // type: "success",
|
|
|
|
|
+ // offset: 50,
|
|
|
|
|
+ // });
|
|
|
const table = await queryAbnormalRate({
|
|
const table = await queryAbnormalRate({
|
|
|
page: page.value,
|
|
page: page.value,
|
|
|
pageSize: pageSize.value,
|
|
pageSize: pageSize.value,
|
|
@@ -541,8 +729,91 @@ const getTableData = async () => {
|
|
|
page.value = table.data.page;
|
|
page.value = table.data.page;
|
|
|
pageSize.value = table.data.pageSize;
|
|
pageSize.value = table.data.pageSize;
|
|
|
}
|
|
}
|
|
|
|
|
+ loading.value = false;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+//查询七天数据
|
|
|
|
|
+async function showSevenTab(row) {
|
|
|
|
|
+ // ElMessage({
|
|
|
|
|
+ // message: "查询中,请稍等",
|
|
|
|
|
+ // type: "warning",
|
|
|
|
|
+ // offset: 50,
|
|
|
|
|
+ // });
|
|
|
|
|
+ dialogVisible.value = true;
|
|
|
|
|
+ loading2.value = true;
|
|
|
|
|
+ searchInfo2.value.task_id = Number(row.task_id);
|
|
|
|
|
+ searchInfo2.value.date = [
|
|
|
|
|
+ dayjs(row.new_date).subtract(7, "day").format("YYYY-MM-DD"),
|
|
|
|
|
+ dayjs(row.new_date).subtract(1, "day").format("YYYY-MM-DD"),
|
|
|
|
|
+ ];
|
|
|
|
|
+ // console.log(searchInfo2.value);
|
|
|
|
|
+ title.value = row.task_id + " | " + row.task_name + " | " + row.director_name;
|
|
|
|
|
+ const table = await queryAbnormalRate({
|
|
|
|
|
+ page: 1,
|
|
|
|
|
+ pageSize: 10,
|
|
|
|
|
+ ...searchInfo2.value,
|
|
|
|
|
+ });
|
|
|
|
|
+ // console.log(table);
|
|
|
|
|
+ if (table.code === 0) {
|
|
|
|
|
+ sevenDataList.value = [];
|
|
|
|
|
+ const data = table.data.list;
|
|
|
|
|
+ if (data) {
|
|
|
|
|
+ data.forEach((e) => {
|
|
|
|
|
+ let rate2 = 0;
|
|
|
|
|
+ let rate3 = 0;
|
|
|
|
|
+ let rate4 = 0;
|
|
|
|
|
+ let rate5 = 0;
|
|
|
|
|
+ if (e.num_pull_account != 0) {
|
|
|
|
|
+ rate2 = e.num_start_script / e.num_pull_account;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (e.num_start_script != 0) {
|
|
|
|
|
+ rate3 = e.num_into_game / e.num_start_script;
|
|
|
|
|
+ rate4 = (e.num_new_success + e.num_lc_success) / e.num_start_script;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (e.num_pull_pay != 0) {
|
|
|
|
|
+ rate5 = e.num_pay_success / e.num_pull_pay;
|
|
|
|
|
+ }
|
|
|
|
|
+ let obj1 = {
|
|
|
|
|
+ task_id: e.task_id,
|
|
|
|
|
+ task_name: e.task_name,
|
|
|
|
|
+ director_name: e.director_name,
|
|
|
|
|
+ new_date: e.new_date,
|
|
|
|
|
+ num_frozen: e.num_frozen,
|
|
|
|
|
+ num_pull_account: e.num_pull_account,
|
|
|
|
|
+ num_start_simulator: e.num_start_simulator,
|
|
|
|
|
+ num_ip: e.num_ip,
|
|
|
|
|
+ num_start_script: e.num_start_script,
|
|
|
|
|
+ num_start_game: e.num_start_game,
|
|
|
|
|
+ num_login_success: e.num_login_success,
|
|
|
|
|
+ num_into_game: e.num_into_game,
|
|
|
|
|
+ num_new_success: e.num_new_success,
|
|
|
|
|
+ num_lc_success: e.num_lc_success,
|
|
|
|
|
+ num_pay_success: e.num_pay_success,
|
|
|
|
|
+ rate_all_step: Math.round(e.rate_all_step * 10000) / 100 + "%",
|
|
|
|
|
+ step2: e.num_pull_account + " | " + e.num_start_script,
|
|
|
|
|
+ num_active: e.num_new_success + e.num_lc_success,
|
|
|
|
|
+ num_pull_pay: e.num_pull_pay,
|
|
|
|
|
+ num_account_lc: e.num_account_lc,
|
|
|
|
|
+ num_could_pay: e.num_could_pay,
|
|
|
|
|
+ num_order_pay: e.num_order_pay,
|
|
|
|
|
+ num_pay: e.num_pay,
|
|
|
|
|
+ step6: e.num_order_pay + " | " + e.num_pay,
|
|
|
|
|
+ rate_pay_success: e.rate_pay_success,
|
|
|
|
|
+ rate2: rate2,
|
|
|
|
|
+ rate3: rate3,
|
|
|
|
|
+ rate4: rate4,
|
|
|
|
|
+ rate5: rate5,
|
|
|
|
|
+ new_target: e.new_target,
|
|
|
|
|
+ pay_target: e.pay_target,
|
|
|
|
|
+ retained_target: e.retained_target,
|
|
|
|
|
+ };
|
|
|
|
|
+ sevenDataList.value.push(obj1);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ loading2.value = false;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
getTableData();
|
|
getTableData();
|
|
|
|
|
|
|
|
function sortBySuccess1(obj1, obj2) {
|
|
function sortBySuccess1(obj1, obj2) {
|