index.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269
  1. <template>
  2. <view class="home" :class="showGuide?'show_guide':''">
  3. <view>
  4. <view class="guide_box" v-if="showGuide" @click="showGuide = false"></view>
  5. <view class="guide_box flexCC mask" v-if="showAuth"></view>
  6. <view class="home_bg">
  7. <image src="/static/imgs/shop/index_bg.png"></image>
  8. </view>
  9. <view class="home_box">
  10. <view class="home_con">
  11. <view class="shop">
  12. <view class="shop_top">
  13. <view class="flexS" @click="sikpEval">
  14. <image :src="shopInfo.img" class="store_img"></image>
  15. <view>
  16. <view style="font-size:36rpx;font-weight: bold;" v-if="shopInfo.name">
  17. {{ shopInfo.name | getName(18) }}的店铺
  18. </view>
  19. <view class="flexS shop_eval">
  20. <text>店铺评价</text>
  21. <view v-for="(i, idx) in shopInfo.star" :key="idx"><text
  22. class="iconfont iconxingxing" style="color:#FB231F;"></text></view>
  23. <view v-for="(i, index) in star" :key="index"><text
  24. class="iconfont iconxingxing" style="color:#999;"></text></view>
  25. </view>
  26. </view>
  27. </view>
  28. <view @click="skipEdit" class="edit">编辑</view>
  29. </view>
  30. <view class="shop_bottom flexV">
  31. <view @click="skipPage(0)">
  32. <view>{{ dataInfo.order_num || 0 }}</view>
  33. <view>今日销量</view>
  34. </view>
  35. <view style="margin-left: 152rpx;" @click="skipPage(2)">
  36. <view>{{ dataInfo.see_num || 0 }}</view>
  37. <view>今日浏览</view>
  38. </view>
  39. </view>
  40. <view v-if="showPlace" class="sub_btn" @click="skipShare">商品管理及分享</view>
  41. </view>
  42. <view class="handle">
  43. <view class="block_con flexCC" :class="item.id === 6 ? 'block_con_red' : ''"
  44. v-for="item in indexList" :key="item.id">
  45. <view class="block_box flexB" @click="skipDel(item.url)">
  46. <view>
  47. <text class="block_title">{{ item.title }}</text>
  48. <view class="block_intr">{{ item.intr }}</view>
  49. </view>
  50. <image :src="item.icon"
  51. :style="{ width: item.width + 'rpx', height: item.height + 'rpx' }"></image>
  52. <view class="block_num" v-if="item.id == 4 && dataInfo.wait_send_num > 0">
  53. {{ dataInfo.wait_send_num }}
  54. </view>
  55. <view class="block_num" v-if="item.id == 5 && dataInfo.no_auth > 0">
  56. {{ dataInfo.no_auth }}
  57. </view>
  58. </view>
  59. </view>
  60. </view>
  61. <view class="box flexB">
  62. <view class="box_item" @click="skipPage(4)">
  63. <image src="../../static/imgs/shop/bottom1.png" mode=""></image>
  64. <view>联系客服</view>
  65. </view>
  66. <view class="box_item" @click="skip">
  67. <image src="../../static/imgs/shop/bottom2.png" mode=""></image>
  68. <view>争霸赛小程序</view>
  69. </view>
  70. <view class="box_item" @click="skipVideo" :class="showGuide?'show_box':''">
  71. <image src="../../static/imgs/shop/bottom3.png" mode=""></image>
  72. <view>微店教程</view>
  73. </view>
  74. <text class="iconfont iconguanbi" @click="showGuide = false" v-if="showGuide"></text>
  75. <image src="../../static/imgs/shop/shop_guid.png" class="express_img" v-if="showGuide"></image>
  76. </view>
  77. <view class="hint_img">
  78. <image src="../../static/imgs/shop/shop_hint.png" class="shop_hint"></image>
  79. </view>
  80. </view>
  81. </view>
  82. <view class="share_show" v-if="shareShow">
  83. <view class="share_con flexCC">
  84. <text class="iconfont iconguanbi1" @click="shareShow = false"></text>
  85. <view class="canvas">
  86. <canvas canvas-id="canvas" style="width: 100%;height:100%;" id="canvas"><img :src="poster"
  87. class="poster_img" mode="widthFix" @click="preview" /></canvas>
  88. </view>
  89. <view class="save_img">点击图片-长按-发送给朋友</view>
  90. <view class="sub_btn" @click="skip">点击进入争霸赛小程序</view>
  91. </view>
  92. </view>
  93. </view>
  94. </view>
  95. </template>
  96. <script>
  97. import {
  98. getStoreInfo,
  99. shareStore,
  100. getZbsRank
  101. } from '@/apis/shop.js';
  102. import {
  103. wxLogin,
  104. } from '../../apis/login.js';
  105. import getName from '../../filters/index.js';
  106. export default {
  107. data() {
  108. return {
  109. showPlace: true,
  110. searchName: '', //订单查询内容
  111. shareShow: false, //显示海报
  112. canvasWidth: 0, //canvas 宽
  113. canvasHeight: 0, //canvas 高
  114. shopInfo: '', //店铺信息
  115. store: '', //店铺信息
  116. qrImg: '', //二维码图片
  117. poster: '', //海报图片
  118. star: '', //灰色星星个数
  119. state: '', //获取认证状态
  120. signCode: '', //待签约的二维码
  121. dataInfo: '', //数据信息
  122. model: '', //手机型号
  123. indexList: [{
  124. id: 1,
  125. title: '客户',
  126. intr: '客户信息精确管理',
  127. icon: '/static/imgs/shop/icon1.png',
  128. url: '../../pagesA/pages/user-manage/user-manage',
  129. width: 61,
  130. height: 66
  131. },
  132. {
  133. id: 4,
  134. title: '订单',
  135. intr: '订单详情及发货',
  136. icon: '/static/imgs/shop/icon4.png',
  137. url: '../order-manage/order-manage',
  138. width: 66,
  139. height: 53
  140. },
  141. {
  142. id: 6,
  143. title: '代下单',
  144. intr: '快速帮客户下单',
  145. icon: '/static/imgs/shop/icon6.png',
  146. url: '../user-list/user-list',
  147. width: 50,
  148. height: 62
  149. },
  150. {
  151. id: 5,
  152. title: '退货',
  153. intr: '订单退货及取消',
  154. icon: '/static/imgs/shop/icon5.png',
  155. url: '../../pagesA/pages/refund-manage/refund-manage',
  156. width: 57,
  157. height: 57
  158. },
  159. ],
  160. isForbidden: false, //店铺是否被禁用
  161. hintCon: '', //不能使用店铺提示内容
  162. timer: null, //定时器
  163. showGuide: false,
  164. showAuth: true, //显示认证店铺按钮
  165. isShow: true
  166. };
  167. },
  168. onLoad() {
  169. const _this = this;
  170. uni.getSystemInfo({
  171. success: res => {
  172. _this.model = res.model;
  173. _this.canvasWidth = res.windowWidth / 375;
  174. _this.canvasHeight = res.windowHeight;
  175. }
  176. });
  177. },
  178. onShow() {
  179. const networkType = uni.getNetworkType();
  180. if (networkType === 'none') {
  181. //当前设备无网络链接
  182. uni.showModal({
  183. content: '暂无网络连接,请检查后再试',
  184. showCancel: false
  185. })
  186. return
  187. // TODO: 添加对无网情况的处理逻辑
  188. }
  189. if (['2g', '3g'].includes(networkType)) {
  190. //当前设备处于弱网环境
  191. uni.showModal({
  192. content: '当前网络信号弱,请检查后再试',
  193. showCancel: false
  194. })
  195. return
  196. }
  197. if (!uni.getStorageSync('token')) {
  198. this.login()
  199. } else {
  200. this.getShop();
  201. }
  202. this.searchName = '';
  203. },
  204. onPullDownRefresh() {
  205. uni.startPullDownRefresh();
  206. this.getShop();
  207. },
  208. methods: {
  209. checkNetStatus() {
  210. const networkType = uni.getNetworkType();
  211. if (networkType === 'none') {
  212. console.log('当前设备未连接到任何网络');
  213. return false;
  214. // TODO: 添加对无网情况的处理逻辑
  215. } else if (['2g', '3g'].includes(networkType)) {
  216. console.log('当前设备处于弱网环境');
  217. return false;
  218. // TODO: 添加对弱网情况的处理逻辑
  219. } else {
  220. console.log('当前设备正常联网');
  221. return true
  222. // TODO: 添加其他网络情况的处理逻辑
  223. }
  224. },
  225. moveHandle() {
  226. return;
  227. },
  228. //获取争霸赛奖学金及排名
  229. getData() {
  230. getZbsRank().then(res => {
  231. if (res.code == 200) {
  232. this.scoreData = res.data;
  233. const {
  234. type
  235. } = res.data;
  236. if (type == 1) {
  237. uni.getImageInfo({
  238. src: this.shopInfo.img,
  239. success: res => {
  240. this.shareShow = true
  241. this.drawImg(res.path)
  242. }
  243. })
  244. }
  245. }
  246. })
  247. },
  248. //进入争霸赛小程序
  249. skip() {
  250. uni.navigateToMiniProgram({
  251. appId: 'wxa9d1325fd98f5a7d',
  252. path: 'pages/index/index',
  253. extraData: {
  254. 'data1': 'test'
  255. },
  256. success(res) {
  257. // 打开成功
  258. }
  259. })
  260. },
  261. preview() {
  262. uni.previewImage({
  263. current: this.poster,
  264. urls: [this.poster]
  265. });
  266. },
  267. //跳转页面
  268. skipPage(type) {
  269. if (this.isForbidden) {
  270. //证明店铺被禁用
  271. uni.showModal({
  272. content: this.hintCon,
  273. showCancel: false
  274. });
  275. return false;
  276. }
  277. let url = '';
  278. switch (type) {
  279. case 0:
  280. url = '../order-manage/order-manage?status=' + 0
  281. break;
  282. case 1:
  283. url = '../../pagesA/pages/capital-manage/capital-manage'
  284. break;
  285. case 2:
  286. url = '../../pagesA/pages/brow-user/brow-user'
  287. break;
  288. case 3:
  289. url = '../auth-step/auth-step'
  290. break;
  291. case 4: //联系客服
  292. url = '../../pagesA/pages/qr-code/qr-code'
  293. default:
  294. break;
  295. }
  296. uni.navigateTo({
  297. url
  298. })
  299. },
  300. //登录
  301. login() {
  302. let _this = this
  303. uni.login({
  304. success: re => {
  305. if (re.errMsg == 'login:ok') {
  306. let status = this.checkNetStatus()
  307. if (!status) {
  308. uni.showModal({
  309. content: '当前网络信号弱,请检查后再试',
  310. showCancel: false
  311. })
  312. return
  313. }
  314. uni.showLoading({
  315. title: '自动登录中...'
  316. })
  317. wxLogin({
  318. wxcode: re.code
  319. }).then(res => {
  320. if (Number(res.code) == 450005) { //被系统删除
  321. uni.redirectTo({
  322. url: '../../pagesA/pages/login-fail/login-fail?hint=' +
  323. '你已被系统删除'
  324. })
  325. return false
  326. }
  327. if (Number(res.code == 450013)) {
  328. uni.showModal({
  329. content: '登陆失败,请手动登录',
  330. showCancel: false,
  331. success: res => {
  332. if (res.confirm) {
  333. uni.redirectTo({
  334. url: '../login/login'
  335. })
  336. }
  337. }
  338. })
  339. return false;
  340. }
  341. if (res.code == 200) {
  342. const {
  343. token,
  344. user,
  345. is_agent
  346. } = res.data;
  347. uni.setStorageSync('token', token)
  348. _this.getShop();
  349. } else {
  350. let hint = res.data
  351. uni.showModal({
  352. content: res.data || '登录失败',
  353. showCancel: false,
  354. success: res => {
  355. if (res.confirm) {
  356. uni.redirectTo({
  357. url: '../../pagesA/pages/login-fail/login-fail?hint=' +
  358. hint
  359. })
  360. }
  361. }
  362. })
  363. }
  364. uni.hideLoading()
  365. }).catch(err => {
  366. uni.hideLoading()
  367. uni.showModal({
  368. content: err,
  369. showCancel: false
  370. })
  371. console.log(err, '错误消息')
  372. })
  373. } else {
  374. uni.showModal({
  375. content: '登录失败!',
  376. showCancel: false
  377. })
  378. }
  379. },
  380. fail: err => {
  381. uni.hideLoading()
  382. uni.showModal({
  383. content: '登录失败',
  384. showCancel: false
  385. })
  386. }
  387. })
  388. },
  389. //跳转到商品分享页面
  390. skipShare() {
  391. uni.navigateTo({
  392. url: '../goods-share/goods-share'
  393. });
  394. },
  395. //跳转到如何操作视频页面
  396. skipVideo() {
  397. uni.navigateTo({
  398. url: '../shop-video/shop-video'
  399. });
  400. },
  401. //跳转到协议
  402. skipProtocol() {
  403. uni.navigateTo({
  404. url: '../../pagesA/pages/protocol/protocol'
  405. });
  406. },
  407. //获取code值方法
  408. getUrlParam(name) {
  409. var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); //构造一个含有目标参数的正则表达式对象
  410. var r = window.location.search.substr(1).match(reg); //匹配目标参数
  411. if (r != null) return decodeURIComponent(r[2]);
  412. return null; //返回参数值
  413. },
  414. /*获取店铺信息*/
  415. getShop() {
  416. let status = this.checkNetStatus()
  417. if (!status) {
  418. uni.showModal({
  419. content: '当前网络信号弱,请检查后再试',
  420. showCancel: false
  421. })
  422. return
  423. }
  424. uni.showLoading({
  425. title: '加载中...',
  426. mask: true
  427. });
  428. //进入店铺根据is_apply判断认证的状态,提交认证之后,返回首页显示审核中,审核通过之后显示签约二维码,
  429. getStoreInfo()
  430. .then(res => {
  431. uni.stopPullDownRefresh();
  432. if (Number(res.code) == 450005) { //被系统删除
  433. uni.redirectTo({
  434. url: '../../pagesA/pages/login-fail/login-fail?hint=' +
  435. '你已被系统删除'
  436. })
  437. return false
  438. }
  439. if (Number(res.code) == 450004) {
  440. uni.redirectTo({
  441. url: '../../pagesA/pages/login-fail/login-fail?hint=' +
  442. '店铺已禁用,请联系上级管理员'
  443. })
  444. //店铺已禁用
  445. // this.hintCon = '店铺已禁用,请联系上级管理员';
  446. // uni.showModal({
  447. // content: this.hintCon,
  448. // showCancel: false
  449. // });
  450. // return false;
  451. }
  452. if (res.code == 200) {
  453. this.dataInfo = res.data;
  454. this.shopInfo = res.data.store;
  455. uni.setStorageSync('store', res.data.store);
  456. const {
  457. is_apply,
  458. show_num1,
  459. qr_code,
  460. level
  461. } = this.shopInfo;
  462. // this.isForbidden = is_delete === 1 ? false : true
  463. // 2023-02-03 09:00:00 起 销售主管隐藏 ‘商品管理及分享’和‘代下单’
  464. const time = Date.parse(new Date())
  465. const endTime = 1675386000000
  466. if (level == 1 && (time >= endTime)) {
  467. this.showPlace = false
  468. let i = this.indexList.findIndex(item => item.id == 6)
  469. if (i != -1) {
  470. this.indexList.splice(i, 1)
  471. }
  472. }
  473. uni.setStorageSync('qrCode', qr_code)
  474. // if (is_apply != 3) {
  475. // uni.redirectTo({
  476. // url: '../../pagesA/pages/login-fail/login-fail?hint=' + '暂时停止微店认证'
  477. // })
  478. // // uni.redirectTo({
  479. // // url: '../auth-step/auth-step'
  480. // // })
  481. // return false;
  482. // }
  483. if (Number(res.data.is_delete) === 1) {
  484. uni.reLaunch({
  485. url: '../../pagesA/pages/del-withdrawal/del-withdrawal'
  486. })
  487. return false
  488. }
  489. this.showAuth = false;
  490. this.showGuide = show_num1 == 1 ? true : false
  491. //显示星级
  492. this.star = 5 - Number(res.data.store.star);
  493. this.getData()
  494. } else {
  495. uni.showModal({
  496. content: res.data,
  497. showCancel: false,
  498. success: res => {
  499. if (res.confirm) {
  500. uni.redirectTo({
  501. url: '../../pagesA/pages/login-fail/login-fail'
  502. })
  503. }
  504. }
  505. });
  506. }
  507. uni.hideLoading();
  508. })
  509. .catch(err => {
  510. uni.hideLoading();
  511. });
  512. },
  513. dataURLtoFile(dataurl, filename = 'file') {
  514. let arr = dataurl.split(',');
  515. let mime = arr[0].match(/:(.*?);/)[1];
  516. let suffix = mime.split('/')[1];
  517. let bstr = atob(arr[1]);
  518. let n = bstr.length;
  519. let u8arr = new Uint8Array(n);
  520. while (n--) {
  521. u8arr[n] = bstr.charCodeAt(n);
  522. }
  523. return new File([u8arr], `${filename}.${suffix}`, {
  524. type: mime
  525. });
  526. },
  527. //绘制元宝图片
  528. drawImg(avatar) {
  529. let _this = this;
  530. uni.getImageInfo({
  531. src: 'https://api.jiuweiyun.cn/public/uploads/icon/poster_new.png',
  532. success: res => {
  533. uni.showLoading({
  534. title: '图片加载中...'
  535. });
  536. const {
  537. score,
  538. ranking
  539. } = _this.scoreData;
  540. let ctx = uni.createCanvasContext('canvas');
  541. let rpx = _this.canvasWidth;
  542. ctx.drawImage(res.path, 0, 0, 270 * rpx, 450 * rpx);
  543. //排名
  544. ctx.font = 'italic bold 18px pingfang';
  545. ctx.setFillStyle('#fff');
  546. ctx.textAlign = 'center';
  547. ctx.fillText(ranking, uni.upx2px(270), uni.upx2px(467));
  548. //昵称
  549. ctx.beginPath(); //开始一个新的路径
  550. ctx.setLineWidth(2); //设置线条的宽度
  551. ctx.setStrokeStyle('#EF0A16'); //设置线条的样式
  552. ctx.setFillStyle('#EF0A16'); //设置填充的样式s
  553. ctx.font = 'noraml bold 18px pingfang';
  554. ctx.textAlign = 'center';
  555. ctx.fillText(this.shopInfo.name, uni.upx2px(270), uni.upx2px(360));
  556. ctx.moveTo(uni.upx2px(175), uni.upx2px(375)); //设置线条的起始路径坐标
  557. ctx.lineTo(uni.upx2px(365), uni.upx2px(375)); //设置线条的终点路径坐标
  558. ctx.stroke(); //对当前路径进行描边
  559. ctx.closePath(); //关闭当前路径
  560. ctx.beginPath();
  561. ctx.arc((55 * rpx) / 2 + 110 * rpx, (55 * rpx) / 2 + 104 * rpx, (55 * rpx) / 2,
  562. 0, Math
  563. .PI * 2,
  564. false); // 画一个圆形裁剪区域
  565. ctx.clip(); // 裁剪
  566. ctx.drawImage(avatar, 110 * rpx, 104 * rpx, 55 * rpx, 55 * rpx);
  567. ctx.restore(); //恢复之前保存的绘图上下文
  568. setTimeout(res => {
  569. ctx.draw(false, () => {
  570. uni.canvasToTempFilePath({
  571. width: 270 * rpx,
  572. height: 450 * rpx,
  573. canvasId: 'canvas',
  574. success: res => {
  575. uni.hideLoading();
  576. if (this.model == 'iPhone') {
  577. this.poster = this
  578. .dataURLtoFile(res
  579. .tempFilePath).name;
  580. } else {
  581. let url = res.tempFilePath
  582. .replace(
  583. /\. +/g, '');
  584. this.poster = url.replace(
  585. /[\r\n]/g,
  586. '');
  587. }
  588. }
  589. });
  590. });
  591. uni.hideLoading();
  592. }, 1000);
  593. }
  594. })
  595. },
  596. checkDel() {
  597. },
  598. /*点击跳转页面*/
  599. skipDel(url) {
  600. if (this.isForbidden) {
  601. uni.showModal({
  602. content: '',
  603. showCancel: false
  604. });
  605. return false;
  606. }
  607. uni.navigateTo({
  608. url
  609. });
  610. },
  611. /*编辑店铺信息*/
  612. skipEdit() {
  613. if (this.isForbidden) {
  614. //证明店铺被禁用
  615. uni.showModal({
  616. content: this.hintCon,
  617. showCancel: false
  618. });
  619. return false;
  620. }
  621. uni.navigateTo({
  622. url: '../shop-info/shop-info'
  623. });
  624. },
  625. /*店铺评价*/
  626. sikpEval() {
  627. if (this.isForbidden) {
  628. //证明店铺被禁用
  629. uni.showModal({
  630. content: this.hintCon,
  631. showCancel: false
  632. });
  633. return false;
  634. }
  635. uni.navigateTo({
  636. url: '../evaluate/evaluate'
  637. });
  638. },
  639. /*查询订单*/
  640. searchOrder() {
  641. if (this.isForbidden) {
  642. //证明店铺被禁用
  643. uni.showModal({
  644. content: this.hintCon,
  645. showCancel: false
  646. });
  647. return false;
  648. }
  649. if (!this.searchName) {
  650. uni.showModal({
  651. content: '搜索内容不能为空',
  652. showCancel: false
  653. });
  654. return false;
  655. }
  656. uni.navigateTo({
  657. url: '../order-manage/order-manage?order_no=' + this.searchName
  658. });
  659. },
  660. }
  661. };
  662. </script>
  663. <style>
  664. page {
  665. width: 100%;
  666. min-height: 100%;
  667. background: #F9F9FB;
  668. }
  669. </style>
  670. <style lang="scss" scoped>
  671. .show_guide {
  672. overflow-y: hidden;
  673. position: fixed;
  674. height: 100vh;
  675. width: 100%;
  676. }
  677. .home {
  678. position: relative;
  679. min-height: 100%;
  680. width: 100%;
  681. .contact_icon {
  682. position: fixed;
  683. bottom: 164rpx;
  684. right: 44rpx;
  685. width: 167rpx;
  686. height: 173rpx;
  687. }
  688. .guide_box {
  689. width: 100vw;
  690. height: 100vh;
  691. position: fixed;
  692. top: 0;
  693. left: 0;
  694. background: rgba(0, 0, 0, 0.5);
  695. display: flex;
  696. flex-direction: column;
  697. align-items: center;
  698. z-index: 999;
  699. .express_img {
  700. width: 659rpx;
  701. height: 229rpx;
  702. margin-top: 70vh;
  703. margin-left: 50rpx;
  704. }
  705. }
  706. .mask {
  707. z-index: 99999;
  708. }
  709. .home_bg {
  710. width: 750rpx;
  711. height: 312rpx;
  712. image {
  713. width: 100%;
  714. height: 100%;
  715. }
  716. }
  717. .home_box {
  718. width: 100%;
  719. position: relative;
  720. margin-top: -295rpx;
  721. .home_con {
  722. width: 690rpx;
  723. margin: 0 auto;
  724. padding-bottom: 150rpx;
  725. .search_box {
  726. .inp_box {
  727. width: 572rpx;
  728. height: 80rpx;
  729. background-color: rgba(255, 255, 255, 0.4);
  730. border-radius: 44rpx;
  731. padding: 0 30rpx;
  732. box-sizing: border-box;
  733. input {
  734. width: 360rpx;
  735. height: 80rpx;
  736. line-height: 80rpx;
  737. color: #fff;
  738. }
  739. .search_button {
  740. width: 92rpx;
  741. height: 52rpx;
  742. background: linear-gradient(92deg, #FFA600 0%, #FCBC05 100%);
  743. opacity: 1;
  744. border-radius: 8rpx;
  745. color: #fff;
  746. }
  747. .iconfont {
  748. color: #fff;
  749. font-size: 40rpx;
  750. margin-right: 10rpx;
  751. }
  752. }
  753. .search_logo {
  754. width: 88rpx;
  755. height: 88rpx;
  756. }
  757. }
  758. .shop {
  759. // min-height: 446rpx;
  760. background: rgba(255, 255, 255, 1);
  761. box-shadow: 0px 6rpx 12rpx #eeeeee;
  762. border-radius: 24rpx;
  763. margin: 0rpx 0 30rpx;
  764. padding: 30rpx;
  765. box-sizing: border-box;
  766. .shop_top {
  767. display: flex;
  768. justify-content: space-between;
  769. align-items: flex-start;
  770. .store_img {
  771. width: 113rpx;
  772. height: 113rpx;
  773. border-radius: 16rpx;
  774. margin-right: 20rpx;
  775. flex-shrink: 0;
  776. }
  777. .shop_eval {
  778. font-size: 28rpx;
  779. color: #999;
  780. margin-top: 8rpx;
  781. text {
  782. margin-right: 8rpx;
  783. }
  784. }
  785. .edit {
  786. display: inline-block;
  787. width: 108rpx;
  788. height: 52rpx;
  789. font-size: 28rpx;
  790. text-align: center;
  791. line-height: 52rpx;
  792. color: $base-color;
  793. background: #fff4f3;
  794. margin-left: 12rpx;
  795. border-radius: 8rpx;
  796. }
  797. .iconfont {
  798. font-size: 28rpx;
  799. margin-right: 5rpx;
  800. }
  801. }
  802. .shop_bottom {
  803. margin-top: 40rpx;
  804. >view {
  805. text-align: center;
  806. view:first-child {
  807. font-size: 40rpx;
  808. color: $base-color;
  809. font-weight: bold;
  810. }
  811. view:last-child {
  812. font-size: 28rpx;
  813. color: #999;
  814. margin-top: 10rpx;
  815. }
  816. }
  817. }
  818. .sub_btn {
  819. margin-top: 40rpx;
  820. }
  821. }
  822. .handle {
  823. display: flex;
  824. flex-wrap: wrap;
  825. justify-content: space-between;
  826. margin: 0 auto;
  827. box-sizing: border-box;
  828. .block_con {
  829. width: 48%;
  830. .block_box {
  831. width: 100%;
  832. height: 146rpx;
  833. background: #fff;
  834. border-radius: 18rpx;
  835. margin-bottom: 30rpx;
  836. padding: 0 20rpx;
  837. box-sizing: border-box;
  838. position: relative;
  839. .block_title {
  840. font-size: 38rpx;
  841. font-weight: bold;
  842. letter-spacing: 36rpx;
  843. }
  844. .block_intr {
  845. font-size: 28rpx;
  846. color: #999;
  847. margin-top: 10rpx;
  848. }
  849. .block_num {
  850. position: absolute;
  851. top: 10rpx;
  852. left: 140rpx;
  853. background: linear-gradient(48deg, #ffaa01 0%, #fe0000 100%);
  854. color: #fff;
  855. border-radius: 20rpx 20rpx 20rpx 0;
  856. padding: 4rpx 10rpx;
  857. }
  858. }
  859. }
  860. .block_con_red {
  861. .block_box {
  862. background: $base-line-bg;
  863. }
  864. .block_title,
  865. .block_intr {
  866. color: #fffdc1 !important;
  867. }
  868. }
  869. }
  870. .box {
  871. width: 702rpx;
  872. height: 200rpx;
  873. background: #fff;
  874. padding: 0 24rpx;
  875. box-sizing: border-box;
  876. border-radius: 16rpx;
  877. position: relative;
  878. .iconfont,
  879. .express_img {
  880. position: absolute;
  881. z-index: 999999;
  882. }
  883. .iconfont {
  884. font-size: 50rpx;
  885. color: #fff;
  886. top: -238rpx;
  887. right: 0rpx;
  888. }
  889. .express_img {
  890. width: 659rpx;
  891. height: 342rpx;
  892. top: -135rpx;
  893. right: -8rpx;
  894. }
  895. .box_item {
  896. display: flex;
  897. flex-direction: column;
  898. align-items: center;
  899. justify-content: center;
  900. background: #fff;
  901. .show_box {
  902. z-index: 999999;
  903. width: 180rpx;
  904. height: 180rpx;
  905. border-radius: 8rpx;
  906. }
  907. image {
  908. width: 100rpx;
  909. height: 100rpx;
  910. }
  911. view {
  912. font-size: 30rpx;
  913. margin-top: 10rpx;
  914. }
  915. }
  916. }
  917. .hint_img {
  918. text-align: center;
  919. margin-top: 30rpx;
  920. .shop_hint {
  921. width: 452rpx;
  922. height: 54rpx;
  923. }
  924. }
  925. .video {
  926. width: 390rpx;
  927. height: 112rpx;
  928. margin: 10rpx auto 0;
  929. background-size: 100% 100%;
  930. position: relative;
  931. z-index: 9999;
  932. .finger {
  933. width: 138rpx;
  934. height: 128rpx;
  935. z-index: 9999;
  936. position: absolute;
  937. top: 25rpx;
  938. right: -120rpx;
  939. }
  940. .video_box {
  941. width: 362rpx;
  942. height: 84rpx;
  943. border-radius: 8rpx;
  944. z-index: 9999;
  945. image {
  946. width: 44rpx;
  947. height: 44rpx;
  948. margin-right: 10rpx;
  949. z-index: 9999;
  950. }
  951. view {
  952. font-size: 36rpx;
  953. font-weight: bold;
  954. color: $base-color;
  955. z-index: 99999;
  956. &::after {
  957. content: '';
  958. display: block;
  959. width: 252rpx;
  960. height: 20rpx;
  961. margin-top: -12rpx;
  962. background: linear-gradient(360deg, #fff709 0%, rgba(255, 242, 40, 0) 100%);
  963. }
  964. }
  965. }
  966. }
  967. }
  968. }
  969. }
  970. .popShow {
  971. width: 100%;
  972. height: 100vh;
  973. position: fixed;
  974. top: 0;
  975. left: 0;
  976. background-color: rgba(0, 0, 0, 0.7);
  977. z-index: 999;
  978. .popCon {
  979. position: relative;
  980. width: 634rpx;
  981. height: 766rpx;
  982. image {
  983. width: 100%;
  984. height: 100%;
  985. }
  986. .content {
  987. position: absolute;
  988. top: 0;
  989. left: 0;
  990. .title {
  991. text-align: center;
  992. font-size: 40rpx;
  993. font-weight: bold;
  994. padding: 76rpx 0 38rpx;
  995. }
  996. .opear_btn {
  997. width: 100%;
  998. margin-top: 75rpx;
  999. view {
  1000. width: 242rpx;
  1001. text-align: center;
  1002. height: 88rpx;
  1003. border-radius: 44rpx;
  1004. font-size: 32rpx;
  1005. line-height: 88rpx;
  1006. background: $base-line-bg;
  1007. color: #fff;
  1008. }
  1009. view:first-child {
  1010. background: #e9e9e9;
  1011. color: #999;
  1012. }
  1013. }
  1014. }
  1015. }
  1016. }
  1017. .disagree {
  1018. width: 100%;
  1019. height: 100vh;
  1020. position: fixed;
  1021. top: 0;
  1022. left: 0;
  1023. background-color: rgba(0, 0, 0, 0.7);
  1024. z-index: 9999;
  1025. .dis_con {
  1026. width: 568rpx;
  1027. height: 270rpx;
  1028. background: #fff;
  1029. border-radius: 24rpx;
  1030. text-align: center;
  1031. >view:first-child {
  1032. font-size: 32rpx;
  1033. padding: 60rpx 0 40rpx;
  1034. }
  1035. >view:last-child {
  1036. width: 100%;
  1037. margin: 0 auto;
  1038. width: 302rpx;
  1039. text-align: center;
  1040. height: 76rpx;
  1041. line-height: 76rpx;
  1042. color: #fff;
  1043. background: $base-line-bg;
  1044. opacity: 1;
  1045. border-radius: 44rpx;
  1046. }
  1047. }
  1048. }
  1049. .poster {
  1050. width: 100%;
  1051. height: 100vh;
  1052. position: fixed;
  1053. top: 0;
  1054. left: 0;
  1055. background-color: rgba(0, 0, 0, 0.7);
  1056. z-index: 9999;
  1057. .pos_con {
  1058. width: 80%;
  1059. margin: 0 auto;
  1060. height: 100%;
  1061. position: relative;
  1062. image {
  1063. width: 572rpx;
  1064. height: 940rpx;
  1065. }
  1066. .qr_code {
  1067. position: absolute;
  1068. top: 630rpx;
  1069. left: 212rpx;
  1070. image {
  1071. width: 180rpx;
  1072. height: 180rpx;
  1073. }
  1074. }
  1075. .pos_info {
  1076. position: absolute;
  1077. bottom: 310rpx;
  1078. left: 92rpx;
  1079. image {
  1080. width: 104rpx;
  1081. height: 104rpx;
  1082. margin-right: 20rpx;
  1083. }
  1084. .pos_info_con {
  1085. view:first-child {
  1086. font-size: 36rpx;
  1087. font-weight: bold;
  1088. }
  1089. view {
  1090. margin-bottom: 5rpx;
  1091. }
  1092. }
  1093. }
  1094. .iconfont {
  1095. position: absolute;
  1096. top: 2vh;
  1097. right: -25rpx;
  1098. color: #dedede;
  1099. font-size: 60rpx;
  1100. z-index: 999;
  1101. }
  1102. .sub_btn {
  1103. margin-top: 76rpx;
  1104. }
  1105. }
  1106. }
  1107. .share_show {
  1108. width: 100%;
  1109. height: 100vh;
  1110. position: fixed;
  1111. top: 0;
  1112. left: 0;
  1113. background-color: rgba(0, 0, 0, 0.7);
  1114. z-index: 9999;
  1115. .share_con {
  1116. width: 80%;
  1117. margin: 0 auto;
  1118. height: 100%;
  1119. z-index: 999999;
  1120. .canvas {
  1121. width: 540rpx;
  1122. height: 900rpx;
  1123. position: relative;
  1124. #canvas {
  1125. width: 540rpx;
  1126. height: 900rpx;
  1127. position: absolute;
  1128. top: 0;
  1129. left: 0;
  1130. }
  1131. .poster_img {
  1132. -webkit-touch-callout: default;
  1133. width: 100%;
  1134. height: 100%;
  1135. display: block;
  1136. }
  1137. img[src=''],
  1138. img:not([src]) {
  1139. opacity: 0;
  1140. }
  1141. }
  1142. .save_img {
  1143. color: #fff;
  1144. width: 100%;
  1145. text-align: center;
  1146. font-size: 32rpx;
  1147. margin-top: 20rpx;
  1148. }
  1149. .iconfont {
  1150. position: absolute;
  1151. top: 4vh;
  1152. right: 25rpx;
  1153. color: #dedede;
  1154. font-size: 60rpx;
  1155. z-index: 999;
  1156. }
  1157. }
  1158. .sub_btn {
  1159. margin-top: 40rpx;
  1160. }
  1161. }
  1162. </style>