my-product.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991
  1. <template>
  2. <view class="container product clearfix">
  3. <view class="superv-header">
  4. <view class="superv-header-click" v-if="!isSuperv">
  5. <view class="oltext" @click="supervClickFn">管理</view>
  6. <view class="ortext" @click="searchClickFn">筛选</view>
  7. </view>
  8. <view class="superv-header-checked" v-else>
  9. <view class="oltext">
  10. <view class="checkbox iconfont" :class="[isChecked ?'icon-yixuanze':'icon-weixuanze']" @click="isCheckedAll"></view>
  11. <view class="text">全选</view>
  12. </view>
  13. <view class="ortext" @click="closeSupervFn">完成</view>
  14. </view>
  15. </view>
  16. <view class="product-content">
  17. <view :class="{'tui-order-list':scrollTop >= 0}" class="clearfix">
  18. <!-- 空白页 -->
  19. <view class="empty-container" v-if="isEmpty">
  20. <image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna6AY2ZjAABpmnBICH4247.png"></image>
  21. <text class="error-text">暂无数据^_^</text>
  22. </view>
  23. <!-- 列表 -->
  24. <checkbox-group @change="buyChange" class="tui-group">
  25. <view class="tui-cart-cell tui-mtop" v-for="(item,index) in dataList" :key="index">
  26. <tui-swipe-actions :actions="actions" @click="handlerButton($event,item)" :params="item">
  27. <template v-slot:content>
  28. <view class="tui-goods-item">
  29. <view class="tui-goods-checkBox" v-if="isSuperv">
  30. <view class="checkbox iconfont" :class="[isChecked ?'icon-yixuanze':'icon-weixuanze']" @click="isCheckedAll"></view>
  31. </view>
  32. <view class="tui-goods-image">
  33. <image :src="item.mainImage" class="tui-goods-img"/>
  34. </view>
  35. <view class="tui-goods-info">
  36. <view class="tui-goods-title">{{ item.name }}</view>
  37. <view class="tui-price-box">
  38. <view class="tui-goods-price">¥{{item.price1 | NumFormat}}</view>
  39. </view>
  40. <view class="tui-goods-pip">市场价:¥{{item.normalPrice | NumFormat}}</view>
  41. <view class="tui-goods-pip">分类:{{ item.typeName }}</view>
  42. </view>
  43. <view class="tui-goods-status">
  44. <view class="status-text" :style="{ color: verifyColorFilter(item.validFlag)}">
  45. {{ item.validFlag | verifyStatusFilter }}
  46. </view>
  47. </view>
  48. </view>
  49. </template>
  50. </tui-swipe-actions>
  51. </view>
  52. </checkbox-group>
  53. <!--加载loadding-->
  54. <tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
  55. <tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
  56. <!--加载loadding-->
  57. </view>
  58. </view>
  59. <tui-modal :show="modal" @click="handleClick" @cancel="hideMobel" :content="contentModalText" color="#333" :size="32" shape="circle" :maskClosable="false"></tui-modal>
  60. <!--右抽屉-->
  61. <tui-drawer mode="right" :visible="rightDrawer" @close="closeDrawer">
  62. <view class="d-container clearfix" :style="{paddingTop:CustomBar+10+'px'}">
  63. <view class="d-label">商品货号:</view>
  64. <view class="d-input">
  65. <input class="input" type="text" value="" v-model="listQuery.keyword" placeholder="输入商品名称"/>
  66. </view>
  67. <view class="d-label">商品货号:</view>
  68. <view class="d-input">
  69. <input class="input" type="text" value="" v-model="listQuery.productSn" placeholder="输入商品货号"/>
  70. </view>
  71. <view class="d-label">状态:</view>
  72. <view class="d-input">
  73. <picker @change="bindPickerChange(3,$event)" :value="index" :range="Array2" range-key="name">
  74. <input class="input" type="text" disabled="false" v-model="listQuery.publishStatus" value="" placeholder="请选择审核状态"/>
  75. <text class="iconfont icon-xiangyou"></text>
  76. </picker>
  77. </view>
  78. <view class="d-label">主推商品:</view>
  79. <view class="d-input">
  80. <picker @change="bindPickerChange(2,$event)" :value="index" :range="brandOptions" range-key="name">
  81. <input class="input" type="text" disabled="false" v-model="listQuery.brandId" value="" placeholder="请选择商品品牌"/>
  82. <text class="iconfont icon-xiangyou"></text>
  83. </picker>
  84. </view>
  85. <view class="d-label">分类:</view>
  86. <view class="d-input">
  87. <picker @change="bindPickerChange(1,$event)" :value="index" :range="Array" range-key="name">
  88. <input class="input" type="text" disabled="false" v-model="listQuery.productCategoryId" value="" placeholder="请选择分类"/>
  89. <text class="iconfont icon-xiangyou"></text>
  90. </picker>
  91. </view>
  92. <view class="d-input">
  93. <picker @change="bindPickerChange(1,$event)" :value="index" :range="Array" range-key="name">
  94. <input class="input" type="text" disabled="false" v-model="listQuery.productCategoryId" value="" placeholder="请选择二级分类"/>
  95. <text class="iconfont icon-xiangyou"></text>
  96. </picker>
  97. </view>
  98. <view class="d-input">
  99. <picker @change="bindPickerChange(1,$event)" :value="index" :range="Array" range-key="name">
  100. <input class="input" type="text" disabled="false" v-model="listQuery.productCategoryId" value="" placeholder="请选择三级分类"/>
  101. <text class="iconfont icon-xiangyou"></text>
  102. </picker>
  103. </view>
  104. <view class="d-input btn">
  105. <view class="d-btn comfrim" @click="handSearchList">确定</view>
  106. <view class="d-btn clear" @click="handSearchClear">重置</view>
  107. </view>
  108. </view>
  109. </tui-drawer>
  110. <!-- 批量操作 -->
  111. <tui-bottom-popup :radius="false" :mask="false" :show="isSuperv" @close="closeSupervFn()">
  112. <view class="tui-popup-box clearfix">
  113. <view class="tui-right-flex tui-popup-btn" :style="{ paddingBottom :isIphoneX ? '68rpx' : '0rpx' }">
  114. <view class="tui-flex-1">
  115. <view class="tui-button" :class="isChecked ? 'active' : ''" @click="closeSupervFn()">批量下架</view>
  116. </view>
  117. </view>
  118. </view>
  119. </tui-bottom-popup>
  120. </view>
  121. </template>
  122. <script>
  123. import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
  124. import tuiNomore from "@/components/tui-components/nomore/nomore"
  125. import modalLayer from "@/components/modal-layer"
  126. import { mapState,mapMutations } from 'vuex'
  127. const defaultListQuery = {
  128. shopID:'',
  129. pageNum:1,
  130. pageSize:10,
  131. productCode:'',//货号
  132. name:'',//商品名称
  133. validFlag:'',//状态
  134. featuredFlag:'',//是否主推
  135. bigTypeID:0,//一级
  136. smallTypeID:0,//二级
  137. tinyTypeID:0//三级
  138. };
  139. export default{
  140. components: {
  141. tuiLoadmore,
  142. tuiNomore
  143. },
  144. data() {
  145. return{
  146. isSuperv:false,
  147. isChecked:false,
  148. mapStateArr:[
  149. {label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
  150. {label:'isDelete',val:[6],status: true},
  151. {label:'isCancel',val:[0,111],status: true},
  152. {label:'isConfirm',val:[33],status: true},
  153. {label:'isConfirmation',val:[0],status: true},
  154. {label:'isPay',val:[11,12,13,21,22,23,111],status: true},
  155. ],
  156. actions: [
  157. {name: '查看详情',color: '#fff',fontsize: 26,width: 50,background: '#f9a94b'},
  158. {name: '添加主页推荐',color: '#fff',fontsize: 26,width: 50,background: '#ff7a51'},
  159. {name: '下架',color: '#fff',fontsize: 26,width: 50,background: '#fea785'},
  160. {name: '无操作',color: '#fff',fontsize: 26,width: 50,background: '#e1e1e1'},
  161. ],
  162. Array: [{name:'男装'},{name: '女装'},{name: '男鞋'},{name: '女鞋'},{name: '童鞋'}],
  163. brandOptions: [],
  164. Array2: [{name:'审核通过'},{name: '未审核'}],
  165. currents:0,
  166. userID:0,
  167. listQuery:Object.assign({}, defaultListQuery),
  168. dataList: [],
  169. btnoRderID: 0, //点击按钮传入的的订单ID
  170. scrollTop: 0,
  171. deteleType:'',
  172. skeletonShow: true,
  173. isEmpty: false,
  174. isDelete:false,
  175. isModalLayer: false,
  176. loadding: false,
  177. pullUpOn: true,
  178. pullFlag: true,
  179. hasNextPage: false,
  180. navbarHeight:'',
  181. nomoreText: '上拉显示更多',
  182. contentModalText:'',//操作文字提示语句
  183. modal:false,
  184. rightDrawer: false,
  185. handlerProduct:{},//储存监听商品信息
  186. OperationType:'',//操作类型
  187. isCmcustomClass : 'left',
  188. featuredNum:0,
  189. }
  190. },
  191. onLoad(){
  192. },
  193. filters: {
  194. NumFormat:function(text) {//处理金额
  195. return Number(text).toFixed(2);
  196. },
  197. verifyStatusFilter: function(state){
  198. let stateText = '',
  199. stateTextObject={
  200. '2':'已上架',
  201. '3':'已下架',
  202. '1':'待审核',
  203. '8':'审核未通过',
  204. '9':'已冻结',
  205. '10':'已隐身',
  206. '0':'已删除'
  207. };
  208. Object.keys(stateTextObject).forEach(function(key) {
  209. if(key == state){
  210. stateText = stateTextObject[key]
  211. }
  212. });
  213. return stateText;
  214. },
  215. },
  216. computed: {
  217. ...mapState(['hasLogin','userInfo'])
  218. },
  219. methods:{
  220. ...mapMutations(['login','logout']),
  221. GetProductListInfo(){
  222. this.listQuery.pageNum = 1
  223. this.ShopService.GetSupplierPyProduct(this.listQuery).then(response =>{
  224. let data = response.data.productPage
  225. this.hasNextPage = data.hasNextPage;
  226. console.log(data.results)
  227. if(data.results && data.results.length > 0){
  228. this.isEmpty = false;
  229. this.dataList = [...data.results];
  230. if(this.hasNextPage){
  231. this.pullUpOn = false
  232. this.nomoreText = '上拉显示更多'
  233. }else{
  234. if(this.dataList.length < 2){
  235. this.pullUpOn = true
  236. }else{
  237. this.pullUpOn = false
  238. this.nomoreText = '已至底部'
  239. }
  240. }
  241. }else{
  242. this.isEmpty = true
  243. }
  244. }).catch(error =>{
  245. this.$util.msg(error.msg,2000);
  246. })
  247. },
  248. GetOnReachBottomData(index){//上拉加载
  249. this.listQuery.pageNum += 1
  250. this.ProductService.GetProductList(this.listQuery).then(response =>{
  251. let data = response.data.productPage
  252. this.hasNextPage = data.hasNextPage;
  253. this.dataList = this.dataList.concat(data.results)
  254. this.pullFlag = false;// 防上拉暴滑
  255. setTimeout(()=>{this.pullFlag = true;},500)
  256. if(this.hasNextPage){
  257. this.pullUpOn = false
  258. this.nomoreText = '上拉显示更多'
  259. }else{
  260. this.loadding = false
  261. this.pullUpOn = false
  262. this.nomoreText = '已至底部'
  263. }
  264. })
  265. },
  266. handSearchList(){//搜索
  267. this.GetProductListInfo()
  268. this.leftDrawer = false;
  269. this.rightDrawer = false;
  270. },
  271. handSearchClear(){//重置搜索条件
  272. },
  273. handlerButton(e,item){//监听侧滑按钮点击事件
  274. switch(this.currents){
  275. case 0://全部商品列表
  276. this.handleCurrentsAll(e,item)
  277. break;
  278. case 1://上架商品列表
  279. this.handleCurrentsUpdate(e,item)
  280. break;
  281. case 2://下架商品列表
  282. this.handleCurrentsDown(e,item)
  283. break;
  284. }
  285. },
  286. handleCurrentsAll(e,item){//处理全部商品列表只做删除操作
  287. switch(e.index){
  288. case 0://删除
  289. this.handleDeleter(item)
  290. break;
  291. }
  292. },
  293. handleCurrentsUpdate(e,item){//处理上架商品列表只做下架&&删除操作
  294. switch(e.index){
  295. case 0://下架
  296. this.handleUnder(item)
  297. break;
  298. case 1://删除
  299. this.handleDeleter(item)
  300. break;
  301. }
  302. },
  303. handleCurrentsDown(e,item){//处理下架商品列表只做下架&&删除操作
  304. switch(e.index){
  305. case 0://上架
  306. this.handleGround(item)
  307. break;
  308. case 1://删除
  309. this.handleDeleter(item)
  310. break;
  311. }
  312. },
  313. handleDeleter(item){//删除操作
  314. this.OperationType = 'delete'
  315. this.handlerProduct = item
  316. this.modal = true;
  317. this.contentModalText = '是否删除该商品?';
  318. },
  319. handleGround(item){//上架操作
  320. this.OperationType = 'ground'
  321. this.handlerProduct = item
  322. this.modal = true;
  323. this.contentModalText = '是否上架该商品?';
  324. },
  325. handleUnder(item){//下架操作
  326. this.OperationType = 'under'
  327. this.handlerProduct = item
  328. this.modal = true;
  329. this.contentModalText = '是否下架该商品?';
  330. },
  331. handleClick(e) {//弹窗提示用户操作
  332. if(e.index == 1){
  333. switch(this.OperationType){
  334. case 'delete'://删除商品
  335. this.UpdateDeleteStatus()
  336. break;
  337. case 'ground'://上架商品
  338. this.UpdatePublishStatus(this.handlerProduct,1)
  339. break;
  340. case 'under'://下架商品
  341. this.UpdatePublishStatus(this.handlerProduct,0)
  342. break;
  343. }
  344. }
  345. this.modal = false;
  346. },
  347. UpdatePublishStatus(item,publishStatus){//上下架商品操作处理接口
  348. this.ProductService.ProductUpdatePublishStatus({publishStatus:publishStatus,ids:item.id}).then(response =>{
  349. this.$util.msg('操作成功',2000,true,'success');
  350. setTimeout(() => {
  351. this.GetProductListInfo()
  352. this.getOrderListCount()
  353. },2000)
  354. }).catch(error =>{
  355. this.$util.msg(error.message,2000)
  356. })
  357. },
  358. UpdateDeleteStatus(){//商品删除处理接口
  359. this.ProductService.ProductUpdateDeleteStatus({deleteStatus:1,ids:this.handlerProduct.id}).then(response =>{
  360. this.$util.msg('删除商品成功',2000,true,'success');
  361. setTimeout(() => {
  362. this.GetProductListInfo()
  363. this.getOrderListCount()
  364. },2000)
  365. }).catch(error =>{
  366. this.$util.msg(error.message,2000)
  367. })
  368. },
  369. hideMobel(){
  370. this.modal = false;
  371. },
  372. isCheckedAll(){
  373. this.isCheckedAll = true
  374. },
  375. addProductFn(){
  376. this.$util.msg('功能开发中,敬请期待^_^',2000);
  377. },
  378. supervClickFn(){//管理全选
  379. this.isSuperv = true
  380. },
  381. closeSupervFn(){
  382. this.isSuperv = false
  383. },
  384. searchClickFn() {//弹出抽屉
  385. this.rightDrawer = true;
  386. },
  387. closeDrawer(e) {//关闭抽屉
  388. this.leftDrawer = false;
  389. this.rightDrawer = false;
  390. },
  391. orderPriceToFixed (n){
  392. let price ='';
  393. price = Number(n).toFixed(2);
  394. return price
  395. },
  396. tabClick(index){
  397. this.currents = index
  398. switch(index){
  399. case 0:
  400. this.listQuery.publishStatus = ''
  401. this.dataList = []
  402. this.GetProductListInfo()
  403. this.actions =[
  404. {name: '删除',color: '#fff',fontsize: 28,width: 80,background: '#ff4759'},
  405. ]
  406. break;
  407. case 1:
  408. this.listQuery.publishStatus = 1
  409. this.dataList = []
  410. this.GetProductListInfo()
  411. this.actions =[
  412. {name: '下架',color: '#fff',fontsize: 28,width: 80,background: '#ffaa33'},
  413. {name: '删除',color: '#fff',fontsize: 28,width: 80,background: '#ff4759'},
  414. ]
  415. break;
  416. case 2:
  417. this.listQuery.publishStatus = 0
  418. this.dataList = []
  419. this.GetProductListInfo()
  420. this.actions =[
  421. {name: '上架',color: '#fff',fontsize: 28,width: 80,background: '#4688fa'},
  422. {name: '删除',color: '#fff',fontsize: 28,width: 80,background: '#ff4759'},
  423. ]
  424. break;
  425. }
  426. },
  427. bindDateChange: function(e) {//选择筛选时间
  428. this.listQuery.date = e.detail.value
  429. },
  430. bindPickerChange: function(type,e) {//选择筛选条件
  431. console.log(type)
  432. console.log(e)
  433. switch(type){
  434. case 1:
  435. this.listQuery.classification = this.Array[e.target.value].name
  436. console.log(this.listQuery.classification)
  437. break;
  438. case 2:
  439. this.listQuery.source = this.brandOptions[e.target.value].name
  440. console.log(this.listQuery.source)
  441. break;
  442. case 3:
  443. this.listQuery.classification = this.Array2[e.target.value].name
  444. console.log(this.listQuery.classification)
  445. break;
  446. }
  447. },
  448. verifyColorFilter: function(state){
  449. let stateColor = '',
  450. stateColorObject={
  451. '2':'#1890f9',
  452. '1':'#f9a94b',
  453. '0':'#FFB12A',
  454. '3':'#627386',
  455. '8':'#FF2A2A',
  456. '9':'#f94b4b'
  457. };
  458. Object.keys(stateColorObject).forEach(function(key){
  459. if(key == state){
  460. stateColor = stateColorObject[key]
  461. }
  462. });
  463. return stateColor;
  464. },
  465. },
  466. onPageScroll(e){//实时获取到滚动的值
  467. if(e.scrollTop>30){
  468. this.isCmcustomClass = 'fiexd'
  469. }else{
  470. this.isCmcustomClass = 'left'
  471. }
  472. },
  473. onReachBottom() {
  474. if(this.total > this.dataList.length){
  475. this.loadding = true
  476. this.pullUpOn = true
  477. this.GetOnReachBottomData()
  478. }
  479. },
  480. onPullDownRefresh() {
  481. setTimeout(() => {
  482. this.listQuery.pageNum = 1
  483. uni.stopPullDownRefresh()
  484. }, 200)
  485. },
  486. onShow(){
  487. this.$api.getComStorage('userInfo').then((resolve) =>{
  488. this.listQuery.shopID = resolve.shopID
  489. this.GetProductListInfo()
  490. })
  491. }
  492. }
  493. </script>
  494. <style lang="scss">
  495. @import "@/uni.scss";
  496. page{
  497. background:#FFF;
  498. }
  499. .superv-header{
  500. width: 100%;
  501. height: 80rpx;
  502. background-color: #F7F7F7;
  503. line-height: 80rpx;
  504. position: fixed;
  505. top: 0;
  506. left: 0;
  507. box-sizing: border-box;
  508. padding: 0 24rpx;
  509. z-index: 999;
  510. .superv-header-click{
  511. width: 100%;
  512. height: 80rpx;
  513. font-size: $font-size-30;
  514. .oltext{
  515. float: left;
  516. color: #666666;
  517. }
  518. .ortext{
  519. float: right;
  520. color: $color-system;
  521. }
  522. }
  523. .superv-header-checked{
  524. width: 100%;
  525. height: 80rpx;
  526. font-size: $font-size-30;
  527. .oltext{
  528. float: left;
  529. color: #666666;
  530. display: flex;
  531. .checkbox{
  532. display: flex;
  533. margin: 0;
  534. padding: 0;
  535. display: flex;
  536. flex-direction: column;
  537. align-items: center;
  538. box-sizing: border-box;
  539. text-align: center;
  540. text-decoration: none;
  541. border-radius: 0;
  542. -webkit-tap-highlight-color: transparent;
  543. overflow: hidden;
  544. font-size: 34rpx;
  545. color:$color-system;
  546. line-height: 80rpx;
  547. }
  548. .text{
  549. float: left;
  550. line-height: 80rpx;
  551. margin-left: 15rpx;
  552. }
  553. }
  554. .ortext{
  555. float: right;
  556. color: $color-system;
  557. }
  558. }
  559. }
  560. .d-container {
  561. width: 560rpx;
  562. padding: 80rpx 30rpx;
  563. .d-title{
  564. width: 100%;
  565. height:80rpx;
  566. line-height: 80rpx;
  567. text-align: center;
  568. color: #4688fa;
  569. font-size: $font-size-32;
  570. float: left;
  571. }
  572. .d-time{
  573. width: 100%;
  574. height: 70rpx;
  575. float: left;
  576. box-sizing: border-box;
  577. padding: 0 10rpx;
  578. border: 1px solid rgba(0,0,0,0.2);
  579. border-radius: 4rpx;
  580. margin-bottom: 30rpx;
  581. .iconfont{
  582. width:70rpx;
  583. height: 60rpx;
  584. display: block;
  585. float: left;
  586. font-size: 50rpx;
  587. color: #666666;
  588. line-height: 70rpx;
  589. text-align: left;
  590. }
  591. .input{
  592. width: 220rpx;
  593. height: 70rpx;
  594. line-height: 70rpx;
  595. float: left;
  596. box-sizing: border-box;
  597. font-size: $font-size-24;
  598. color: #333333;
  599. padding: 0 10rpx;
  600. }
  601. }
  602. .d-label{
  603. width: 100%;
  604. height: 44rpx;
  605. line-height: 44rpx;
  606. text-align: left;
  607. color: #666666;
  608. font-size: $font-size-26;
  609. float: left;
  610. }
  611. .d-input{
  612. width: 100%;
  613. height: 70rpx;
  614. float: left;
  615. box-sizing: border-box;
  616. padding: 0 10rpx;
  617. border: 1px solid rgba(0,0,0,0.2);
  618. border-radius: 4rpx;
  619. margin-bottom: 30rpx;
  620. position: relative;
  621. &.btn{
  622. border: none;
  623. margin-top: 40rpx;
  624. }
  625. .input{
  626. width: 100%;
  627. height: 70rpx;
  628. line-height: 70rpx;
  629. float: left;
  630. box-sizing: border-box;
  631. font-size: $font-size-24;
  632. color: #333333;
  633. padding: 0 10rpx;
  634. padding-right: 68rpx;
  635. }
  636. .iconfont{
  637. width: 50rpx;
  638. height: 68rpx;
  639. display: block;
  640. line-height: 68rpx;
  641. text-align: center;
  642. font-size: 30rpx;
  643. color: #999999;
  644. position: absolute;
  645. right: 0;
  646. top: 0;
  647. }
  648. .d-btn{
  649. width: 210rpx;
  650. height: 84rpx;
  651. border-radius: 42rpx;
  652. background: $btn-confirm;
  653. line-height: 84rpx;
  654. text-align: center;
  655. font-size: $font-size-26;
  656. color: #FFFFFF;
  657. float: right;
  658. &.comfrim{
  659. background: $btn-confirm;
  660. margin-left: 20rpx;
  661. }
  662. &.clear{
  663. background: #e1e1e1;
  664. }
  665. }
  666. }
  667. }
  668. .tui-header {
  669. width: 100%;
  670. font-size: 16px;
  671. font-weight: 500;
  672. height: 32px;
  673. display: flex;
  674. align-items: center;
  675. justify-content: center;
  676. position: relative;
  677. padding: 0 40rpx;
  678. }
  679. .header-sit{
  680. width:100%;
  681. box-sizing: border-box;
  682. height: 80rpx;
  683. line-height: 80rpx;
  684. box-sizing: border-box;
  685. padding:0 40rpx;
  686. text-align: left;
  687. font-size: $font-size-40;
  688. color: #FFFFFF;
  689. font-weight: 600;
  690. font-family: '正楷';
  691. margin-top: 30rpx;
  692. .iconfont{
  693. font-size: 42rpx;
  694. margin-left: 30rpx;
  695. }
  696. }
  697. .mine{
  698. width: 100%;
  699. height: 100%;
  700. position:relative;
  701. }
  702. .product-content{
  703. width: 100%;
  704. height: auto;
  705. position: relative;
  706. padding:0;
  707. padding-top: 80rpx;
  708. box-sizing: border-box;
  709. .header-tabs{
  710. width: 100%;
  711. height: auto;
  712. margin-bottom: 40rpx;
  713. padding: 20rpx;
  714. border-radius: 20rpx;
  715. background:#4688fa;
  716. box-sizing: border-box;
  717. &.day{
  718. background:#FFFFFF;
  719. padding:40rpx 20rpx;
  720. box-shadow:0px 3px 6px rgba(0,0,0,0.2);
  721. }
  722. .title{
  723. font-size: $font-size-36;
  724. line-height: 60rpx;
  725. color: #FFF;
  726. font-weight: bold;
  727. margin-bottom: 20rpx;
  728. }
  729. .main{
  730. width: 100%;
  731. height: 110rpx;
  732. .main-item{
  733. float: left;
  734. width:20%;
  735. text-align: center;
  736. color: #FFFFFF;
  737. box-sizing: border-box;
  738. &.active{
  739. .iconfont{
  740. color: #576efa;
  741. }
  742. .text{
  743. font-weight: bold;
  744. color:#576efa ;
  745. font-size: $font-size-28;
  746. }
  747. }
  748. .text{
  749. width: 100%;
  750. height:60rpx;
  751. line-height: 60rpx;
  752. display: block;
  753. float: left;
  754. font-size:$font-size-24;
  755. color: #666666;
  756. text-align: center;
  757. &.nm{
  758. color: #222222;
  759. height:40rpx;
  760. line-height: 40rpx;
  761. font-size: $font-size-32;
  762. font-weight: bold;
  763. }
  764. }
  765. .iconfont{
  766. font-size:50rpx;
  767. color: #7aa5fa ;
  768. position: relative;
  769. .badg{
  770. padding: 0 10rpx;
  771. height: 30rpx;
  772. display: inline-block;
  773. font-size: $font-size-24;
  774. text-align: center;
  775. line-height: 30rpx;
  776. background-color: #ff4759;
  777. color: #FFF;
  778. position: absolute;
  779. top: -15rpx;
  780. right:20rpx;
  781. border-radius: 15rpx;
  782. }
  783. }
  784. }
  785. }
  786. }
  787. .tui-header-btm {
  788. width: 100%;
  789. padding: 0 30rpx;
  790. box-sizing: border-box;
  791. display: flex;
  792. align-items: center;
  793. justify-content: space-between;
  794. color: #fff;
  795. }
  796. .tui-btm-item {
  797. flex: 1;
  798. display: flex;
  799. flex-direction: column;
  800. align-items: center;
  801. justify-content: center;
  802. }
  803. .tui-btm-num {
  804. font-size: 32rpx;
  805. font-weight: 600;
  806. position: relative;
  807. }
  808. .tui-btm-text {
  809. font-size: 24rpx;
  810. opacity: 0.85;
  811. padding-top: 4rpx;
  812. }
  813. }
  814. .tui-goods-item {
  815. display: flex;
  816. padding: 30rpx 20rpx;
  817. box-sizing: border-box;
  818. border-bottom: 1px solid #EBEBEB;
  819. }
  820. .tui-goods-checkBox{
  821. display: flex;
  822. align-items: center;
  823. margin: 0 15rpx;
  824. .checkbox{
  825. display: flex;
  826. margin: 0;
  827. padding: 0;
  828. display: flex;
  829. flex-direction: column;
  830. align-items: center;
  831. box-sizing: border-box;
  832. text-align: center;
  833. text-decoration: none;
  834. border-radius: 0;
  835. -webkit-tap-highlight-color: transparent;
  836. overflow: hidden;
  837. background-color:#FFFFFF;
  838. font-size: 36rpx;
  839. color:$color-system;
  840. }
  841. .text{
  842. font-size: $font-size-24;
  843. margin-left: 10rpx;
  844. }
  845. }
  846. .tui-goods-image{
  847. width: 180rpx;
  848. height: 180rpx !important;
  849. border-radius: 12rpx;
  850. .tui-goods-img {
  851. width: 180rpx;
  852. height: 180rpx !important;
  853. border-radius: 12rpx;
  854. flex-shrink: 0;
  855. display: block;
  856. }
  857. }
  858. .tui-goods-info {
  859. width: 420rpx;
  860. padding-left: 20rpx;
  861. display: flex;
  862. flex-direction: column;
  863. align-items: flex-start;
  864. justify-content: space-between;
  865. box-sizing: border-box;
  866. overflow: hidden;
  867. position: relative;
  868. }
  869. .tui-goods-status{
  870. width: 160rpx;
  871. float: right;
  872. .status-text{
  873. font-size: $font-size-24;
  874. line-height: 44rpx;
  875. text-align: center;
  876. color: #666666;
  877. }
  878. }
  879. .tui-goods-title {
  880. white-space: normal;
  881. word-break: break-all;
  882. overflow: hidden;
  883. text-overflow: ellipsis;
  884. display: -webkit-box;
  885. -webkit-box-orient: vertical;
  886. -webkit-line-clamp: 2;
  887. font-size: 26rpx;
  888. color: #333;
  889. line-height: 44rpx;
  890. }
  891. .tui-goods-pip{
  892. white-space: normal;
  893. word-break: break-all;
  894. overflow: hidden;
  895. text-overflow: ellipsis;
  896. display: -webkit-box;
  897. -webkit-box-orient: vertical;
  898. -webkit-line-clamp: 2;
  899. font-size: 24rpx;
  900. color: #999;
  901. line-height: 44rpx;
  902. }
  903. .tui-goods-ediet{
  904. width: 60rpx;
  905. height: 60rpx;
  906. background: linear-gradient(90deg,rgba(122,165,250,1) 0%,rgba(87,110,250,1) 100%);
  907. border-radius: 50%;
  908. line-height: 60rpx;
  909. text-align: center;
  910. position: absolute;
  911. right: 0;
  912. top: 50%;
  913. .icon-bianji1 {
  914. flex-shrink: 0;
  915. display: flex;
  916. align-items: center;
  917. justify-content: center;
  918. color: #FFFFFF;
  919. font-size: 24rpx;
  920. }
  921. }
  922. .tui-goods-model {
  923. max-width: 100%;
  924. color: #FFFFFF;
  925. background: #4688fa;
  926. border-radius: 40rpx;
  927. display: flex;
  928. align-items: center;
  929. justify-content: space-between;
  930. padding: 0 20rpx;
  931. box-sizing: border-box;
  932. margin-top: 10rpx;
  933. }
  934. .tui-model-text {
  935. max-width: 100%;
  936. transform: scale(0.9);
  937. transform-origin: 0 center;
  938. font-size: 24rpx;
  939. line-height: 40rpx;
  940. white-space: nowrap;
  941. overflow: hidden;
  942. text-overflow: ellipsis;
  943. }
  944. .tui-price-box {
  945. width: 100%;
  946. display: flex;
  947. align-items: flex-end;
  948. justify-content: space-between;
  949. }
  950. .tui-goods-price {
  951. font-size: $font-size-28;
  952. font-weight: 500;
  953. color: #FF201F;
  954. }
  955. .tui-popup-box {
  956. position: relative;
  957. box-sizing: border-box;
  958. min-height: 200rpx;
  959. padding:6rpx 24rpx;
  960. }
  961. .tui-popup-btn {
  962. width: 100%;
  963. height: auto;
  964. float: left;
  965. box-sizing: border-box;
  966. padding: 0 75rpx;
  967. margin-top: 30rpx;
  968. .tui-button{
  969. width: 600rpx;
  970. height: 88rpx;
  971. background: #e1e1e1;
  972. line-height: 88rpx;
  973. text-align: center;
  974. color: #FFFFFF;
  975. font-size: $font-size-28;
  976. border-radius: 44rpx;
  977. &.active{
  978. background: $btn-confirm;
  979. }
  980. }
  981. }
  982. </style>