detail.vue 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123
  1. <template>
  2. <view class="member">
  3. <view class="tab-block">
  4. <view class="tab-wrap">
  5. <block v-for="(item, index) in list" :key="index">
  6. <view class="tab-item" @click.stop="changeAct(item)"
  7. :class="index == act ? 'active color-base-text color-base-bg-before' : ''">{{ item.name }}
  8. </view>
  9. </block>
  10. </view>
  11. </view>
  12. <!-- 内容的改变 -->
  13. <view class="content contentbox">
  14. <block v-if="act == 0">
  15. <view class="order-list">
  16. <view class="list-left">头像</view>
  17. <view class="list-right">
  18. <image v-if="!memberData.member_info.headimg"
  19. :src="memberData.member_info.headimg ? $util.img(memberData.member_info.headimg) : $util.img($util.getDefaultImage().default_headimg)"
  20. mode="">
  21. </image>
  22. <image v-else :src="$util.img(memberData.member_info.headimg)" mode="aspectFit"
  23. @error="imgError('headimg')" @click.stop="previewMedia('headimg')"></image>
  24. <!-- <view class="del-wrap iconfont iconclose" @click.stop="delImg('headimg')"
  25. v-if="memberData.member_info.headimg"></view> -->
  26. </view>
  27. </view>
  28. <view class="order-list">
  29. <view class="list-left">昵称</view>
  30. <view class="list-right">
  31. <input type="text" v-model="memberData.member_info.nickname" />
  32. <!-- <text class="iconfont iconright"></text> -->
  33. </view>
  34. </view>
  35. <view class="order-list">
  36. <view class="list-left">手机号</view>
  37. <view class="list-right">
  38. <input type="number" maxlength="11" v-model="memberData.member_info.mobile" placeholder="暂无" />
  39. </view>
  40. </view>
  41. <view class="order-list">
  42. <view class="list-left">会员等级</view>
  43. <view class="list-right">
  44. <picker @change="bindLevelChange" :value="index1" :range="levelList">
  45. <view class="uni-input">{{levelList[index1]}}</view>
  46. </picker>
  47. <text class="iconfont iconright"></text>
  48. </view>
  49. </view>
  50. <!-- <view class="order-list">
  51. <view class="list-left">会员标签</view>
  52. <view class="list-right">
  53. <picker style="min-width: 50rpx;" @change="bindLabelChange" :value="index2" :range="lableList">
  54. <view class="uni-input">{{lableList[index2]}}</view>
  55. </picker>
  56. <text class="iconfont iconright content-ico"></text>
  57. </view>
  58. </view> -->
  59. <view class="order-list">
  60. <view class="list-left">会员性别</view>
  61. <view class="list-right">
  62. <picker @change="bindGenderChange" :value="index" :range="genderArray">
  63. <view class="uni-input">{{genderArray[index]}}</view>
  64. </picker>
  65. <text class="iconfont iconright"></text>
  66. </view>
  67. </view>
  68. <view class="order-list" style="border: none;">
  69. <view class="list-left">会员生日</view>
  70. <view class="list-right">
  71. <picker mode="date" :value="date" :end="endDate" @change="bindDateChange" v-if="memberData.member_info.birthday">
  72. <view class="uni-input">{{date}}</view>
  73. </picker>
  74. <picker mode="date" :end="endDate" @change="bindDateChange" v-else>
  75. <view class="uni-input">{{date}}</view>
  76. </picker>
  77. <text class="iconfont iconright"></text>
  78. </view>
  79. </view>
  80. <view class="footer-wrap" :class="{ 'safe-area': isIphoneX }"><button type="primary"
  81. @click="save()">保存</button></view>
  82. </block>
  83. <view class="account information" v-if="act == 1" style="background: #FFFFFF;">
  84. <view class="order-list" @click="onDetail(1)" :class="accountData == 1 ? 'active-flex' : ''">
  85. <view class="list-left">积分</view>
  86. <view class="list-right">
  87. <!-- <input type="text" v-model="memberData.point" placeholder="0.00" /> -->
  88. <text>{{parseInt(memberData.member_info.point) || '0'}}</text>
  89. <text class="iconfont iconright"></text>
  90. </view>
  91. </view>
  92. <view class="order-list" @click="onDetail(2)">
  93. <view class="list-left">余额(不可提现)</view>
  94. <view class="list-right">
  95. <!-- <input type="text" v-model="memberData.balance" placeholder="0.00" /> -->
  96. <text>{{parseInt(memberData.member_info.balance) || '0'}}</text>
  97. <text class="iconfont iconright"></text>
  98. </view>
  99. </view>
  100. <view class="order-list" @click="onDetail(3)">
  101. <view class="list-left">余额(可提现)</view>
  102. <view class="list-right">
  103. <!-- <input type="text" v-model="memberData.balance_money" placeholder="0.00" /> -->
  104. <text>{{parseInt(memberData.member_info.balance_money) || '0'}}</text>
  105. <text class="iconfont iconright"></text>
  106. </view>
  107. </view>
  108. <view class="order-list" style="border: none;" @click="onDetail(4)">
  109. <view class="list-left">成长值</view>
  110. <view class="list-right">
  111. <!-- <input type="text" v-model="memberData.growth" placeholder="0.00" /> -->
  112. <text>{{parseInt(memberData.member_info.growth) || '0'}}</text>
  113. <text class="iconfont iconright"></text>
  114. </view>
  115. </view>
  116. </view>
  117. <view style="background-color: #fff;margin-top: 20rpx;" v-if="act == 1">
  118. <view class="order-list" style="border: none;">
  119. <view class="list-left">账户记录</view>
  120. <view class="list-right">
  121. <picker :value="index" :range="array" @change="bindPickerChange">
  122. <view class="select color-tip account-search"
  123. style="display: flex;justify-content: space-between;padding: 5rpx 19rpx;">
  124. {{array[index]}}<text class="iconfont iconiconangledown"
  125. style="transform: scale(1.8);"></text>
  126. </view>
  127. </picker>
  128. </view>
  129. </view>
  130. <mescroll-uni @getData="getOrderData" refs="mescroll" top="600" :size="10">
  131. <block slot="list">
  132. <block v-if="accountData.length > 0">
  133. <view class="member-list">
  134. <view class="member-list-item" v-for="(item, index) in accountData" :key="index">
  135. <view class="integral-top"
  136. style="display: flex;justify-content: space-between; align-items: center;">
  137. <view class="integral" style="display: flex;">{{item.type_name}}
  138. </view>
  139. <view class="integral-num">{{parseInt(item.account_data)}}</view>
  140. </view>
  141. <view class="member-list-sec">
  142. <view class="integral-time">{{item.type_name}}</view>
  143. <view class="integral-times">
  144. {{$util.timeStampTurnTime(item.create_time)}}
  145. </view>
  146. </view>
  147. <view class="member-list-bottom" style="margin-top: 19rpx;margin-right: 30rpx;"
  148. v-if="item.remark">
  149. <view class="integral-give">{{item.remark}}
  150. </view>
  151. </view>
  152. </view>
  153. </view>
  154. </block>
  155. <ns-empty v-else text="暂无数据"></ns-empty>
  156. </block>
  157. </mescroll-uni>
  158. </view>
  159. <view class="account information" v-if="act == 2">
  160. <mescroll-uni @getData="getDetailData" refs="mescrolls" top="100" :size="10">
  161. <block slot="list">
  162. <view class="search-inner">
  163. <view class="search-wrap">
  164. <text class="search-input-icon iconfont iconsousuo" @click.stop="searchMember()"
  165. style="color: #909399;"></text>
  166. <input class="uni-input font-size-tag" maxlength="50" v-model="searchMemberName"
  167. placeholder="请输入订单编号" @confirm="searchMember()" />
  168. </view>
  169. </view>
  170. <view class="order-list order-items">
  171. <view class="item-inner" v-for="(item, index) in DetailData" :key="index">
  172. <view class="order-other-info">
  173. <text class="color-tip">订单号:{{ item.order_no}}</text>
  174. <text>{{ item.order_status_name }}</text>
  175. </view>
  176. <view class="item-wrap" @click="linkSkip(item)"
  177. v-for="(goodsItem, goodsIndex) in item.order_goods" :key="goodsIndex">
  178. <image class="item-img"
  179. :src="goodsItem.sku_image == '' ? $util.img($util.getDefaultImage().default_headimg) : $util.img(goodsItem.sku_image, { size: 'mid' })"
  180. @error="imgError(index)"></image>
  181. <view class="item-desc">
  182. <view class="item-name uni-line-hide">{{ goodsItem.sku_name }}</view>
  183. <view class="item-price-inner">
  184. <view>
  185. <!-- <view class="goods-class uni-using-hide" v-if="goodsItem.sku_spec_format">
  186. <block v-for="(x, i) in JSON.parse(goodsItem.sku_spec_format)" :key="i">
  187. {{ x.spec_value_name }}
  188. {{ i < goodsItem.sku_spec_format.length - 1 ? '; ' : '' }}
  189. </block>
  190. </view> -->
  191. <!-- <view class="goods-class">{{ goodsItem.goods_class_name }}</view> -->
  192. </view>
  193. <view class="item-price-wrap">
  194. <text class="item-price">¥{{ item.order_money }}</text>
  195. </view>
  196. </view>
  197. </view>
  198. </view>
  199. <text class="place-time color-tip"
  200. style="width: 249rpx;height: 18rpx;font-size: 24rpx;font-family: PingFang SC;font-weight: 500;color: #909399;line-height: 20px;">{{ $util.timeStampTurnTime(item.create_time) }}</text>
  201. </view>
  202. </view>
  203. <ns-empty v-if="!DetailData.length" text="暂无订单数据"></ns-empty>
  204. </block>
  205. </mescroll-uni>
  206. </view>
  207. </view>
  208. </view>
  209. <!-- </view> -->
  210. </template>
  211. <script>
  212. import uniTag from '@/components/uni-tag/uni-tag.vue';
  213. import nsOrderRemark from '@/components/ns-order-remark/ns-order-remark';
  214. export default {
  215. data() {
  216. const currentDate = this.getDate({
  217. format: true
  218. })
  219. return {
  220. isIphoneX: false,
  221. title: 'picker',
  222. date: '未知',
  223. act: 0,
  224. memberId: 0,
  225. dataList: [],
  226. index1: 0,
  227. index2: 0,
  228. memberData: {
  229. member_info: {},
  230. member_label_list: [],
  231. member_level_list: []
  232. },
  233. levelList: [],
  234. lableList: [],
  235. searchMemberName: '',
  236. genderArray: ['保密', '男', '女'],
  237. list: [{
  238. id: 0,
  239. name: '基础信息'
  240. },
  241. {
  242. id: 1,
  243. name: '账户信息'
  244. },
  245. {
  246. id: 2,
  247. name: '订单信息'
  248. }
  249. ],
  250. content: '',
  251. accountData: [],
  252. DetailData: [],
  253. array: ['全部', '积分', '余额(可提现)', '余额(不可提现)', '成长值'],
  254. index: 0,
  255. status: '',
  256. endDate: currentDate
  257. };
  258. },
  259. onLoad(option) {
  260. option.member_id ? (this.memberId = option.member_id) : this.$util.redirectTo('/pages/member/list', {},
  261. 'redirectTo');
  262. if (!this.$util.checkToken('/pages/member/detail?member_id=' + this.memberId)) return;
  263. option.member_id ? (this.memberId = option.member_id) : this.$util.redirectTo('/pages/Member/list', {},
  264. 'redirectTo');
  265. if (!this.$util.checkToken('/pages/Member/orderList')) return;
  266. },
  267. onShow() {
  268. // 页面默认显示的是list列表中第一条数据
  269. this.content = this.list[0]
  270. this.isIphoneX = this.$util.uniappIsIPhoneX();
  271. // this.getAccountData()
  272. this.getMeberData();
  273. },
  274. methods: {
  275. onDetail(e) {
  276. this.$util.redirectTo('/pages/member/adjustaccount', {
  277. type: e,
  278. item: JSON.stringify(this.memberData.member_info)
  279. })
  280. },
  281. save() {
  282. let data = {
  283. member_id: this.memberData.member_info.member_id,
  284. heading: this.memberData.member_info.headimg,
  285. nickname: this.memberData.member_info.nickname,
  286. mobile: this.memberData.member_info.mobile,
  287. level_id: this.memberData.member_level_list[this.index1].level_id,
  288. sex: this.index,
  289. birthday: this.date
  290. }
  291. this.$api.sendRequest({
  292. url: '/shopapi/Member/editMember',
  293. data: data,
  294. success: res => {
  295. let msg = res.message;
  296. this.$util.showToast({
  297. title: msg
  298. });
  299. if (res.code == 0) {
  300. setTimeout(() => {
  301. this.$util.redirectTo('/pages/member/list')
  302. }, 500);
  303. }
  304. }
  305. });
  306. },
  307. uplodImg(type) {
  308. this.$util.upload({
  309. number: 1,
  310. path: 'image'
  311. },
  312. res => {
  313. if (res) {
  314. this.$util.showToast({
  315. title: '上传成功'
  316. });
  317. if (type == 'headimg') this.memberData.member_info.headimg = res[0];
  318. }
  319. }
  320. );
  321. },
  322. delImg(type) {
  323. if (type == 'headimg') this.memberData.member_info.headimg = '';
  324. },
  325. previewMedia(type) {
  326. var paths = [this.$util.img(this.memberData[type])];
  327. uni.previewImage({
  328. current: 0,
  329. urls: paths
  330. });
  331. },
  332. bindGenderChange: function(e) {
  333. this.index = e.target.value
  334. },
  335. bindLevelChange: function(e) {
  336. this.index1 = e.target.value
  337. },
  338. bindLabelChange: function(e) {
  339. this.index2 = e.target.value
  340. },
  341. // 生日时间选择
  342. bindDateChange: function(e) {
  343. console.log(e.target.value)
  344. this.date = e.target.value
  345. },
  346. bindTimeChange: function(e) {
  347. this.time = e.target.value
  348. },
  349. getDate(type) {
  350. const date = new Date();
  351. let year = date.getFullYear();
  352. let month = date.getMonth() + 1;
  353. let day = date.getDate();
  354. if (type === 'start') {
  355. year = year - 60;
  356. } else if (type === 'end') {
  357. year = year + 2;
  358. }
  359. month = month > 9 ? month : '0' + month;;
  360. day = day > 9 ? day : '0' + day;
  361. return `${year}-${month}-${day}`;
  362. },
  363. bindPickerChange(e) {
  364. this.index = e.detail.value
  365. if (e.detail.value == 0) {
  366. this.status = ''
  367. }
  368. if (e.detail.value == 1) {
  369. this.status = 'point'
  370. }
  371. if (e.detail.value == 2) {
  372. this.status = 'balance_money'
  373. }
  374. if (e.detail.value == 3) {
  375. this.status = 'balance'
  376. }
  377. if (e.detail.value == 4) {
  378. this.status = 'growth'
  379. }
  380. let mescroll = {
  381. num: 1,
  382. size: 10
  383. }
  384. this.mescroll.resetUpScroll();
  385. },
  386. changeAct(item) {
  387. // 激活样式是当前点击的对应下标--list中对应id
  388. this.act = item.id;
  389. // 可以根据点击事件改变内容
  390. this.content = item
  391. },
  392. imgError(index, type) {
  393. if (!type) {
  394. this.dataList[index].sku_image = this.$util.getDefaultImage().default_goods_img;
  395. } else {
  396. this.memberData.member_info.headimg = this.$util.getDefaultImage().default_headimg;
  397. }
  398. this.$forceUpdate();
  399. },
  400. getOrderData(mescroll) {
  401. let data = {
  402. page_size: mescroll.size,
  403. page: mescroll.num,
  404. member_id: this.memberId,
  405. account_type: this.status
  406. };
  407. this.mescroll = mescroll;
  408. this.$api.sendRequest({
  409. url: '/shopapi/Member/memberAccountList',
  410. data: data,
  411. success: res => {
  412. let newArr = [];
  413. let msg = res.message;
  414. if (res.code == 0 && res.data) {
  415. newArr = res.data.list;
  416. } else {
  417. this.$util.showToast({
  418. title: msg
  419. });
  420. }
  421. mescroll.endSuccess(newArr.length);
  422. //设置列表数据
  423. if (mescroll.num == 1) this.accountData = []; //如果是第一页需手动制空列表
  424. this.accountData = this.accountData.concat(newArr); //追加新数据
  425. if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
  426. }
  427. });
  428. },
  429. getMeberData() {
  430. let data = {
  431. member_id: this.memberId
  432. };
  433. this.$api.sendRequest({
  434. url: '/shopapi/member/detail',
  435. data: data,
  436. success: res => {
  437. if (res.code == 0 && res.data) {
  438. this.memberData = res.data;
  439. if (res.data.member_info.birthday) this.date = this.$util.timeStampTurnTime(res.data.member_info.birthday,'Y-M-D')
  440. for (let i = 0; i < res.data.member_level_list.length; i++) {
  441. if (res.data.member_info.member_level_name == res.data.member_level_list[i]
  442. .level_name) {
  443. this.index1 = i
  444. }
  445. this.levelList.push(res.data.member_level_list[i].level_name)
  446. }
  447. if (this.memberData.member_info.sex == '0') {
  448. this.index = 0
  449. } else if (this.memberData.member_info.sex == '1') {
  450. this.index = 1
  451. } else {
  452. this.index = 2
  453. }
  454. } else {
  455. this.$util.showToast({
  456. title: res.message
  457. });
  458. }
  459. }
  460. });
  461. },
  462. searchMember() {
  463. this.mescrolls.resetUpScroll();
  464. },
  465. getDetailData(mescroll) {
  466. let data = {
  467. member_id: this.memberId,
  468. search_text: this.searchMemberName
  469. };
  470. this.mescrolls = mescroll;
  471. this.$api.sendRequest({
  472. url: '/shopapi/Member/orderList',
  473. data: data,
  474. success: res => {
  475. let newArr = [];
  476. let msg = res.message;
  477. if (res.code == 0 && res.data) {
  478. newArr = res.data.list;
  479. } else {
  480. this.$util.showToast({
  481. title: msg
  482. });
  483. }
  484. mescroll.endSuccess(newArr.length);
  485. //设置列表数据
  486. if (mescroll.num == 1) this.DetailData = []; //如果是第一页需手动制空列表
  487. this.DetailData = this.DetailData.concat(newArr); //追加新数据
  488. if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
  489. }
  490. });
  491. },
  492. linkSkip(order){
  493. var template = '';
  494. if (order.order_type == 1) {
  495. template = 'basis';
  496. } else if (order.order_type == 2) {
  497. template = 'store';
  498. } else if (order.order_type == 3) {
  499. template = 'local';
  500. } else if (order.order_type == 4) {
  501. template = 'virtual';
  502. }
  503. this.$util.redirectTo("/pages/order/detail/" + template, {
  504. order_id: order.order_id,
  505. template: template
  506. });
  507. }
  508. },
  509. getList(mescroll) {
  510. var data = {
  511. page: mescroll.num,
  512. page_size: mescroll.size,
  513. status: this.status
  514. };
  515. this.$api.sendRequest({
  516. url: '/shopapi/shopwithdraw/lists',
  517. data: data,
  518. success: res => {
  519. let newArr = [];
  520. let msg = res.message;
  521. if (res.code == 0 && res.data) {
  522. if (res.data.page_count == 0) {
  523. this.emptyShow = true;
  524. }
  525. newArr = res.data.list;
  526. } else {
  527. this.$util.showToast({
  528. title: msg
  529. });
  530. }
  531. mescroll.endSuccess(newArr.length);
  532. //设置列表数据
  533. if (mescroll.num == 1) this.dashboard_list = []; //如果是第一页需手动制空列表
  534. this.dashboard_list = this.dashboard_list.concat(newArr); //追加新数据
  535. if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
  536. }
  537. });
  538. }
  539. };
  540. </script>
  541. <style lang="scss">
  542. page {
  543. overflow: hidden;
  544. }
  545. .tab-block {
  546. display: flex;
  547. flex-direction: row;
  548. justify-content: space-between;
  549. background: #fff;
  550. .tab-wrap {
  551. width: 100%;
  552. height: 90rpx;
  553. background-color: #fff;
  554. display: flex;
  555. flex-direction: row;
  556. justify-content: space-around;
  557. }
  558. .tab-item {
  559. line-height: 90rpx;
  560. }
  561. .active {
  562. position: relative;
  563. &::after {
  564. content: '';
  565. position: absolute;
  566. bottom: 0;
  567. left: 0;
  568. height: 4rpx;
  569. width: 100%;
  570. }
  571. }
  572. }
  573. .account-search {
  574. width: 250rpx;
  575. background: #FFFFFF;
  576. border: 1px solid #CCCCCC;
  577. border-radius: 50rpx;
  578. display: flex;
  579. flex-direction: row;
  580. justify-content: space-between;
  581. align-items: center;
  582. }
  583. .search-inner {
  584. background-color: #F8F8F8;
  585. padding-left: 30rpx;
  586. padding-right: 30rpx;
  587. .search-wrap {
  588. display: flex;
  589. align-items: center;
  590. padding: 0 20rpx;
  591. height: 70rpx;
  592. margin-top: 20rpx;
  593. background-color: #FFFFFF;
  594. border-radius: 100rpx;
  595. .search-input-icon {
  596. margin-right: 20rpx;
  597. color: #F8F8F8;
  598. }
  599. input {
  600. flex: 1;
  601. }
  602. }
  603. }
  604. .tag {
  605. font-size: $font-size-goods-tag;
  606. margin-right: $margin-updown;
  607. border: 1px solid #ff6a00;
  608. border-radius: 2rpx;
  609. padding: 0 13rpx;
  610. line-height: 1.5;
  611. font-weight: 400;
  612. // width: 140rpx;
  613. color: #ff6a00;
  614. }
  615. .member_info {
  616. background-color: #fff;
  617. margin: $margin-both;
  618. border-radius: $border-radius;
  619. display: flex;
  620. flex-direction: row;
  621. justify-content: space-between;
  622. align-items: center;
  623. .account_base {
  624. display: flex;
  625. justify-content: space-between;
  626. padding: $padding 0 10rpx 30rpx;
  627. .head {
  628. height: 106rpx;
  629. width: 106rpx;
  630. margin-right: $margin-both;
  631. }
  632. .nickname {
  633. max-width: 360rpx;
  634. font-weight: 500;
  635. font-size: $font-size-toolbar;
  636. }
  637. }
  638. .account-about {
  639. // padding: 0 30rpx 30rpx;
  640. display: flex;
  641. justify-content: space-between;
  642. align-items: center;
  643. >view {
  644. flex: 1;
  645. }
  646. .num,
  647. .tip {
  648. color: #fff;
  649. text-align: center;
  650. }
  651. }
  652. }
  653. .order-title,
  654. .member-title {
  655. position: relative;
  656. padding-left: 20rpx;
  657. color: $color-title;
  658. font-weight: bold;
  659. font-size: $font-size-toolbar;
  660. margin: 10rpx 30rpx 0;
  661. &::after {
  662. content: '';
  663. position: absolute;
  664. left: 0;
  665. top: 50%;
  666. height: 28rpx;
  667. width: 6rpx;
  668. transform: translateY(-50%);
  669. }
  670. }
  671. .order-list {
  672. .item-inner {
  673. position: relative;
  674. background-color: #fff;
  675. padding: 30rpx 30rpx;
  676. margin-bottom: 20rpx;
  677. .order-other-info {
  678. display: flex;
  679. justify-content: space-between;
  680. font-size: $font-size-tag;
  681. }
  682. .item-wrap {
  683. display: flex;
  684. padding: 30rpx 20rpx 30rpx 0;
  685. .item-img {
  686. margin-right: 20rpx;
  687. width: 120rpx;
  688. height: 120rpx;
  689. border-radius: 10rpx;
  690. }
  691. .item-desc {
  692. display: flex;
  693. flex-direction: column;
  694. flex: 1;
  695. color: $color-title;
  696. .item-name {
  697. margin-bottom: 12rpx;
  698. line-height: 1.4;
  699. }
  700. }
  701. .item-price-inner {
  702. display: flex;
  703. // justify-content: space-between;
  704. .goods-class {
  705. width: 300rpx;
  706. font-size: $font-size-activity-tag;
  707. color: $color-tip;
  708. }
  709. .item-price-wrap {
  710. display: flex;
  711. flex-direction: column;
  712. align-items: flex-end;
  713. font-weight: initial;
  714. }
  715. .item-price {
  716. width: 101rpx;
  717. height: 24rpx;
  718. font-size: 24rpx;
  719. font-family: Roboto;
  720. font-weight: 500;
  721. color: #303133;
  722. line-height: 38rpx;
  723. }
  724. .item-number {
  725. font-size: $font-size-tag;
  726. color: $color-tip;
  727. }
  728. }
  729. }
  730. .place-time {
  731. font-size: $font-size-tag;
  732. }
  733. }
  734. }
  735. /* 内容 */
  736. // 头像
  737. // 基础信息模块
  738. .content {
  739. margin-top: 20rpx;
  740. background: #fff;
  741. padding: 0 30rpx;
  742. }
  743. .base-coentent {
  744. // width: 750rpx;
  745. height: 742rpx;
  746. background: #FFFFFF;
  747. }
  748. .name {
  749. color: #303133;
  750. font-size: 28rpx;
  751. }
  752. .order-list {
  753. display: flex;
  754. flex-direction: row;
  755. justify-content: space-between;
  756. align-items: center;
  757. border-bottom: 1px solid #eee;
  758. padding: 20rpx 0;
  759. .list-right {
  760. display: flex;
  761. flex-direction: row;
  762. align-items: center;
  763. font-size: 28rpx;
  764. font-family: PingFang SC;
  765. font-weight: 500;
  766. color: #303133;
  767. input {
  768. font-size: 28rpx;
  769. font-family: PingFang SC;
  770. font-weight: 500;
  771. color: #909399;
  772. text-align: right;
  773. margin-right: 20rpx;
  774. max-width: 280rpx;
  775. }
  776. image {
  777. width: 82rpx;
  778. height: 82rpx;
  779. border-radius: 50%;
  780. }
  781. .order-content {
  782. font-size: 28rpx;
  783. font-family: PingFang SC;
  784. font-weight: 500;
  785. color: #909399;
  786. text-align: right;
  787. margin-right: 20rpx;
  788. }
  789. switch,
  790. .uni-switch-wrapper,
  791. .uni-switch-input {
  792. width: 80rpx;
  793. height: 42rpx;
  794. }
  795. .iconfont {
  796. font-size: 30rpx;
  797. color: #909399;
  798. }
  799. label {
  800. font-size: 28rpx;
  801. color: #909399;
  802. }
  803. }
  804. .list-left {
  805. font-size: 28rpx;
  806. font-family: PingFang SC;
  807. font-weight: 500;
  808. color: #303133;
  809. }
  810. }
  811. .order-items {
  812. display: block;
  813. }
  814. .content-list {
  815. display: flex;
  816. justify-content: space-between;
  817. align-items: center;
  818. padding: 20rpx 0;
  819. border-bottom: 1rpx solid #EEEEEE;
  820. position: relative;
  821. }
  822. .content-list:last-child {
  823. border: none;
  824. }
  825. .content-list input {
  826. text-align: right;
  827. margin-top: 25rpx;
  828. font-size: 26rpx;
  829. }
  830. .content-list image {
  831. width: 82rpx;
  832. height: 82rpx;
  833. border-radius: 50%;
  834. margin-left: 70rpx;
  835. }
  836. .account-section {
  837. width: 750rpx;
  838. justify-content: space-between;
  839. }
  840. .account-top {
  841. display: flex;
  842. background-color: #FFFFFF;
  843. justify-content: space-between;
  844. padding: 20rpx 30rpx;
  845. border-top: 40rpx solid #F8F8F8;
  846. //margin-top:40rpx;
  847. }
  848. .account-title {
  849. font-size: 32rpx;
  850. font-family: PingFang SC;
  851. font-weight: bold;
  852. color: #303133;
  853. line-height: 60rpx;
  854. }
  855. .account-section input {
  856. width: 270rpx;
  857. height: 60rpx;
  858. background: #FFFFFF;
  859. border: 1rpx solid #CCCCCC;
  860. border-radius: 30rpx;
  861. margin-top: 20rpx;
  862. margin-right: 30rpx;
  863. }
  864. .balance,
  865. .member-list {
  866. background: #FFFFFF;
  867. padding: 0 30rpx;
  868. }
  869. .member-list-item {
  870. border-bottom: 1px solid #EEEEEE;
  871. padding: 20rpx 0;
  872. }
  873. .member-list-item:last-child {
  874. border: none;
  875. }
  876. .member-list-sec {
  877. display: flex;
  878. }
  879. .integral {
  880. font-size: 28rpx;
  881. font-family: PingFang SC;
  882. font-weight: 500;
  883. color: #303133;
  884. }
  885. .integral-give {
  886. font-size: 26rpx;
  887. font-family: PingFang SC;
  888. font-weight: 500;
  889. color: #909399;
  890. }
  891. .member-list-top {
  892. display: flex;
  893. justify-content: space-between;
  894. margin-top: 52rpx;
  895. }
  896. .integral-num {
  897. font-size: 28rpx;
  898. font-family: PingFang SC;
  899. font-weight: 500;
  900. color: #303133;
  901. }
  902. .reward {
  903. font-size: 26rpx;
  904. font-family: PingFang SC;
  905. font-weight: 500;
  906. color: #909399;
  907. }
  908. .integral-time {
  909. font-size: 26rpx;
  910. font-family: PingFang SC;
  911. font-weight: 500;
  912. color: #909399;
  913. line-height: 20rpx;
  914. margin-top: 10rpx;
  915. }
  916. .integral-times {
  917. font-size: 26rpx;
  918. font-family: PingFang SC;
  919. font-weight: 500;
  920. color: #909399;
  921. line-height: 20rpx;
  922. line-height: 36rpx;
  923. margin-left: 30rpx;
  924. }
  925. .order {
  926. height: 25rpx;
  927. font-size: 26rpx;
  928. font-family: PingFang SC;
  929. font-weight: 500;
  930. color: #909399;
  931. line-height: 36rpx;
  932. margin-top: 22rpx;
  933. }
  934. .balance-no {
  935. height: 27rpx;
  936. font-size: 28rpx;
  937. font-family: PingFang SC;
  938. font-weight: 500;
  939. color: #303133;
  940. line-height: 36rpx;
  941. margin-top: 19rpx;
  942. }
  943. .balance-no-num {
  944. width: 107rpx;
  945. height: 22rpx;
  946. font-size: 28rpx;
  947. font-family: PingFang SC;
  948. font-weight: 500;
  949. color: #303133;
  950. line-height: 36rpx;
  951. }
  952. .adjust {}
  953. .order-seach {
  954. width: 690rpx;
  955. height: 70rpx;
  956. background: #FFFFFF;
  957. border-radius: 35rpx;
  958. margin: 20rpx auto;
  959. }
  960. .order-top {
  961. display: flex;
  962. justify-content: space-between;
  963. margin-top: 37rpx;
  964. }
  965. .order-number {
  966. height: 23rpx;
  967. font-size: 24rpx;
  968. font-family: PingFang SC;
  969. font-weight: 500;
  970. color: #909399;
  971. line-height: 20rpx;
  972. }
  973. .order-status {
  974. height: 23rpx;
  975. font-size: 24rpx;
  976. font-family: PingFang SC;
  977. font-weight: 500;
  978. color: #303133;
  979. line-height: 20rpx;
  980. }
  981. .order-introduce {
  982. width: 528rpx;
  983. height: 62rpx;
  984. font-size: 28rpx;
  985. font-family: PingFang SC;
  986. font-weight: 500;
  987. color: #303133;
  988. line-height: 36rpx;
  989. }
  990. .order-price {
  991. width: 101rpx;
  992. height: 24rpx;
  993. font-size: 24rpx;
  994. font-weight: 500;
  995. color: #303133;
  996. line-height: 38rpx;
  997. }
  998. .order-time {
  999. width: 249rpx;
  1000. height: 18rpx;
  1001. font-size: 24rpx;
  1002. font-family: PingFang SC;
  1003. font-weight: 500;
  1004. color: #909399;
  1005. line-height: 20rpx;
  1006. margin-top: 30rpx;
  1007. }
  1008. .safe-area {
  1009. padding-bottom: calc(constant(safe-area-inset-bottom) + 100rpx);
  1010. padding-bottom: calc(env(safe-area-inset-bottom) + 100rpx);
  1011. }
  1012. .footer-wrap {
  1013. position: fixed;
  1014. width: 100%;
  1015. bottom: 0;
  1016. left: 0;
  1017. // padding: 40rpx 0;
  1018. z-index: 10;
  1019. padding-bottom: 40rpx;
  1020. }
  1021. </style>