sandTable.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833
  1. <template>
  2. <page-meta :page-style="'padding-bottom: 0;'+'overflow:'+((showFilter||show||showPoster)?'hidden':'visible')"/>
  3. <view style="background-color: #F6F6F6;">
  4. <!-- 没有权限 -->
  5. <block v-if="noAuthor ==1 && isFinished">
  6. <view class="sandTable-noAuthor">
  7. <block v-if="!applyer.hasApply">
  8. <image :src="globalImgUrls.sandBoxNoAuthor" mode="aspectFit"></image>
  9. <text style="margin-top: 48rpx;">您暂无权限查看沙盘推演</text>
  10. <text style="margin-top: 20rpx;">若想查看可以申请开通</text>
  11. <button @click="toApply">立即申请</button>
  12. </block>
  13. <block v-else>
  14. <image class="img-wait" :src="globalImgUrls.chartWait" mode="widthFix"
  15. style="width: 186rpx;margin-top: 200rpx;width: 186rpx;margin-bottom: 50rpx;"></image>
  16. <text style="margin-bottom:15px">您已提交申请</text>
  17. <text>请等待销售人员与您联系</text>
  18. </block>
  19. </view>
  20. </block>
  21. <block v-if="noAuthor ==2 && isFinished">
  22. <view class="sandTable-noAuthor">
  23. <image :src="globalImgUrls.sandBoxNoAuthor" mode="aspectFit"></image>
  24. <text style="margin-top: 48rpx;">您暂无权限查看沙盘推演</text>
  25. <text style="margin: 20rpx 0 6rpx 0;">若想查看请联系对口销售</text>
  26. <view>
  27. <text>{{salesData.name}}:</text><text class="sales-mobile" @click="callToSales">{{salesData.phone}}</text>
  28. </view>
  29. </view>
  30. </block>
  31. <!-- 部分有权限 分享进来没有权限 -->
  32. <block v-if="noAuthor ==4 && isFinished">
  33. <!-- 显示空白 一秒钟后跳转至有权限的沙盘图-->
  34. </block>
  35. <!-- 有权限 -->
  36. <view v-show="noAuthor ==0 && isFinished" style="padding-top: 156rpx;">
  37. <view style="position: fixed;top: 0;width: 100vw;z-index: 2;">
  38. <view style="height: 2rpx;background-color: #F6F6F6;"></view>
  39. <view class="search-wrap">
  40. <van-search
  41. shape="round"
  42. placeholder="沙盘图名称搜索"
  43. clear-trigger="always"
  44. style="flex-grow: 1"
  45. :value="sandTableQuery.keyword"
  46. @change="searchValChange"
  47. @search="onSearch"
  48. @clear="onClearSearch"
  49. placeholderStyle="color: #999999;"
  50. />
  51. <view class="filtration-icon-zone" @click="showFilter=true">
  52. <image
  53. src="../static/sandTable/sandTable_filtration.png"
  54. mode="widthFix"
  55. class="menu-icon"/>
  56. <text>筛选</text>
  57. </view>
  58. </view>
  59. </view>
  60. <!-- 无数据 -->
  61. <view class="sandTable-noData" v-if="!list">
  62. <image :src="globalImgUrls.sandBoxNoAuthor" mode="aspectFit"></image>
  63. <text >暂无数据</text>
  64. </view>
  65. <view class="sandTable-list" v-else>
  66. <view class="sandTable-box" v-for="(item,index) in list" :key="item.sandbox_id">
  67. <view class="sandTable-box-top">
  68. <view class="sandTable-box-topL">
  69. <view class="sandTable-tag">
  70. {{item.chart_permission_name}}
  71. </view>
  72. <rich-text :nodes="item.name" class="sandTable-name"></rich-text>
  73. </view>
  74. <view class="sandTable-box-topR">
  75. <image src="../static/sandTable/fullScreen.png" style="margin-right: 32rpx;" @click="previewImage(index)"></image>
  76. <image src="@/static/sandTable/sandBox-share-icon.png" style="margin-right: 32rpx;" @click="generatePoster('detail',item)"></image>
  77. <button
  78. class="share-btn"
  79. open-type="share"
  80. :data-item="item">
  81. <image src="../static/sandTable/sandTable-share.png" mode="aspectFill"/>
  82. </button>
  83. </view>
  84. </view>
  85. <view class="sandTable-item" @click="previewImage(index)">
  86. <image :src="item.pic_url" mode="aspectFit"></image>
  87. <!-- <view class="sandTable-item-origin">
  88. 来源:弘则研究
  89. </view> -->
  90. </view>
  91. </view>
  92. <view v-if="list.length==total && list.length>0" class="bottom_text">已经到底了</view>
  93. </view>
  94. </view>
  95. </view>
  96. <!-- 筛选弹窗 -->
  97. <van-popup :show="showFilter" round position="bottom" @close="showFilter = false" z-index="99999" :safe-area-inset-bottom="true" >
  98. <view class="filter-container">
  99. <view class="filter-container-header">
  100. <text>全部筛选</text>
  101. <text style="color: #E3B377;" @click="showFilter=false">取消</text>
  102. </view>
  103. <view class="list-box">
  104. <van-collapse accordion @change="selectFisrtClassify" :value="selectedFirstId" :border="false">
  105. <van-collapse-item
  106. :title="item.classify_name"
  107. :name='item.id'
  108. :border="false"
  109. v-for="item in classfyList"
  110. :key="item.id"
  111. >
  112. <van-row gutter="5">
  113. <van-col
  114. :span="_item.chart_permission_name.length>7?16:8"
  115. v-for="_item in item.list"
  116. :key="_item.chart_permission_id"
  117. >
  118. <text
  119. :class="['list-item',_item.chart_permission_id==selectedSecondId&&'list-item-active']"
  120. @click="handleSelectPerItem(_item)"
  121. >{{_item.chart_permission_name}}</text>
  122. </van-col>
  123. </van-row>
  124. </van-collapse-item>
  125. </van-collapse>
  126. </view>
  127. </view>
  128. </van-popup>
  129. <!-- 分享按钮 -->
  130. <image @click="generatePoster('list')" class="share-icon" src="@/static/share-poster-icon.png" mode="aspectFill" v-if="noAuthor==0&&isFinished"/>
  131. <!-- 生成海报弹窗 -->
  132. <div class="share-poster-wrap" @touchmove.prevent>
  133. <div class="poster-mask" v-if="show||showPoster" @click="showPoster=false" @touchmove.prevent></div>
  134. <div class="loading-box" v-if="show">
  135. <img class="load-img" src="../static/loading.png"/>
  136. <div>海报生成中...</div>
  137. </div>
  138. <img v-if="showPoster" class="poster-img" mode="widthFix" :src="posterImg" show-menu-by-longpress />
  139. </div>
  140. </template>
  141. <script>
  142. import {apiSandTableList,apiSandTableDetail} from "../api/sandTable.js"
  143. import {apiReportIndexPageAuthList} from "../api/report.js"
  144. import {apiGetPoster,apiGetSceneToParams} from "../api/common.js"
  145. import {apiApplyPermission} from "../api/user.js"
  146. export default {
  147. data() {
  148. return {
  149. sandTableQuery:{
  150. page_size: 20,
  151. curr_page: 1,
  152. keyword:'' ,
  153. chart_permission_id: 0,
  154. is_high_light:false // 是否高亮
  155. },
  156. total:0,
  157. isRequseting:false,
  158. showFilter:false,
  159. list:[],
  160. classfyList:[],
  161. selectedFirstId:0,
  162. selectedSecondId:0,
  163. // 是否显示过全部加载弹窗
  164. haveShowToast:false,
  165. showPoster:false,
  166. show:false,
  167. // 是否跳转到申请结果页面
  168. haveGoToResult:false,
  169. // 是否请求完成
  170. isFinished:false,
  171. posterImg:'',
  172. // 没有权限 1:立即申请 2:联系销售
  173. noAuthor:0,
  174. // 销售信息
  175. salesData:{
  176. phone:'',
  177. name:''
  178. },
  179. // 申请权限时的用户信息
  180. applyer:{
  181. name:'',
  182. company:'',
  183. // 是否已经申请
  184. hasApply:false,
  185. // 状态
  186. status:''
  187. }
  188. }
  189. },
  190. onLoad(options) {
  191. this.init(options)
  192. },
  193. onShow() {
  194. // 预览图片结束时,会触发onShow,切回竖屏
  195. uni.setPageOrientation({orientation : "portrait"})
  196. if(this.haveGoToResult){
  197. //从申请结果页面回来
  198. this.getSandBoxList()
  199. this.haveGoToResult=false
  200. }
  201. },
  202. // 小程序自带分享
  203. onShareAppMessage({from,target}) {
  204. if(from == 'menu'){
  205. // 列表分享
  206. let {keyword,chart_permission_id,is_high_light} = this.sandTableQuery
  207. return {
  208. title:'沙盘推演',
  209. path:`/pages-sandTable/sandTable?keyword=${keyword}&chart_permission_id=${chart_permission_id}`+
  210. `&is_high_light=${is_high_light}&firstClassifyId=${this.selectedFirstId}`
  211. }
  212. }else if(from == 'button'){
  213. // 单个分享
  214. let {sandbox_id,chart_permission_id,chart_permission_name,name,pic_url} = target.dataset.item
  215. let first_permission_id = 0
  216. // 通过分享的沙盘图的二级分类Id,找到对应的一级Id
  217. U:for (let item of this.classfyList) {
  218. for (let it of item.list) {
  219. if(it.chart_permission_id == chart_permission_id){
  220. first_permission_id = item.id
  221. break U
  222. }
  223. }
  224. }
  225. return {
  226. title:`${chart_permission_name}: ${name}`,
  227. path:`/pages-sandTable/sandTable?sandbox_id=${sandbox_id}&chart_permission_id=${chart_permission_id}`+
  228. `&firstClassifyId=${first_permission_id}`,
  229. imageUrl:pic_url
  230. }
  231. }
  232. },
  233. onPullDownRefresh() {
  234. this.sandTableQuery.curr_page=1
  235. this.sandTableQuery.chart_permission_id = this.selectedSecondId = this.selectedFirstId=0
  236. this.sandTableQuery.keyword=''
  237. this.is_high_light=false
  238. this.haveShowToast=false
  239. this.getSandBoxList('stopPullDown')
  240. this.getClassifyList()
  241. },
  242. onReachBottom() {
  243. if(this.isRequseting) return
  244. if(this.list.length>=this.total && this.total!=0) return
  245. this.sandTableQuery.curr_page++
  246. this.getSandBoxList()
  247. },
  248. methods: {
  249. async init(options){
  250. let obj={}
  251. if(options.scene){
  252. // 海报分享
  253. let res = await apiGetSceneToParams({scene_key:options.scene})
  254. if(res.code==200){
  255. obj=JSON.parse(res.data)
  256. }
  257. }else{
  258. obj = options
  259. }
  260. // 有sandbox_id 说明是单个分享进来的
  261. if(obj.sandbox_id){
  262. this.selectedFirstId = obj.firstClassifyId || 0
  263. this.selectedSecondId = obj.chart_permission_id || 0
  264. this.getSandBoxDetail(obj.sandbox_id)
  265. }else{
  266. this.sandTableQuery.keyword = obj.keyword || ""
  267. this.selectedFirstId = obj.firstClassifyId || 0
  268. this.sandTableQuery.chart_permission_id = this.selectedSecondId = obj.chart_permission_id || 0
  269. this.sandTableQuery.is_high_light = obj.is_high_light || false
  270. this.getSandBoxList()
  271. }
  272. this.getClassifyList()
  273. },
  274. // 获取沙盘图数据
  275. getSandBoxList(option){
  276. this.isRequseting=true
  277. apiSandTableList(this.sandTableQuery).then(({data:{list,paging,type,name,mobile,customer_info,jump},code})=>{
  278. if(option == 'stopPullDown'){
  279. uni.stopPullDownRefresh()
  280. }
  281. // 403 没有权限
  282. if(code==403){
  283. this.applyer.name = customer_info.name
  284. this.applyer.company = customer_info.company_name
  285. this.applyer.hasApply = customer_info.has_apply
  286. this.applyer.status = customer_info.status
  287. if(type == 'apply'){
  288. // 申请
  289. this.noAuthor =1
  290. }else{
  291. if(jump){
  292. this.noAuthor =4
  293. // jump 跳转,说明该用户是有部分权限,提示“暂无此权限”,跳转至有权限的分类
  294. uni.showToast({
  295. title:"暂无此权限",
  296. icon:'none'
  297. })
  298. setTimeout(()=>{
  299. uni.redirectTo({url:'/pages-sandTable/sandTable'})
  300. },1000)
  301. }else{
  302. // 联系销售
  303. this.noAuthor =2
  304. this.salesData.name=name
  305. this.salesData.phone=mobile
  306. }
  307. }
  308. return
  309. }
  310. if(this.sandTableQuery.curr_page==1){
  311. this.list = list
  312. this.total = paging.totals
  313. }else{
  314. this.list = [...this.list,...list]
  315. }
  316. this.noAuthor=0
  317. })
  318. .finally(res=>{
  319. this.isRequseting=false
  320. this.isFinished=true
  321. this.showFilter=false
  322. })
  323. },
  324. getSandBoxDetail(sandbox_id){
  325. this.isRequseting=true
  326. apiSandTableDetail({sandbox_id}).then(({data,code})=>{
  327. if(code==403){
  328. this.applyer.name = data.customer_info.name
  329. this.applyer.company = data.customer_info.company_name
  330. this.applyer.hasApply = data.customer_info.has_apply
  331. this.applyer.status = data.customer_info.status
  332. if(data.type == 'apply'){
  333. // 申请
  334. this.noAuthor =1
  335. }else{
  336. if(data.jump){
  337. // jump 跳转,说明该用户是有部分权限,提示“暂无此权限”,跳转至有权限的分类
  338. this.noAuthor =4
  339. uni.showToast({
  340. title:"暂无此权限",
  341. icon:'none'
  342. })
  343. setTimeout(()=>{
  344. uni.redirectTo({url:'/pages-sandTable/sandTable'})
  345. },1000)
  346. }else{
  347. // 联系销售
  348. this.noAuthor =2
  349. this.salesData.name=data.name
  350. this.salesData.phone=data.mobile
  351. }
  352. }
  353. return
  354. }
  355. this.list= [data]
  356. this.noAuthor=0
  357. })
  358. .finally(res=>{
  359. this.isRequseting=false
  360. this.isFinished=true
  361. this.showFilter=false
  362. })
  363. },
  364. // 获取分类数据
  365. getClassifyList(){
  366. apiReportIndexPageAuthList().then(({data:{permission_list}})=>{
  367. // 过滤掉'更多报告' 和 没有权限的分类
  368. this.classfyList = permission_list.filter(item => item.sort!=100000)
  369. this.classfyList.forEach(item=>{
  370. item.list=item.list.filter(it=>it.auth_ok)
  371. })
  372. this.classfyList=this.classfyList.filter(item=>item.list.length!=0)
  373. })
  374. },
  375. // 权限申请
  376. async toApply(type=''){
  377. await this.checkUserIsBind()
  378. if(type=='auto'){
  379. apiApplyPermission({
  380. company_name:this.applyer.company,
  381. real_name:this.applyer.name,
  382. source:7,
  383. from_page:'沙盘推演',
  384. }).then(res=>{
  385. console.log('自动申请成功');
  386. })
  387. }else{
  388. if(this.applyer.status==='流失'){
  389. apiApplyPermission({
  390. company_name:this.applyer.company,
  391. real_name:this.applyer.name,
  392. source:7,
  393. from_page:'沙盘推演',
  394. }).then(res=>{
  395. this.haveGoToResult=true
  396. uni.navigateTo({url:'/pages-applyPermission/applyResult'})
  397. })
  398. }else{
  399. this.haveGoToResult=true
  400. uni.navigateTo({ url: '/pages-applyPermission/applyPermission?source=7&from_page=沙盘推演' })
  401. }
  402. }
  403. },
  404. // 联系销售申请权限
  405. callToSales(){
  406. if(!this.applyer.hasApply){
  407. this.toApply('auto')
  408. }
  409. uni.makePhoneCall({
  410. phoneNumber: this.salesData.phone,
  411. success: (result) => {},
  412. fail: (error) => {}
  413. })
  414. },
  415. // 搜索内容变化
  416. searchValChange(e){
  417. this.sandTableQuery.keyword=e.detail
  418. // this.sandTableQuery.is_high_light = true
  419. // this.getSandBoxList()
  420. },
  421. // 清除搜索内容
  422. onClearSearch(){
  423. this.sandTableQuery={
  424. page_size: 20,
  425. curr_page: 1,
  426. keyword:'' ,
  427. chart_permission_id: 0,
  428. is_high_light:false
  429. }
  430. this.selectedFirstId = this.selectedSecondId = 0
  431. this.haveShowToast=false
  432. this.getSandBoxList()
  433. },
  434. // 确认搜索
  435. onSearch(){
  436. this.sandTableQuery.chart_permission_id= this.selectedFirstId = this.selectedSecondId = 0
  437. this.sandTableQuery.is_high_light = true
  438. this.haveShowToast=false
  439. this.getSandBoxList()
  440. },
  441. // 选中一级分类
  442. selectFisrtClassify(e){
  443. this.selectedFirstId = e.detail
  444. },
  445. handleSelectPerItem(item){
  446. if(this.selectedSecondId==item.chart_permission_id){
  447. this.sandTableQuery.chart_permission_id=this.selectedSecondId=0
  448. }else{
  449. this.sandTableQuery.chart_permission_id=this.selectedSecondId=item.chart_permission_id
  450. }
  451. this.sandTableQuery.curr_page=1
  452. uni.pageScrollTo({
  453. scrollTop:0,
  454. duration:300
  455. })
  456. this.showFilter=false
  457. this.getSandBoxList()
  458. },
  459. // 预览图片
  460. previewImage(index){
  461. // 先切换横屏才预览图片 ,预览图片开启之后 切换不了横屏
  462. uni.setPageOrientation({orientation : "landscape"}).finally(()=>{
  463. // 在回调函数中 用setTimeout将预览图片的任务 再往后排 不然可能会切换失败
  464. setTimeout(()=>{
  465. uni.previewImage({
  466. urls:this.list.map(item=> item.pic_url),
  467. current:index,
  468. showmenu:false
  469. })
  470. },20)
  471. })
  472. },
  473. // 生成海报
  474. generatePoster(type,item=''){
  475. this.handleCreatePoster(type,item)
  476. },
  477. async handleCreatePoster(type,item){
  478. this.show=true
  479. let code_scene_json = {},source='',parsJson={},code_scene=''
  480. if(type == 'detail'){
  481. // 分享单个
  482. let {chart_permission_id} = item
  483. let first_permission_id = 0
  484. // 通过分享的沙盘图的二级分类Id,找到对应的一级Id
  485. U:for (let item of this.classfyList) {
  486. for (let it of item.list) {
  487. if(it.chart_permission_id == chart_permission_id){
  488. first_permission_id = item.id
  489. break U
  490. }
  491. }
  492. }
  493. code_scene_json={
  494. sandbox_id:item.sandbox_id,
  495. chart_permission_id,
  496. firstClassifyId:first_permission_id
  497. }
  498. code_scene=JSON.stringify(code_scene_json)
  499. source = 'sandbox_detail'
  500. parsJson = {title_1:item.name,img_1:item.pic_url}
  501. }else{
  502. // 分享列表
  503. let {keyword,chart_permission_id,is_high_light} = this.sandTableQuery
  504. let firstImageUrl,secondImageUrl;
  505. if(!this.list || !this.list[0]){
  506. // 分享的列表页一条数据也没有 使用两个默认的沙盘图地址
  507. firstImageUrl = this.globalImgUrls.sandBoxShareDefault1
  508. secondImageUrl = this.globalImgUrls.sandBoxShareDefault2
  509. }else if(!this.list[1]){
  510. // 分享的列表页只有一条数据 第二个图片使用默认的沙盘图地址
  511. firstImageUrl = this.list[0].pic_url
  512. secondImageUrl = this.globalImgUrls.sandBoxShareDefault1
  513. }else{
  514. // 列表页有数据
  515. firstImageUrl = this.list[0].pic_url
  516. secondImageUrl = this.list[1].pic_url
  517. }
  518. code_scene_json={
  519. keyword,
  520. chart_permission_id,
  521. is_high_light,
  522. firstClassifyId:this.selectedFirstId
  523. }
  524. code_scene=JSON.stringify(code_scene_json)
  525. source = 'sandbox_list'
  526. parsJson = {title_1:'沙盘推演',img_1:firstImageUrl,img_2:secondImageUrl}
  527. }
  528. const res=await apiGetPoster({
  529. code_page:'pages-sandTable/sandTable',
  530. code_scene,
  531. source,
  532. pars:JSON.stringify(parsJson),
  533. version:'7.0'
  534. })
  535. if(res.code==200){
  536. this.posterImg=res.data
  537. this.show=false
  538. this.showPoster=true
  539. }else{
  540. this.show=false
  541. }
  542. }
  543. }
  544. }
  545. </script>
  546. <style lang="scss" scoped>
  547. page{
  548. padding-bottom: 0;
  549. // 无权限
  550. .sandTable-noAuthor{
  551. display: flex;
  552. flex-direction: column;
  553. align-items: center;
  554. height: 100vh;
  555. image{
  556. margin-top: 180rpx;
  557. }
  558. text{
  559. font-family: 'PingFang SC';
  560. font-style: normal;
  561. font-weight: 400;
  562. font-size: 28rpx;
  563. color: #999999;
  564. }
  565. .sales-mobile{
  566. color: #E3B377;
  567. }
  568. button{
  569. background: #E6B77D;
  570. border-radius: 4px;
  571. width: 634rpx;
  572. height: 80rpx;
  573. margin-top: 108rpx;
  574. font-family: 'PingFang SC';
  575. font-style: normal;
  576. font-weight: 500;
  577. font-size: 32rpx;
  578. color: #FFFFFF;
  579. }
  580. }
  581. // 搜索区域
  582. .search-wrap{
  583. display: flex;
  584. background-color: white;
  585. padding: 20rpx 34rpx 20rpx 10rpx;
  586. height: 156rpx;
  587. align-items: center;
  588. .filtration-icon-zone{
  589. display: flex;
  590. align-items: center;
  591. image{
  592. width: 52rpx;
  593. height: 52rpx;
  594. }
  595. text{
  596. font-family: 'PingFang SC';
  597. font-style: normal;
  598. font-weight: 400;
  599. font-size: 32rpx;
  600. color: #E3B377;
  601. }
  602. }
  603. }
  604. // 列表区域 无数据
  605. .sandTable-noData{
  606. display: flex;
  607. flex-direction: column;
  608. align-items: center;
  609. height: calc(100vh - 158rpx);
  610. image{
  611. margin-top: 180rpx;
  612. }
  613. text{
  614. margin-top: 48rpx;
  615. font-family: 'PingFang SC';
  616. font-style: normal;
  617. font-weight: 400;
  618. font-size: 28rpx;
  619. color: #999999;
  620. }
  621. }
  622. // 列表区域
  623. .sandTable-box{
  624. padding: 24rpx 34rpx 40rpx 34rpx;
  625. background-color: white;
  626. margin-top: 10rpx;
  627. .sandTable-box-top{
  628. display: flex;
  629. justify-content: space-between;
  630. align-items: center;
  631. margin-bottom: 32rpx;
  632. .sandTable-box-topL{
  633. display: flex;
  634. align-items: center;
  635. .sandTable-tag{
  636. margin-right: 20rpx;
  637. padding: 4rpx 22rpx;
  638. background: #333333;
  639. border-radius: 8rpx 8rpx 8rpx 8rpx;
  640. font-size: 24rpx;
  641. font-family: PingFang SC-Medium, PingFang SC;
  642. font-weight: 500;
  643. color: #E4B478;
  644. display: flex;
  645. align-items: center;
  646. justify-content: center;
  647. }
  648. .sandTable-name{
  649. font-size: 32rpx;
  650. font-family: PingFang SC-Medium, PingFang SC;
  651. font-weight: 500;
  652. color: #333333;
  653. max-width: 390rpx;
  654. }
  655. }
  656. .sandTable-box-topR{
  657. display: flex;
  658. align-items: center;
  659. .share-btn{
  660. padding: 0;
  661. height: unset;
  662. line-height: unset;
  663. font-size: 0;
  664. border-radius: unset;
  665. &::after{
  666. border: none;
  667. }
  668. }
  669. image{
  670. width: 32rpx;
  671. height: 32rpx;
  672. }
  673. }
  674. }
  675. .sandTable-item{
  676. border: 2rpx solid #C4C4C4;
  677. image{
  678. width: 100%;
  679. height: 480rpx;
  680. }
  681. .sandTable-item-origin{
  682. text-align: right;
  683. padding:0 24rpx 20rpx 0 ;
  684. font-size: 20rpx;
  685. font-family: PingFang SC-Regular, PingFang SC;
  686. font-weight: 400;
  687. color: #666666;
  688. }
  689. }
  690. }
  691. .bottom_text{
  692. display: flex;
  693. justify-content: center;
  694. height: 60rpx;
  695. color: gray;
  696. font-size: 32rpx;
  697. }
  698. // 过滤弹窗
  699. .filter-container{
  700. height: 700rpx;
  701. width: 100vw;
  702. position: relative;
  703. .filter-container-header{
  704. padding: 54rpx 34rpx 20rpx 34rpx;
  705. display: flex;
  706. align-items: center;
  707. justify-content: space-between;
  708. text{
  709. font-size: 32rpx;
  710. font-family: PingFang SC-Medium, PingFang SC;
  711. font-weight: 500;
  712. color: #000000;
  713. }
  714. }
  715. .list-box{
  716. min-height: 30vh;
  717. max-height: 60vh;
  718. .list-item{
  719. display: block;
  720. margin: 10rpx;
  721. height: 76rpx;
  722. line-height: 76rpx;
  723. color: #000;
  724. background: #F6F6F6;
  725. border-radius: 4px 4px 4px 4px;
  726. text-align: center;
  727. }
  728. .list-item-active{
  729. background-color: #FAEEDE;
  730. }
  731. }
  732. button{
  733. position: absolute;
  734. bottom: 0;
  735. height: 80rpx;
  736. width: 100vw;
  737. border-radius: 0;
  738. background-color: #E6B77D;
  739. font-size: 32rpx;
  740. font-family: PingFang SC-Medium, PingFang SC;
  741. font-weight: 500;
  742. color: #FFFFFF;
  743. }
  744. }
  745. // 分享海报
  746. .share-poster-wrap{
  747. .poster-mask{
  748. position: fixed;
  749. left: 0;
  750. top: 0;
  751. right: 0;
  752. bottom: 0;
  753. background: rgba(0, 0, 0, 0.4);
  754. z-index: 998;
  755. }
  756. .loading-box{
  757. background-color: #fff;
  758. position: fixed;
  759. left: 50%;
  760. top: 50%;
  761. z-index: 999;
  762. transform: translate(-50%,-50%);
  763. width: 417rpx;
  764. height: 261rpx;
  765. text-align: center;
  766. padding-top: 80rpx;
  767. font-size: 32rpx;
  768. font-weight: bold;
  769. .load-img{
  770. width: 91rpx;
  771. height: 91rpx;
  772. animation: circle 1s linear infinite;
  773. }
  774. @keyframes circle {
  775. 0%{
  776. transform: rotateZ(0);
  777. }
  778. 100%{
  779. transform: rotateZ(360deg);
  780. }
  781. }
  782. }
  783. .poster-img{
  784. width: 90vw;
  785. display: block;
  786. position: fixed;
  787. left: 50%;
  788. top: 50%;
  789. z-index: 999;
  790. transform: translate(-50%,-50%);
  791. border-radius: 16rpx;
  792. }
  793. }
  794. // 分享图标
  795. .share-icon{
  796. position: fixed;
  797. bottom: 100rpx;
  798. right: 34rpx;
  799. z-index: 50;
  800. width: 76rpx;
  801. height: 76rpx;
  802. }
  803. }
  804. </style>
  805. <style scoped>
  806. /deep/ .van-search__content{background-color:#F6F6F6;
  807. border: 2px solid #E5E5E5;box-sizing: border-box;}
  808. </style>
  809. <style lang='scss'>
  810. .filter-container{
  811. .list-box{
  812. .van-cell__title, .van-cell__value{
  813. flex: none !important;
  814. }
  815. .van-cell:after{
  816. border: none !important;
  817. }
  818. .van-cell__title{
  819. font-size: 14px;
  820. }
  821. .van-hairline--top:after{
  822. border-top-width: 0 !important;
  823. }
  824. }
  825. }
  826. </style>