moment.vue 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980
  1. <template name="moment">
  2. <view id="moments">
  3. <view class="home-pic" :style="style">
  4. <view class="home-pic-base">
  5. <view class="top-pic">
  6. <image class="header" :src="item.logo" @tap="test"></image>
  7. </view>
  8. <view class="top-name">{{item.name}}</view>
  9. </view>
  10. </view>
  11. <view style="padding-bottom: 140rpx;">
  12. <view class="moments__post" v-for="(post,index) in posts" :key="index" :id="'post-'+index">
  13. <view class="post-left">
  14. <image class="post_header" :src="post.header_image"></image>
  15. </view>
  16. <view class="post_right">
  17. <text class="post-username">{{post.username}}</text>
  18. <view id="paragraph" class="paragraph">{{post.content.text}}</view>
  19. <!-- 相册 -->
  20. <view class="thumbnails">
  21. <view :class="post.content.images.length === 1?'my-gallery':'thumbnail'" v-for="(image, index_images) in post.content.images" :key="index_images">
  22. <image class="gallery_img" lazy-load mode="aspectFill" :src="image" :data-src="image" @tap="previewImage(post.content.images,index_images)"></image>
  23. </view>
  24. </view>
  25. <!-- 资料条 -->
  26. <view class="toolbar">
  27. <view class="timestamp">{{post.timestamp}}</view>
  28. <view class="like" @tap="like(index)">
  29. <image src="@/static/moment/islike.png" style="width: 30px;"></image>
  30. </view>
  31. <view class="comment" @tap="comment(index)">
  32. <image src="@/static/moment/comment.png" style="width: 30px;"></image>
  33. </view>
  34. </view>
  35. <!-- 赞/评论区 -->
  36. <view class="post-footer">
  37. <view class="footer_content">
  38. <image class="liked" src="@/static/moment/liked.png"></image>
  39. <text class="nickname" v-for="(user,index_like) in post.like" :key="index_like">{{user.username}}</text>
  40. </view>
  41. <view class="footer_content" v-for="(comment,comment_index) in post.comments.comment" :key="comment_index" @tap="reply(index,comment_index)">
  42. <text class="comment-nickname">{{comment.username}}: <text class="comment-content">{{comment.content}}</text></text>
  43. </view>
  44. </view>
  45. </view>
  46. <!-- 结束 post -->
  47. </view>
  48. </view>
  49. <view class="foot" >
  50. </view>
  51. <view class="uni-loadmore" v-if="showLoadMore">{{loadMoreText}}</view>
  52. <y-Fab :bottom="20" :right="140" @click="showModal" bgColor="#0fa5e5" text="发布"></y-Fab>
  53. <block v-if="index == -1">
  54. <y-Fab :bottom="20" :right="20" @click="back" text="返回"></y-Fab>
  55. </block>
  56. <view v-if="showComment">
  57. <dever-publish :title="title" :is_upload="is_upload" @hideModal="hideModal" @getRefresh="getRefresh" :type="key" :type_id="item.id" :api="api"></dever-publish>
  58. </view>
  59. </view>
  60. </template>
  61. <script>
  62. import postData from '@/lib/moment/index.post.data.js';//朋友圈数据data
  63. import deverPublish from '@/lib/dever/components/publish.vue';
  64. export default {
  65. name: "moment",
  66. props: {
  67. control : {
  68. type : Object,
  69. value : null
  70. },
  71. item : {
  72. type : Object,
  73. value : null
  74. },
  75. index : 0
  76. },
  77. components: {
  78. deverPublish
  79. },
  80. data() {
  81. return {
  82. posts: postData,//模拟数据
  83. user_id: 4,
  84. username: 'Liuxy',
  85. data_index: '',
  86. comment_index: '',
  87. input_placeholder: '评论', //占位内容
  88. focus: false, //是否自动聚焦输入框
  89. is_reply: false, //回复还是评论
  90. showInput: false, //评论输入框
  91. screenHeight: '', //屏幕高度(系统)
  92. platform: '',
  93. windowHeight: '' ,//可用窗口高度(不计入软键盘)
  94. loadMoreText: "加载中...",
  95. showLoadMore: false,
  96. style : '',
  97. title : '发布新动态',
  98. api : 'app/community/?l=api.addMoment',
  99. key : '30',
  100. is_upload : true,
  101. showComment : false,
  102. }
  103. },
  104. mounted() {
  105. console.info(this.item);
  106. this.style = 'background:url("'+this.item.pic+'");background-size: contain;';
  107. uni.getSystemInfo({ //获取设备信息
  108. success: (res) => {
  109. this.screenHeight = res.screenHeight;
  110. this.platform = res.platform;
  111. }
  112. });
  113. uni.getStorage({
  114. key: 'posts',
  115. success: function (res) {
  116. console.log(res.data);
  117. this.posts = res.data;
  118. }
  119. });
  120. uni.onWindowResize((res) => { //监听窗口尺寸变化,窗口尺寸不包括底部导航栏
  121. if(this.platform === 'ios'){
  122. this.windowHeight = res.size.windowHeight;
  123. this.adjust();
  124. }else{
  125. if (this.screenHeight - res.size.windowHeight > 60 && this.windowHeight <= res.size.windowHeight) {
  126. this.windowHeight = res.size.windowHeight;
  127. this.adjust();
  128. }
  129. }
  130. });
  131. this.getData(1);
  132. },
  133. onHide() {
  134. uni.offWindowResize(); //取消监听窗口尺寸变化
  135. },
  136. onUnload() {
  137. this.max = 0,
  138. this.data = [],
  139. this.loadMoreText = "加载更多",
  140. this.showLoadMore = false;
  141. },
  142. onReachBottom() { //监听上拉触底事件
  143. console.log('onReachBottom');
  144. this.showLoadMore = true;
  145. setTimeout(() => {
  146. //获取数据
  147. if (this.posts.length < 20){//测试数据
  148. this.posts = this.posts.concat(this.posts);
  149. }else{
  150. this.loadMoreText = "暂无更多";
  151. }
  152. }, 1000);
  153. },
  154. onPullDownRefresh() { //监听下拉刷新动作
  155. console.log('onPullDownRefresh');
  156. // 这里获取数据
  157. setTimeout(function() {
  158. //初始化数据
  159. uni.stopPullDownRefresh(); //停止下拉刷新
  160. }, 1000);
  161. },
  162. onNavigationBarButtonTap(e) {//监听标题栏点击事件
  163. if (e.index == 0) {
  164. this.navigateTo('../publish/publish')
  165. }
  166. },
  167. computed:{
  168. },
  169. methods: {
  170. getData : function(page) {
  171. this.Dever.page([page, 'info'], this, 'app/community/?l=api.moment', {type:this.key,type_id:this.item.id});
  172. },
  173. showModal : function() {
  174. this.showComment = true;
  175. },
  176. hideModal : function() {
  177. this.showComment = false;
  178. },
  179. getRefresh : function(cate_id, type, type_id, content) {
  180. this.getData(1);
  181. this.hideModal();
  182. },
  183. navigateTo(url) {
  184. uni.navigateTo({
  185. url: url
  186. });
  187. },
  188. like(index) {
  189. if (this.posts[index].islike === 0) {
  190. this.posts[index].islike = 1;
  191. this.posts[index].like.push({
  192. "uid": this.user_id,
  193. "username": "," + this.username
  194. });
  195. } else {
  196. this.posts[index].islike = 0;
  197. this.posts[index].like.splice(this.posts[index].like.indexOf({
  198. "uid": this.user_id,
  199. "username": "," + this.username
  200. }), 1);
  201. }
  202. },
  203. comment(index) {
  204. this.showInput = true; //调起input框
  205. this.focus = true;
  206. this.data_index = index;
  207. },
  208. adjust() { //当弹出软键盘发生评论动作时,调整页面位置pageScrollTo
  209. return;
  210. uni.createSelectorQuery().selectViewport().scrollOffset(res => {
  211. var scrollTop = res.scrollTop;
  212. let view = uni.createSelectorQuery().select("#post-" + this.data_index);
  213. view.boundingClientRect(data => {
  214. console.log("data:" + JSON.stringify(data));
  215. console.log("手机屏幕高度:" + this.screenHeight);
  216. console.log("竖直滚动位置" + scrollTop);
  217. console.log("节点离页面顶部的距离为" + data.top);
  218. console.log("节点高度为" + data.height);
  219. console.log("窗口高度为" + this.windowHeight);
  220. uni.pageScrollTo({
  221. scrollTop: scrollTop - (this.windowHeight - (data.height + data.top + 45)), //一顿乱算
  222. // scrollTop: 50,
  223. duration: 300
  224. });
  225. }).exec();
  226. }).exec();
  227. },
  228. reply(index, comment_index) {
  229. this.is_reply = true; //回复中
  230. this.showInput = true; //调起input框
  231. let replyTo = this.posts[index].comments.comment[comment_index].username;
  232. this.input_placeholder = '回复' + replyTo;
  233. this.data_index = index; //post索引
  234. this.comment_index = comment_index; //评论索引
  235. this.focus = true;
  236. },
  237. blur: function() {
  238. this.init_input();
  239. },
  240. send_comment: function(message) {
  241. if (this.is_reply) {
  242. var reply_username = this.posts[this.data_index].comments.comment[this.comment_index].username;
  243. var comment_content = '回复' + reply_username + ':' + message.content;
  244. } else {
  245. var comment_content = message.content;
  246. }
  247. this.posts[this.data_index].comments.total += 1;
  248. this.posts[this.data_index].comments.comment.push({
  249. "uid": this.user_id,
  250. "username": this.username,
  251. "content": comment_content //直接获取input中的值
  252. });
  253. this.init_input();
  254. },
  255. init_input() {
  256. this.showInput = false;
  257. this.focus = false;
  258. this.input_placeholder = '评论';
  259. this.is_reply = false;
  260. },
  261. previewImage(imageList, image_index) {
  262. var current = imageList[image_index];
  263. uni.previewImage({
  264. current: current,
  265. urls: imageList
  266. });
  267. },
  268. goPublish() {
  269. uni.navigateTo({
  270. url: './publish/publish',
  271. success: res => {},
  272. fail: () => {},
  273. complete: () => {}
  274. });
  275. }
  276. }
  277. }
  278. </script>
  279. <style scoped>
  280. .liked{
  281. /* display: inline-block; */
  282. position: relative;
  283. margin-right: 10upx;
  284. width: 34upx;
  285. height: 34upx;
  286. }
  287. .post-username{
  288. font-size:32upx;
  289. font-weight: 600;
  290. color: #36648B;
  291. }
  292. .gallery_img {
  293. width: 100%;
  294. height: 100%
  295. }
  296. .header {
  297. width: 100%;
  298. height: 100%;
  299. z-index: 10;
  300. border-radius: 40upx;
  301. }
  302. .publish {
  303. position: absolute;
  304. top: 20upx;
  305. right: 20upx;
  306. /* z-index: 9999; */
  307. }
  308. .post_header {
  309. width: 90upx !important;
  310. height: 90upx !important;
  311. border-radius: 10upx;
  312. margin-top: 8upx;
  313. }
  314. #moments {
  315. background: #fff;
  316. }
  317. #moments .home-pic {
  318. width: 100%;
  319. /* margin-top: -150upx; */
  320. position: relative;
  321. height: 500upx;
  322. z-index: 5;
  323. background-size: cover;
  324. margin-bottom: 50upx
  325. }
  326. #moments .home-pic-base {
  327. position: absolute;
  328. /*left: -60upx;*/
  329. bottom: -40upx;
  330. width: 100%;
  331. height: 160upx;
  332. padding: 0 30upx;
  333. }
  334. #moments .home-pic-base .top-pic {
  335. width: 360upx;
  336. height: 360upx;
  337. border-radius: 40upx;
  338. -webkit-transform: scale(0.5);
  339. -ms-transform: scale(0.5);
  340. transform: scale(0.5);
  341. -webkit-transform-origin: 100% 0%;
  342. -ms-transform-origin: 100% 0%;
  343. transform-origin: 100% 0%;
  344. background-color: #ffffff;
  345. float: right
  346. }
  347. #moments .home-pic-base .top-name {
  348. position: absolute;
  349. /* left: 20px; */
  350. right: 240upx;
  351. top: 30upx;
  352. font-size: 32upx;
  353. font-weight: 600;
  354. text-align: right;
  355. color: #ffffff;
  356. overflow: hidden
  357. }
  358. #moments .moments__post {
  359. background: #fff;
  360. display: block;
  361. border-bottom: 1px solid #f2eeee;
  362. padding: 30upx 20upx;
  363. position: relative;
  364. display: -webkit-box;
  365. display: -webkit-flex;
  366. display: flex;
  367. }
  368. #moments .moments__post::before {
  369. content: none
  370. }
  371. #moments .moments__post .post_right {
  372. font-size: 32upx;
  373. display: table-cell;
  374. padding-left: 20upx;
  375. width: 100%;
  376. }
  377. /* #moments .moments__post .post_right .paragraphExtender {
  378. margin: 5px auto;
  379. display: -webkit-box;
  380. display: -webkit-flex;
  381. display: -ms-flexbox;
  382. display: flex
  383. } */
  384. #moments .moments__post .title {
  385. color: #094dcc
  386. }
  387. #moments .moments__post .thumbnails {
  388. width: 100%;
  389. display: flex;
  390. flex-wrap: wrap;
  391. /* display: -webkit-box;
  392. display: -webkit-flex;
  393. display: -ms-flexbox; */
  394. /* -webkit-flex-wrap: wrap;
  395. -ms-flex-wrap: wrap; */
  396. }
  397. #moments .moments__post .thumbnails .thumbnail {
  398. width: 30%;
  399. height: 180upx;
  400. margin: 4upx;
  401. background: #757575;
  402. overflow: hidden;
  403. }
  404. .my-gallery{
  405. width: 250upx;
  406. height: 400upx;
  407. margin: 4upx;
  408. background: #757575;
  409. overflow: hidden
  410. }
  411. #moments .moments__post .toolbar {
  412. position: relative;
  413. top: 10upx;
  414. display: -webkit-box;
  415. display: -webkit-flex;
  416. display: -ms-flexbox;
  417. display: flex;
  418. -webkit-box-align: center;
  419. -webkit-align-items: center;
  420. -ms-flex-align: center;
  421. align-items: center
  422. }
  423. #moments .moments__post .toolbar .timestamp {
  424. color: #757575;
  425. font-size: 22upx;
  426. }
  427. #moments .moments__post .like {
  428. width: auto;
  429. height: auto;
  430. position: absolute;
  431. right: 60upx;
  432. display: flex;
  433. align-items: center;
  434. }
  435. #moments .moments__post .comment {
  436. width: auto;
  437. height: auto;
  438. position: absolute;
  439. right: 0upx;
  440. display: flex;
  441. align-items: center;
  442. }
  443. #moments .moments__post .toolbar image{
  444. padding-left: 20upx;
  445. width: 40upx;
  446. height: 40upx;
  447. }
  448. .post-footer{
  449. margin-top: 30upx;
  450. background-color: #f3f3f5;
  451. width: 100%;
  452. }
  453. #moments .moments__post .footer_content {
  454. padding-left: 10upx;
  455. position: relative;
  456. display: -webkit-box;
  457. display: -webkit-flex;
  458. display: -ms-flexbox;
  459. display: flex;
  460. -webkit-box-align: center;
  461. -webkit-align-items: center;
  462. -ms-flex-align: center;
  463. align-items: center;
  464. -webkit-flex-wrap: wrap;
  465. -ms-flex-wrap: wrap;
  466. flex-wrap: wrap
  467. }
  468. #moments .moments__post .footer_content .nickname {
  469. color: #36648B;
  470. font-size: 24upx
  471. }
  472. #moments .moments__post .footer_content .comment-nickname {
  473. color: #36648B;
  474. font-size: 24upx
  475. }
  476. #moments .moments__post .footer_content .comment-content {
  477. color: #000000;
  478. font-size: 24upx
  479. }
  480. .foot {
  481. position: fixed;
  482. width: 100%;
  483. height: 90upx;
  484. min-height: 90upx;
  485. left: 0upx;
  486. bottom: 0upx;
  487. overflow: hidden;
  488. }
  489. @font-face {
  490. font-family: uniicons;
  491. font-weight: normal;
  492. font-style: normal;
  493. src: url('https://img-cdn-qiniu.dcloud.net.cn/fonts/uni.ttf') format('truetype');
  494. }
  495. /*通用 */
  496. view{
  497. font-size:28upx;
  498. line-height:1.8;
  499. }
  500. progress, checkbox-group{
  501. width: 100%;
  502. }
  503. form {
  504. width: 100%;
  505. }
  506. .uni-flex {
  507. display: flex;
  508. flex-direction: row;
  509. }
  510. .uni-flex-item {
  511. flex: 1;
  512. }
  513. .uni-row {
  514. flex-direction: row;
  515. }
  516. .uni-column {
  517. flex-direction: column;
  518. }
  519. .uni-link{
  520. color:#576B95;
  521. font-size:26upx;
  522. }
  523. .uni-center{
  524. text-align:center;
  525. }
  526. .uni-inline-item{
  527. display: flex;
  528. flex-direction: row;
  529. align-items:center;
  530. }
  531. .uni-inline-item text{
  532. margin-right: 20upx;
  533. }
  534. .uni-inline-item text:last-child{
  535. margin-right: 0upx;
  536. margin-left: 20upx;
  537. }
  538. /* page */
  539. .uni-page-head{
  540. padding:35upx;
  541. text-align: center;
  542. }
  543. .uni-page-head-title {
  544. display: inline-block;
  545. padding: 0 40upx;
  546. font-size: 30upx;
  547. height: 88upx;
  548. line-height: 88upx;
  549. color: #BEBEBE;
  550. box-sizing: border-box;
  551. border-bottom: 2upx solid #D8D8D8;
  552. }
  553. .uni-page-body {
  554. width: 100%;
  555. flex-grow: 1;
  556. overflow-x: hidden;
  557. }
  558. .uni-padding-wrap{
  559. width:690upx;
  560. padding:0 30upx;
  561. }
  562. .uni-word {
  563. text-align: center;
  564. padding:200upx 100upx;
  565. }
  566. .uni-title {
  567. font-size:30upx;
  568. font-weight:500;
  569. padding:20upx 0;
  570. line-height:1.5;
  571. }
  572. .uni-text{
  573. font-size:28upx;
  574. }
  575. .uni-title text{
  576. font-size:24upx;
  577. color:#888;
  578. }
  579. .uni-text-gray{
  580. color: #ccc;
  581. }
  582. .uni-text-small {
  583. font-size:24upx;
  584. }
  585. .uni-common-mb{
  586. margin-bottom:30upx;
  587. }
  588. .uni-common-pb{
  589. padding-bottom:30upx;
  590. }
  591. .uni-common-pl{
  592. padding-left:30upx;
  593. }
  594. .uni-common-mt{
  595. margin-top:30upx;
  596. }
  597. /* 背景色 */
  598. .uni-bg-red{
  599. background:#F76260; color:#FFF;
  600. }
  601. .uni-bg-green{
  602. background:#09BB07; color:#FFF;
  603. }
  604. .uni-bg-blue{
  605. background:#007AFF; color:#FFF;
  606. }
  607. /* 标题 */
  608. .uni-h1 {font-size: 80upx; font-weight:700;}
  609. .uni-h2 {font-size: 60upx; font-weight:700;}
  610. .uni-h3 {font-size: 48upx; font-weight:700;}
  611. .uni-h4 {font-size: 36upx; font-weight:700;}
  612. .uni-h5 {font-size: 28upx; color: #8f8f94;}
  613. .uni-h6 {font-size: 24upx; color: #8f8f94;}
  614. .uni-bold{font-weight:bold;}
  615. /* 文本溢出隐藏 */
  616. .uni-ellipsis {overflow: hidden; white-space: nowrap; text-overflow: ellipsis;}
  617. /* 竖向百分百按钮 */
  618. .uni-btn-v{
  619. padding:10upx 0;
  620. }
  621. .uni-btn-v button{margin:20upx 0;}
  622. /* 表单 */
  623. .uni-form-item{
  624. display:flex;
  625. width:100%;
  626. padding:10upx 0;
  627. }
  628. .uni-form-item .title{
  629. padding:10upx 25upx;
  630. }
  631. .uni-label {
  632. width: 210upx;
  633. word-wrap: break-word;
  634. word-break: break-all;
  635. text-indent:20upx;
  636. }
  637. .uni-input {
  638. height: 50upx;
  639. padding: 15upx 25upx;
  640. line-height:50upx;
  641. font-size:28upx;
  642. background:#FFF;
  643. flex: 1;
  644. }
  645. radio-group, checkbox-group{
  646. width:100%;
  647. }
  648. radio-group label, checkbox-group label{
  649. padding-right:20upx;
  650. }
  651. .uni-form-item .with-fun{
  652. display:flex;
  653. flex-wrap:nowrap;
  654. background:#FFFFFF;
  655. }
  656. .uni-form-item .with-fun .uni-icon{
  657. width:40px;
  658. height:80upx;
  659. line-height:80upx;
  660. flex-shrink:0;
  661. }
  662. /* loadmore */
  663. .uni-loadmore{
  664. height:80upx;
  665. line-height:80upx;
  666. text-align:center;
  667. padding-bottom:30upx;
  668. }
  669. /*数字角标*/
  670. .uni-badge,
  671. .uni-badge-default {
  672. font-family: 'Helvetica Neue', Helvetica, sans-serif;
  673. font-size: 12px;
  674. line-height: 1;
  675. display: inline-block;
  676. padding: 3px 6px;
  677. color: #333;
  678. border-radius: 100px;
  679. background-color: rgba(0, 0, 0, .15);
  680. }
  681. .uni-badge.uni-badge-inverted {
  682. padding: 0 5px 0 0;
  683. color: #929292;
  684. background-color: transparent
  685. }
  686. .uni-badge-primary {
  687. color: #fff;
  688. background-color: #007aff
  689. }
  690. .uni-badge-blue.uni-badge-inverted,
  691. .uni-badge-primary.uni-badge-inverted {
  692. color: #007aff;
  693. background-color: transparent
  694. }
  695. .uni-badge-green,
  696. .uni-badge-success {
  697. color: #fff;
  698. background-color: #4cd964;
  699. }
  700. .uni-badge-green.uni-badge-inverted,
  701. .uni-badge-success.uni-badge-inverted {
  702. color: #4cd964;
  703. background-color: transparent
  704. }
  705. .uni-badge-warning,
  706. .uni-badge-yellow {
  707. color: #fff;
  708. background-color: #f0ad4e
  709. }
  710. .uni-badge-warning.uni-badge-inverted,
  711. .uni-badge-yellow.uni-badge-inverted {
  712. color: #f0ad4e;
  713. background-color: transparent
  714. }
  715. .uni-badge-danger,
  716. .uni-badge-red {
  717. color: #fff;
  718. background-color: #dd524d
  719. }
  720. .uni-badge-danger.uni-badge-inverted,
  721. .uni-badge-red.uni-badge-inverted {
  722. color: #dd524d;
  723. background-color: transparent
  724. }
  725. .uni-badge-purple,
  726. .uni-badge-royal {
  727. color: #fff;
  728. background-color: #8a6de9
  729. }
  730. .uni-badge-purple.uni-badge-inverted,
  731. .uni-badge-royal.uni-badge-inverted {
  732. color: #8a6de9;
  733. background-color: transparent
  734. }
  735. /*折叠面板 */
  736. .uni-collapse-content {
  737. height: 0;
  738. width: 100%;
  739. overflow: hidden;
  740. }
  741. .uni-collapse-content.uni-active {
  742. height: auto;
  743. }
  744. /*卡片视图 */
  745. .uni-card {
  746. background: #fff;
  747. border-radius: 8upx;
  748. margin:20upx 0;
  749. position: relative;
  750. box-shadow: 0 2upx 4upx rgba(0, 0, 0, .3);
  751. }
  752. .uni-card-content {
  753. font-size: 30upx;
  754. }
  755. .uni-card-content.image-view{
  756. width: 100%;
  757. margin: 0;
  758. }
  759. .uni-card-content-inner {
  760. position: relative;
  761. padding: 30upx;
  762. }
  763. .uni-card-footer,
  764. .uni-card-header {
  765. position: relative;
  766. display: flex;
  767. min-height: 50upx;
  768. padding: 20upx 30upx;
  769. justify-content: space-between;
  770. align-items: center;
  771. }
  772. .uni-card-header {
  773. font-size: 36upx;
  774. }
  775. .uni-card-footer {
  776. color: #6d6d72;
  777. }
  778. .uni-card-footer:before,
  779. .uni-card-header:after {
  780. position: absolute;
  781. top: 0;
  782. right: 0;
  783. left: 0;
  784. height: 2upx;
  785. content: '';
  786. -webkit-transform: scaleY(.5);
  787. transform: scaleY(.5);
  788. background-color: #c8c7cc;
  789. }
  790. .uni-card-header:after {
  791. top: auto;
  792. bottom: 0;
  793. }
  794. .uni-card-media {
  795. justify-content: flex-start;
  796. }
  797. .uni-card-media-logo {
  798. height: 84upx;
  799. width: 84upx;
  800. margin-right: 20upx;
  801. }
  802. .uni-card-media-body {
  803. height: 84upx;
  804. display: flex;
  805. flex-direction: column;
  806. justify-content: space-between;
  807. align-items: flex-start;
  808. }
  809. .uni-card-media-text-top {
  810. line-height: 36upx;
  811. font-size: 34upx;
  812. }
  813. .uni-card-media-text-bottom {
  814. line-height: 30upx;
  815. font-size: 28upx;
  816. color: #8f8f94;
  817. }
  818. .uni-card-link {
  819. color: #007AFF;
  820. }
  821. /* 列表 */
  822. .uni-list {
  823. background-color: #FFFFFF;
  824. position: relative;
  825. width: 100%;
  826. display: flex;
  827. flex-direction: column;
  828. }
  829. .uni-list:after {
  830. position: absolute;
  831. z-index: 10;
  832. right: 0;
  833. bottom: 0;
  834. left: 0;
  835. height: 1px;
  836. content: '';
  837. -webkit-transform: scaleY(.5);
  838. transform: scaleY(.5);
  839. background-color: #c8c7cc;
  840. }
  841. .uni-list::before {
  842. position: absolute;
  843. z-index: 10;
  844. right: 0;
  845. top: 0;
  846. left: 0;
  847. height: 1px;
  848. content: '';
  849. -webkit-transform: scaleY(.5);
  850. transform: scaleY(.5);
  851. background-color: #c8c7cc;
  852. }
  853. .uni-list-cell {
  854. position: relative;
  855. display: flex;
  856. flex-direction: row;
  857. justify-content: space-between;
  858. align-items: center;
  859. }
  860. .uni-list-cell-hover {
  861. background-color: #eee;
  862. }
  863. .uni-list-cell-pd {
  864. padding: 22upx 30upx;
  865. }
  866. .uni-list-cell-left {
  867. font-size:28upx;
  868. padding: 0 30upx;
  869. }
  870. .uni-list-cell-db,
  871. .uni-list-cell-right {
  872. flex: 1;
  873. }
  874. .uni-list-cell::after {
  875. position: absolute;
  876. z-index: 3;
  877. right: 0;
  878. bottom: 0;
  879. left: 30upx;
  880. height: 1px;
  881. content: '';
  882. -webkit-transform: scaleY(.5);
  883. transform: scaleY(.5);
  884. background-color: #c8c7cc;
  885. }
  886. .uni-list .uni-list-cell:last-child::after {
  887. height: 0upx;
  888. }
  889. .uni-list-cell-last.uni-list-cell::after {
  890. height: 0upx;
  891. }
  892. .uni-list-cell-divider {
  893. position: relative;
  894. display: flex;
  895. color: #999;
  896. background-color: #f7f7f7;
  897. padding:15upx 20upx;
  898. }
  899. .uni-list-cell-divider::before {
  900. position: absolute;
  901. right: 0;
  902. top: 0;
  903. left: 0;
  904. height: 1px;
  905. content: '';
  906. -webkit-transform: scaleY(.5);
  907. transform: scaleY(.5);
  908. background-color: #c8c7cc;
  909. }
  910. .uni-list-cell-divider::after {
  911. position: absolute;
  912. right: 0;
  913. bottom: 0;
  914. left: 0upx;
  915. height: 1px;
  916. content: '';
  917. -webkit-transform: scaleY(.5);
  918. transform: scaleY(.5);
  919. background-color: #c8c7cc;
  920. }
  921. .uni-list-cell-navigate {
  922. font-size:30upx;
  923. padding: 22upx 30upx;
  924. line-height: 48upx;
  925. position: relative;
  926. display: flex;
  927. box-sizing: border-box;
  928. width: 100%;
  929. flex: 1;
  930. justify-content: space-between;
  931. align-items: center;
  932. }
  933. .uni-list-cell-navigate {
  934. padding-right: 36upx;
  935. }
  936. .uni-navigate-badge {
  937. padding-right: 50upx;
  938. }
  939. .uni-list-cell-navigate.uni-navigate-right:after {
  940. font-family: uniicons;
  941. content: '\e583';
  942. position: absolute;
  943. right: 24upx;
  944. top: 50%;
  945. color: #bbb;
  946. -webkit-transform: translateY(-50%);
  947. transform: translateY(-50%);
  948. }
  949. .uni-list-cell-navigate.uni-navigate-bottom:after {
  950. font-family: uniicons;
  951. content: '\e581';
  952. position: absolute;
  953. right: 24upx;
  954. top: 50%;
  955. color: #bbb;
  956. -webkit-transform: translateY(-50%);
  957. transform: translateY(-50%);
  958. }
  959. .uni-list-cell-navigate.uni-navigate-bottom.uni-active::after {
  960. font-family: uniicons;
  961. content: '\e580';
  962. position: absolute;
  963. right: 24upx;
  964. top: 50%;
  965. color: #bbb;
  966. -webkit-transform: translateY(-50%);
  967. transform: translateY(-50%);
  968. }
  969. .uni-collapse.uni-list-cell {
  970. flex-direction: column;
  971. }
  972. .uni-list-cell-navigate.uni-active {
  973. background: #eee;
  974. }
  975. .uni-list.uni-collapse {
  976. box-sizing: border-box;
  977. height: 0;
  978. overflow: hidden;
  979. }
  980. .uni-collapse .uni-list-cell {
  981. padding-left: 20upx;
  982. }
  983. .uni-collapse .uni-list-cell::after {
  984. left: 52upx;
  985. }
  986. .uni-list.uni-active {
  987. height: auto;
  988. }
  989. /* 三行列表 */
  990. .uni-triplex-row {
  991. display: flex;
  992. flex: 1;
  993. width: 100%;
  994. box-sizing: border-box;
  995. flex-direction: row;
  996. padding: 22upx 30upx;
  997. }
  998. .uni-triplex-right,
  999. .uni-triplex-left {
  1000. display: flex;
  1001. flex-direction: column;
  1002. }
  1003. .uni-triplex-left {
  1004. width: 84%;
  1005. }
  1006. .uni-triplex-left .uni-title{
  1007. padding:8upx 0;
  1008. }
  1009. .uni-triplex-left .uni-text, .uni-triplex-left .uni-text-small{color:#999999;}
  1010. .uni-triplex-right {
  1011. width: 16%;
  1012. text-align: right;
  1013. }
  1014. /* 图文列表 */
  1015. .uni-media-list {
  1016. padding: 22upx 30upx;
  1017. box-sizing: border-box;
  1018. display: flex;
  1019. width: 100%;
  1020. flex-direction: row;
  1021. }
  1022. .uni-navigate-right.uni-media-list {
  1023. padding-right: 74upx;
  1024. }
  1025. .uni-pull-right {
  1026. flex-direction: row-reverse;
  1027. }
  1028. .uni-pull-right>.uni-media-list-logo {
  1029. margin-right: 0upx;
  1030. margin-left: 20upx;
  1031. }
  1032. .uni-media-list-logo {
  1033. height: 84upx;
  1034. width: 84upx;
  1035. margin-right: 20upx;
  1036. }
  1037. .uni-media-list-logo image {
  1038. height: 100%;
  1039. width: 100%;
  1040. }
  1041. .uni-media-list-body {
  1042. height: 84upx;
  1043. display: flex;
  1044. flex: 1;
  1045. flex-direction: column;
  1046. justify-content: space-between;
  1047. align-items: flex-start;
  1048. overflow: hidden;
  1049. }
  1050. .uni-media-list-text-top {
  1051. width: 100%;
  1052. line-height: 36upx;
  1053. font-size: 30upx;
  1054. }
  1055. .uni-media-list-text-bottom {
  1056. width: 100%;
  1057. line-height: 30upx;
  1058. font-size: 26upx;
  1059. color: #8f8f94;
  1060. }
  1061. /* 九宫格 */
  1062. .uni-grid-9 {
  1063. background: #f2f2f2;
  1064. width: 750upx;
  1065. display: flex;
  1066. flex-direction: row;
  1067. flex-wrap: wrap;
  1068. border-top: 2upx solid #eee;
  1069. }
  1070. .uni-grid-9-item {
  1071. width: 250upx;
  1072. height: 200upx;
  1073. display: flex;
  1074. flex-direction: column;
  1075. align-items: center;
  1076. justify-content: center;
  1077. border-bottom: 2upx solid;
  1078. border-right: 2upx solid;
  1079. border-color: #eee;
  1080. box-sizing: border-box;
  1081. }
  1082. .no-border-right {
  1083. border-right: none;
  1084. }
  1085. .uni-grid-9-image {
  1086. width: 100upx;
  1087. height: 100upx;
  1088. }
  1089. .uni-grid-9-text {
  1090. width: 250upx;
  1091. line-height: 4upx;
  1092. height: 40upx;
  1093. text-align: center;
  1094. font-size: 30upx;
  1095. }
  1096. .uni-grid-9-item-hover {
  1097. background: rgba(0, 0, 0, 0.1);
  1098. }
  1099. /* 上传 */
  1100. .uni-uploader {
  1101. flex: 1;
  1102. flex-direction: column;
  1103. }
  1104. .uni-uploader-head {
  1105. display: flex;
  1106. flex-direction: row;
  1107. justify-content: space-between;
  1108. }
  1109. .uni-uploader-info {
  1110. color: #B2B2B2;
  1111. }
  1112. .uni-uploader-body {
  1113. margin-top: 16upx;
  1114. }
  1115. .uni-uploader__files {
  1116. display: flex;
  1117. flex-direction: row;
  1118. flex-wrap: wrap;
  1119. }
  1120. .uni-uploader__file {
  1121. margin: 10upx;
  1122. width: 210upx;
  1123. height: 210upx;
  1124. }
  1125. .uni-uploader__img {
  1126. display: block;
  1127. width: 210upx;
  1128. height: 210upx;
  1129. }
  1130. .uni-uploader__input-box {
  1131. position: relative;
  1132. margin:10upx;
  1133. width: 208upx;
  1134. height: 208upx;
  1135. border: 2upx solid #D9D9D9;
  1136. }
  1137. .uni-uploader__input-box:before,
  1138. .uni-uploader__input-box:after {
  1139. content: " ";
  1140. position: absolute;
  1141. top: 50%;
  1142. left: 50%;
  1143. -webkit-transform: translate(-50%, -50%);
  1144. transform: translate(-50%, -50%);
  1145. background-color: #D9D9D9;
  1146. }
  1147. .uni-uploader__input-box:before {
  1148. width: 4upx;
  1149. height: 79upx;
  1150. }
  1151. .uni-uploader__input-box:after {
  1152. width: 79upx;
  1153. height: 4upx;
  1154. }
  1155. .uni-uploader__input-box:active {
  1156. border-color: #999999;
  1157. }
  1158. .uni-uploader__input-box:active:before,
  1159. .uni-uploader__input-box:active:after {
  1160. background-color: #999999;
  1161. }
  1162. .uni-uploader__input {
  1163. position: absolute;
  1164. z-index: 1;
  1165. top: 0;
  1166. left: 0;
  1167. width: 100%;
  1168. height: 100%;
  1169. opacity: 0;
  1170. }
  1171. /*问题反馈*/
  1172. .feedback-title {
  1173. display: flex;
  1174. flex-direction: row;
  1175. justify-content: space-between;
  1176. align-items: center;
  1177. padding: 20upx;
  1178. color: #8f8f94;
  1179. font-size: 28upx;
  1180. }
  1181. .feedback-star-view.feedback-title {
  1182. justify-content: flex-start;
  1183. margin: 0;
  1184. }
  1185. .feedback-quick {
  1186. position: relative;
  1187. padding-right: 40upx;
  1188. }
  1189. .feedback-quick:after {
  1190. font-family: uniicons;
  1191. font-size: 40upx;
  1192. content: '\e581';
  1193. position: absolute;
  1194. right: 0;
  1195. top: 50%;
  1196. color: #bbb;
  1197. -webkit-transform: translateY(-50%);
  1198. transform: translateY(-50%);
  1199. }
  1200. .feedback-body {
  1201. background: #fff;
  1202. }
  1203. .feedback-textare {
  1204. height: 200upx;
  1205. font-size: 34upx;
  1206. line-height: 50upx;
  1207. width: 100%;
  1208. box-sizing: border-box;
  1209. padding: 20upx 30upx 0;
  1210. }
  1211. .feedback-input {
  1212. font-size: 34upx;
  1213. height: 50upx;
  1214. min-height: 50upx;
  1215. padding: 15upx 20upx;
  1216. line-height: 50upx;
  1217. }
  1218. .feedback-uploader {
  1219. padding: 22upx 20upx;
  1220. }
  1221. .feedback-star {
  1222. font-family: uniicons;
  1223. font-size: 40upx;
  1224. margin-left: 6upx;
  1225. }
  1226. .feedback-star-view {
  1227. margin-left: 20upx;
  1228. }
  1229. .feedback-star:after {
  1230. content: '\e408';
  1231. }
  1232. .feedback-star.active {
  1233. color: #FFB400;
  1234. }
  1235. .feedback-star.active:after {
  1236. content: '\e438';
  1237. }
  1238. .feedback-submit {
  1239. background: #007AFF;
  1240. color: #FFFFFF;
  1241. margin: 20upx;
  1242. }
  1243. /* input group */
  1244. .uni-input-group {
  1245. position: relative;
  1246. padding: 0;
  1247. border: 0;
  1248. background-color: #fff;
  1249. }
  1250. .uni-input-group:before {
  1251. position: absolute;
  1252. top: 0;
  1253. right: 0;
  1254. left: 0;
  1255. height: 2upx;
  1256. content: '';
  1257. transform: scaleY(.5);
  1258. background-color: #c8c7cc;
  1259. }
  1260. .uni-input-group:after {
  1261. position: absolute;
  1262. right: 0;
  1263. bottom: 0;
  1264. left: 0;
  1265. height: 2upx;
  1266. content: '';
  1267. transform: scaleY(.5);
  1268. background-color: #c8c7cc;
  1269. }
  1270. .uni-input-row {
  1271. position: relative;
  1272. display: flex;
  1273. flex-direction: row;
  1274. font-size:28upx;
  1275. padding: 22upx 30upx;
  1276. justify-content: space-between;
  1277. }
  1278. .uni-input-group .uni-input-row:after {
  1279. position: absolute;
  1280. right: 0;
  1281. bottom: 0;
  1282. left: 30upx;
  1283. height: 2upx;
  1284. content: '';
  1285. transform: scaleY(.5);
  1286. background-color: #c8c7cc;
  1287. }
  1288. .uni-input-row label {
  1289. line-height: 70upx;
  1290. }
  1291. /* textarea */
  1292. .uni-textarea{
  1293. width:100%;
  1294. background:#FFF;
  1295. }
  1296. .uni-textarea textarea{
  1297. width:96%;
  1298. padding:18upx 2%;
  1299. line-height:1.6;
  1300. font-size:28upx;
  1301. height:150upx;
  1302. }
  1303. /* tab bar */
  1304. .uni-tab-bar {
  1305. display: flex;
  1306. flex: 1;
  1307. flex-direction: column;
  1308. overflow: hidden;
  1309. height: 100%;
  1310. }
  1311. .uni-tab-bar .list {
  1312. width: 750upx;
  1313. height: 100%;
  1314. }
  1315. .uni-swiper-tab {
  1316. width: 100%;
  1317. white-space: nowrap;
  1318. line-height: 100upx;
  1319. height: 100upx;
  1320. border-bottom: 1px solid #c8c7cc;
  1321. }
  1322. .swiper-tab-list {
  1323. font-size: 30upx;
  1324. width: 150upx;
  1325. display: inline-block;
  1326. text-align: center;
  1327. color: #555;
  1328. }
  1329. .uni-tab-bar .active {
  1330. color: #007AFF;
  1331. }
  1332. .uni-tab-bar .swiper-box {
  1333. flex: 1;
  1334. width: 100%;
  1335. height: calc(100% - 100upx);
  1336. }
  1337. .uni-tab-bar-loading{
  1338. padding:20upx 0;
  1339. }
  1340. /* steps */
  1341. .uni-steps{padding:20upx 30upx; flex-grow: 1; display:flex; flex-wrap:wrap;}
  1342. .uni-steps view{display:flex; flex-wrap:wrap; float:none;}
  1343. .uni-steps .step{width:31.3%; margin:0 1%; flex-wrap:nowrap;}
  1344. .uni-steps .step-circle{width:50upx; height:50upx; border-radius:50upx; background:#F1F1F3; justify-content:center; line-height:50upx; flex-shrink:0; margin-right:15upx; color:#666; font-size:28upx;}
  1345. .uni-steps .step-content{width:100%; height:22upx; border-bottom:1px solid #F1F2F3;}
  1346. .uni-steps .step-title{line-height:50upx; height:50upx; background:#FFFFFF; width:auto; overflow:hidden; padding-right:8upx;}
  1347. .uni-steps .current .step-circle{background:#00B26A; color:#FFFFFF;}
  1348. .uni-steps .current .step-content{border-color:#00B26A;}
  1349. .uni-steps .current .step-title{color:#00B26A;}
  1350. /* comment */
  1351. .uni-comment{padding:5rpx 0; display: flex; flex-grow:1; flex-direction: column;}
  1352. .uni-comment-list{flex-wrap:nowrap; padding:10rpx 0; margin:10rpx 0; width:100%; display: flex;}
  1353. .uni-comment-face{width:70upx; height:70upx; border-radius:100%; margin-right:20upx; flex-shrink:0; overflow:hidden;}
  1354. .uni-comment-face image{width:100%; border-radius:100%;}
  1355. .uni-comment-body{width:100%;}
  1356. .uni-comment-top{line-height:1.5em; justify-content:space-between;}
  1357. .uni-comment-top text{color:#0A98D5; font-size:24upx;}
  1358. .uni-comment-date{line-height:38upx; flex-direction:row; justify-content:space-between; display:flex !important; flex-grow:1;}
  1359. .uni-comment-date view{color:#666666; font-size:24upx; line-height:38upx;}
  1360. .uni-comment-content{line-height:1.6em; font-size:28upx; padding:8rpx 0;}
  1361. .uni-comment-replay-btn{background:#FFF; font-size:24upx; line-height:28upx; padding:5rpx 20upx; border-radius:30upx; color:#333 !important; margin:0 10upx;}
  1362. /* swiper msg */
  1363. .uni-swiper-msg{width:100%; padding:12rpx 0; flex-wrap:nowrap; display:flex;}
  1364. .uni-swiper-msg-icon{width:50upx; margin-right:20upx;}
  1365. .uni-swiper-msg-icon image{width:100%; flex-shrink:0;}
  1366. .uni-swiper-msg swiper{width:100%; height:50upx;}
  1367. .uni-swiper-msg swiper-item{line-height:50upx;}
  1368. /* product */
  1369. .uni-product-list {
  1370. display: flex;
  1371. width: 100%;
  1372. flex-wrap: wrap;
  1373. flex-direction: row;
  1374. }
  1375. .uni-product {
  1376. padding: 20upx;
  1377. display: flex;
  1378. flex-direction: column;
  1379. }
  1380. .image-view {
  1381. height: 330upx;
  1382. width: 330upx;
  1383. margin:12upx 0;
  1384. }
  1385. .uni-product-image {
  1386. height: 330upx;
  1387. width: 330upx;
  1388. }
  1389. .uni-product-title {
  1390. width: 300upx;
  1391. word-break: break-all;
  1392. display: -webkit-box;
  1393. overflow: hidden;
  1394. line-height:1.5;
  1395. text-overflow: ellipsis;
  1396. -webkit-box-orient: vertical;
  1397. -webkit-line-clamp: 2;
  1398. }
  1399. .uni-product-price {
  1400. margin-top:10upx;
  1401. font-size: 28upx;
  1402. line-height:1.5;
  1403. position: relative;
  1404. }
  1405. .uni-product-price-original {
  1406. color: #e80080;
  1407. }
  1408. .uni-product-price-favour {
  1409. color: #888888;
  1410. text-decoration: line-through;
  1411. margin-left: 10upx;
  1412. }
  1413. .uni-product-tip {
  1414. position: absolute;
  1415. right: 10upx;
  1416. background-color: #ff3333;
  1417. color: #ffffff;
  1418. padding: 0 10upx;
  1419. border-radius: 5upx;
  1420. }
  1421. /* timeline */
  1422. .uni-timeline {
  1423. margin: 35upx 0;
  1424. display: flex;
  1425. flex-direction: column;
  1426. position: relative;
  1427. }
  1428. .uni-timeline-item {
  1429. display: flex;
  1430. flex-direction: row;
  1431. position: relative;
  1432. padding-bottom: 20upx;
  1433. box-sizing: border-box;
  1434. overflow: hidden;
  1435. }
  1436. .uni-timeline-item .uni-timeline-item-keynode {
  1437. width: 160upx;
  1438. flex-shrink: 0;
  1439. box-sizing: border-box;
  1440. padding-right: 20upx;
  1441. text-align: right;
  1442. line-height: 65upx;
  1443. }
  1444. .uni-timeline-item .uni-timeline-item-divider {
  1445. flex-shrink: 0;
  1446. position: relative;
  1447. width: 30upx;
  1448. height: 30upx;
  1449. top: 15upx;
  1450. border-radius: 50%;
  1451. background-color: #bbb;
  1452. }
  1453. .uni-timeline-item-divider::before,
  1454. .uni-timeline-item-divider::after {
  1455. position: absolute;
  1456. left: 15upx;
  1457. width: 1upx;
  1458. height: 100vh;
  1459. content: '';
  1460. background: inherit;
  1461. }
  1462. .uni-timeline-item-divider::before {
  1463. bottom: 100%;
  1464. }
  1465. .uni-timeline-item-divider::after {
  1466. top: 100%;
  1467. }
  1468. .uni-timeline-last-item .uni-timeline-item-divider:after {
  1469. display: none;
  1470. }
  1471. .uni-timeline-first-item .uni-timeline-item-divider:before {
  1472. display: none;
  1473. }
  1474. .uni-timeline-item .uni-timeline-item-content {
  1475. padding-left: 20upx;
  1476. }
  1477. .uni-timeline-last-item .bottom-border::after{
  1478. display: none;
  1479. }
  1480. .uni-timeline-item-content .datetime{
  1481. color: #CCCCCC;
  1482. }
  1483. /* 自定义节点颜色 */
  1484. .uni-timeline-last-item .uni-timeline-item-divider{
  1485. background-color: #1AAD19;
  1486. }
  1487. /* uni-icon */
  1488. .uni-icon {
  1489. font-family: uniicons;
  1490. font-size: 24px;
  1491. font-weight: normal;
  1492. font-style: normal;
  1493. line-height: 1;
  1494. display: inline-block;
  1495. text-decoration: none;
  1496. -webkit-font-smoothing: antialiased;
  1497. }
  1498. .uni-icon.uni-active {
  1499. color: #007aff;
  1500. }
  1501. .uni-icon-contact:before {
  1502. content: '\e100';
  1503. }
  1504. .uni-icon-person:before {
  1505. content: '\e101';
  1506. }
  1507. .uni-icon-personadd:before {
  1508. content: '\e102';
  1509. }
  1510. .uni-icon-contact-filled:before {
  1511. content: '\e130';
  1512. }
  1513. .uni-icon-person-filled:before {
  1514. content: '\e131';
  1515. }
  1516. .uni-icon-personadd-filled:before {
  1517. content: '\e132';
  1518. }
  1519. .uni-icon-phone:before {
  1520. content: '\e200';
  1521. }
  1522. .uni-icon-email:before {
  1523. content: '\e201';
  1524. }
  1525. .uni-icon-chatbubble:before {
  1526. content: '\e202';
  1527. }
  1528. .uni-icon-chatboxes:before {
  1529. content: '\e203';
  1530. }
  1531. .uni-icon-phone-filled:before {
  1532. content: '\e230';
  1533. }
  1534. .uni-icon-email-filled:before {
  1535. content: '\e231';
  1536. }
  1537. .uni-icon-chatbubble-filled:before {
  1538. content: '\e232';
  1539. }
  1540. .uni-icon-chatboxes-filled:before {
  1541. content: '\e233';
  1542. }
  1543. .uni-icon-weibo:before {
  1544. content: '\e260';
  1545. }
  1546. .uni-icon-weixin:before {
  1547. content: '\e261';
  1548. }
  1549. .uni-icon-pengyouquan:before {
  1550. content: '\e262';
  1551. }
  1552. .uni-icon-chat:before {
  1553. content: '\e263';
  1554. }
  1555. .uni-icon-qq:before {
  1556. content: '\e264';
  1557. }
  1558. .uni-icon-videocam:before {
  1559. content: '\e300';
  1560. }
  1561. .uni-icon-camera:before {
  1562. content: '\e301';
  1563. }
  1564. .uni-icon-mic:before {
  1565. content: '\e302';
  1566. }
  1567. .uni-icon-location:before {
  1568. content: '\e303';
  1569. }
  1570. .uni-icon-mic-filled:before,
  1571. .uni-icon-speech:before {
  1572. content: '\e332';
  1573. }
  1574. .uni-icon-location-filled:before {
  1575. content: '\e333';
  1576. }
  1577. .uni-icon-micoff:before {
  1578. content: '\e360';
  1579. }
  1580. .uni-icon-image:before {
  1581. content: '\e363';
  1582. }
  1583. .uni-icon-map:before {
  1584. content: '\e364';
  1585. }
  1586. .uni-icon-compose:before {
  1587. content: '\e400';
  1588. }
  1589. .uni-icon-trash:before {
  1590. content: '\e401';
  1591. }
  1592. .uni-icon-upload:before {
  1593. content: '\e402';
  1594. }
  1595. .uni-icon-download:before {
  1596. content: '\e403';
  1597. }
  1598. .uni-icon-close:before {
  1599. content: '\e404';
  1600. }
  1601. .uni-icon-redo:before {
  1602. content: '\e405';
  1603. }
  1604. .uni-icon-undo:before {
  1605. content: '\e406';
  1606. }
  1607. .uni-icon-refresh:before {
  1608. content: '\e407';
  1609. }
  1610. .uni-icon-star:before {
  1611. content: '\e408';
  1612. }
  1613. .uni-icon-plus:before {
  1614. content: '\e409';
  1615. }
  1616. .uni-icon-minus:before {
  1617. content: '\e410';
  1618. }
  1619. .uni-icon-circle:before,
  1620. .uni-icon-checkbox:before {
  1621. content: '\e411';
  1622. }
  1623. .uni-icon-close-filled:before,
  1624. .uni-icon-clear:before {
  1625. content: '\e434';
  1626. }
  1627. .uni-icon-refresh-filled:before {
  1628. content: '\e437';
  1629. }
  1630. .uni-icon-star-filled:before {
  1631. content: '\e438';
  1632. }
  1633. .uni-icon-plus-filled:before {
  1634. content: '\e439';
  1635. }
  1636. .uni-icon-minus-filled:before {
  1637. content: '\e440';
  1638. }
  1639. .uni-icon-circle-filled:before {
  1640. content: '\e441';
  1641. }
  1642. .uni-icon-checkbox-filled:before {
  1643. content: '\e442';
  1644. }
  1645. .uni-icon-closeempty:before {
  1646. content: '\e460';
  1647. }
  1648. .uni-icon-refreshempty:before {
  1649. content: '\e461';
  1650. }
  1651. .uni-icon-reload:before {
  1652. content: '\e462';
  1653. }
  1654. .uni-icon-starhalf:before {
  1655. content: '\e463';
  1656. }
  1657. .uni-icon-spinner:before {
  1658. content: '\e464';
  1659. }
  1660. .uni-icon-spinner-cycle:before {
  1661. content: '\e465';
  1662. }
  1663. .uni-icon-search:before {
  1664. content: '\e466';
  1665. }
  1666. .uni-icon-plusempty:before {
  1667. content: '\e468';
  1668. }
  1669. .uni-icon-forward:before {
  1670. content: '\e470';
  1671. }
  1672. .uni-icon-back:before,
  1673. .uni-icon-left-nav:before {
  1674. content: '\e471';
  1675. }
  1676. .uni-icon-checkmarkempty:before {
  1677. content: '\e472';
  1678. }
  1679. .uni-icon-home:before {
  1680. content: '\e500';
  1681. }
  1682. .uni-icon-navigate:before {
  1683. content: '\e501';
  1684. }
  1685. .uni-icon-gear:before {
  1686. content: '\e502';
  1687. }
  1688. .uni-icon-paperplane:before {
  1689. content: '\e503';
  1690. }
  1691. .uni-icon-info:before {
  1692. content: '\e504';
  1693. }
  1694. .uni-icon-help:before {
  1695. content: '\e505';
  1696. }
  1697. .uni-icon-locked:before {
  1698. content: '\e506';
  1699. }
  1700. .uni-icon-more:before {
  1701. content: '\e507';
  1702. }
  1703. .uni-icon-flag:before {
  1704. content: '\e508';
  1705. }
  1706. .uni-icon-home-filled:before {
  1707. content: '\e530';
  1708. }
  1709. .uni-icon-gear-filled:before {
  1710. content: '\e532';
  1711. }
  1712. .uni-icon-info-filled:before {
  1713. content: '\e534';
  1714. }
  1715. .uni-icon-help-filled:before {
  1716. content: '\e535';
  1717. }
  1718. .uni-icon-more-filled:before {
  1719. content: '\e537';
  1720. }
  1721. .uni-icon-settings:before {
  1722. content: '\e560';
  1723. }
  1724. .uni-icon-list:before {
  1725. content: '\e562';
  1726. }
  1727. .uni-icon-bars:before {
  1728. content: '\e563';
  1729. }
  1730. .uni-icon-loop:before {
  1731. content: '\e565';
  1732. }
  1733. .uni-icon-paperclip:before {
  1734. content: '\e567';
  1735. }
  1736. .uni-icon-eye:before {
  1737. content: '\e568';
  1738. }
  1739. .uni-icon-arrowup:before {
  1740. content: '\e580';
  1741. }
  1742. .uni-icon-arrowdown:before {
  1743. content: '\e581';
  1744. }
  1745. .uni-icon-arrowleft:before {
  1746. content: '\e582';
  1747. }
  1748. .uni-icon-arrowright:before {
  1749. content: '\e583';
  1750. }
  1751. .uni-icon-arrowthinup:before {
  1752. content: '\e584';
  1753. }
  1754. .uni-icon-arrowthindown:before {
  1755. content: '\e585';
  1756. }
  1757. .uni-icon-arrowthinleft:before {
  1758. content: '\e586';
  1759. }
  1760. .uni-icon-arrowthinright:before {
  1761. content: '\e587';
  1762. }
  1763. .uni-icon-pulldown:before {
  1764. content: '\e588';
  1765. }
  1766. .uni-icon-scan:before {
  1767. content: "\e612";
  1768. }
  1769. </style>