Home.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623
  1. <template>
  2. <div class="home">
  3. <header>乐团注册</header>
  4. <div class="section">
  5. <h2 class="title line_bottom">课程</h2>
  6. <p class="indate" v-if="result.payMethod >= 26" key="indate-price"><span>现价:¥{{ result.classAmount }}</span></p>
  7. <div class="options" v-if="result.payMethod >= 26" key="class-list">
  8. <div class="option">
  9. <div class="0_hd"><i class="check_default check_active"></i></div>
  10. <div class="o_bd">乐团声部训练</div>
  11. </div>
  12. <div class="option">
  13. <div class="0_hd"><i class="check_default check_active"></i></div>
  14. <div class="o_bd">乐团合奏训练</div>
  15. </div>
  16. <div class="option">
  17. <div class="0_hd"><i class="check_default check_active"></i></div>
  18. <div class="o_bd">基础技能训练</div>
  19. </div>
  20. <div class="option">
  21. <div class="0_hd"><i class="check_default check_active"></i></div>
  22. <div class="o_bd">假期集中训练</div>
  23. </div>
  24. </div>
  25. <div class="options" v-else key="class-list">
  26. <div class="option">
  27. <div class="0_hd"><i class="check_default check_active"></i></div>
  28. <div class="o_bd">乐团课</div>
  29. <span class="o_ft" v-if="result.payMethod == 21 || result.payMethod == 25" key="class-price">
  30. <del>原价:¥23520</del> 现价:免费
  31. </span>
  32. <span class="o_ft" v-else key="class-price">
  33. <del>原价:¥23520</del> 现价:¥{{ result.classAmount }}
  34. </span>
  35. </div>
  36. </div>
  37. <div class="coutInfo" v-if="result.payMethod >= 26">
  38. <i class="trumpet_icon"></i>年度安排十个月训练,共计168课时,120元/课时,原价20160元,现仅支付{{ result.classAmount }}元/月(约合34.5元/课时)
  39. </div>
  40. </div>
  41. <div class="section">
  42. <h2 class="title line_bottom">乐器</h2>
  43. <div class="options" v-if="result.payMethod == 21 || result.payMethod == 22 || result.payMethod > 26 || (result.payMethod == 25 && result.isCopperPipe == 1)">
  44. <div v-for="(con, index) in instrument.config" :key="con.name" :class="[ instrument.config.length > 1 ? 'oc' : '' ]" @click="instrumentF(index)">
  45. <div class="option">
  46. <div class="o_"><i class="check_default" :class="[ con.checked ? 'check_active' : '' ]"></i></div>
  47. <div class="o_bd" v-if="con.marketPrice > 0" key="name">{{ instrument.name }}-<span class="c">{{ con.name }} </span></div>
  48. <div class="o_bd" v-else key="name">{{ con.name }}</div>
  49. <span class="o_ft" v-if="con.marketPrice > 0">
  50. <del>原价:¥{{ con.marketPrice }}</del> 现价:¥{{ con.referencePrice }}
  51. </span>
  52. </div>
  53. <div class="configuration" v-if="con.marketPrice > 0">
  54. <div class="config">
  55. <div class="title"><span>参数</span></div>
  56. <div class="content">
  57. <p>{{ instrument.configuration }} {{ con.texture}}</p>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. </div>
  63. <div class="options" v-if="(result.payMethod == 25 && result.isCopperPipe == 0) || result.payMethod == 26">
  64. <div v-for="con in instrument.config" :key="con.name" class="oc" @click="instrumentF2('default')">
  65. <div class="option" v-if="con.default">
  66. <div class="o_"><i class="check_default" :class="[ con.checked ? 'check_active' : '' ]"></i></div>
  67. <div class="o_bd">{{ instrument.name }}-<span class="c">{{ con.name }} </span>
  68. </div>
  69. <span class="o_ft" v-if="result.payMethod == 25">
  70. <del>原价:¥{{ con.marketPrice }}</del> 免费试用
  71. </span>
  72. <span class="o_ft" v-if="result.payMethod == '26'">
  73. <del>原价:¥{{ con.marketPrice }}</del> 押金:¥800
  74. </span>
  75. </div>
  76. <span class="protocol" @click="protocol" v-if="con.default">《乐器借用协议》</span>
  77. <div class="configuration" v-if="con.default">
  78. <div class="config">
  79. <div class="title"><span>参数</span></div>
  80. <div class="content">
  81. <p>{{ instrument.configuration }} {{ con.texture}}</p>
  82. </div>
  83. </div>
  84. </div>
  85. </div>
  86. <div v-for="con in instrument.config" :key="con.marketPrice" @click="instrumentF2('self')">
  87. <div class="option" v-if="con.marketPrice <= 0">
  88. <div class="o_"><i class="check_default" :class="[ con.checked ? 'check_active' : '' ]"></i></div>
  89. <div class="o_bd">{{ con.name }}
  90. </div>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. <div class="section">
  96. <h2 class="title line_bottom">辅件</h2>
  97. <div class="options" v-for="(instr, index) in instrument.auxiliaries" :key="instr.name" @click="auxiliarie(index)">
  98. <div class="option">
  99. <div class="o_hd"><i class="check_default" :class="[ instr.checked ? 'check_active' : '' ]"></i></div>
  100. <div class="o_bd">{{ instr.name }}</div>
  101. <span class="o_ft">
  102. <del>原价:¥{{ instr.marketPrice }}</del>
  103. {{ instr.referencePrice == 0 ? '免费' : '现价:¥' + instr.referencePrice }}
  104. </span>
  105. </div>
  106. </div>
  107. </div>
  108. <div class="section">
  109. <h2 class="title line_bottom">其它</h2>
  110. <div class="options" v-for="base in baseInfo.other" :key="base.name">
  111. <div class="option">
  112. <div class="o_hd"><i class="check_default check_active"></i></div>
  113. <div class="o_bd">{{ base.name }}</div>
  114. <span class="o_ft">
  115. <del>原价:¥{{ base.marketPrice }}</del>
  116. {{ base.referencePrice == 0 ? '免费' : '现价:¥' + base.referencePrice }}
  117. </span>
  118. </div>
  119. </div>
  120. </div>
  121. <!-- <form role="form" method="post" target="_bank" :action="form.host" id="onSubmit">
  122. <input type="hidden" name="apiContent" v-model="form.apiContent" >
  123. <input type="hidden" name="merNo" v-model="form.merNo" >
  124. <input type="hidden" name="notifyUrl" v-model="form.notifyUrl" >
  125. <input type="hidden" name="sign" v-model="form.sign" >
  126. <input type="hidden" name="signType" v-model="form.signType" >
  127. <input type="hidden" name="timestamp" v-model="form.timestamp" >
  128. <input type="hidden" name="version" v-model="form.version" >
  129. </form> -->
  130. <div class="buy">
  131. <div class="price">
  132. <p class="oldprice">
  133. <del class="text">原价</del>
  134. <del>¥{{ orderInfo.marketPrice }}</del>
  135. </p>
  136. <p class="now_price">
  137. <span class="text">仅需支付</span>
  138. <span>¥{{ orderInfo.referencePrice }}</span>
  139. </p>
  140. </div>
  141. <a @click="buy">购买</a>
  142. </div>
  143. </div>
  144. </template>
  145. <script>
  146. import { home } from '../mockjs/payment'
  147. import {instruments, baseInfo } from '../assets/front_instruments_config'
  148. import qs from 'qs'
  149. export default {
  150. name: 'home',
  151. data() {
  152. return {
  153. result: {}, // 返回结果
  154. instrument: {}, // 乐器类型
  155. baseInfo: {}, // 其它类
  156. money: 580,
  157. orderInfo: {
  158. marketPrice: 0, // 原价总金额
  159. referencePrice: 0, // 现价总金额
  160. auxiliarie: null, // 选中辅件编号
  161. instrumentId: null, // 乐器编号 99为自备乐器
  162. }, // 金额列表,金额计算
  163. form: {
  164. apiContent: '',
  165. host: '',
  166. merNo: '',
  167. notifyUrl: '',
  168. sign: '',
  169. signType: '',
  170. timestamp: '',
  171. version: '',
  172. }
  173. }
  174. },
  175. mounted() {
  176. this.baseInfo = baseInfo
  177. /**
  178. * 21 1.0
  179. * 22 2.0
  180. * 25 1.5
  181. * 26 3.0 */
  182. axios.post('/user/getUserRegisterViewDetail', qs.stringify({
  183. stuId: this.$route.query.stuId
  184. })).then((res) => {
  185. let r = res.data.data
  186. this.result = {
  187. payMethod: r.fee_type_,
  188. subName: r.sub_name_,
  189. grade: r.grade_,
  190. voicyPart: r.sub_name_.split('.')[1],
  191. isCopperPipe: r.isCopperPipe,
  192. patriarchName: r.patriarch_name_,
  193. patriarchPhone: r.patriarch_phone_,
  194. stuName: r.name_,
  195. stuClass: r.g_class_,
  196. classAmount: r.fee_amount_, // 课程费用
  197. course_id: r.course_id_, // 课程组
  198. }
  199. this.instrument = instruments[this.cnToEn(this.result.voicyPart)]
  200. // 初始化计算金额
  201. this.calcPrice()
  202. })
  203. },
  204. methods: {
  205. auxiliarie(index) {
  206. // 辅件切换状态
  207. this.instrument.auxiliaries[index].checked = !this.instrument.auxiliaries[index].checked
  208. // 重新计算金额
  209. this.calcPrice()
  210. },
  211. instrumentF(index) {
  212. // 乐器切换状态
  213. for(let i = 0; i < this.instrument.config.length; i++) {
  214. this.instrument.config[i].checked = false
  215. }
  216. this.instrument.config[index].checked = true
  217. // 重新计算金额
  218. this.calcPrice()
  219. },
  220. instrumentF2(type) {
  221. // 专门针对25 26 收费类型写的方法
  222. for(let i = 0; i < this.instrument.config.length; i++) {
  223. this.instrument.config[i].checked = false
  224. if(type == 'default' && this.instrument.config[i].default == 1) {
  225. this.instrument.config[i].checked = true
  226. }
  227. if(type == 'self' && this.instrument.config[i].name == '自备') {
  228. this.instrument.config[i].checked = true
  229. }
  230. }
  231. // 重新计算金额
  232. this.calcPrice()
  233. },
  234. buy() {
  235. // 确认购买
  236. // console.log('buy')
  237. let params = this.$route.query
  238. let resultParams = {
  239. branchId: params.branchId,
  240. userId: params.stuId,
  241. amount: this.orderInfo.referencePrice,
  242. courseId: this.result.course_id,
  243. classId: params.classId
  244. }
  245. // 判断是否是自备 或者 免费
  246. let iI = this.orderInfo.instrumentIndex
  247. if(iI && iI != 99 && iI != 0) {
  248. resultParams.instrument = iI
  249. }
  250. // 辅件是否有选中的
  251. if(this.orderInfo.auxiliarie) {
  252. resultParams.adjunct = this.orderInfo.auxiliarie
  253. }
  254. axios.post('/yqpay/toPay', qs.stringify(resultParams)).then((res) => {
  255. let result = res.data
  256. if(res.data) {
  257. this.form = result.data
  258. this.onSubmit()
  259. // document.querySelector('#onSubmit').submit()
  260. // window.location.href = `${f.host}?apiContent=${f.apiContent}&merNo=${f.merNo}&notifyUrl=${f.notifyUrl}&sign=${f.sign}&singType=${f.singType}&timestamp=${f.timestamp}&version=${f.version}`
  261. }
  262. })
  263. },
  264. onSubmit() {
  265. // submit 提交
  266. let f = this.form
  267. // console.log(this)
  268. // debugger
  269. document.querySelector('#onSubmit').action = f.host
  270. document.querySelector('#apiContent').value = f.apiContent
  271. document.querySelector('#merNo').value = f.merNo
  272. document.querySelector('#notifyUrl').value = f.notifyUrl
  273. document.querySelector('#sign').value = f.sign
  274. document.querySelector('#signType').value = f.signType
  275. document.querySelector('#timestamp').value = f.timestamp
  276. document.querySelector('#version').value = f.version
  277. document.querySelector('#onSubmit').submit()
  278. // window.location.href = `${f.host}?apiContent=${f.apiContent}&merNo=${f.merNo}&notifyUrl=${f.notifyUrl}&sign=${f.sign}&singType=${f.singType}&timestamp=${f.timestamp}&version=${f.version}`
  279. },
  280. protocol() {
  281. // 协议
  282. let r = this.result
  283. let protocol = {
  284. patriarchName: r.patriarchName,
  285. patriarchPhone: r.patriarchPhone,
  286. stuName: r.stuName,
  287. grade: r.grade,
  288. subName: r.subName,
  289. voicyPart: r.voicyPart,
  290. payMethod: r.payMethod, // 缴费类型
  291. isCopperPipe: r.isCopperPipe // 是否为铜管
  292. }
  293. let c = this.instrument.config
  294. for(let i = 0; i < c.length; i++) {
  295. if(c[i].default) {
  296. protocol.name = c[i].name
  297. protocol.referencePrice = c[i].referencePrice
  298. protocol.marketPrice = c[i].marketPrice
  299. }
  300. }
  301. this.$router.push({ path: 'protocol', query: {
  302. protocol: JSON.stringify(protocol)
  303. }})
  304. },
  305. cnToEn(type) {
  306. let arr = {
  307. '长笛': 'flute',
  308. '单簧管': 'clarinet',
  309. '萨克斯管': 'saxophone',
  310. '小号': 'trumpet',
  311. '长号': 'trombone',
  312. '圆号': 'horn',
  313. '上低音号': 'upperBass',
  314. '小军鼓': 'snareDrum'
  315. }
  316. return arr[type]
  317. },
  318. calcPrice() {
  319. let version = this.result.payMethod
  320. // 课程金额,乐器金额,辅件金额,其它金额
  321. let amountSummary = {
  322. // 课程金额
  323. mClass: 0, //原价
  324. rClass: 0, //现价
  325. // 乐器金额
  326. mInstrument: 0, //原价
  327. rInstrument: 0, //现价
  328. // 辅件金额
  329. mAuxiliarie: 0, //原价
  330. rAuxiliarie: 0, //现价
  331. // 其它金额
  332. mOther: 0, //原价
  333. rOther: 0, //现价
  334. } // 金额汇总
  335. let auxiliarie, // 后台需要参数列表
  336. instrumentIndex // 乐器编号
  337. // 课程
  338. if(version == 21 || version == 25) {
  339. amountSummary.mClass = 23520
  340. amountSummary.rClass = 0
  341. }
  342. if(version == 22) {
  343. amountSummary.mClass = 23520
  344. amountSummary.rClass = this.result.classAmount
  345. }
  346. if(version == 26 || version > 26) {
  347. amountSummary.mClass = 20160
  348. amountSummary.rClass = this.result.classAmount
  349. }
  350. // 乐器金额
  351. let config = this.instrument.config
  352. for(let i = 0; i < config.length; i++) {
  353. if(config[i].checked) {
  354. amountSummary.mInstrument = parseInt(config[i].marketPrice)
  355. instrumentIndex = config[i].index
  356. if(config[i].marketPrice == 0) {
  357. amountSummary.rInstrument = 0
  358. } else {
  359. // 1.5 版本 免费领用乐器
  360. // 3.0 版本 押金800
  361. if(version == 25) {
  362. if(this.result.isCopperPipe == 1) {
  363. amountSummary.rInstrument = parseInt(config[i].referencePrice)
  364. } else {
  365. amountSummary.rInstrument = 0
  366. instrumentIndex = 99
  367. }
  368. } else {
  369. amountSummary.rInstrument = version == 26 ? 800 : parseInt(config[i].referencePrice)
  370. }
  371. }
  372. }
  373. }
  374. // 辅件金额
  375. let auxiliaries = this.instrument.auxiliaries
  376. for(let i = 0; i < auxiliaries.length; i++) {
  377. if(auxiliaries[i].checked) {
  378. amountSummary.mAuxiliarie += parseInt(auxiliaries[i].marketPrice)
  379. amountSummary.rAuxiliarie += parseInt(auxiliaries[i].referencePrice)
  380. // 添加选中的辅件列表
  381. if(auxiliarie) {
  382. auxiliarie += ',' + auxiliaries[i].index
  383. } else {
  384. auxiliarie = auxiliaries[i].index
  385. }
  386. }
  387. }
  388. // 其它金额
  389. let base = this.baseInfo.other
  390. for(let i = 0; i < base.length; i++) {
  391. amountSummary.mOther += base[i].marketPrice
  392. amountSummary.rOther += base[i].referencePrice
  393. }
  394. this.orderInfo = {
  395. marketPrice: parseInt(amountSummary.mClass + amountSummary.mInstrument + amountSummary.mAuxiliarie + amountSummary.mOther), // 原价总金额
  396. referencePrice: parseInt(amountSummary.rClass + amountSummary.rInstrument + amountSummary.rAuxiliarie + amountSummary.rOther), // 现价总金额
  397. auxiliarie: auxiliarie,
  398. instrumentIndex: instrumentIndex
  399. }
  400. }
  401. }
  402. }
  403. </script>
  404. <style lang="less" scoped>
  405. .home {
  406. margin-bottom: .7rem;
  407. }
  408. header {
  409. height: .40rem;
  410. line-height: .40rem;
  411. color: #000;
  412. font-size: .17rem;
  413. background: #fff;
  414. box-shadow: 0px 1px 8px 0px rgba(0,0,0,0.07);
  415. text-align: center;
  416. margin-bottom: .06rem;
  417. }
  418. .section {
  419. padding: .16rem .22rem .1rem;
  420. background: #fff;
  421. margin-bottom: .1rem;
  422. .line_bottom {
  423. border-bottom: 1px solid #ededed;
  424. }
  425. > .title {
  426. font-size: .2rem;
  427. line-height: .28rem;
  428. font-weight: bold;
  429. padding-bottom: .05rem;
  430. }
  431. .indate {
  432. font-size: .12rem;
  433. padding: .06rem 0;
  434. display: flex;
  435. // justify-content: space-between;
  436. justify-content: flex-end;
  437. border-bottom: 1px solid #ededed;
  438. span {
  439. color: #FA101D;
  440. }
  441. }
  442. .coutInfo {
  443. font-size: .12rem;
  444. color: #F85043;
  445. text-align: left;
  446. border-top: 1px solid #ededed;
  447. padding: .12rem 0 0 .15rem;
  448. margin-top: .1rem;
  449. position: relative;
  450. .trumpet_icon {
  451. width: .14rem;
  452. height: .12rem;
  453. background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAYCAYAAADpnJ2CAAAAAXNSR0IArs4c6QAAAyZJREFUSA21Vk1IVFEUPufOezNilJXQD2UQRERamWhBaUWOSS3U0SawdgZai2gR0aoQXPSDm3JRCbm0xZBjbkQZS0KDjKywDCIIkoKKEIkm35uZezr32X0jQ+bY2IU359xzzj3fPXe++4PwDy0W8JdKgjYCWOkzzWIM9X5NN42RbqCKoxOHl1nR2FVJ1MRgqGzxhCxg8VDp6TSRTpCKsQL+aitqjwPRKQ3mjCVygFPz2MGKQqvG/zxW56+c7ZsXkIJH1liB8hARdQPButmD59WR8mUCuqy6ynwd686OmpsN++XjLUiYrZ0g5E6SdJmAVri2FMWDnnIz3P8gxex07Rp/owS6jQij3h1lu7G5Oe5UOF1bcc5+MTRFlBiTEH/iflLe+htYKsh0oHwzBcpztd3bHWlHxPtEUMTFHFV2YdceOglStnLiZGV6xEIlwbBF+JQaqpa6Qw246OiUOKOkICnPus4MFYGik7m80Z6MXtCpfKHIGBN6kIm2x66tLBJM7q3amak0DbqEgD84eQNzwiUkE+Wmk1vGjwtmnydTID0eQ5EpLoDZTGvjr4b2absXzGdKlwC73FloZ6aSSTKocjC7kyu3Ku8D2xOAuOk/ANKEAwhivZKqYXt7jFdyAnl7LTrgDMTcv4sOyCddnlOVnKlU6dTYaPKS5hHg5IIO77nnnfTw0h1QPTTgjWv9MrGB97ki5zvh/JmuJzOFgv4cPm9rGO6TUVD6SGezhV2sdF7OEcEB49qRqbRi0MKVLEEBHXxu8i6YabzMpx1NGJ18OIjr2pG5pHqu7r13efY1ncsK+rfxvtzPW2LY29U3Krxd/Xe4c55PiKgO+meJsNeHVIIdPd/dHHFoUToitSnpsDQrHGn1FpbmoMcoEIJPA/0BNvFEJlVgOi0rPPAWwwPfdKy6nphE1c71tL3snrK796EOSpVUX7Xano628cBgqk/157oP1Y1PcTkChDEwzRJfqNfhyrz7EO/2fPaFI8dAiGqe3sc/gc5pI3wtPFCrwVTcvBXOTuY8on7GrqBMvms8wjhodvWl/YhaEKAG//1MvMHXUO5Cn4m/ACXBMJBwQaFpAAAAAElFTkSuQmCC) no-repeat center;
  454. background-size: contain;
  455. position: absolute;
  456. left: 0;
  457. top: .14rem;
  458. }
  459. }
  460. }
  461. .options {
  462. padding-top: .08rem;
  463. .oc {
  464. &:last-child {
  465. border-top: 1px solid #ededed;
  466. margin-top: 0.08rem;
  467. padding-top: 0.09rem;
  468. }
  469. }
  470. .protocol {
  471. padding-left: .2rem;
  472. font-size: .1rem;
  473. line-height: .14rem;
  474. }
  475. .option {
  476. line-height: .26rem;
  477. font-size: .15rem;
  478. display: flex;
  479. align-items: center;
  480. position: relative;
  481. .o_bd {
  482. flex: 1;
  483. .c {
  484. font-size: .12rem;
  485. }
  486. }
  487. .o_ft {
  488. font-size: .12rem;
  489. color: #FA101D;
  490. del {
  491. color: #AAAAAA;
  492. font-size: .11rem;
  493. }
  494. }
  495. .check_default {
  496. margin-right: .08rem;
  497. display: block;
  498. width: .14rem;
  499. height: .14rem;
  500. background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAABK0lEQVQ4T6WSP0vDQBjGn3MIiYX+CbhYG7BR7CL5ANmS2SWQ7H4DZ3ed/QbuOcjinGz5ANGloqmQ2i5CmhZqQgZPLjRQFYS2N9297/t73+fuHoK15bruASHkijF2AeB0lXohhDwwxu4cx/moy0m9oZRaAO5VVW0qioJ2u12lsixDkiSI43gB4NK2bY/HK5BDoihSXdf3Wq0WZrMZPpfLCtxvNNDpdDCfzxGG4VdRFDaHyUreq2maTUmS8DYaoSzL9RtAEAQc9/vI8xy+7y8YYyeEUnqjquq1pml4Hg7/QHUHDp8NBoiiiMu+5RMfDcM45wXv4/GPSb8PR71eFQqC4ImDuWVZ4nQyQZqm/4KyLOOw24XnecVO4HZSd3kc7pbNv2NrA+xkuRrexOTfqpPUy7sW3D4AAAAASUVORK5CYII=) no-repeat center;
  501. background-size: contain;
  502. &.check_active {
  503. background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAABaUlEQVQ4T2NkQAKHPD1F2TmYChgZGHwZGBlUwVL/GW7/Z2DY/PPHvwl227e/hilnhDFOBXoHMbKxzhd18eATtnNg4FJQBEt9e3Cf4e2hAwyv9+z49P/X70Sz9VvXgcTBGkGa2EREVqtU1jFxSUgy/F+1geHf6bNgjUymxgyMYQEM3148Z7jT3vTv15s3oSDNjCDncfKx39Fs7+Xj+vWX4U9YAgPDo8fIPmBgkJNlYFm1gOEbGzPD9criT98//VRhPB3o2yrq5V0lFx3H8MfCBVMTzAiQ5hN7GB4tXcTwctvmNsZTgd6XNDt6dbmOn2X4W1CBahMaj3lCB8M3S2OG6xXFlxlPBXl/N16+juNfURXD/6Wr8GpkjA5jYOprYzgbGfSDAo1wp55j+FtQTsCpnQzfLI0gTiU7cMiODuwJYD3Dv9PnoAnAiIExLBAzAVCU5GCawc7mYCn4z/APJZEzMjBt/v7jD0oiBwAFDdbhAm8qEQAAAABJRU5ErkJggg==) no-repeat center;
  504. background-size: contain;
  505. }
  506. }
  507. }
  508. }
  509. .configuration {
  510. padding-right: .05rem;
  511. padding-bottom: .09rem;
  512. .title {
  513. background:rgba(246,246,246,1);
  514. height: 1px;
  515. position: relative;
  516. margin: .15rem 0;
  517. span {
  518. position: absolute;
  519. left: .12rem;
  520. top: -.09rem;
  521. display: inline-block;
  522. background-color: #fff;
  523. font-size: .1rem;
  524. padding: 0 .04rem;
  525. }
  526. }
  527. .content {
  528. font-size: .12rem;
  529. padding-left: .16rem;
  530. line-height: .22rem;
  531. color: #ACACAC;
  532. }
  533. .options {
  534. padding-top: 0;
  535. padding-left: .16rem;
  536. .option {
  537. font-size: .14rem;
  538. color: #6F6F6F;
  539. }
  540. }
  541. }
  542. .buy {
  543. position: fixed;
  544. bottom: 0;
  545. left: 0;
  546. right: 0;
  547. height: .6rem;
  548. display: flex;
  549. align-items: center;
  550. padding: 0 .2rem;
  551. border-top: 1px solid #FFE9E9E9;
  552. color: #000000;
  553. font-size: .12rem;
  554. background: #fff;
  555. .price {
  556. flex: 1;
  557. font-size: .16rem;
  558. }
  559. font-size: .16rem;
  560. span {
  561. color: #FA101D;
  562. }
  563. .text {
  564. font-size: .12rem;
  565. width: .6rem;
  566. display: inline-block;
  567. color: #000;
  568. }
  569. del {
  570. color: #B5B5B5;
  571. &.text {
  572. color: #B5B5B5;
  573. }
  574. }
  575. a {
  576. display: inline-block;
  577. font-size: .18rem;
  578. color: #fff;
  579. background: #F1111B;
  580. border-radius: .04rem;
  581. box-shadow:0px 2px 4px 0px rgba(0,0,0,0.19);
  582. padding: .08rem .28rem;
  583. }
  584. }
  585. </style>