userCenterIntegralExchangeShop.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959
  1. <template>
  2. <div class="userCenterIntegralExchangeShop">
  3. <div class="top">
  4. <div class="topLeft">
  5. <div class="swiper">
  6. <el-carousel arrow="never" indicator-position="none" height="248px">
  7. <el-carousel-item>
  8. <img :src="'api/file/pub/' + shopDetail.picture" alt="" style="width: 100%; height: 100%" />
  9. </el-carousel-item>
  10. </el-carousel>
  11. </div>
  12. </div>
  13. <div class="topRight">
  14. <div >
  15. <span class="title" >{{$i18n.locale == "zh" ? shopDetail.commodityName :shopDetail.commodityNameEn}}</span>
  16. <span v-if="shopDetail.commodityStatus==2" style="display: inline-block;text-align: center;width:80px;height:28px;line-height:28px; background-color:#f0f9eb;border:1px solid #eaf7e4;color:#5ec142;border-radius: 10px;">
  17. {{ $i18n.locale == "zh" ? "已结束" : "Ended" }}
  18. </span>
  19. </div>
  20. <div style="display: flex;justify-content: space-evenly; ">
  21. <div class="integral">
  22. <span class="info1">{{ shopDetail.point }}</span>
  23. <span class="info2">{{
  24. $i18n.locale == "zh" ? "积分" : "Integral"
  25. }}</span>
  26. </div>
  27. <div v-if="shopDetail.price !== 0" class="integral">
  28. <span class="info1" style="color: red; ">{{ shopDetail.price }}</span>
  29. <span class="info2" style="color: red; ">
  30. {{ $i18n.locale == 'zh' ? '元' : 'RMB' }}
  31. </span>
  32. </div>
  33. </div>
  34. <div class="gift">
  35. <span class="info3">{{ $i18n.locale == "zh" ? "礼品类型" : "Gift Type" }}:</span>
  36. <span class="info4">{{ determineCommodityType }}</span>
  37. </div>
  38. <div class="exchange">
  39. <span class="info1">{{ $i18n.locale == "zh" ? "已兑换" : "Exchanged" }}:</span>
  40. <span class="info2">{{
  41. shopDetail.exchangeQuantity ? shopDetail.exchangeQuantity : "0"
  42. }}</span>
  43. <span class="info3">{{ $i18n.locale == "zh" ? "剩余" : "Surplus" }}:</span>
  44. <span class="info4">{{
  45. shopDetail.usageQuantity
  46. }}</span>
  47. </div>
  48. <span>{{ $i18n.locale == "zh" ? "数量" : "Number" }}:</span>
  49. <el-input-number v-model="UmsPointCommodity.exchangeQuantity" :min="1"></el-input-number>
  50. <!-- <div class="number">
  51. <span class="info1"
  52. >{{ $i18n.locale == "zh" ? "数量" : "Number" }}:</span
  53. >
  54. <span class="info2">{{ shopDetail.inventoryQuantity }}</span>
  55. </div> -->
  56. </br>
  57. <el-button v-if="shopDetail.commodityStatus==2" :disabled="true" @click="exchange" type="info" style="margin-top: 20px">
  58. <span class="info1">{{
  59. $i18n.locale == "zh" ? "立即兑换" : "Exchange"
  60. }}</span>
  61. </el-button>
  62. <el-button v-else :disabled="exchangeShopVisible" @click="exchange" type="primary" style="margin-top: 20px;" >
  63. <span class="info1">{{
  64. $i18n.locale == "zh" ? "立即兑换" : "Exchange"
  65. }}</span>
  66. </el-button>
  67. </div>
  68. </div>
  69. <div class="center">
  70. <div class="rule">
  71. <span class="info">{{
  72. $i18n.locale == "zh" ? "规则信息" : "Rule Information"
  73. }}</span>
  74. </div>
  75. <div class="underline"></div>
  76. <div class="section">
  77. <span class="info1">{{ $i18n.locale == "zh" ? "兑换对象" : "Exchange Object" }}:
  78. {{$i18n.locale ==
  79. "zh"?shopDetail.exchangeObject=='V3,V2,V1'?'白银用户,黄金用户,铂金用户':shopDetail.exchangeObject=='V3,V2'?'黄金用户,铂金用户':shopDetail.exchangeObject=='V3,V1'?'白银用户,铂金用户':shopDetail.exchangeObject=='V2,V1'?'白银用户,黄金用户':shopDetail.exchangeObject=='V3'?'铂金用户':shopDetail.exchangeObject=='V2'?'黄金用户':'白银用户':
  80. shopDetail.exchangeObject=='V3,V2,V1'?'Silver User,Gold User,Platinum
  81. User':shopDetail.exchangeObject=='V3,V2'?'Gold User,Platinum
  82. User':shopDetail.exchangeObject=='V3,V1'?'Silver User,Platinum
  83. User':shopDetail.exchangeObject=='V2,V1'?'Silver User,Gold
  84. User':shopDetail.exchangeObject=='V3'?'Platinum User':shopDetail.exchangeObject=='V2'?'Gold
  85. User':'Silver User'}}</span>
  86. <!-- <span class="info2">{{ $i18n.locale == "zh" ? "兑换限制" : "Exchange Limit" }}:{{ shopDetail.exchangeRestrict }}</span> -->
  87. <span class="info3">{{
  88. $i18n.locale == "zh"
  89. ? "活动有效期"
  90. : "Validity Period Of The Activity"
  91. }}:
  92. <span v-if="shopDetail.expirationType == 'y'">
  93. {{ $i18n.locale == "zh" ? "长期有效" : "Long Term Effectiveness" }}
  94. </span>
  95. <span v-if="shopDetail.expirationType == 'n'">{{
  96. shopDetail.validityStartDate | time("YYYY-MM-DD HH:mm:ss")
  97. }}--{{
  98. shopDetail.validityEndDate | time("YYYY-MM-DD HH:mm:ss")
  99. }}</span>
  100. </span>
  101. <!-- <span class="info4"-->
  102. <!-- >{{ $i18n.locale == "zh" ? "活动限制" : "Activity Limit" }}:-->
  103. <!-- <span v-if="shopDetail.restrict == 'y'">-->
  104. <!-- {{ $i18n.locale == "zh" ? "仅限兑换" : "Exchange Only" }}&nbsp;&nbsp;{{ shopDetail.exchangeRestrict }}-->
  105. <!-- </span>-->
  106. <!-- <span v-else>-->
  107. <!-- {{ $i18n.locale == "zh" ? "无限制" : "No Limited" }}-->
  108. <!-- </span>-->
  109. <!-- </span>-->
  110. <span class="info5">{{
  111. $i18n.locale == "zh" ? "礼品介绍" : "Gift Introduction"
  112. }}</span>
  113. <div class="underline_01"></div>
  114. <div class="placeholder">
  115. <span v-if="isZh" v-html="shopDetail.commodityDetailsHtml"></span>
  116. <span v-if="!isZh" v-html="shopDetail.commodityDetailsHtmlEn"></span>
  117. </div>
  118. </div>
  119. </div>
  120. <div class="bottom">
  121. <!-- <div class="photo">
  122. <img
  123. :src="'api/file/pub/' + shopDetail.picture"
  124. alt=""
  125. style="width: 100%; height: 100%"
  126. />
  127. </div> -->
  128. <!-- <div class="content">
  129. <span v-if="isZh">{{ shopDetail.commodityDetails | filterHtmlTag }}</span>
  130. <span v-if="!isZh">{{ shopDetail.commodityDetailsEn | filterHtmlTag }}</span>
  131. </div> -->
  132. </div>
  133. <!-- 商品兑换dialog -->
  134. <el-dialog title="商品兑换" :visible.sync="exchangeShopVisible" width="61%">
  135. <el-divider></el-divider>
  136. <div>
  137. <el-table ref="addressList1" v-loading="loading" highlight-current-row :data="addressList"
  138. :header-cell-style="{
  139. textAlign: 'center',
  140. backgroundColor: '#f8f8f8',
  141. }" border style="width: 100%" :before-close="shutDown">
  142. <el-table-column prop="consignee" align="center"
  143. :label="$i18n.locale === 'zh' ? '收货人' : 'Consignee'" width="150">
  144. </el-table-column>
  145. <el-table-column v-if="$i18n.locale == 'zh'" align="center"
  146. :label="$i18n.locale === 'zh' ? '所在地区' : 'Region'" width="150">
  147. <template slot-scope="scope">
  148. {{ scope.row.province }}{{ scope.row.city }}{{ scope.row.area }}
  149. </template>
  150. </el-table-column>
  151. <el-table-column align="center" :label="$i18n.locale === 'zh' ? '详细地址' : 'Address'" min-width="160">
  152. <template slot-scope="scope">
  153. {{ scope.row.address }}
  154. </template>
  155. </el-table-column>
  156. <el-table-column prop="postalCode" align="center" :label="$i18n.locale === 'zh' ? '邮编' : 'Postcode'"
  157. width="150">
  158. </el-table-column>
  159. <el-table-column prop="mobile" align="center"
  160. :label="$i18n.locale === 'zh' ? '联系方式' : 'Contact Information'" width="160">
  161. </el-table-column>
  162. <el-table-column align="center" :label="$i18n.locale === 'zh' ? '备注' : 'Remarks'" min-width="160">
  163. <template slot-scope="scope">
  164. <textarea class="el-inputUser" @blur="getText(scope.row)" :placeholder="$i18n.locale === 'zh' ?'我们会仔细阅读您所留下的信息,请放心填写!':'We will carefully read the information you left, please feel free to fill in!'" v-model="scope.row.userRemarks" style="border:none;resize:none;background-color: rgba(255, 255, 255, 0); min-height: 90px;max-height: 90px;min-width: 151px;max-width: 151px;font-size: 13px;color: #606266;"></textarea>
  165. </template>
  166. </el-table-column>
  167. <el-table-column align="center" :label="$i18n.locale === 'zh' ? '操作' : 'Operate'" width="160">
  168. <template slot-scope="scope">
  169. <el-button v-if="scope.row.status === '0'" type="text" size="small"
  170. @click="chooseAddress(scope.row)">
  171. {{ $i18n.locale === "zh" ? "选择地址" : "Choose Address" }}
  172. </el-button>
  173. <el-button v-if="scope.row.status === '1'" type="text" size="small">
  174. {{ $i18n.locale === "zh" ? "默认地址" : "Default Address" }}
  175. </el-button>
  176. </template>
  177. </el-table-column>
  178. </el-table>
  179. <el-pagination background @size-change="
  180. (val) => {
  181. page.pageSize = val;
  182. }
  183. " @current-change="
  184. (val) => {
  185. page.pageNo = val;
  186. }
  187. " layout="prev, pager, next" :total="page.total" :current-page="page.pageNo" :page-sizes="[10, 20, 50, 100]"
  188. :page-size="page.pageSize" style="text-align: center; margin-top: 20px">
  189. </el-pagination>
  190. </div>
  191. <span slot="footer" class="dialog-footer">
  192. <el-button v-if="this.createAddress" type="primary" @click="toCreateAddress()">{{
  193. $i18n.locale === "zh" ? "新建地址" : "Create Address"
  194. }}</el-button>
  195. <el-button type="primary" @click="confirmToExchangeGoods()">{{
  196. $i18n.locale === "zh" ? "确 定" : "Determine"
  197. }}</el-button>
  198. <el-button @click="exchangeShopVisible = false">{{
  199. $i18n.locale === "zh" ? "取 消" : "Cancel"
  200. }}</el-button>
  201. </span>
  202. </el-dialog>
  203. </div>
  204. </template>
  205. <script>
  206. import moment from "moment";
  207. import {getToken} from "@/api/token";
  208. import {
  209. exchangeUserPoints,
  210. exchangeUserPointsStatus,
  211. getUmsUserCommodityAddresss,
  212. getUserPointPage,
  213. getProductDetails,
  214. getMoney
  215. } from "@/api/user";
  216. export default {
  217. name: "userCenterIntegralExchangeShop",
  218. data() {
  219. return {
  220. userStauteInfo:{},
  221. shopStatus:'',
  222. userInfoS:'',
  223. shopDetail: "",
  224. exchangeShopVisible: false,
  225. addressList: [],
  226. loading: true,
  227. page: {
  228. pageNo: 1,
  229. pageSize: 5,
  230. total: 0,
  231. },
  232. UmsPointCommodity: {
  233. id: "", // 商品id
  234. exchangeQuantity: "", //商品数量
  235. userRemarks:'',//备注
  236. },
  237. isClick: false,
  238. userLevel: {},
  239. isZh: true,
  240. periodValidity: null,
  241. detailId: null,
  242. createAddress: null,
  243. };
  244. },
  245. watch: {
  246. page: {
  247. handler: function () {
  248. this.loading = true;
  249. this.toObtainAddressList();
  250. },
  251. deep: true,
  252. },
  253. addressList: function () {
  254. this.$nextTick(function () {
  255. this.$refs.addressList1.setCurrentRow(this.addressList[0]);
  256. });
  257. },
  258. "$i18n.locale": {
  259. handler: function () {
  260. if (this.$i18n.locale == "zh") {
  261. this.isZh = true;
  262. } else {
  263. this.isZh = false;
  264. }
  265. },
  266. deep: true,
  267. },
  268. },
  269. filters: {
  270. time(date, type) {
  271. return moment(date).format(type);
  272. },
  273. filterHtmlTag(t) {
  274. if (!t) return "";
  275. return t.toString().replace(/<.*?>/g, "");
  276. },
  277. },
  278. mounted() {
  279. let language = window.localStorage.getItem("locale");
  280. if (language == "zh") {
  281. this.isZh = true;
  282. } else {
  283. this.isZh = false;
  284. }
  285. this.detailId = window.localStorage.getItem("detailID");
  286. this.init();
  287. },
  288. methods: {
  289. init() {
  290. this.getProductDetails();
  291. this.user = JSON.parse(window.localStorage.getItem("user"));
  292. // 获取用户等级
  293. getUserPointPage().then((res) => {
  294. if (res) {
  295. this.userLevel = res.data.umsUserPoints;
  296. }
  297. });
  298. },
  299. getProductDetails() {
  300. getProductDetails(this.detailId).then((res) => {
  301. this.shopDetail = res.data.umsPointCommodity;
  302. });
  303. },
  304. // 兑换商品
  305. exchange() {
  306. this.exchangeShopVisible = true;
  307. this.toObtainAddressList();
  308. },
  309. toObtainAddressList() {
  310. // 获取地址列表
  311. let param = {
  312. pageSize: this.page.pageSize,
  313. pageNo: this.page.pageNo,
  314. // userId: this.user.userId,
  315. };
  316. getUmsUserCommodityAddresss(param)
  317. .then((res) => {
  318. let data = res.data
  319. if (JSON.stringify(data) !== "{}") {
  320. this.addressList = res.data.umsUserCommodityAddresss;
  321. this.page.total = Number(res.data.page.totalCount);
  322. this.createAddress = false;
  323. } else {
  324. this.createAddress = true;
  325. }
  326. })
  327. .then(() => {
  328. this.loading = false;
  329. })
  330. .catch(() => {
  331. this.loading = false;
  332. });
  333. },
  334. // 确定兑换商品
  335. confirmToExchangeGoods() {
  336. console.log(this.isClick,'答案');
  337. this.exchangeShopVisible = false;
  338. if (this.isClick == false) {
  339. var params = {
  340. id: this.shopDetail.id,
  341. exchangeQuantity: this.UmsPointCommodity.exchangeQuantity,
  342. userRemarks:this.userStauteInfo.userRemarks
  343. };
  344. var userAddressId=this.addressList[0].id
  345. } else {
  346. this.UmsPointCommodity.userRemarks=this.userStauteInfo.userRemarks
  347. var params = this.UmsPointCommodity;
  348. var userAddressId=this.userStauteInfo.id
  349. }
  350. console.log(params,userAddressId,'好多地址');
  351. getToken().then((res)=>{
  352. exchangeUserPointsStatus(JSON.stringify(params),userAddressId,res.data).then((res)=>{
  353. if(this.$i18n.locale.toUpperCase() == "ZH"){
  354. this.$message({
  355. message: "下单成功",
  356. type: "success",
  357. });
  358. setTimeout(()=>{
  359. this.$router.push('/userCenterMyOrder')
  360. },1500)
  361. }else{
  362. this.$message({
  363. message: "Checkout success",
  364. type: "success",
  365. });
  366. }
  367. }).catch((error)=>{
  368. if(this.$i18n.locale.toUpperCase() == "ZH"){
  369. this.$message({
  370. message: "抱歉,您的权益不够,兑换失败。",
  371. type: "warning",
  372. });
  373. }else{
  374. this.$message({
  375. message: "Insufficient rights, failed to place order. Sorry, your rights are insufficient, and redemption failed.",
  376. type: "warning",
  377. });
  378. }
  379. })
  380. })
  381. // getToken().then((res) => {
  382. // exchangeUserPoints(JSON.stringify(data), res.data)
  383. // .then((res) => {
  384. // if(this.$i18n.locale.toUpperCase() == "ZH"){
  385. // this.$message({
  386. // message: "下单成功",
  387. // type: "success",
  388. // });
  389. // }else{
  390. // this.$message({
  391. // message: "Exchange success",
  392. // type: "success",
  393. // });
  394. // }
  395. // })
  396. // .catch((error) => {
  397. // if(this.$i18n.locale.toUpperCase() == "ZH"){
  398. // this.$message({
  399. // message: "兑换失败",
  400. // type: "warning",
  401. // });
  402. // }else{
  403. // this.$message({
  404. // message: "Exchange fail",
  405. // type: "warning",
  406. // });
  407. // }
  408. // });
  409. // });
  410. this.isClick = false
  411. },
  412. //备注
  413. getText(row){
  414. this.userStauteInfo=row
  415. },
  416. // 选择地址
  417. chooseAddress(row) {
  418. this.isClick = true;
  419. this.userStauteInfo=row
  420. this.UmsPointCommodity.id = this.shopDetail.id;
  421. this.UmsPointCommodity.userRemarks=row.userRemarks
  422. },
  423. shutDown() {
  424. this.exchangeShopVisible = false;
  425. },
  426. toCreateAddress() {
  427. this.$router.push({
  428. path: "/userCenterMyOrder",
  429. query: {
  430. key: "2"
  431. }
  432. })
  433. }
  434. },
  435. computed: {
  436. // 判断是否在有效期内
  437. effectiveDate() {
  438. let start = this.shopDetail.validityStartDate;
  439. let end = this.shopDetail.validityEndDate;
  440. let currentTime = new Date().getTime();
  441. if (this.shopDetail.expirationType === "n") {
  442. if (currentTime >= start && currentTime <= end) {
  443. this.periodValidity = true;
  444. } else {
  445. this.periodValidity = false;
  446. }
  447. }
  448. },
  449. // 判断用户等级
  450. determineUserLevel() {
  451. return false;
  452. },
  453. // // 判断等级名称
  454. // judgeClassName() {
  455. // let val = this.shopDetail.exchangeObject
  456. // if(val){
  457. // console.log(val,'加载了多次');
  458. // let className = '';
  459. // if (this.isZh) {
  460. // if(val.includes('v1')){
  461. // className +="白银用户";
  462. // }
  463. // if(val.includes('v2')){
  464. // className +=",黄金用户";
  465. // }
  466. // if(val.includes('v3')){
  467. // className +=",铂金用户";
  468. // }
  469. // } else {
  470. // if(val.includes('v1')){
  471. // className +="Silver User";
  472. // }
  473. // if(val.includes('v2')){
  474. // className +=",Gold User";
  475. // }
  476. // if(val.includes('v3')){
  477. // className +=",Platinum User";
  478. // }
  479. // }
  480. // return className;
  481. // }else{
  482. // return false
  483. // }
  484. // },
  485. // // 判断等级名称
  486. // judgeClassName() {
  487. // if (this.isZh) {
  488. // if (this.shopDetail.exchangeObject === "vip0") {
  489. // return "白银用户";
  490. // }
  491. // if (this.shopDetail.exchangeObject === "vip1") {
  492. // return "黄金用户";
  493. // }
  494. // if (this.shopDetail.exchangeObject === "vip2") {
  495. // return "铂金用户";
  496. // }
  497. // if (this.shopDetail.exchangeObject === "vip3") {
  498. // return "星钻用户";
  499. // }
  500. // if (this.shopDetail.exchangeObject === "all") {
  501. // return "所有用户";
  502. // }
  503. // if (this.shopDetail.exchangeObject === "vip0,vip1,vip2") {
  504. // return "白银用户,黄金用户,铂金用户";
  505. // }
  506. // if (this.shopDetail.exchangeObject === "vip3,vip2,vip1,vip0") {
  507. // return "白银用户,黄金用户,铂金用户,星钻用户";
  508. // }
  509. // if (this.shopDetail.exchangeObject === "vip0,vip1,vip2,vip3") {
  510. // return "白银用户,黄金用户,铂金用户,星钻用户";
  511. // }
  512. // } else {
  513. // if (this.shopDetail.exchangeObject === "vip0") {
  514. // return "Silver User";
  515. // }
  516. // if (this.shopDetail.exchangeObject === "vip1") {
  517. // return "Gold User";
  518. // }
  519. // if (this.shopDetail.exchangeObject === "vip2") {
  520. // return "Platinum User";
  521. // }
  522. // if (this.shopDetail.exchangeObject === "vip3") {
  523. // return "Star User";
  524. // }
  525. // if (this.shopDetail.exchangeObject === "all") {
  526. // return "All Users";
  527. // }
  528. // if (this.shopDetail.exchangeObject === "vip0,vip1,vip2") {
  529. // return "Silver User,Gold User,Platinum User";
  530. // }
  531. // if (this.shopDetail.exchangeObject === "vip3,vip2,vip1,vip0") {
  532. // return "Silver User,Gold User,Platinum User,Star User";
  533. // }
  534. // if (this.shopDetail.exchangeObject === "vip0,vip1,vip2,vip3") {
  535. // return "Silver User,Gold User,Platinum User,Star User";
  536. // }
  537. // }
  538. // // vip3,vip2,vip1,vip0
  539. // },
  540. // 企业用户
  541. // enterpriseCustomers(){
  542. // return false
  543. // },
  544. // 判断商品类型
  545. determineCommodityType() {
  546. if (this.isZh) {
  547. if (this.shopDetail.commodityType == "1") {
  548. return "实体礼品";
  549. } else {
  550. return "虚拟礼品";
  551. }
  552. } else {
  553. if (this.shopDetail.commodityType == "1") {
  554. return "Physical Gifts";
  555. } else {
  556. return "Virtual Gifts";
  557. }
  558. }
  559. },
  560. },
  561. };
  562. </script>
  563. <style lang="less" scoped>
  564. .userCenterIntegralExchangeShop {
  565. width: 100%;
  566. background: #fff;
  567. min-height: 800px;
  568. .el-inputUser{
  569. height: 94px;
  570. }
  571. .top {
  572. width: 100%;
  573. display: flex;
  574. // justify-content: space-between;
  575. .topLeft {
  576. height: 344px;
  577. background-color: rgba(207, 215, 228, 0.8);
  578. margin-left: 15px;
  579. width: 384px;
  580. display: flex;
  581. justify-content: center;
  582. align-items: center;
  583. .swiper {
  584. width: 200px;
  585. height: 248px;
  586. .el-carousel ::v-deep .el-carousel__indicators--horizontal {
  587. height: 5vh;
  588. left: 85%;
  589. bottom: 2vh;
  590. }
  591. .el-carousel
  592. ::v-deep
  593. .el-carousel__indicator--horizontal
  594. .el-carousel__button {
  595. width: 0.5rem;
  596. height: 0.5rem;
  597. border-radius: 50%;
  598. }
  599. .el-carousel ::v-deep .is-active .el-carousel__button {
  600. background: rgba(243, 150, 0, 1);
  601. width: 0.5rem;
  602. border-radius: 0.5rem;
  603. }
  604. }
  605. }
  606. .topRight {
  607. width: 420px;
  608. height: 339px;
  609. margin: 11px 0 0 32px;
  610. .title {
  611. width: 420px;
  612. height: 40px;
  613. overflow-wrap: break-word;
  614. color: rgba(44, 85, 138, 1);
  615. font-size: 30px;
  616. font-family: PingFangSC-Semibold;
  617. line-height: 40px;
  618. text-align: left;
  619. margin-right: 10px;
  620. }
  621. .integral {
  622. display: flex;
  623. justify-content: space-evenly;
  624. height: 36px;
  625. margin-top: 40px;
  626. .info1 {
  627. width: 70%;
  628. height: 36px;
  629. display: inline-block;
  630. overflow-wrap: break-word;
  631. color: rgba(243, 150, 0, 1);
  632. font-size: 36px;
  633. font-family: PingFangSC-Semibold;
  634. white-space: nowrap;
  635. line-height: 36px;
  636. text-align: center;
  637. }
  638. .info2 {
  639. width: 30%;
  640. height: 24px;
  641. line-height: 24px;
  642. display: inline-block;
  643. overflow-wrap: break-word;
  644. color: rgba(243, 150, 0, 1);
  645. font-size: 24px;
  646. text-align: center;
  647. white-space: nowrap;
  648. margin-left: 10px;
  649. margin-top: 7px;
  650. }
  651. }
  652. .gift {
  653. display: flex;
  654. justify-content: space-between;
  655. width: 170px;
  656. height: 30px;
  657. margin-top: 22px;
  658. .info3 {
  659. width: 80px;
  660. height: 30px;
  661. display: block;
  662. overflow-wrap: break-word;
  663. color: rgba(51, 51, 51, 1);
  664. font-size: 16px;
  665. white-space: nowrap;
  666. line-height: 30px;
  667. text-align: left;
  668. }
  669. .info4 {
  670. width: 64px;
  671. height: 30px;
  672. display: block;
  673. overflow-wrap: break-word;
  674. color: rgba(51, 51, 51, 1);
  675. font-size: 16px;
  676. font-family: PingFangSC-Medium;
  677. white-space: nowrap;
  678. line-height: 30px;
  679. text-align: left;
  680. }
  681. }
  682. .exchange {
  683. display: flex;
  684. justify-content: space-between;
  685. width: 338px;
  686. height: 30px;
  687. margin-top: 5px;
  688. .info1 {
  689. display: block;
  690. overflow-wrap: break-word;
  691. color: rgba(51, 51, 51, 1);
  692. font-size: 16px;
  693. white-space: nowrap;
  694. line-height: 30px;
  695. text-align: left;
  696. }
  697. .info2 {
  698. width: 20px;
  699. height: 30px;
  700. display: block;
  701. overflow-wrap: break-word;
  702. color: rgba(51, 51, 51, 1);
  703. font-size: 16px;
  704. font-family: PingFangSC-Medium;
  705. white-space: nowrap;
  706. line-height: 30px;
  707. text-align: left;
  708. margin-left: 42px;
  709. }
  710. .info3 {
  711. width: 48px;
  712. height: 30px;
  713. display: block;
  714. overflow-wrap: break-word;
  715. color: rgba(51, 51, 51, 1);
  716. font-size: 16px;
  717. white-space: nowrap;
  718. line-height: 30px;
  719. text-align: left;
  720. margin-left: 84px;
  721. }
  722. .info4 {
  723. width: 64px;
  724. height: 30px;
  725. display: block;
  726. overflow-wrap: break-word;
  727. color: rgba(51, 51, 51, 1);
  728. font-size: 16px;
  729. font-family: PingFangSC-Medium;
  730. white-space: nowrap;
  731. line-height: 30px;
  732. text-align: left;
  733. margin-left: 16px;
  734. }
  735. }
  736. .number {
  737. display: flex;
  738. justify-content: space-between;
  739. width: 126px;
  740. height: 30px;
  741. margin-top: 5px;
  742. .info1 {
  743. display: block;
  744. overflow-wrap: break-word;
  745. color: rgba(51, 51, 51, 1);
  746. font-size: 16px;
  747. white-space: nowrap;
  748. line-height: 30px;
  749. text-align: left;
  750. }
  751. .info2 {
  752. width: 20px;
  753. height: 30px;
  754. display: block;
  755. overflow-wrap: break-word;
  756. color: rgba(51, 51, 51, 1);
  757. font-size: 16px;
  758. font-family: PingFangSC-Medium;
  759. white-space: nowrap;
  760. line-height: 30px;
  761. text-align: left;
  762. }
  763. }
  764. .button {
  765. height: 36px;
  766. border-radius: 2px;
  767. border: 1px solid rgba(41, 144, 255, 1);
  768. margin-top: 34px;
  769. width: 104px;
  770. .info1 {
  771. display: block;
  772. overflow-wrap: break-word;
  773. color: rgba(41, 144, 255, 1);
  774. font-size: 16px;
  775. font-family: HiraginoSansGB-W6;
  776. white-space: nowrap;
  777. line-height: 16px;
  778. text-align: justify;
  779. margin: 5px 0 0 10px;
  780. }
  781. }
  782. }
  783. }
  784. .center {
  785. .rule {
  786. .info {
  787. width: 64px;
  788. height: 16px;
  789. display: block;
  790. overflow-wrap: break-word;
  791. color: rgba(44, 85, 138, 1);
  792. font-size: 16px;
  793. font-family: PingFangSC-Semibold;
  794. white-space: nowrap;
  795. line-height: 18px;
  796. text-align: left;
  797. margin: 30px 0 0 25px;
  798. }
  799. }
  800. .underline {
  801. width: 84px;
  802. height: 1px;
  803. background-color: rgba(44, 85, 138, 1);
  804. margin: 16px;
  805. }
  806. .section {
  807. width: 880px;
  808. // height: 526px;
  809. margin: 21px 0 0 17px;
  810. .info1 {
  811. width: 202px;
  812. height: 30px;
  813. display: block;
  814. overflow-wrap: break-word;
  815. color: rgba(51, 51, 51, 1);
  816. font-size: 16px;
  817. white-space: nowrap;
  818. line-height: 30px;
  819. text-align: left;
  820. }
  821. .info2 {
  822. width: 202px;
  823. height: 30px;
  824. display: block;
  825. overflow-wrap: break-word;
  826. color: rgba(51, 51, 51, 1);
  827. font-size: 16px;
  828. white-space: nowrap;
  829. line-height: 30px;
  830. text-align: left;
  831. margin-top: 30px;
  832. }
  833. .info3 {
  834. width: 186px;
  835. height: 30px;
  836. display: block;
  837. overflow-wrap: break-word;
  838. color: rgba(51, 51, 51, 1);
  839. font-size: 16px;
  840. white-space: nowrap;
  841. line-height: 30px;
  842. text-align: left;
  843. margin-top: 30px;
  844. }
  845. .info4 {
  846. width: 161px;
  847. height: 30px;
  848. display: block;
  849. overflow-wrap: break-word;
  850. color: rgba(51, 51, 51, 1);
  851. font-size: 16px;
  852. white-space: nowrap;
  853. line-height: 30px;
  854. text-align: left;
  855. margin-top: 30px;
  856. }
  857. .info5 {
  858. width: 64px;
  859. height: 16px;
  860. display: block;
  861. overflow-wrap: break-word;
  862. color: rgba(44, 85, 138, 1);
  863. font-size: 16px;
  864. font-family: PingFangSC-Semibold;
  865. white-space: nowrap;
  866. line-height: 16px;
  867. text-align: left;
  868. margin: 30px 0 0 10px;
  869. }
  870. .underline_01 {
  871. width: 84px;
  872. height: 1px;
  873. background-color: rgba(44, 85, 138, 1);
  874. margin-top: 16px;
  875. }
  876. .placeholder {
  877. width: 880px;
  878. // height: 210px;
  879. display: block;
  880. overflow-wrap: break-word;
  881. color: rgba(51, 51, 51, 1);
  882. font-size: 16px;
  883. line-height: 30px;
  884. text-align: left;
  885. overflow: hidden;
  886. text-overflow: ellipsis;
  887. }
  888. }
  889. }
  890. .bottom {
  891. .photo {
  892. margin: 0 auto;
  893. width: 440px;
  894. height: 536px;
  895. // background: url(https://lanhu.oss-cn-beijing.aliyuncs.com/SketchPng9127c07d0e073b678a476e6deaecf78b1d699e6d40fb22e1c719a29fb1962b98)
  896. // 100% no-repeat;
  897. }
  898. .content {
  899. width: 880px;
  900. height: 210px;
  901. display: block;
  902. overflow-wrap: break-word;
  903. color: rgba(51, 51, 51, 1);
  904. font-size: 16px;
  905. line-height: 30px;
  906. text-align: left;
  907. overflow: hidden;
  908. text-overflow: ellipsis;
  909. margin: 57px 0 0 10px;
  910. }
  911. }
  912. }
  913. </style>