|
@@ -62,25 +62,83 @@
|
|
</div>
|
|
</div>
|
|
<Shanshipin v-if="!config.isShanShiPin" :color="background" />
|
|
<Shanshipin v-if="!config.isShanShiPin" :color="background" />
|
|
<!-- 投票框 -->
|
|
<!-- 投票框 -->
|
|
- <van-dialog v-model:show="showPaihang" confirm-button-text="关闭">
|
|
|
|
|
|
+ <van-dialog
|
|
|
|
+ :width="screenWidth"
|
|
|
|
+ v-model:show="showPaihang"
|
|
|
|
+ confirm-button-text="关闭"
|
|
|
|
+ >
|
|
<div style="height: 50vh">
|
|
<div style="height: 50vh">
|
|
<van-tabs :color="theme">
|
|
<van-tabs :color="theme">
|
|
- <van-tab :title="key" v-for="(v, key) in rankList" :key="key">
|
|
|
|
|
|
+ <van-tab :title="_sort[key]" v-for="(v, key) in rankList" :key="key">
|
|
<div class="SilkList">
|
|
<div class="SilkList">
|
|
<van-cell-group inset>
|
|
<van-cell-group inset>
|
|
- <van-cell title="名称" value="投票量"></van-cell>
|
|
|
|
- <van-row v-for="item in v" :key="item.id + 'team'">
|
|
|
|
- <van-col span="16"
|
|
|
|
- ><p class="text van-ellipsis--l2" v-text="item.name"></p
|
|
|
|
- ></van-col>
|
|
|
|
- <van-col span="8"
|
|
|
|
- ><p
|
|
|
|
- class="text"
|
|
|
|
- style="text-align: right"
|
|
|
|
- v-text="formmate(item.votes)"
|
|
|
|
- ></p
|
|
|
|
- ></van-col>
|
|
|
|
|
|
+ <van-row>
|
|
|
|
+ <van-col span="7">
|
|
|
|
+ <!-- 第二名 -->
|
|
|
|
+ <br />
|
|
|
|
+ <br />
|
|
|
|
+ <img :src="v[1].cover" style="width: 100%" />
|
|
|
|
+ <div class="van-ellipsis" style="text-align: center">
|
|
|
|
+ {{ v[1].name }}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="van-elipsis" style="text-align: center">
|
|
|
|
+ {{ formmate(v[1].votes) }}票
|
|
|
|
+ </div>
|
|
|
|
+ </van-col>
|
|
|
|
+ <van-col span="10">
|
|
|
|
+ <!-- 第一名 -->
|
|
|
|
+ <img :src="v[0].cover" style="width: 100%" />
|
|
|
|
+ <div class="van-ellipsis" style="text-align: center">
|
|
|
|
+ {{ v[0].name }}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="van-elipsis" style="text-align: center">
|
|
|
|
+ {{ formmate(v[0].votes) }}票
|
|
|
|
+ </div>
|
|
|
|
+ </van-col>
|
|
|
|
+ <van-col span="7">
|
|
|
|
+ <!-- 第三名 -->
|
|
|
|
+ <br />
|
|
|
|
+ <br />
|
|
|
|
+ <img :src="v[2].cover" style="width: 100%" />
|
|
|
|
+ <div class="van-ellipsis" style="text-align: center">
|
|
|
|
+ {{ v[2].name }}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="van-elipsis" style="text-align: center">
|
|
|
|
+ {{ formmate(v[2].votes) }}票
|
|
|
|
+ </div>
|
|
|
|
+ </van-col>
|
|
|
|
+ </van-row>
|
|
|
|
+ <van-row>
|
|
|
|
+ <van-col span="4" class="text" style="padding: 10px 0 0 0">
|
|
|
|
+ 排名
|
|
|
|
+ </van-col>
|
|
|
|
+ <van-col span="14" class="text" style="padding: 10px 0 0 0">
|
|
|
|
+ 名称
|
|
|
|
+ </van-col>
|
|
|
|
+ <van-col
|
|
|
|
+ span="6"
|
|
|
|
+ class="text"
|
|
|
|
+ style="padding: 10px 0 0 0; text-align: right"
|
|
|
|
+ >
|
|
|
|
+ 投票量
|
|
|
|
+ </van-col>
|
|
</van-row>
|
|
</van-row>
|
|
|
|
+ <van-divider />
|
|
|
|
+ <template v-for="(item, i) in v" :key="item.id + 'team'">
|
|
|
|
+ <van-row v-if="i > 2">
|
|
|
|
+ <van-col span="4" class="text"> {{ i + 1 }} </van-col>
|
|
|
|
+ <van-col span="14"
|
|
|
|
+ ><p class="text van-ellipsis--l2" v-text="item.name"></p
|
|
|
|
+ ></van-col>
|
|
|
|
+ <van-col span="6"
|
|
|
|
+ ><p
|
|
|
|
+ class="text"
|
|
|
|
+ style="text-align: right"
|
|
|
|
+ v-text="formmate(item.votes)"
|
|
|
|
+ ></p
|
|
|
|
+ ></van-col>
|
|
|
|
+ </van-row>
|
|
|
|
+ </template>
|
|
</van-cell-group>
|
|
</van-cell-group>
|
|
</div>
|
|
</div>
|
|
</van-tab>
|
|
</van-tab>
|
|
@@ -129,6 +187,7 @@
|
|
confirm-button-text="投票"
|
|
confirm-button-text="投票"
|
|
cancel-button-text="为他拉票"
|
|
cancel-button-text="为他拉票"
|
|
:show-cancel-button="true"
|
|
:show-cancel-button="true"
|
|
|
|
+ close-on-click-overlay
|
|
@close="close"
|
|
@close="close"
|
|
@cancel="cancel"
|
|
@cancel="cancel"
|
|
@confirm="shear_page"
|
|
@confirm="shear_page"
|
|
@@ -202,7 +261,7 @@ import {
|
|
getSendVerifyCode,
|
|
getSendVerifyCode,
|
|
verifyCode,
|
|
verifyCode,
|
|
} from '@/api/SilkRoadSpringGala.js';
|
|
} from '@/api/SilkRoadSpringGala.js';
|
|
-import { canvasToImage } from '@/utils/tool.js';
|
|
|
|
|
|
+import { canvasToImage, createDate } from '@/utils/tool.js';
|
|
|
|
|
|
import Shanshipin from '@/components/shanshipin.vue';
|
|
import Shanshipin from '@/components/shanshipin.vue';
|
|
const theme = '#38379f';
|
|
const theme = '#38379f';
|
|
@@ -211,6 +270,7 @@ const w = window.$originData.orginParames.availWidth || 0;
|
|
const operateId = window.$originData.orginParames.operateId;
|
|
const operateId = window.$originData.orginParames.operateId;
|
|
const width = (w - 16) / 2;
|
|
const width = (w - 16) / 2;
|
|
const height = width * 0.57;
|
|
const height = width * 0.57;
|
|
|
|
+const screenWidth = window.screen.width * 0.9;
|
|
const hxrDialog = ref(false);
|
|
const hxrDialog = ref(false);
|
|
const showPaihang = ref(false);
|
|
const showPaihang = ref(false);
|
|
const showLogin = ref(false);
|
|
const showLogin = ref(false);
|
|
@@ -238,6 +298,12 @@ const login = reactive({
|
|
phone,
|
|
phone,
|
|
code: '',
|
|
code: '',
|
|
});
|
|
});
|
|
|
|
+
|
|
|
|
+let image = null;
|
|
|
|
+let clod1 = null;
|
|
|
|
+let clod2 = null;
|
|
|
|
+let clod3 = null;
|
|
|
|
+
|
|
const getList = call => {
|
|
const getList = call => {
|
|
getEnrollList({
|
|
getEnrollList({
|
|
operateId,
|
|
operateId,
|
|
@@ -279,7 +345,11 @@ const getList = call => {
|
|
call && call();
|
|
call && call();
|
|
});
|
|
});
|
|
};
|
|
};
|
|
-onMounted(() => {
|
|
|
|
|
|
+onMounted(async () => {
|
|
|
|
+ image = await createDate('https://cxzx.smcic.net/topic/tool/img/0.jpg');
|
|
|
|
+ clod1 = await createDate('https://cxzx.smcic.net/topic/tool/img/glod_1.png');
|
|
|
|
+ clod2 = await createDate('https://cxzx.smcic.net/topic/tool/img/glod_2.png');
|
|
|
|
+ clod3 = await createDate('https://cxzx.smcic.net/topic/tool/img/glod_3.png');
|
|
getList();
|
|
getList();
|
|
});
|
|
});
|
|
|
|
|
|
@@ -294,16 +364,40 @@ const getIndex = key => {
|
|
return sort_list[key] || 0;
|
|
return sort_list[key] || 0;
|
|
};
|
|
};
|
|
|
|
|
|
-const getRankList = Call => {
|
|
|
|
|
|
+const getRankList = async Call => {
|
|
getEnrollRank({
|
|
getEnrollRank({
|
|
operateId,
|
|
operateId,
|
|
- }).then(r => {
|
|
|
|
|
|
+ }).then(async r => {
|
|
const l = r || [];
|
|
const l = r || [];
|
|
- const obj = {};
|
|
|
|
|
|
+ const obj = [];
|
|
|
|
+ const w = 300 * window.devicePixelRatio;
|
|
for (let i = 0; i < l.length; i++) {
|
|
for (let i = 0; i < l.length; i++) {
|
|
const v = l[i];
|
|
const v = l[i];
|
|
- if (obj[v.type]) obj[v.type].push(v);
|
|
|
|
- else obj[v.type] = [v];
|
|
|
|
|
|
+ const num = getIndex(v.type);
|
|
|
|
+ const num_index = (obj[num] || []).length;
|
|
|
|
+ if (num_index < 3) {
|
|
|
|
+ const layers = {
|
|
|
|
+ list: [
|
|
|
|
+ {
|
|
|
|
+ type: 'redius_image',
|
|
|
|
+ src0: create_url_image(v.workTitle),
|
|
|
|
+ src1: num_index == 0 ? clod1 : num_index == 1 ? clod2 : clod3,
|
|
|
|
+ width: w,
|
|
|
|
+ height: w,
|
|
|
|
+ x: 20 * window.devicePixelRatio,
|
|
|
|
+ y: 155 * window.devicePixelRatio,
|
|
|
|
+ arc_x: 20 * window.devicePixelRatio + w / 2,
|
|
|
|
+ arc_y: 155 * window.devicePixelRatio + w / 2,
|
|
|
|
+ },
|
|
|
|
+ ],
|
|
|
|
+ width: 474 * window.devicePixelRatio,
|
|
|
|
+ height: 474 * window.devicePixelRatio,
|
|
|
|
+ };
|
|
|
|
+ let cover = await canvasToImage(layers);
|
|
|
|
+ if (cover) v.cover = cover.image;
|
|
|
|
+ }
|
|
|
|
+ if (obj[num]) obj[num].push(v);
|
|
|
|
+ else obj[num] = [v];
|
|
}
|
|
}
|
|
rankList.value = obj;
|
|
rankList.value = obj;
|
|
Call && Call();
|
|
Call && Call();
|
|
@@ -356,7 +450,7 @@ const cancel = async () => {
|
|
list: [
|
|
list: [
|
|
{
|
|
{
|
|
type: 'image',
|
|
type: 'image',
|
|
- src: 'https://cxzx.smcic.net/topic/tool/img/0.jpg',
|
|
|
|
|
|
+ image,
|
|
width: w,
|
|
width: w,
|
|
height: w,
|
|
height: w,
|
|
x: 0,
|
|
x: 0,
|
|
@@ -522,7 +616,7 @@ const showGuize = () => {
|
|
};
|
|
};
|
|
|
|
|
|
const paiming = () => {
|
|
const paiming = () => {
|
|
- if (!config.isShanShiPin) return showToast('下载闪视频查看投票结果。');
|
|
|
|
|
|
+ // if (!config.isShanShiPin) return showToast('下载闪视频查看投票结果。');
|
|
getRankList(() => {
|
|
getRankList(() => {
|
|
showPaihang.value = true;
|
|
showPaihang.value = true;
|
|
});
|
|
});
|
|
@@ -566,7 +660,7 @@ const close = () => {};
|
|
z-index: 1;
|
|
z-index: 1;
|
|
}
|
|
}
|
|
.text {
|
|
.text {
|
|
- padding: 10px 16px;
|
|
|
|
|
|
+ padding: 0 6px 10px 6px;
|
|
}
|
|
}
|
|
.guize {
|
|
.guize {
|
|
background-color: $color;
|
|
background-color: $color;
|