index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. <template>
  2. <div class="SilkRoadShanShiPin">
  3. <van-image :width="topWidth" :height="topWidth / 1.7" :src="siluchunwanJpg" />
  4. <br />
  5. <van-cell-group inset>
  6. <van-nav-bar title="活动介绍" />
  7. <p style="
  8. text-indent: 2em;
  9. padding: 8px 8px 0 8px;
  10. text-align: justify;
  11. line-height: 1.5em;
  12. font-size: 16px;
  13. color: #a73832;
  14. ">
  15. 《丝路嘉年华·丝路春晚》是陕西广电融媒体集团着力打造的融媒晚会品牌,通过对丝路IP的挖掘、锤炼、凝聚、延伸,以多样的艺术形式展开创作。
  16. </p>
  17. <p style="
  18. text-indent: 2em;
  19. padding: 0 8px 8px 8px;
  20. text-align: justify;
  21. line-height: 1.5em;
  22. font-size: 16px;
  23. color: #a73832;
  24. ">
  25. 依托《丝路嘉年华·丝路春晚》IP强大社会影响力和关注度,陕西广电融媒体集团(台)创新中心西部网与经营中心丝路春晚导演组共同打造丝路春晚系列IP——《我要上丝路春晚》主题活动,开启直通丝路春晚的线上评选通道,邀请社会多家艺术机构、民间社团,以及才华出众的个人参与,征集优秀节目作品进行网络报名评选,最终人气排名前三的个人、团体将直通丝路嘉年华和丝路春晚晚会录制现场。
  26. </p>
  27. </van-cell-group>
  28. <br />
  29. <van-form @submit="onSubmit">
  30. <van-cell-group inset>
  31. <van-nav-bar title="报名信息" />
  32. <van-field required v-model="from.name" label="选手姓名" placeholder="请输入用户名"
  33. :rules="[{ validator: isString, message: '请输入正确内容' }]" />
  34. <van-field name="radio" label="参赛方式" required :rules="[{ validator: isString, message: '请输入正确内容' }]">
  35. <template #input>
  36. <van-radio-group v-model="from.type" direction="horizontal">
  37. <van-radio name="团队" checked-color="#ff2c2c">团队</van-radio>
  38. <van-radio name="个人" checked-color="#ff2c2c">个人</van-radio>
  39. </van-radio-group>
  40. </template>
  41. </van-field>
  42. <van-field required v-model="from.tel" label="联系方式" type="tel" placeholder="请输入手机号"
  43. :rules="[{ validator: isNumber, message: '请输入正确内容' }]" />
  44. <van-field v-model="from.introduction" rows="2" autosize label="作品介绍" type="textarea" maxlength="50"
  45. placeholder="请输入简介" show-word-limit />
  46. <van-field placeholder="上传作品" required label="上传作品"
  47. :rules="[{ validator: isFile, message: '请输入正确内容' }]">
  48. <template #input>
  49. <van-uploader accept="video/*" v-model="from.file" :max-count="1" :max-size="524288000"
  50. @oversize="filesize" result-type="file">
  51. <template #preview-cover>
  52. <van-icon color="#fff" size="40" @click="previewClick" name="play-circle-o play" />
  53. </template>
  54. </van-uploader>
  55. <p style="font-size: 12px; color: #666">
  56. 支持上传MP4、MOV格式的视频,视频大小500M以内
  57. </p>
  58. </template>
  59. </van-field>
  60. <div style="padding: 5px">
  61. <van-button block type="danger" native-type="submit">
  62. 我要报名
  63. </van-button>
  64. </div>
  65. </van-cell-group>
  66. </van-form>
  67. <br />
  68. <div class="guize" @click="showGuize">活动规则</div>
  69. <div class="guize" style="top:5em" @click="showRongyu">荣誉奖励</div>
  70. <div class="Preview" :style="preview !== '' ? '' : 'z-index: -1;opacity: 0'">
  71. <van-icon name="close" color="#fff" size="30" class="close" @click="closePreview" />
  72. <video ref="previewVideo" controls :src="preview"></video>
  73. </div>
  74. </div>
  75. </template>
  76. <script setup>
  77. // import { onMounted, reactive } from "vue";
  78. import {
  79. ref,
  80. reactive
  81. } from "vue";
  82. import {
  83. showToast,
  84. showDialog
  85. } from "vant";
  86. import axios from "axios";
  87. import siluchunwanJpg from "@/assets/img/siluchunwan.jpg";
  88. /**
  89. * window.$originData.orginParames.title 页面标题
  90. * window.$originData.orginParames.parameters 固定参数值
  91. * window.$originData.urlParames url参数
  92. */
  93. const topWidth = ref(window.$originData.orginParames.availWidth);
  94. const preview = ref("");
  95. const previewVideo = ref(null);
  96. const shanshipin = window.$shanshipin || {};
  97. const from = reactive({
  98. name: shanshipin.UserName || "",
  99. tel:
  100. !isNaN(shanshipin.Phone) && Number(shanshipin.Phone) ?
  101. shanshipin.Phone : "",
  102. introduction: "",
  103. type: "个人",
  104. file: [],
  105. });
  106. const filesize = () => showToast("超出文件大小限制");
  107. const previewClick = () => {
  108. let getUrl = null;
  109. const file = from.file[0].file;
  110. if (window.createObjectURL != undefined) {
  111. //basic
  112. getUrl = window.createObjectURL(file);
  113. } else if (window.URL != undefined) {
  114. //window.URL 标准定义
  115. getUrl = window.URL.createObjectURL(file);
  116. } else if (window.webkitURL != undefined) {
  117. //window.webkitURL是webkit的内核
  118. //webkit or chrome
  119. getUrl = window.webkitURL.createObjectURL(file);
  120. }
  121. preview.value = getUrl;
  122. previewVideo.value.play();
  123. };
  124. const closePreview = () => {
  125. preview.value = "";
  126. };
  127. const showRongyu = () => {
  128. showDialog({
  129. title: "荣誉奖励",
  130. messageAlign: "left",
  131. confirmButtonText: "关闭",
  132. message: () => ( <
  133. div class = "art" >
  134. <p>1)荣誉</p>
  135. <
  136. p > 1、 网络投票人气第一的团体、个人直通丝路春晚晚会,在丝路春晚晚会中露出(陕西卫视、五大洲电视台播出),具体呈现形式由导演组与入选作品的团体、个人分别充分沟通,优化包装作品。 < /p> <
  137. p > 2、 网络投票第二、三名的团体、个人将直通丝路嘉年华,在丝路嘉年华露出(陕西卫视); < /p> <
  138. p > 3、 直通丝路嘉年华和丝路春晚的团体、个人在录制结束后,将获得闪视频独家个人专访和宣传形象照; < /p> <
  139. p >
  140. 4、 网络投票人气前十的团体、个人将获得由丝路春晚导演组颁发的荣誉证书。 <
  141. /p>
  142. <br />
  143. <p>2)奖励</p>
  144. <p>网络投票人气第一团体:奖金3000元</p>
  145. <p>网络投票人气第二团体:奖金2000元</p>
  146. <p>网络投票人气第三团体:奖金1000元</p>
  147. <p>网络投票人气第一个人:奖金1000元</p>
  148. <p>网络投票人气第二个人:奖金600元</p>
  149. <p>网络投票人气第三个人:奖金300元</p>
  150. </div>
  151. ),
  152. });
  153. }
  154. const showGuize = () => {
  155. showDialog({
  156. title: "活动规则",
  157. messageAlign: "left",
  158. confirmButtonText: "关闭",
  159. message: () => ( <
  160. div class = "art" >
  161. <
  162. p > 1、 活动主题:“ 大美中国· 多彩丝路”《 2023 丝路嘉年华· 丝路春晚》 之我要上丝路春晚。 < /p> <
  163. p > 2、 活动时间: 即日起至21日海选报名 + 作品征集, 12 月21日 - 22 日线上海选, 12 月23 -
  164. 26 日网络作品投票打榜, 12 月26日投票通道关闭, 公布排名, 1 月3日 - 7 日丝路嘉年华和丝路春晚晚会录制。 < /p> <
  165. p > 3、 征集范围: 各群体组织及社会民间文艺团体、 凡有才艺者, 且创作内容符合节目要求的团体和个人。 < /p> <
  166. p >
  167. 4、 内容形式: 节目内容以“ 大美中国· 多彩丝路” 为主题, 健康、 积极向上, 具备中国文化特色的创意表演, 节目形式包括但不限于情景歌舞、 演唱、 小品、 相声等, 以及其他适合舞台表演和电视呈现的艺术形式。 <
  168. /p> <
  169. p >
  170. 5、 上传规则: 参与报名的团体、 个人将录制好的高清视频作品上传至闪视频APP, 个人节目不超过3分钟, 团体节目不超过5分钟。 <
  171. /p> <
  172. p >
  173. 6、 评比规则: 表演功底为基本要求, 结合唱跳和语言表现, 节目组将邀请《 丝路嘉年华· 丝路春晚》 导演及知名音乐人、 舞蹈家、 主持人等对海选报名的作品进行线上直播打分评比, 通过海选的作品将进入网络投票打榜通道, 最终获得人气前三名的团体和个人, 将获得直通丝路嘉年华和丝路春晚。 <
  174. /p> < /
  175. div >
  176. ),
  177. });
  178. };
  179. const isString = v => {
  180. return !!v && typeof v == "string" && isNaN(v);
  181. };
  182. const isFile = () => {
  183. return from.file && from.file.length;
  184. };
  185. const isNumber = () => {
  186. console.log(from)
  187. return /1[0-9]{10}/g.test(from.tel);
  188. }
  189. window.appLoginSuccess = () => {
  190. console.log("登录");
  191. };
  192. const onSubmit = () => {
  193. if (!isFile) showToast("请上传作品");
  194. const oriData = new FormData();
  195. oriData.append("operateId", "2");
  196. oriData.append("name", from.name);
  197. oriData.append("phone", from.tel);
  198. oriData.append("isOnline", true);
  199. oriData.append("introduction", from.introduction);
  200. oriData.append("type", from.type);
  201. oriData.append("file", from.file[0].file);
  202. axios({
  203. method: "post",
  204. url: "https://topic.smcic.net/operate/enroll/store",
  205. headers: {
  206. "Content-Type": "multipart/form-data",
  207. },
  208. data: oriData,
  209. })
  210. .then(r => {
  211. console.log(r);
  212. showDialog({
  213. title: "报名成功",
  214. messageAlign: "left",
  215. confirmButtonText: "关闭",
  216. message: () => ( <
  217. img src = "https://cxzx.smcic.net/topic/tool/img/er1.jpg"
  218. style = "width: 100%" /
  219. >
  220. ),
  221. });
  222. })
  223. .catch(() => {
  224. showToast("报名失败");
  225. });
  226. };
  227. </script>
  228. <style>
  229. .SilkRoadShanShiPin {
  230. width: 100vw;
  231. min-height: 100vh;
  232. background-color: #a05954;
  233. font-weight: 400;
  234. }
  235. .SilkRoadShanShiPin .art {
  236. padding: 8px 8px 0 8px;
  237. text-align: justify;
  238. line-height: 1.5em;
  239. font-size: 16px;
  240. }
  241. .SilkRoadShanShiPin .van-hairline--bottom:after {
  242. border-bottom-width: 0px;
  243. }
  244. .SilkRoadShanShiPin .van-nav-bar__content {
  245. background-image: url("../../assets/img/title.png");
  246. background-size: 100% 100%;
  247. background-repeat: no-repeat;
  248. overflow: hidden;
  249. }
  250. .SilkRoadShanShiPin .van-nav-bar__title {
  251. color: #f63634;
  252. font-size: 23px;
  253. }
  254. .SilkRoadShanShiPin .van-button__text {
  255. font-size: 15px;
  256. font-weight: 400;
  257. }
  258. .SilkRoadShanShiPin .van-uploader__preview-cover {
  259. background-color: #000;
  260. }
  261. .van-uploader__preview-cover video {
  262. width: 100%;
  263. height: 100%;
  264. }
  265. .SilkRoadShanShiPin .play {
  266. position: relative;
  267. top: 50%;
  268. left: 50%;
  269. transform: translate(-50%, -50%);
  270. }
  271. .SilkRoadShanShiPin .Preview {
  272. position: fixed;
  273. top: 0;
  274. left: 0;
  275. right: 0;
  276. bottom: 0;
  277. background-color: rgba(0, 0, 0, 0.3);
  278. z-index: 10;
  279. }
  280. .SilkRoadShanShiPin .Preview video {
  281. position: absolute;
  282. left: 0;
  283. top: 50%;
  284. transform: translateY(-50%);
  285. width: 100vw;
  286. max-width: 100vh;
  287. background: #000;
  288. }
  289. .SilkRoadShanShiPin .Preview .close {
  290. position: absolute;
  291. right: 5px;
  292. top: 5px;
  293. }
  294. .SilkRoadShanShiPin .guize {
  295. background-color: #ff2c2c;
  296. position: fixed;
  297. right: 0;
  298. top: 2em;
  299. color: #fff;
  300. font-weight: 400;
  301. font-size: 16px;
  302. padding: 3px 5px 3px 15px;
  303. border-top-left-radius: 1em;
  304. border-bottom-left-radius: 1em;
  305. z-index: 11;
  306. }
  307. </style>