selectionsquare.vue 23 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045
  1. <template>
  2. <view class="nav">
  3. <view class="bg_box" style="background-color: #FFFFFF;" :style="{
  4. backgroundImage: mysNavConfig.bgImage,
  5. paddingTop: navBarTop,
  6. height: navBarHeight,
  7. opacity: opacity,
  8. }" :class="{ fixed: mysNavConfig.navFixed }"></view>
  9. <view class="mys_navBar" :style="{
  10. paddingTop: navBarTop,
  11. height: navBarHeight,
  12. paddingRight: navBarRight,
  13. }" :class="{ fixed: mysNavConfig.navFixed }">
  14. <!-- 左slot -->
  15. <view class="my_left_custom" :style="{ height: btnHeight }">
  16. <slot name="left"></slot>
  17. </view>
  18. <view class="btn_type" :style="{ height: btnHeight }">
  19. <view class="btn_box nav_btn_t1" :style="{
  20. width: btnWidth,
  21. height: btnHeight,
  22. marginLeft: navBarLeft,
  23. borderRadius: mysNavConfig.type2Config.radius,
  24. }">
  25. <view class="btn_back" @tap="onLeftClick()">
  26. <image class="nv_icon" :src="mysNavConfig.type2Config.leftPath"
  27. :style="{ height: btnHeight, width: iconW }" mode="aspectFit" />
  28. </view>
  29. <view class="line"></view>
  30. <view class="btn_home" @tap="onLeftHome('top')">
  31. <image class="nv_icon" :src="mysNavConfig.type2Config.rightPath"
  32. :style="{ height: btnHeight, width: iconW }" mode="aspectFit" />
  33. </view>
  34. </view>
  35. <!-- 标题 -->
  36. <view class="title_container" v-if="!mysNavConfig.searchConfig"
  37. :style="{ top: navBarTop, height: btnHeight }">
  38. <text class="title_text" v-if="!!mysNavConfig.navTitle" :style="{
  39. color: mysNavConfig.navTitle.color,
  40. fontSize: mysNavConfig.navTitle.fontSize,
  41. fontWeight: mysNavConfig.navTitle.fontWeight,
  42. }">{{ mysNavConfig.navTitle.text }}</text>
  43. <slot name="center2"></slot>
  44. </view>
  45. </view>
  46. </view>
  47. <view :style="{marginTop:navH}"></view>
  48. <view class="home">
  49. <view>
  50. <!-- 多选框弹窗 -->
  51. <uni-popup ref="popup" background-color="#fff">
  52. <view class="popup-content" :class="{ 'popup-height': type === 'left' || type === 'right' }">
  53. <view class="option1" style="margin-top: 20%;">
  54. <h3 style="margin-bottom: 10rpx;">社媒平台</h3>
  55. <uni-data-checkbox mode="tag" multiple v-model="formData.hobby" :localdata="hobby">
  56. </uni-data-checkbox>
  57. </view>
  58. <view class="option2">
  59. <h3 style="margin-bottom: 10rpx;">样品形式</h3>
  60. <uni-data-checkbox mode="tag" multiple v-model="formData.hobby1" :localdata="hobby1">
  61. </uni-data-checkbox>
  62. </view>
  63. <view class="option3">
  64. <h3 style="margin-bottom: 10rpx;">任务形式</h3>
  65. <uni-data-checkbox mode="tag" multiple v-model="formData.hobby2" :localdata="hobby2">
  66. </uni-data-checkbox>
  67. </view>
  68. <view class="butto">
  69. <button class="mini-btn" size="mini" @tap="reset">重置</button>
  70. <button class="mini-btn" size="mini" @tap="submitSearch">确定</button>
  71. </view>
  72. </view>
  73. </uni-popup>
  74. </view>
  75. <!-- banner -->
  76. <view class="uni-margin-wrap">
  77. <swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay"
  78. :interval="interval" :duration="duration">
  79. <swiper-item v-for="item in list1" @click="pick(item)">
  80. <image :src="item.img" mode="scaleToFill" style="width: 100%;height: 100%;"></image>
  81. </swiper-item>
  82. </swiper>
  83. </view>
  84. <view class="commodity" style="margin-top: 3%;">
  85. <view class="project" v-for="(item,index) in selectionList" :key="index" @tap="toDetail(item)">
  86. <!-- 主图 -->
  87. <view class="projectdiagram" :style="{backgroundImage:`url(${item.coverphoto})`}">
  88. <view class="Mask" v-if="item.isFinished">
  89. <image src="https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/home4.png" mode="">
  90. </image>
  91. </view>
  92. <view v-else>
  93. <view class="Mask" v-if="item.isLacked">
  94. <image src="https://horastar.obs.cn-east-3.myhuaweicloud.com/talent_upload/lack.png"
  95. mode="">
  96. </image>
  97. </view>
  98. </view>
  99. <view style="padding-left: 4%;padding-top: 2%;">
  100. </view>
  101. </view>
  102. <!-- 平台logo、项目名称 -->
  103. <view class="projecttext">
  104. <image :src="item.platform_icon">
  105. </image>
  106. <span>{{item.selection_name|ellipsis}}</span>
  107. </view>
  108. <!-- 项目信息1 -->
  109. <view class="projectinfo">
  110. <view class="projectinfotxt">
  111. <p>售价</p>
  112. <p>¥{{item.show_price}}</p>
  113. </view>
  114. <view class="projectinfotxt">
  115. <p>预估赚</p>
  116. <p style="color: #f70606;">¥{{item.show_commission}}</p>
  117. </view>
  118. <view class="projectinfotxt">
  119. <p>佣金</p>
  120. <p>{{item.commission_rate}}%</p>
  121. </view>
  122. <view class="projectinfotxt" v-if="item.task_mode == 1">
  123. <p>额外悬赏</p>
  124. <p style="color: #f70606;">¥{{item.show_task_reward}}</p>
  125. </view>
  126. </view>
  127. <!-- 项目信息2 -->
  128. <view class="projectinfo" style="justify-content: space-between;">
  129. <view class="projectinfotxt" style="margin: 0 10rpx;">
  130. <p>余<span style="color: #52b2f0;">{{item.remain_num}}</span>件</p>
  131. </view>
  132. <view class="projectinfotag">
  133. <view class="TitleText" v-if="item.sample_mode == 1">
  134. <p>免费领</p>
  135. </view>
  136. <view class="TitleText" v-if="item.sample_mode == 2">
  137. <p>垫付后返</p>
  138. </view>
  139. <view class="TitleText" v-if="item.task_mode == 1">
  140. <p>悬赏</p>
  141. </view>
  142. <view class="TitleText" v-else>
  143. <p>纯佣</p>
  144. </view>
  145. </view>
  146. </view>
  147. </view>
  148. </view>
  149. </view>
  150. </view>
  151. </view>
  152. </template>
  153. <script>
  154. import {
  155. getQueryString,
  156. fansview,
  157. money,
  158. getDaysBetweenDates
  159. } from '@/components/utils.js';
  160. export default {
  161. props: {
  162. mysNavConfig: {
  163. type: Object,
  164. default () {
  165. return {
  166. /* 固定导航 */
  167. navFixed: true,
  168. /* 开启单页显示首页图标 */
  169. isHome: true,
  170. /* 占位开启 */
  171. navPadding: true,
  172. /* 背景 */
  173. bgColor: "#f8f8f8",
  174. /* 渐变色 */
  175. opacity: 1,
  176. /* 渐变开启 */
  177. isOpacity: false,
  178. /* 渐变延时效果 */
  179. opacityTime: 100,
  180. /* 左侧按钮样式 可选 type1 type2 (type2根据小程序胶囊位置调整) */
  181. btnType: "type1",
  182. /* type1 左侧文字配置 */
  183. leftText: {
  184. text: "",
  185. color: "",
  186. fontSize: "16px", // px upx rpx
  187. fontWeight: "", // blod
  188. },
  189. /* 标题 */
  190. navTitle: {
  191. text: "带货",
  192. color: "",
  193. fontSize: "32rpx", // px upx rpx
  194. fontWeight: "normal", // blod
  195. },
  196. /* type2 按钮 */
  197. type2Config: {
  198. // 左图标
  199. leftPath: "https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/png3.png",
  200. // 右图标
  201. rightPath: "https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/png1.png",
  202. // 圆角
  203. radius: "40rpx",
  204. },
  205. };
  206. },
  207. },
  208. scrollTop: {
  209. type: Number,
  210. default: function() {
  211. return 0;
  212. },
  213. },
  214. },
  215. filters: {
  216. ellipsis(value) {
  217. if (!value) return "";
  218. if (value.length > 20) {
  219. return value.slice(0, 20) + "...";
  220. }
  221. return value;
  222. },
  223. },
  224. components: {},
  225. data() {
  226. return {
  227. // nav
  228. navH: getApp().globalData.navHeight,
  229. iconW: undefined,
  230. iconH: undefined,
  231. btnWidth: undefined,
  232. btnHeight: undefined,
  233. navBarTop: undefined,
  234. navBarHeight: undefined,
  235. navBarLeft: undefined,
  236. navBarRight: undefined,
  237. inputHeight: undefined,
  238. // banner
  239. indicatorDots: true,
  240. autoplay: true,
  241. interval: 3000,
  242. duration: 1000,
  243. // 多选框
  244. formData: {
  245. hobby: [],
  246. hobby1: [],
  247. hobby2: [],
  248. },
  249. hobby: [{
  250. text: '红book',
  251. value: 1
  252. }, {
  253. text: '抖音',
  254. value: 2
  255. }, {
  256. text: '微博',
  257. value: 3
  258. }, {
  259. text: '快手',
  260. value: 4
  261. }, {
  262. text: 'B站',
  263. value: 5
  264. }, {
  265. text: '大众点评',
  266. value: 6
  267. }, {
  268. text: '知乎',
  269. value: 7
  270. }],
  271. hobby1: [{
  272. text: '免费领样',
  273. value: 1
  274. }, {
  275. text: '垫付后返',
  276. value: 2
  277. }, {
  278. text: '不提供样品',
  279. value: 3
  280. }],
  281. hobby2: [{
  282. text: '悬赏任务',
  283. value: 1
  284. }, {
  285. text: '纯佣带货',
  286. value: 2
  287. }],
  288. list1: [{
  289. img: 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/home1.png',
  290. name: '/pages/tasksquare/guide'
  291. },
  292. {
  293. img: 'https://horastar.obs.cn-east-3.myhuaweicloud.com/talent/home7.png',
  294. name: '/pages/tasksquare/cooperation'
  295. }
  296. ],
  297. per: 0,
  298. max_page: 0,
  299. filtCondition: '',
  300. selectionList: [],
  301. }
  302. },
  303. watch: {
  304. scrollTop(val) {
  305. if (!this.mysNavConfig.isOpacity) {
  306. return;
  307. }
  308. this.setOpacity(val, this.mysNavConfig.opacityTime);
  309. },
  310. },
  311. created() {
  312. this.init();
  313. },
  314. async onShow() {
  315. this.isLoginApi()
  316. await this.getInfoListApi()
  317. this.per = 0
  318. this.selectionList = []
  319. this.getSelectionListApi()
  320. },
  321. async onLoad() {},
  322. //下拉刷新
  323. onPullDownRefresh() {
  324. this.per = 0
  325. this.selectionList = []
  326. this.getSelectionListApi()
  327. //停止下拉刷新
  328. uni.stopPullDownRefresh()
  329. },
  330. // 下拉懒加载
  331. async onReachBottom() {
  332. ++this.per;
  333. if (this.per >= this.max_page) {
  334. uni.showToast({
  335. title: "已加载全部"
  336. })
  337. } else {
  338. uni.showLoading({
  339. title: '加载中'
  340. })
  341. await this.getSelectionListApi()
  342. uni.hideLoading();
  343. }
  344. },
  345. methods: {
  346. /**
  347. * @param scrollTop 页面顶部距离
  348. * @param down 滑动显示效果延时
  349. */
  350. setOpacity(scrollTop, down = 60) {
  351. if (scrollTop > 0) {
  352. if (scrollTop < down) {
  353. this.opacity = scrollTop / down;
  354. }
  355. if (scrollTop > down) {
  356. this.opacity = 1;
  357. }
  358. } else {
  359. this.opacity = 0;
  360. }
  361. },
  362. /* type2 点击分类 */
  363. onLeftHome(type) {
  364. this.type = type
  365. // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
  366. this.$refs.popup.open(type)
  367. },
  368. init() {
  369. if (this.mysNavConfig.isHome) {
  370. let pages = getCurrentPages().length;
  371. /* 单页显示home图标 */
  372. pages === 1 ? (this.isHome = true) : (this.isHome = false);
  373. }
  374. // 开启渐变 强制fixed
  375. this.navBarTop = uni.getSystemInfoSync().statusBarHeight +
  376. "px";
  377. if (!this.mysNavConfig.opacity) {
  378. this.opacity = 1;
  379. !this.mysNavConfig.isOpacity ? (this.opacity = 1) : ((this
  380. .mysNavConfig.navFixed = true), (this
  381. .opacity = 0));
  382. } else {
  383. this.opacity = this.mysNavConfig.opacity;
  384. !this.mysNavConfig.isOpacity ? "" : ((this.mysNavConfig
  385. .navFixed = true), (this.opacity = 0));
  386. }
  387. // #ifdef MP
  388. this.initMP();
  389. // #endif
  390. // #ifdef APP-PLUS-NVUE
  391. this.navBarHeight = 44 + uni.getSystemInfoSync()
  392. .statusBarHeight + "px";
  393. // #endif
  394. },
  395. /* 小程序初始化位置 */
  396. initMP() {
  397. // getSystemInfoSync用于获取系统信息同步接口
  398. let gS = uni.getSystemInfoSync();
  399. // getMenuButtonBoundingClientRect用于获取胶囊按钮位置布局信息
  400. let rect = uni.getMenuButtonBoundingClientRect();
  401. let rectHeight = rect.height;
  402. this.btnWidth = rect.width + "px";
  403. this.btnHeight = rectHeight + "px";
  404. this.iconW = Math.floor(rect.width / 4 - 5) + "px";
  405. this.iconH = rectHeight / 2 + "px";
  406. this.inputHeight = rectHeight - 3 + "px";
  407. this.navBarTop = rect.top + "px";
  408. this.navBarLeft = gS.screenWidth - rect.right + "px";
  409. this.navBarRight = gS.screenWidth - rect.right + rect.width +
  410. "px";
  411. this.navBarHeight = gS.statusBarHeight + rectHeight + (rect
  412. .top - gS.statusBarHeight) * 2 + "px";
  413. },
  414. toDetail(item) {
  415. uni.navigateTo({
  416. url: '/page_selectionsquare/selectiondetail/selectiondetail?id=' + item.selection_id
  417. });
  418. },
  419. async submitSearch() {
  420. this.per = 0;
  421. this.$refs.popup.close()
  422. var filtCondition = ''
  423. for (var i = 0; i < this.formData.hobby.length; i++) {
  424. filtCondition += "&platform[]" + "=" + this.formData.hobby[i]
  425. }
  426. for (var j = 0; j < this.formData.hobby1.length; j++) {
  427. filtCondition += "&secform[]" + "=" + this.formData.hobby1[j]
  428. }
  429. for (var j = 0; j < this.formData.hobby2.length; j++) {
  430. filtCondition += "&taskform[]" + "=" + this.formData.hobby2[j]
  431. }
  432. this.filtCondition = filtCondition
  433. uni.showLoading({
  434. title: '加载中'
  435. });
  436. this.selectionList = []
  437. await this.getSelectionListApi()
  438. uni.hideLoading();
  439. },
  440. async reset() {
  441. this.per = 0;
  442. this.$refs.popup.close()
  443. this.formData.hobby = [];
  444. this.formData.hobby1 = [];
  445. this.formData.hobby2 = [];
  446. this.filtCondition = '';
  447. uni.showLoading({
  448. title: '加载中'
  449. });
  450. this.selectionList = []
  451. await this.getSelectionListApi()
  452. uni.hideLoading();
  453. },
  454. /* 点击左侧 */
  455. onLeftClick() {
  456. uni.navigateTo({
  457. url: '/page_selectionsquare/search'
  458. });
  459. },
  460. isLoginApi() {
  461. return this.$https.get('/youngee/c/t/g/is-login')
  462. .then(res => {
  463. if (res.data.code === 403) {
  464. // 登陆已失效
  465. this.token = ""
  466. uni.clearStorage();
  467. } else {
  468. this.token = uni.getStorageSync('token')
  469. }
  470. })
  471. },
  472. getInfoListApi() {
  473. return this.$http.get('/youngee/c/g/get-info-tables')
  474. .then(res => {
  475. this.hobby = []
  476. this.platformList = res.data.data.ThirdPlatform
  477. let l = this.platformList != null ? this.platformList.length : 0;
  478. for (var i = 0; i < l; i++) {
  479. var obj = {}
  480. obj.text = this.platformList[i].platform_name
  481. obj.value = this.platformList[i].id
  482. this.hobby.push(obj)
  483. }
  484. })
  485. },
  486. getSelectionListApi() {
  487. return this.$http.get('/youngee/c/g/get-selection-list' +
  488. "?" +
  489. "idx" +
  490. "=" +
  491. this.per +
  492. "&cnt" +
  493. "=" +
  494. 20 + this.filtCondition
  495. ).then(res => {
  496. if (res.data.code === 0) {
  497. console.log("res: ", res.data.data)
  498. // 获取res返回数据
  499. this.max_page = res.data.data.max_page
  500. let selectionList = res.data.data.SeletionInfos
  501. const count = res.data.data.count
  502. // 数据处理
  503. if (selectionList === null) {
  504. return
  505. }
  506. for (var i = 0; i < selectionList.length; i++) {
  507. // 封面图片
  508. selectionList[i].ProductInfo = JSON.parse(selectionList[i].product_snap);
  509. // if (selectionList[i] !== undefined && 'product_snap' in selectionList[i]) {
  510. // }
  511. // 封面图片
  512. let ProductPhoto = JSON.parse(selectionList[i].product_photo_snap);
  513. for (let j = 0; j < ProductPhoto.length; ++j) {
  514. if (ProductPhoto[j].Symbol == 1) {
  515. selectionList[i].coverphoto = ProductPhoto[j].PhotoUrl
  516. }
  517. }
  518. // if (selectionList[i] !== undefined && 'product_photo_snap' in selectionList[i]) {
  519. // }
  520. for (var j = 0; j < this.platformList.length; j++) {
  521. if (selectionList[i].platform === this.platformList[j].id) {
  522. selectionList[i].platform_icon = this.platformList[j].platform_icon
  523. }
  524. }
  525. // 佣金计算
  526. selectionList[i].price = selectionList[i].ProductInfo.ProductPrice
  527. console.table(selectionList[i].ProductInfo)
  528. selectionList[i].commission = selectionList[i].price * selectionList[i]
  529. .commission_rate * 0.01
  530. selectionList[i].show_commission = money(selectionList[i].commission) // 佣金比例
  531. selectionList[i].show_price = money(selectionList[i].price) // 售价
  532. selectionList[i].show_task_reward = money(selectionList[i].task_reward) // 任务悬赏
  533. // 判断是否到期
  534. selectionList[i].isFinished = this.isFinish(selectionList[i])
  535. // 判断是否有库存
  536. selectionList[i].isLacked = selectionList[i].remain_num == 0 ? true : false
  537. }
  538. this.selectionList.push(...selectionList);
  539. }
  540. });
  541. },
  542. isFinish(selection) {
  543. var timeNow = new Date();
  544. var ddl = new Date(selection.task_ddl.replace(/-/g, "/"));
  545. let remain_days = getDaysBetweenDates(timeNow, ddl);
  546. if (remain_days < 0) return true;
  547. else return false;
  548. }
  549. }
  550. }
  551. </script>
  552. <style lang="scss" scoped>
  553. //nav
  554. .nav {
  555. position: relative;
  556. }
  557. .nv_padding {
  558. height: 88upx;
  559. background-color: transparent;
  560. }
  561. /* 图标默认大小 */
  562. .nv_icon {
  563. width: 16px;
  564. height: 16px;
  565. }
  566. .bg_box {
  567. position: absolute;
  568. width: 750upx;
  569. height: 88upx;
  570. z-index: 10;
  571. top: 0;
  572. background-color: transparent;
  573. /* #ifdef MP */
  574. box-sizing: border-box;
  575. /* #endif */
  576. /* #ifndef APP-PLUS-NVUE */
  577. background-size: cover;
  578. background-repeat: no-repeat;
  579. background-position: center center;
  580. /* #endif */
  581. }
  582. .mys_navBar {
  583. /* #ifndef APP-PLUS-NVUE */
  584. display: flex;
  585. height: 88upx;
  586. /* #endif */
  587. // #ifdef MP
  588. box-sizing: border-box;
  589. // #endif
  590. width: 750upx;
  591. flex-direction: row;
  592. background-color: transparent;
  593. position: absolute;
  594. z-index: 10;
  595. top: 0;
  596. }
  597. .fixed {
  598. position: fixed;
  599. }
  600. /*
  601. left 按钮
  602. */
  603. .btn_type {
  604. /* #ifndef APP-PLUS-NVUE */
  605. display: flex;
  606. /* #endif */
  607. /* #ifdef APP-PLUS-NVUE */
  608. margin-left: 16upx;
  609. /* #endif */
  610. // #ifndef MP
  611. align-items: center;
  612. // #endif
  613. flex: 1;
  614. flex-direction: row;
  615. // background-color: #fff;
  616. }
  617. .btn_box {
  618. /* #ifndef APP-PLUS-NVUE */
  619. display: flex;
  620. margin-left: 16upx;
  621. /* #endif */
  622. flex-direction: row;
  623. // #ifndef MP
  624. align-items: center;
  625. // #endif
  626. }
  627. .btn_back,
  628. .btn_home {
  629. /* #ifndef APP-PLUS-NVUE */
  630. display: flex;
  631. /* #endif */
  632. /* #ifndef APP-PLUS-NVUE */
  633. height: 100%;
  634. /* #endif */
  635. /* #ifdef APP-PLUS-NVUE */
  636. width: 76upx;
  637. height: 62upx;
  638. /* #endif */
  639. flex-direction: row;
  640. align-items: center;
  641. justify-content: center;
  642. flex: 1;
  643. }
  644. /* 按钮类型1 */
  645. .nav_btn_t1 {
  646. /* #ifndef APP-PLUS-NVUE */
  647. display: flex;
  648. /* #endif */
  649. // #ifdef MP
  650. box-sizing: border-box;
  651. // #endif
  652. flex-direction: row;
  653. align-items: center;
  654. border-style: solid;
  655. border-width: 1px;
  656. border-color: #C0C0C0;
  657. // background-color: rgba(0, 0, 0, 0.2);
  658. background-color: #FFFFFF;
  659. width: 130upx;
  660. height: 45upx;
  661. }
  662. .line {
  663. width: 1upx;
  664. height: 60%;
  665. /* #ifdef APP-PLUS-NVUE */
  666. height: 30upx;
  667. /* #endif */
  668. background-color: #C0C0C0;
  669. }
  670. /*
  671. 标题
  672. */
  673. .title_container {
  674. /* #ifndef APP-PLUS-NVUE */
  675. display: flex;
  676. /* #endif */
  677. position: absolute;
  678. left: 375upx;
  679. bottom: 0;
  680. transform: translateX(-50%);
  681. flex-direction: row;
  682. justify-content: center;
  683. align-items: center;
  684. }
  685. .title_text {
  686. // flex: 1;
  687. text-overflow: ellipsis;
  688. /* #ifndef APP-PLUS-NVUE */
  689. white-space: nowrap;
  690. overflow: hidden;
  691. font-weight: 550;
  692. /* #endif */
  693. /* #ifdef APP-PLUS-NVUE */
  694. lines: 1;
  695. /* #endif */
  696. }
  697. /*
  698. 左边自定义
  699. */
  700. .my_left_box {
  701. /* #ifndef APP-PLUS-NVUE */
  702. display: flex;
  703. /* #endif */
  704. flex-direction: row;
  705. align-items: center;
  706. }
  707. .my_left_icon {
  708. /* #ifndef APP-PLUS-NVUE */
  709. display: flex;
  710. /* #endif */
  711. flex-direction: row;
  712. align-items: center;
  713. justify-content: center;
  714. /* #ifndef MP */
  715. margin-left: 18upx;
  716. /* #endif */
  717. }
  718. .my_left_custom {
  719. /* #ifndef APP-PLUS-NVUE */
  720. display: flex;
  721. /* #endif */
  722. flex-direction: row;
  723. align-items: center;
  724. // justify-content: center;
  725. }
  726. /* 文字 */
  727. .leftText {
  728. /* #ifndef APP-PLUS-NVUE */
  729. display: flex;
  730. /* #endif */
  731. flex-direction: row;
  732. align-items: center;
  733. justify-content: center;
  734. padding-left: 4upx;
  735. font-size: 15px;
  736. }
  737. /*
  738. 中间
  739. */
  740. .my_custom_box {
  741. /* #ifndef APP-PLUS-NVUE */
  742. display: flex;
  743. /* #endif */
  744. flex-direction: row;
  745. align-items: center;
  746. justify-content: center;
  747. flex: 1;
  748. }
  749. /*
  750. 搜索框
  751. */
  752. .nv_search_box {
  753. /* #ifndef APP-PLUS-NVUE */
  754. display: flex;
  755. /* #endif */
  756. flex-direction: row;
  757. align-items: center;
  758. flex: 1;
  759. /* #ifndef MP */
  760. height: 60upx;
  761. /* #endif */
  762. background-color: #f8f8f8;
  763. padding-right: 20upx;
  764. padding-left: 20upx;
  765. border-radius: 60upx;
  766. margin-right: 15upx;
  767. margin-left: 15upx;
  768. }
  769. .nv_input {
  770. flex: 1;
  771. padding-left: 16upx;
  772. font-size: 13px;
  773. }
  774. .close {
  775. width: 50upx;
  776. /* #ifndef APP-PLUS-NVUE */
  777. display: flex;
  778. /* #endif */
  779. flex-direction: row;
  780. align-items: center;
  781. justify-content: center;
  782. /* #ifndef MP */
  783. height: 62upx;
  784. /* #endif */
  785. }
  786. /*
  787. 右边 自定义
  788. */
  789. .my_right_icon {
  790. /* #ifndef APP-PLUS-NVUE */
  791. display: flex;
  792. /* #endif */
  793. flex-direction: row;
  794. align-items: center;
  795. justify-content: center;
  796. /* #ifndef MP */
  797. // min-width: 70upx;
  798. /* #endif */
  799. padding-left: 6px;
  800. padding-right: 10px;
  801. }
  802. .imge image {
  803. width: 100%;
  804. height: 260rpx;
  805. }
  806. </style>
  807. <style lang="scss" scoped>
  808. .option1 {
  809. padding: 5rpx 18rpx;
  810. /deep/.uni-data-checklist .checklist-group .checklist-box .checklist-content {
  811. width: 100rpx;
  812. text-align: center;
  813. }
  814. }
  815. .option2 {
  816. padding: 5rpx 18rpx;
  817. }
  818. .option3 {
  819. padding: 5rpx 18rpx;
  820. }
  821. .butmin {
  822. // height: 48rpx;
  823. width: 250rpx;
  824. background-color: #FCCF41;
  825. line-height: 48rpx;
  826. }
  827. .butmin1 {
  828. // height: 48rpx;
  829. width: 250rpx;
  830. background-color: #fff;
  831. border: #000000 1rpx solid;
  832. line-height: 48rpx;
  833. }
  834. //弹出层
  835. /deep/ .uni-data-checklist .checklist-group .checklist-box {
  836. background-color: #FFFFFF !important;
  837. border-radius: 20rpx !important;
  838. padding: 8rpx 30rpx !important;
  839. border: 0 !important;
  840. }
  841. /deep/ .uni-data-checklist .checklist-group .checklist-box .checklist-content .checklist-text {
  842. font-size: 24rpx;
  843. color: #333333;
  844. }
  845. /deep/ .mini-btn {
  846. height: 70rpx;
  847. width: 250rpx;
  848. line-height: 70rpx;
  849. margin: 20rpx;
  850. letter-spacing: 4rpx;
  851. background-color: #FCCF41;
  852. }
  853. /deep/ .mini-btn1 {
  854. height: 70rpx;
  855. width: 400rpx;
  856. line-height: 70rpx;
  857. margin: 20rpx;
  858. letter-spacing: 4rpx;
  859. color: white;
  860. ;
  861. }
  862. /deep/ .uni-data-checklist .checklist-group .checklist-box.is--tag.is-checked {
  863. background-color: #FCCF41 !important;
  864. }
  865. .butto {
  866. text-align: center;
  867. }
  868. .swiper {
  869. height: 300rpx;
  870. }
  871. .swiper-item {
  872. display: block;
  873. height: 300rpx;
  874. line-height: 300rpx;
  875. text-align: center;
  876. }
  877. .swiper-list {
  878. margin-top: 40rpx;
  879. margin-bottom: 0;
  880. }
  881. </style>
  882. <style lang="scss" scoped>
  883. .commodity {
  884. margin-top: 10rpx;
  885. display: flex;
  886. flex-wrap: wrap;
  887. justify-content: space-between;
  888. }
  889. .project {
  890. width: 49%;
  891. height: 550rpx;
  892. border-radius: 20rpx;
  893. margin-bottom: 0%;
  894. }
  895. .projectdiagram {
  896. width: 100%;
  897. height: 61%;
  898. background-size: 100% 100%;
  899. position: relative;
  900. border-radius: 10rpx;
  901. ;
  902. }
  903. .projecttext {
  904. // padding-top: 5%;
  905. padding: 0 0 0 1%;
  906. // height: 80rpx;
  907. }
  908. .projecttext span {
  909. color: #333333;
  910. font-size: 25rpx;
  911. font-weight: 550;
  912. text-indent: 2em;
  913. }
  914. .projecttext image {
  915. vertical-align: middle;
  916. width: 30rpx;
  917. height: 30rpx;
  918. display: inline-block;
  919. margin-right: 14rpx;
  920. }
  921. .projectinfo {
  922. display: flex;
  923. justify-content: space-around;
  924. }
  925. .projectinfotxt {
  926. display: flex;
  927. flex-direction: column;
  928. align-items: center;
  929. justify-content: center;
  930. }
  931. .projectinfotxt p {
  932. color: #767272;
  933. font-size: 20rpx;
  934. margin: 5rpx 0;
  935. }
  936. .projectinfotag {
  937. display: flex;
  938. justify-content: space-around;
  939. align-items: center;
  940. }
  941. .TitleText {
  942. // height: 30rpx;
  943. width: 100rpx;
  944. background-color: #f70606;
  945. border-radius: 10rpx;
  946. display: inline-block;
  947. text-align: center;
  948. // padding: 0rpx 10rpx 0rpx 10rpx;
  949. margin-right: 6%;
  950. line-height: 30rpx;
  951. margin-top: 0%;
  952. }
  953. .TitleText p {
  954. color: #fff;
  955. font-size: 16rpx;
  956. }
  957. .Mask {
  958. position: absolute;
  959. background-color: #000000;
  960. opacity: 0.6;
  961. width: 100%;
  962. height: 100%;
  963. // z-index: 999;
  964. text-align: center;
  965. border-radius: 20rpx;
  966. }
  967. .Mask image {
  968. width: 50%;
  969. height: 52%;
  970. padding-top: 25%;
  971. }
  972. </style>