index.vue 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210
  1. <template>
  2. <div class="mine">
  3. <div class="left">
  4. <div class="user-info">
  5. <div class="user-img"><img :src="userInfo.image"
  6. alt=""></div>
  7. <div class="user-span">
  8. <div class="name">昵称:<span>{{userInfo.nickname}}</span></div>
  9. <div class="sex">性别:<span>{{userInfo.sex}}</span></div>
  10. <div class="age">肤龄:<span>{{userInfo.age==1?'男':userInfo.age==2?'女':'保密'}}</span></div>
  11. <div class="skin-type">肤质:<span>{{userInfo.skin}}</span></div>
  12. </div>
  13. </div>
  14. <div class="user-record">
  15. <div class="fraction">
  16. <div class="title">肌肤得分</div>
  17. <div class="num">{{userInfo.score}}分</div>
  18. </div>
  19. <div class="status">
  20. <div class="title">皮肤状态</div>
  21. <div class="tips">{{userInfo.skin_status}}</div>
  22. </div>
  23. <div class="times">
  24. <div class="title">上传检测时间</div>
  25. <div class="ts">{{userInfo.check_time}}</div>
  26. </div>
  27. </div>
  28. <div class="lable">
  29. <div class="lable-title">
  30. 面诊标签
  31. </div>
  32. <div class="lable-list">
  33. <div v-for="(item,index) in lableList"
  34. :key="index"
  35. class='lable-info'>
  36. {{item}}
  37. </div>
  38. </div>
  39. </div>
  40. <div class="ps">
  41. <div class="ps-title">
  42. 备注
  43. </div>
  44. <div class="ps-text">{{remarks | ellipsis(20)}}</div>
  45. </div>
  46. <div class="programme">
  47. <div class="tab">
  48. <div class="tab-title">执行方案</div>
  49. </div>
  50. <div class="programme-list">
  51. <div :class="['programme-info',item.onSelect?'programme-active':'']"
  52. v-for="(item,index) in programmeList"
  53. :key="index"
  54. @click="onOperation(index)">
  55. <div class="programme-left">
  56. <div class="programme-img"><img :src="item.cover_url"
  57. alt=""></div>
  58. <div class="programme-tips">
  59. <div class="tips-title">{{item.name|ellipsis(9)}}</div>
  60. <div class="tips-title">{{item.desc|ellipsis(9)}}</div>
  61. <div class="tips-title">仪器:<span>{{item.device_name|ellipsis(9)}}</span></div>
  62. </div>
  63. </div>
  64. <div class="programme-right">
  65. <div class="frequency">执行频率:<span>{{item.rate}}</span></div>
  66. <div class="duration">持续时长:<span>{{item.duration}}</span></div>
  67. </div>
  68. <div class="operation"
  69. v-if="item.onSelect">
  70. <div class="edit">编辑</div>
  71. <div class="delete">删除</div>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="right">
  78. <div class="shop-info">
  79. <div class="shpo-name">预约店铺:<span>{{order_data.store_name}})</span></div>
  80. <div class="shpo-address">门店地址:<span>{{order_data.address}}</span></div>
  81. <div class="shpo-ts">美容时间:<span>{{order_data.order_time}}</span></div>
  82. </div>
  83. <div class="project">
  84. <div class="project-title">
  85. <div>共<span>{{order_data.project_num}}个</span>项目</div>
  86. <div class="add-project"
  87. @click="isProject=true">添加</div>
  88. </div>
  89. <div class="project-list">
  90. <div class="project-info"
  91. v-for="(item,index) in order_data.project_list"
  92. :key="index">
  93. <div class="project-image"><img :src="item.cover_url"></div>
  94. <div class="project-content">
  95. <div class="title-price">
  96. <div class="project-tit">{{item.name | ellipsis(14)}}</div>
  97. <div class="project-price"><span class="min-size">¥</span>{{item.price}}</div>
  98. </div>
  99. <div class="project-tips">{{item.product_names}}</div>
  100. <div class="project-zoom">
  101. <div> <span v-if="item.device_name">{{item.device_name}}({{item.room}}){{item.use_time}}分钟</span></div>
  102. <div><img @click="eidt(item)"
  103. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/eidt.png">
  104. <img class="delete"
  105. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/delete.png"
  106. alt="">
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. </div>
  112. </div>
  113. <div class="cost">
  114. <div class="cost-title">
  115. <div>预约费用</div>
  116. <div>¥399</div>
  117. </div>
  118. <div class="cost-coupon-list">
  119. <div class="coupon">
  120. <div class="coupon-tips">
  121. <div class="coupon-icon"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/couponIcon.png"
  122. alt=""></div>
  123. <div class="coupon-title">优惠卷</div>
  124. <div class="coupon-tip">已选推荐优惠</div>
  125. </div>
  126. <div class="on-icon">></div>
  127. </div>
  128. <div class="coupon-ps">
  129. <div>【敏感维稳】多元修护加乘维稳</div>
  130. <div class="cou-price">-¥100</div>
  131. </div>
  132. </div>
  133. <div class="over-price">
  134. 合计: <span class="price-num"><span class="min-size">¥</span>399<span class="min-size">.00</span></span>
  135. </div>
  136. </div>
  137. <div class="payment">{{order_data.status==0?'立即支付':'确定订单'}}</div>
  138. </div>
  139. <!-- 选择优惠券 -->
  140. <mine-pupop :show="isCoupun">
  141. <div class="coupon-block">
  142. <div class="delete-pupop"
  143. @click="isCoupun=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
  144. alt=""></div>
  145. <div class="coupon-pupop-title">选择优惠券</div>
  146. <div class="coupon-lists">
  147. <div class="coupon-info">
  148. <div class="top">
  149. <div v-if="false"
  150. class="all-free">全免</div>
  151. <div v-else
  152. class="discount">
  153. <div class="price-num"><span class="size">¥</span>10<span class="size">.00</span></div>
  154. <div class="price-tips">满100元可用</div>
  155. </div>
  156. <div class="coupon-tip">
  157. <div class="tips-title">仅限指定商品使用</div>
  158. <div class="tips-ts">有效期至2022.02.07</div>
  159. </div>
  160. <div class="choice-icon"><img :src="select"></div>
  161. </div>
  162. <div class="bottom">
  163. <div class="coupon-notes">
  164. <div class="notes-text min-size">
  165. <span v-if="!isOver">{{'优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目' |ellipsis(20)}}</span>
  166. <span v-else>优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目优惠卷仅限试用项目优惠卷仅限试用项目优惠卷仅限项目</span>
  167. </div>
  168. <div class="notes-icon"
  169. @click="isOver=!isOver"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/openNotes.png"
  170. alt=""></div>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. </div>
  176. </mine-pupop>
  177. <!-- 选择项目 -->
  178. <mine-pupop :show="isProject">
  179. <div class="project-block">
  180. <div class="delete-pupop"
  181. @click="isProject=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
  182. alt=""></div>
  183. <div class="project-pupop-title">选择项目</div>
  184. <div class="project-select">
  185. <el-select v-model="projectInfo"
  186. placeholder="请选择项目"
  187. style="width: 295px;"
  188. @change="getProducts"
  189. size="mini">
  190. <el-option v-for="item in projectList"
  191. :key="item.id"
  192. :label="item.name"
  193. :value="item.id">
  194. </el-option>
  195. </el-select>
  196. </div>
  197. <div class="products-select">
  198. <el-select v-model="productsInfo"
  199. placeholder="请选择升级产品包"
  200. style="width: 295px;"
  201. :disabled="projectInfo.length==0?true:false"
  202. size="mini">
  203. <el-option v-for="item in productsList"
  204. :key="item.id"
  205. :label="item.name"
  206. :value="item.id">
  207. </el-option>
  208. </el-select>
  209. </div>
  210. <div class="products-button"
  211. @click="orderUpdate">确定</div>
  212. </div>
  213. </mine-pupop>
  214. <!-- 选择时间 -->
  215. <mine-pupop :show="isTs">
  216. <div class="ts-block">
  217. <div class="delete-pupop"
  218. @click="isTs=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
  219. alt=""></div>
  220. <div class="ts-pupop-title">选择时间</div>
  221. <div class="ts-content">
  222. <ul class="ts-table">
  223. <li v-for="item,index in tsTableList"
  224. :key="index">
  225. <div>{{item.text}}</div>
  226. <div>{{item.ts}}</div>
  227. </li>
  228. </ul>
  229. <ul class="ts-boty">
  230. <li v-for="item,index in tsBodyList"
  231. :key="index">
  232. <div>{{item.ts}}</div>
  233. </li>
  234. </ul>
  235. </div>
  236. <div class="ts-button">确认</div>
  237. </div>
  238. </mine-pupop>
  239. <!-- 皮肤状态 -->
  240. <mine-pupop :show="isPore">
  241. <div class="pore-block">
  242. <div class="delete-pupop"
  243. @click="isPore=false"><img src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
  244. alt=""></div>
  245. <div class="pore-content">
  246. <ul>
  247. <li class="pore-info"
  248. v-for="item,index in poreList"
  249. :key="index">
  250. <div class="pore-top">
  251. <div class="pore-title">
  252. <div>RGB毛孔:</div>
  253. <div class="pore-medium">粗大毛孔个数{{item.medium}}</div>
  254. </div>
  255. <div class="pore-over">
  256. <div class="min-size">粗大毛孔个数:{{item.medium}}个</div>
  257. <div class="min-size">中等毛孔个数:{{item.small}}个</div>
  258. <div class="min-size">细小毛孔个数:{{item.mini}}个</div>
  259. </div>
  260. </div>
  261. <div class="pore-bottom min-size">
  262. {{'皮肤状态一般,污物阻塞导致,油脂分泌旺盛,皮肤状态一般,污物阻塞导致,油脂分泌旺盛皮肤状态一般,污物阻塞导致,油脂分泌旺盛,皮肤状态一般,污物阻塞导致,油脂分泌旺盛油脂分泌旺盛油脂分泌旺盛旺…' |ellipsis(85)}}
  263. </div>
  264. </li>
  265. </ul>
  266. </div>
  267. </div>
  268. </mine-pupop>
  269. </div>
  270. </template>
  271. <script>
  272. import minePupop from '../../../components/minePupop/index.vue'
  273. import api from '../../../server/home'
  274. export default {
  275. components: { minePupop },
  276. data () {
  277. return {
  278. select: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/select.png',
  279. unSelect: 'https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/unSelect.png',
  280. userInfo: {
  281. },
  282. //面部标签
  283. lableList: [],
  284. //执行方案
  285. programmeList: [],
  286. order_data: {},//门店
  287. //项目列表
  288. projectList: [],
  289. //升级包列表
  290. productsList: [],
  291. //时间列表(头部)
  292. tsTableList: [
  293. {
  294. text: '今天',
  295. ts: '10-27',
  296. },
  297. {
  298. text: '今天',
  299. ts: '10-27',
  300. },
  301. {
  302. text: '今天',
  303. ts: '10-27',
  304. },
  305. {
  306. text: '今天',
  307. ts: '10-27',
  308. },
  309. {
  310. text: '今天',
  311. ts: '10-27',
  312. },
  313. {
  314. text: '今天',
  315. ts: '10-27',
  316. },
  317. {
  318. text: '今天',
  319. ts: '10-27',
  320. },
  321. ],
  322. //时间列表(body)
  323. tsBodyList: [
  324. {
  325. id: 0,
  326. ts: '10:00'
  327. },
  328. {
  329. id: 0,
  330. ts: '10:00'
  331. },
  332. {
  333. id: 0,
  334. ts: '10:00'
  335. },
  336. {
  337. id: 0,
  338. ts: '10:00'
  339. },
  340. {
  341. id: 0,
  342. ts: '10:00'
  343. },
  344. {
  345. id: 0,
  346. ts: '10:00'
  347. },
  348. {
  349. id: 0,
  350. ts: '10:00'
  351. },
  352. {
  353. id: 0,
  354. ts: '10:00'
  355. },
  356. {
  357. id: 0,
  358. ts: '10:00'
  359. },
  360. ],
  361. //皮肤状态列表
  362. poreList: [
  363. {
  364. medium: 133,
  365. small: 344,
  366. mini: 242
  367. },
  368. {
  369. medium: 133,
  370. small: 344,
  371. mini: 242
  372. },
  373. {
  374. medium: 133,
  375. small: 344,
  376. mini: 242
  377. }
  378. ],
  379. couponList: [
  380. {
  381. }
  382. ],
  383. timesInfo: '',
  384. projectInfo: '',
  385. productsInfo: '',
  386. weekInfo: '',
  387. programmeIndex: '',
  388. remarks: '',
  389. isCoupun: false,//是否展示优惠券弹窗
  390. isOver: false,//优惠券注释
  391. isProject: false,//是否展示选择项目弹窗
  392. isTs: false,//是否展示选择时间弹窗
  393. isPore: false,//皮肤状态弹窗
  394. id: 0,//订单id
  395. };
  396. },
  397. computed: {
  398. },
  399. watch: {},
  400. methods: {
  401. getOrderInfo () {
  402. api.getOrderInfo({ id: this.id }).then(res => {
  403. this.userInfo = res.data.user
  404. this.lableList = res.data.tags
  405. this.remarks = res.data.remark
  406. this.programmeList = res.data.scheme_list
  407. this.order_data = res.data.order_data
  408. })
  409. },
  410. getProjectList () {
  411. api.getProjectList().then(res => {
  412. this.projectList = res.data.list
  413. })
  414. },
  415. getProducts (e) {
  416. this.productsInfo = ''
  417. api.getProducts({ id: e }).then(res => {
  418. this.productsList = res.data.list
  419. })
  420. },
  421. eidt () {
  422. },
  423. //新增
  424. orderUpdate () {
  425. if (this.projectInfo.length == 0) return
  426. //项目包重组
  427. let projectInfo = {}, nowProjectInfo = {}, productsInfo = {}
  428. this.projectList.forEach(item => {
  429. if (this.projectInfo == item.id) {
  430. nowProjectInfo = item
  431. }
  432. })
  433. if (this.productsInfo.length != 0) {
  434. this.productsList.forEach(item => {
  435. if (item.id == this.productsInfo) {
  436. productsInfo = item
  437. }
  438. })
  439. }
  440. console.log(nowProjectInfo, 'nowProjectInfo', productsInfo);
  441. projectInfo['name'] = nowProjectInfo.name
  442. projectInfo['cover_url'] = nowProjectInfo.cover_url
  443. projectInfo['device_name'] = ''
  444. projectInfo['room'] = ''
  445. projectInfo['use_time'] = ''
  446. projectInfo['price'] = nowProjectInfo.price
  447. projectInfo['product_names'] = ''
  448. if (Object.keys(productsInfo).length > 0) {
  449. projectInfo['product_id'] = productsInfo.id
  450. projectInfo.product_names = productsInfo.name
  451. projectInfo.price += Number(productsInfo.price)
  452. }
  453. this.order_data.project_list.push(projectInfo)
  454. this.isProject = false
  455. },
  456. onOperation (index) {
  457. if (this.programmeList[index].onSelect) {
  458. this.$set(this.programmeList[index], 'onSelect', !this.programmeList[index].onSelect)
  459. } else {
  460. this.$set(this.programmeList[index], 'onSelect', true)
  461. }
  462. },
  463. onSubmit () {
  464. },
  465. submitFrequency () { },
  466. },
  467. created () {
  468. let id = this.$route.query.id
  469. if (id) {
  470. this.id = id
  471. }
  472. this.getOrderInfo()
  473. this.getProjectList()
  474. },
  475. mounted () {
  476. },
  477. }
  478. </script>
  479. <style lang='less' scoped>
  480. .mine {
  481. height: 100%;
  482. display: flex;
  483. .left {
  484. width: 318px;
  485. padding: 12px 12px 0 12px;
  486. background: #ffffff;
  487. box-shadow: 0px 2px 4px 0px rgba(184, 191, 198, 0.2);
  488. border-radius: 8px;
  489. font-size: 13px;
  490. font-family: PingFangSC-Regular, PingFang SC;
  491. font-weight: 400;
  492. color: #999999;
  493. line-height: 18px;
  494. overflow: scroll;
  495. height: 100%;
  496. .user-info {
  497. display: flex;
  498. align-items: center;
  499. .user-img {
  500. width: 96px;
  501. img {
  502. width: 100%;
  503. display: block;
  504. }
  505. }
  506. .user-span {
  507. margin-left: 12px;
  508. span {
  509. color: #333333;
  510. }
  511. }
  512. }
  513. .user-record {
  514. margin-top: 16px;
  515. display: flex;
  516. justify-content: space-between;
  517. .num {
  518. font-size: 18px;
  519. font-family: OPPOSans-B, OPPOSans;
  520. font-weight: normal;
  521. color: #fa7d22;
  522. line-height: 29px;
  523. }
  524. .tips {
  525. font-size: 13px;
  526. font-family: PingFangSC-Regular, PingFang SC;
  527. font-weight: 400;
  528. color: #333333;
  529. line-height: 30px;
  530. }
  531. .ts {
  532. font-size: 13px;
  533. font-family: PingFangSC-Regular, PingFang SC;
  534. font-weight: 400;
  535. color: #333333;
  536. line-height: 30px;
  537. }
  538. }
  539. .lable {
  540. margin-top: 23px;
  541. width: 100%;
  542. overflow: scroll;
  543. background: #ffffff;
  544. .lable-title {
  545. font-size: 14px;
  546. font-family: PingFangSC-Medium, PingFang SC;
  547. font-weight: 500;
  548. color: #333333;
  549. line-height: 20px;
  550. margin-bottom: 14px;
  551. }
  552. .lable-list {
  553. width: 100%;
  554. min-height: 105rpx;
  555. .lable-info {
  556. display: inline-block;
  557. padding: 0 12px;
  558. margin-left: 10px;
  559. height: 24px;
  560. line-height: 24px;
  561. border-radius: 2px;
  562. border: 1px solid #d6d6d6;
  563. margin-bottom: 10px;
  564. }
  565. .add-lable {
  566. display: inline-block;
  567. width: 27px;
  568. height: 24px;
  569. line-height: 24px;
  570. font-size: 12px;
  571. font-family: PingFang-SC-Regular, PingFang-SC;
  572. font-weight: 400;
  573. color: #333333;
  574. text-align: center;
  575. margin-left: 10px;
  576. border-radius: 2px;
  577. border: 1px solid #d6d6d6;
  578. }
  579. }
  580. .remarks {
  581. /deep/ .el-textarea__inner:focus {
  582. border-color: #fa852f;
  583. }
  584. }
  585. }
  586. .ps {
  587. font-size: 14px;
  588. font-family: PingFangSC-Medium, PingFang SC;
  589. font-weight: 500;
  590. color: #333333;
  591. line-height: 20px;
  592. .ps-text {
  593. margin-top: 10px;
  594. font-size: 12px;
  595. font-weight: 400;
  596. color: #666666;
  597. line-height: 17px;
  598. }
  599. }
  600. .programme {
  601. margin-top: 20px;
  602. width: 100%;
  603. background: #ffffff;
  604. border-radius: 8px;
  605. .tab {
  606. display: flex;
  607. align-items: center;
  608. justify-content: space-between;
  609. .tab-title {
  610. font-size: 14px;
  611. font-family: PingFangSC-Medium, PingFang SC;
  612. font-weight: 500;
  613. color: #333333;
  614. line-height: 20px;
  615. }
  616. }
  617. .programme-list {
  618. margin-top: 10px;
  619. position: relative;
  620. z-index: 1;
  621. .programme-info {
  622. position: relative;
  623. margin-bottom: 10px;
  624. border-radius: 4px;
  625. border: 1px solid #f5f5f5;
  626. display: flex;
  627. justify-content: space-between;
  628. padding: 8px 8px 8px 10px;
  629. align-items: center;
  630. .programme-left {
  631. display: flex;
  632. align-items: center;
  633. .programme-img {
  634. width: 48px;
  635. display: inline-block;
  636. img {
  637. width: 100%;
  638. display: block;
  639. }
  640. }
  641. .programme-tips {
  642. display: inline-block;
  643. margin-left: 10px;
  644. font-size: 10px;
  645. font-family: PingFangSC-Regular, PingFang SC;
  646. font-weight: 400;
  647. color: #999999;
  648. line-height: 14px;
  649. zoom: 0.83;
  650. }
  651. }
  652. .programme-right {
  653. font-size: 12px;
  654. font-family: PingFangSC-Regular, PingFang SC;
  655. font-weight: 400;
  656. color: #333333;
  657. line-height: 17px;
  658. .duration {
  659. margin-top: 14px;
  660. }
  661. }
  662. .operation {
  663. position: absolute;
  664. left: 50%;
  665. transform: translateX(-50%);
  666. top: 10px;
  667. z-index: 10;
  668. width: 44px;
  669. background: #ffffff;
  670. box-shadow: 0px 9px 28px 8px rgba(0, 0, 0, 0.05),
  671. 0px 6px 16px 0px rgba(0, 0, 0, 0.08),
  672. 0px 3px 6px -4px rgba(0, 0, 0, 0.12);
  673. border-radius: 2px;
  674. padding: 10px;
  675. font-size: 12px;
  676. font-family: PingFangSC-Regular, PingFang SC;
  677. font-weight: 400;
  678. color: #333333;
  679. line-height: 17px;
  680. .delete {
  681. margin-top: 20px;
  682. }
  683. }
  684. }
  685. .programme-active {
  686. border: 1px solid #fa852f;
  687. }
  688. }
  689. }
  690. }
  691. .right {
  692. margin-left: 18px;
  693. position: relative;
  694. flex: 1;
  695. .shop-info {
  696. background: #ffffff;
  697. box-shadow: 0px 2px 4px 0px rgba(184, 191, 198, 0.2);
  698. border-radius: 8px;
  699. padding: 12px;
  700. font-size: 13px;
  701. font-family: PingFangSC-Regular, PingFang SC;
  702. font-weight: 400;
  703. color: #999999;
  704. line-height: 24px;
  705. span {
  706. font-weight: 500;
  707. color: #333333;
  708. }
  709. }
  710. .project {
  711. margin-top: 18px;
  712. background: #ffffff;
  713. box-shadow: 0px 2px 4px 0px rgba(184, 191, 198, 0.2);
  714. border-radius: 8px;
  715. padding: 16px 12px 12px 12px;
  716. .project-title {
  717. padding-bottom: 7px;
  718. font-size: 14px;
  719. font-family: PingFangSC-Medium, PingFang SC;
  720. font-weight: 500;
  721. color: #333333;
  722. line-height: 20px;
  723. display: flex;
  724. justify-content: space-between;
  725. align-items: center;
  726. span {
  727. color: #fa7d22;
  728. }
  729. .add-project {
  730. width: 60px;
  731. height: 28px;
  732. background: #fa7d22;
  733. border-radius: 8px;
  734. font-size: 14px;
  735. font-family: PingFangSC-Medium, PingFang SC;
  736. font-weight: 500;
  737. color: #ffffff;
  738. line-height: 28px;
  739. text-align: center;
  740. }
  741. }
  742. .project-list {
  743. padding-top: 10px;
  744. height: 130px;
  745. overflow: scroll;
  746. .project-info {
  747. margin-bottom: 10px;
  748. display: flex;
  749. .project-image {
  750. width: 60px;
  751. height: 60px;
  752. img {
  753. width: 100%;
  754. display: block;
  755. }
  756. }
  757. .project-content {
  758. flex: 1;
  759. margin-left: 10px;
  760. .title-price {
  761. display: flex;
  762. justify-content: space-between;
  763. font-size: 14px;
  764. font-family: PingFangSC-Medium, PingFang SC;
  765. font-weight: 500;
  766. color: #292929;
  767. line-height: 22px;
  768. }
  769. .project-tips {
  770. font-size: 12px;
  771. font-family: PingFangSC-Regular, PingFang SC;
  772. font-weight: 400;
  773. color: #999999;
  774. line-height: 18px;
  775. }
  776. .project-zoom {
  777. font-size: 12px;
  778. font-family: PingFangSC-Regular, PingFang SC;
  779. font-weight: 400;
  780. color: #fa7d22;
  781. line-height: 18px;
  782. display: flex;
  783. align-items: center;
  784. justify-content: space-between;
  785. img {
  786. width: 20px;
  787. }
  788. .delete {
  789. margin-left: 10px;
  790. }
  791. }
  792. }
  793. }
  794. }
  795. }
  796. .cost {
  797. overflow: scroll;
  798. background: #ffffff;
  799. border-radius: 8px;
  800. margin-top: 18px;
  801. padding: 10px 19px 11px 12px;
  802. font-size: 14px;
  803. font-family: PingFangSC-Regular, PingFang SC;
  804. font-weight: 400;
  805. color: #333333;
  806. line-height: 20px;
  807. .cost-coupon-list {
  808. border-bottom: 1px solid #f9f9f9;
  809. }
  810. .cost-title {
  811. display: flex;
  812. justify-content: space-between;
  813. }
  814. .coupon {
  815. margin-top: 10px;
  816. display: flex;
  817. justify-content: space-between;
  818. .coupon-tips {
  819. display: flex;
  820. align-items: center;
  821. .coupon-icon {
  822. width: 16px;
  823. img {
  824. width: 100%;
  825. display: block;
  826. }
  827. }
  828. .coupon-title {
  829. margin-left: 3px;
  830. }
  831. .coupon-tip {
  832. margin-left: 10px;
  833. background: #ffefeb;
  834. border-radius: 4px;
  835. border: 1px solid #ff3007;
  836. font-size: 10px;
  837. font-family: PingFangSC-Regular, PingFang SC;
  838. font-weight: 400;
  839. color: #ff3007;
  840. line-height: 14px;
  841. padding: 2px 6px;
  842. zoom: 0.83;
  843. }
  844. }
  845. }
  846. .coupon-ps {
  847. margin-left: -6px;
  848. margin-top: 11px;
  849. display: flex;
  850. justify-content: space-between;
  851. font-size: 12px;
  852. font-family: PingFangSC-Regular, PingFang SC;
  853. font-weight: 400;
  854. color: #333333;
  855. line-height: 17px;
  856. .cou-price {
  857. font-weight: 500;
  858. color: #ff3007;
  859. }
  860. }
  861. .over-price {
  862. margin-top: 14px;
  863. text-align: right;
  864. .price-num {
  865. font-size: 18px;
  866. font-family: PingFangSC-Medium, PingFang SC;
  867. font-weight: 500;
  868. color: #ff3007;
  869. line-height: 25px;
  870. }
  871. }
  872. }
  873. .payment {
  874. position: relative;
  875. margin-top: 18px;
  876. left: 50%;
  877. transform: translateX(-50%);
  878. width: 176px;
  879. height: 28px;
  880. background: #fa7d22;
  881. border-radius: 14px;
  882. font-size: 14px;
  883. font-family: PingFangSC-Medium, PingFang SC;
  884. font-weight: 500;
  885. color: #ffffff;
  886. line-height: 28px;
  887. text-align: center;
  888. }
  889. }
  890. .coupon-block {
  891. width: 540px;
  892. height: 400px;
  893. background: #ffffff;
  894. border-radius: 8px;
  895. position: relative;
  896. padding: 42px;
  897. .delete-pupop {
  898. width: 32px;
  899. position: absolute;
  900. right: 5px;
  901. top: 5px;
  902. img {
  903. width: 100%;
  904. }
  905. }
  906. .coupon-pupop-title {
  907. font-size: 14px;
  908. font-family: PingFangSC-Medium, PingFang SC;
  909. font-weight: 500;
  910. color: #333333;
  911. line-height: 20px;
  912. text-align: center;
  913. }
  914. .coupon-lists {
  915. display: inline-block;
  916. position: relative;
  917. left: 50%;
  918. transform: translateX(-50%);
  919. margin-top: 20px;
  920. height: 228px;
  921. overflow: scroll;
  922. .coupon-info {
  923. width: 345px;
  924. padding: 20px 14px 10px 14px;
  925. position: relative;
  926. background: #fff4e6;
  927. border-radius: 12px;
  928. .top {
  929. display: flex;
  930. justify-content: space-between;
  931. align-items: center;
  932. padding-bottom: 10px;
  933. border-bottom: 1px dashed #ffdfb6;
  934. .all-free {
  935. font-size: 22px;
  936. font-family: PingFangSC-Medium, PingFang SC;
  937. font-weight: 500;
  938. color: #ff3007;
  939. line-height: 30px;
  940. }
  941. .discount {
  942. .price-num {
  943. font-size: 28px;
  944. font-family: PingFangSC-Medium, PingFang SC;
  945. font-weight: 500;
  946. color: #ff3007;
  947. line-height: 40px;
  948. .size {
  949. font-size: 14px;
  950. line-height: 20px;
  951. }
  952. }
  953. .price-tips {
  954. font-size: 12px;
  955. font-family: PingFangSC-Regular, PingFang SC;
  956. font-weight: 400;
  957. color: #ff3007;
  958. line-height: 17px;
  959. }
  960. }
  961. .coupon-tip {
  962. .tips-title {
  963. font-size: 16px;
  964. font-family: PingFangSC-Medium, PingFang SC;
  965. font-weight: 500;
  966. color: #875617;
  967. line-height: 22px;
  968. }
  969. .tips-ts {
  970. margin-top: 4px;
  971. font-size: 12px;
  972. font-family: PingFangSC-Regular, PingFang SC;
  973. font-weight: 400;
  974. color: #875617;
  975. line-height: 17px;
  976. }
  977. }
  978. .choice-icon {
  979. width: 20px;
  980. img {
  981. width: 100%;
  982. }
  983. }
  984. }
  985. .bottom {
  986. padding-top: 9px;
  987. .coupon-notes {
  988. display: flex;
  989. justify-content: space-between;
  990. .notes-text {
  991. width: 314px;
  992. font-size: 12px;
  993. font-family: PingFangSC-Regular, PingFang SC;
  994. font-weight: 400;
  995. color: #c38029;
  996. line-height: 18px;
  997. }
  998. .notes-icon {
  999. width: 24px;
  1000. img {
  1001. width: 100%;
  1002. }
  1003. }
  1004. }
  1005. }
  1006. }
  1007. }
  1008. }
  1009. .project-block {
  1010. width: 540px;
  1011. height: 400px;
  1012. background: #ffffff;
  1013. border-radius: 8px;
  1014. position: relative;
  1015. padding: 42px;
  1016. .delete-pupop {
  1017. width: 32px;
  1018. position: absolute;
  1019. right: 5px;
  1020. top: 5px;
  1021. img {
  1022. width: 100%;
  1023. }
  1024. }
  1025. .project-pupop-title {
  1026. font-size: 14px;
  1027. font-family: PingFangSC-Medium, PingFang SC;
  1028. font-weight: 500;
  1029. color: #333333;
  1030. line-height: 20px;
  1031. text-align: center;
  1032. }
  1033. .project-select {
  1034. text-align: center;
  1035. margin-top: 26px;
  1036. }
  1037. .products-select {
  1038. text-align: center;
  1039. margin-top: 20px;
  1040. }
  1041. .products-button {
  1042. position: absolute;
  1043. bottom: 42px;
  1044. left: 50%;
  1045. transform: translateX(-50%);
  1046. width: 176px;
  1047. height: 28px;
  1048. background: #fa7d22;
  1049. border-radius: 14px;
  1050. font-size: 14px;
  1051. font-family: PingFangSC-Medium, PingFang SC;
  1052. font-weight: 500;
  1053. color: #ffffff;
  1054. line-height: 28px;
  1055. text-align: center;
  1056. }
  1057. }
  1058. .ts-block {
  1059. width: 540px;
  1060. height: 400px;
  1061. background: #ffffff;
  1062. border-radius: 8px;
  1063. position: relative;
  1064. padding: 42px 105px;
  1065. .delete-pupop {
  1066. width: 32px;
  1067. position: absolute;
  1068. right: 5px;
  1069. top: 5px;
  1070. img {
  1071. width: 100%;
  1072. }
  1073. }
  1074. .ts-pupop-title {
  1075. font-size: 14px;
  1076. font-family: PingFangSC-Medium, PingFang SC;
  1077. font-weight: 500;
  1078. color: #333333;
  1079. line-height: 20px;
  1080. text-align: center;
  1081. }
  1082. .ts-content {
  1083. .ts-table {
  1084. font-size: 14px;
  1085. font-family: PingFangSC-Medium, PingFang SC;
  1086. font-weight: 500;
  1087. color: #999999;
  1088. line-height: 20px;
  1089. padding: 9px 0;
  1090. display: flex;
  1091. justify-content: space-between;
  1092. li {
  1093. text-align: center;
  1094. }
  1095. }
  1096. .ts-boty {
  1097. margin-top: 10px;
  1098. display: flex;
  1099. justify-content: space-between;
  1100. flex-wrap: wrap;
  1101. li {
  1102. margin-top: 10px;
  1103. width: 68px;
  1104. height: 30px;
  1105. line-height: 30px;
  1106. text-align: center;
  1107. background: #f9f9f9;
  1108. border-radius: 8px;
  1109. font-size: 16px;
  1110. font-family: PingFangSC-Regular, PingFang SC;
  1111. font-weight: 400;
  1112. color: #333333;
  1113. }
  1114. }
  1115. }
  1116. .ts-button {
  1117. position: absolute;
  1118. bottom: 42px;
  1119. left: 50%;
  1120. transform: translateX(-50%);
  1121. width: 176px;
  1122. height: 28px;
  1123. background: #fa7d22;
  1124. border-radius: 14px;
  1125. font-size: 14px;
  1126. font-family: PingFangSC-Medium, PingFang SC;
  1127. font-weight: 500;
  1128. color: #ffffff;
  1129. line-height: 28px;
  1130. text-align: center;
  1131. }
  1132. }
  1133. .pore-block {
  1134. width: 540px;
  1135. height: 400px;
  1136. background: #ffffff;
  1137. border-radius: 8px;
  1138. position: relative;
  1139. padding: 42px;
  1140. .delete-pupop {
  1141. width: 32px;
  1142. position: absolute;
  1143. right: 5px;
  1144. top: 5px;
  1145. img {
  1146. width: 100%;
  1147. }
  1148. }
  1149. .pore-content {
  1150. overflow: scroll;
  1151. height: 310px;
  1152. .pore-info {
  1153. margin-top: 10px;
  1154. border-radius: 4px;
  1155. border: 1px solid #f5f5f5;
  1156. .pore-top {
  1157. display: flex;
  1158. justify-content: space-between;
  1159. align-items: center;
  1160. font-size: 14px;
  1161. font-family: PingFangSC-Regular, PingFang SC;
  1162. font-weight: 400;
  1163. color: #666666;
  1164. line-height: 20px;
  1165. padding: 10px;
  1166. .pore-title {
  1167. .pore-medium {
  1168. font-size: 18px;
  1169. color: #fa7d22;
  1170. line-height: 25px;
  1171. }
  1172. }
  1173. .pore-over {
  1174. font-size: 12px;
  1175. }
  1176. }
  1177. .pore-bottom {
  1178. padding: 6px 8px;
  1179. background: #f5f5f5;
  1180. border-radius: 4px;
  1181. font-size: 12px;
  1182. font-family: PingFang-SC-Regular, PingFang-SC;
  1183. font-weight: 400;
  1184. color: #333333;
  1185. line-height: 14px;
  1186. }
  1187. }
  1188. }
  1189. }
  1190. }
  1191. </style>