index.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996
  1. <template>
  2. <div class="mine">
  3. <div class="left">
  4. <div class="user-info">
  5. <div class="title">
  6. <div class="txt">个人信息</div>
  7. <div
  8. class="test-record"
  9. @click="toTestRecord"
  10. v-if="userInfo.analysis_id"
  11. >
  12. 测肤记录
  13. </div>
  14. </div>
  15. <div class="detail-info">
  16. <div class="user-img">
  17. <img :src="userInfo.avatar_url" alt="" />
  18. </div>
  19. <div class="user-span">
  20. <div class="info">
  21. <div class="name">
  22. <span>{{ userInfo.nickname | ellipsis(3) }}</span>
  23. </div>
  24. <div class="sex"><img :src="gender" alt="" /></div>
  25. <!-- <div class="age">
  26. <span>{{ userInfo.skin_age }}</span
  27. ><span class="min-size">肤龄</span>
  28. </div> -->
  29. </div>
  30. <div class="real-name">
  31. 姓名:
  32. <span v-show="!nameInpVisible">{{ userInfo.real_name }}</span>
  33. <el-input
  34. size="mini"
  35. ref="realNameInp"
  36. v-show="nameInpVisible"
  37. @change="updateRealName"
  38. v-model="userInfo.real_name"
  39. type="text"
  40. ></el-input>
  41. <img
  42. class="edit-name"
  43. @click="editName"
  44. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/eidt.png"
  45. alt=""
  46. srcset=""
  47. />
  48. </div>
  49. <div class="skin-type">
  50. 肤质:<span>{{ userInfo.skin_type }}</span>
  51. </div>
  52. <div class="skin-type">
  53. 肤龄:<span>{{ userInfo.age }}</span>
  54. </div>
  55. <div class="skin-color">
  56. 肤色:<span>{{ userInfo.skin_color }}</span>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="personage-data">
  62. <div class="myDataList">
  63. 检测时间:
  64. <span>{{ userInfo.check_time }}</span>
  65. </div>
  66. <div class="myDataList">
  67. 出生日期:
  68. <span>{{ userInfo.birthday }}</span>
  69. </div>
  70. <div class="myDataList">
  71. 手机号:
  72. <span>{{ userInfo.mobile }}</span>
  73. </div>
  74. <div class="myDataList">
  75. 所在地:
  76. <span>{{ userInfo.city }}</span>
  77. </div>
  78. <div class="myDataList">
  79. 开卡店铺:
  80. <span>{{ userInfo.store_name }}</span>
  81. </div>
  82. <div class="myDataList coupon-num">
  83. 次卡数量:
  84. <span>{{ order_total.card_order }}</span>
  85. </div>
  86. <div class="myDataList coupon-num">
  87. 优惠券数量:
  88. <span>{{ userInfo.card_num }}</span>
  89. </div>
  90. <div class="myDataList">
  91. 储值金额:
  92. <span class="JEcolor">
  93. <span class="bigSixe">{{ userInfo.amount }}</span>
  94. <!-- .00 -->
  95. </span>
  96. </div>
  97. <div class="myDataList">
  98. 积分:
  99. <span>{{ userInfo.coin }}</span>
  100. </div>
  101. <div class="myDataList" @click="remarkPupopVisible = true">
  102. 备注信息:
  103. <span>{{ userInfo.remark | ellipsis(20) }}</span>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="right">
  108. <div class="right-top">
  109. <div class="right-top-data">
  110. <div class="lable">
  111. <div class="lable-title">面诊标签</div>
  112. <div class="problem">
  113. <div class="problem-title">问题标签</div>
  114. <div class="problem-lable">
  115. <div class="lable-text problem-text">{{ problem }}</div>
  116. </div>
  117. </div>
  118. <div class="problem">
  119. <div class="problem-title">面部标签</div>
  120. <div class="problem-lable">
  121. <div
  122. class="lable-text"
  123. v-for="(item, index) in lableList"
  124. :key="index"
  125. :style="{
  126. background: item.bgcolor,
  127. borderColor: item.bdcolor,
  128. }"
  129. >
  130. {{ item.text }}
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. </div>
  136. <div class="right-top-list">
  137. <div class="dataList" @click="toOrder(1)">
  138. <div class="">
  139. <img
  140. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/project_icon.png"
  141. />
  142. <div>项目订单</div>
  143. </div>
  144. <span>{{ order_total.project }}</span>
  145. </div>
  146. <div class="dataList" style="margin: 18px 0px" @click="toOrder(2)">
  147. <div class="">
  148. <img
  149. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/coupon_icon.png"
  150. />
  151. <div>次卡数量</div>
  152. </div>
  153. <span>{{ order_total.card_num }}</span>
  154. </div>
  155. <div class="dataList" @click="toOrder(3)">
  156. <div class="">
  157. <img
  158. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/coupon/order_total_icon.png"
  159. />
  160. <div>商品订单</div>
  161. </div>
  162. <span>{{ order_total.goods }}</span>
  163. </div>
  164. </div>
  165. </div>
  166. <div class="right-bottom">
  167. <div class="programme">
  168. <div class="tab">
  169. <div class="tab-title">执行方案</div>
  170. </div>
  171. <div class="programmeList" v-if="programmeList.length > 0">
  172. <div class="programmeWeek">
  173. <div
  174. class="programmeItem"
  175. v-for="(item, index) in programmeList"
  176. :key="index"
  177. >
  178. <div
  179. :class="selectWeek == index ? 'weekItemSelect' : 'weekItem'"
  180. @click="weekSelect(index)"
  181. >
  182. {{ item.name }}
  183. </div>
  184. <div class="weekLine" v-if="index == 3 ? false : true"></div>
  185. </div>
  186. </div>
  187. <div class="doTime">{{ programmeList[selectWeek].time }}</div>
  188. <div class="weekDetails" v-if="programmeList.length > 0">
  189. <div
  190. class="contentItem"
  191. v-for="(item, index1) in programmeList[selectWeek].list"
  192. :key="index1"
  193. >
  194. <div class="itemTitle">
  195. <div>{{ item.name }}</div>
  196. <div>{{ item.classify_name }}</div>
  197. <!-- <div>{{item.time}}</div> -->
  198. </div>
  199. <div
  200. class="itemContent"
  201. v-for="(items, index2) in item.list"
  202. :key="index2"
  203. >
  204. <img class="itemContent-img" :src="items.cover_url" />
  205. <div class="itemContent-right">
  206. <div class="right-content">
  207. <div class="right-name">
  208. {{ items.name | ellipsis(14) }}
  209. </div>
  210. <div class="right-price">
  211. {{ items.price | doubleNum(2) }}
  212. </div>
  213. </div>
  214. <div class="right-project">{{ items.product_name }}</div>
  215. </div>
  216. </div>
  217. </div>
  218. </div>
  219. </div>
  220. </div>
  221. </div>
  222. </div>
  223. <!-- 备注 -->
  224. <mine-pupop :show="remarkPupopVisible">
  225. <div class="block">
  226. <div class="delete-pupop" @click="remarkPupopVisible = false">
  227. <img
  228. src="https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/icon/slices/delete.png"
  229. alt
  230. />
  231. </div>
  232. <div class="pupop-title">备注</div>
  233. <textarea
  234. type="text"
  235. class="noticeInput"
  236. placeholder="备注"
  237. v-model="userInfo.remark"
  238. ></textarea>
  239. <div class="noticeSubmit">
  240. <div class="submit-notice" @click="submitRemark">确定</div>
  241. </div>
  242. </div>
  243. </mine-pupop>
  244. </div>
  245. </template>
  246. <script>
  247. import api from "../../../server/home";
  248. import minePupop from "../../../components/minePupop/index.vue";
  249. export default {
  250. data() {
  251. return {
  252. userInfo: {
  253. image:
  254. "https://we-spa.oss-cn-shenzhen.aliyuncs.com/pad_clerk/home/make.png",
  255. name: "张三",
  256. sex: "女",
  257. age: "23",
  258. skinType: "中性皮肤",
  259. real_name: "",
  260. remark: "",
  261. },
  262. problem: "",
  263. //面部标签
  264. lableList: [],
  265. //执行方案
  266. programmeList: [],
  267. // remarks: {},
  268. //项目列表
  269. projectList: [],
  270. order_total: {},
  271. selectWeek: 0,
  272. timesInfo: "",
  273. projectInfo: "",
  274. weekInfo: "",
  275. programmeIndex: "",
  276. isPupop: false,
  277. nameInpVisible: false,
  278. remarkPupopVisible: false,
  279. };
  280. },
  281. components: { minePupop },
  282. computed: {
  283. gender() {
  284. // 性别,1男,2女,0保密
  285. return this.userInfo.sex == 1
  286. ? "https://we-spa.oss-cn-shenzhen.aliyuncs.com/wxapp/20220610/male.png"
  287. : "https://we-spa.oss-cn-shenzhen.aliyuncs.com/wxapp/20220610/female.png";
  288. },
  289. },
  290. watch: {},
  291. methods: {
  292. getPadUserInfo() {
  293. api.getPadUserInfo({ id: this.id }).then((res) => {
  294. console.log(res, "aaaaaaaa");
  295. // 将用户手机号中间四位变成****
  296. res.data.user.mobile =
  297. res.data.user.mobile.substring(0, 3) +
  298. "****" +
  299. res.data.user.mobile.substring(7);
  300. this.userInfo = res.data.user;
  301. // this.userInfo.remarks = res.data.remark;
  302. this.problem = res.data.skin_name;
  303. let _problem = [];
  304. res.data.face_names.forEach((item) => {
  305. let info = {};
  306. info["text"] = item;
  307. _problem.push(info);
  308. console.log(_problem, "_problem");
  309. });
  310. this.lableList = _problem;
  311. this.randomColor();
  312. this.order_total = res.data.order_total;
  313. this.programmeList = res.data.scheme_list;
  314. // this.programmeList = res.data.order_data.project_list;
  315. // this.coupon_list = res.data.order_data.coupon_list;
  316. });
  317. },
  318. randomColor(type) {
  319. let arr = [
  320. {
  321. background: "rgba(244, 247, 255, 1)",
  322. border: "rgba(85, 124, 255, 1)",
  323. },
  324. {
  325. background: "rgba(245, 252, 245, 1)",
  326. border: "rgba(66, 211, 81, 1)",
  327. },
  328. {
  329. background: "rgba(254, 244, 237, 1)",
  330. border: "rgba(250, 125, 34, 1)",
  331. },
  332. {
  333. background: "rgba(249, 245, 255, 1)",
  334. border: "rgba(136, 50, 255, 1)",
  335. },
  336. {
  337. background: "rgba(255, 252, 245, 1)",
  338. border: "rgba(204, 116, 42, 1)",
  339. },
  340. ];
  341. this.lableList.forEach((res) => {
  342. let color = Math.floor(Math.random() * arr.length);
  343. this.$set(res, "bgcolor", arr[color].background);
  344. this.$set(res, "bdcolor", arr[color].border);
  345. });
  346. },
  347. weekSelect(index) {
  348. console.log("xxxx");
  349. this.selectWeek = index;
  350. },
  351. onOperation(index) {
  352. if (this.programmeList[index].onSelect) {
  353. this.$set(
  354. this.programmeList[index],
  355. "onSelect",
  356. !this.programmeList[index].onSelect
  357. );
  358. } else {
  359. this.$set(this.programmeList[index], "onSelect", true);
  360. }
  361. },
  362. toOrder(index) {
  363. let activeName = "first";
  364. if (index == 3) {
  365. activeName = "third";
  366. } else if (index == 2) {
  367. activeName = "second";
  368. }
  369. this.$router.push({
  370. path: "/customerMan/projectOrder",
  371. query: {
  372. id: this.id,
  373. activeName: activeName,
  374. },
  375. });
  376. },
  377. toTestRecord() {
  378. this.$router.push({
  379. path: "/testSkin/details",
  380. query: {
  381. id: this.userInfo.analysis_id,
  382. },
  383. });
  384. },
  385. editName() {
  386. this.nameInpVisible = true;
  387. this.$refs.realNameInp.focus();
  388. },
  389. async updateRealName() {
  390. let resp = await api.updateUserProfile({
  391. id: this.id,
  392. real_name: this.userInfo.real_name,
  393. });
  394. if (resp.code === 200) {
  395. this.$message.success("保存成功!");
  396. }
  397. this.nameInpVisible = false;
  398. },
  399. async submitRemark() {
  400. let resp = await api.updateUserProfile({
  401. id: this.id,
  402. remark: this.userInfo.remark,
  403. });
  404. if (resp.code === 200) {
  405. this.$message.success("保存成功!");
  406. }
  407. this.remarkPupopVisible = false;
  408. },
  409. },
  410. created() {
  411. let id = this.$route.query.id;
  412. this.id = id;
  413. this.getPadUserInfo();
  414. },
  415. mounted() {},
  416. };
  417. </script>
  418. <style lang='less' scoped>
  419. .mine {
  420. height: 100%;
  421. display: flex;
  422. .left {
  423. width: 276px;
  424. padding: 12px 12px 0 12px;
  425. background: #ffffff;
  426. box-shadow: 0px 2px 4px 0px rgba(184, 191, 198, 0.2);
  427. border-radius: 8px;
  428. font-size: 13px;
  429. font-family: PingFangSC-Regular, PingFang SC;
  430. font-weight: 400;
  431. color: #999999;
  432. line-height: 18px;
  433. overflow: scroll;
  434. height: 100%;
  435. .user-info {
  436. display: flex;
  437. flex-direction: column;
  438. align-items: center;
  439. .title {
  440. width: 100%;
  441. display: flex;
  442. justify-content: space-between;
  443. align-items: center;
  444. margin-bottom: 10px;
  445. .txt {
  446. color: #333333;
  447. }
  448. .test-record {
  449. font-size: 12px;
  450. color: #fa7d22;
  451. }
  452. }
  453. .detail-info {
  454. display: flex;
  455. .user-img {
  456. width: 96px;
  457. img {
  458. width: 100%;
  459. display: block;
  460. border-radius: 6px;
  461. }
  462. }
  463. .user-span {
  464. flex: 1;
  465. margin-left: 12px;
  466. span {
  467. color: #333333;
  468. }
  469. .info {
  470. display: flex;
  471. justify-content: space-between;
  472. .name {
  473. font-size: 14px;
  474. }
  475. .sex {
  476. img {
  477. width: 24px;
  478. height: 24px;
  479. }
  480. }
  481. .age {
  482. margin-left: 4px;
  483. span:nth-child(1) {
  484. font-size: 14px;
  485. }
  486. span:nth-child(2) {
  487. margin-left: 4px;
  488. color: #999999;
  489. }
  490. }
  491. }
  492. .real-name {
  493. display: flex;
  494. justify-content: space-between;
  495. align-items: center;
  496. .real-name-inp {
  497. width: 35px !important;
  498. height: 25px !important;
  499. }
  500. .edit-name {
  501. width: 20px;
  502. height: 20px;
  503. }
  504. }
  505. div:nth-child(2),
  506. div:nth-child(3) {
  507. margin-bottom: 8px;
  508. }
  509. }
  510. }
  511. }
  512. .personage-data {
  513. margin-top: 14px;
  514. .myDataList {
  515. margin-top: 15px;
  516. .bigSixe {
  517. font-size: 18px;
  518. color: #fa7d22;
  519. }
  520. span {
  521. color: #333333;
  522. }
  523. .JEcolor {
  524. color: #fa7d22;
  525. }
  526. }
  527. .coupon-num {
  528. span {
  529. color: #fa7d22;
  530. font-size: 16px;
  531. font-weight: 500;
  532. }
  533. }
  534. }
  535. }
  536. .right {
  537. margin-left: 18px;
  538. position: relative;
  539. flex: 1;
  540. .right-top {
  541. height: 205px;
  542. // border: 1px solid red;
  543. display: flex;
  544. .right-top-list {
  545. width: 239ppx;
  546. margin-left: 18px;
  547. display: flex;
  548. flex-direction: column;
  549. .dataList {
  550. height: 56px;
  551. width: 193px;
  552. background: #ffffff;
  553. box-shadow: 0px 2px 4px 0px rgba(184, 191, 198, 0.2);
  554. border-radius: 8px;
  555. padding: 12px 20px 12px 14px;
  556. display: flex;
  557. justify-content: space-between;
  558. align-items: center;
  559. div:nth-child(1) {
  560. display: flex;
  561. align-items: center;
  562. img {
  563. margin-right: 14px;
  564. }
  565. }
  566. img {
  567. width: 33px;
  568. height: 33px;
  569. }
  570. p {
  571. font-size: 14px;
  572. margin-left: 14px;
  573. margin-right: 80px;
  574. }
  575. span {
  576. font-size: 16px;
  577. // margin-right: 20px;
  578. }
  579. }
  580. }
  581. .right-top-data {
  582. background: #ffffff;
  583. box-shadow: 0px 2px 4px 0px rgba(184, 191, 198, 0.2);
  584. border-radius: 8px;
  585. padding: 16px 12px 12px 12px;
  586. width: 358px;
  587. height: 100%;
  588. .lable {
  589. // margin-top: 23px;
  590. width: 100%;
  591. overflow: scroll;
  592. background: #ffffff;
  593. .lable-title {
  594. font-size: 14px;
  595. font-family: PingFangSC-Medium, PingFang SC;
  596. font-weight: 500;
  597. color: #333333;
  598. line-height: 20px;
  599. margin-bottom: 14px;
  600. }
  601. .problem {
  602. display: flex;
  603. .problem-title {
  604. font-size: 13px;
  605. font-family: PingFangSC-Regular, PingFang SC;
  606. font-weight: 400;
  607. color: #333333;
  608. line-height: 18px;
  609. }
  610. .problem-lable {
  611. flex: 1;
  612. overflow-y: hidden;
  613. width: 100%;
  614. height: 68px;
  615. font-size: 12px;
  616. font-family: PingFang-SC-Regular, PingFang-SC;
  617. font-weight: 400;
  618. color: #333333;
  619. line-height: 17px;
  620. display: flex;
  621. flex-flow: column wrap;
  622. list-style-type: none;
  623. overflow-x: scroll;
  624. align-items: baseline;
  625. .lable-text {
  626. margin-left: 10px;
  627. margin-bottom: 10px;
  628. border: 1px solid #42d351;
  629. padding: 0 12px;
  630. border-radius: 2px;
  631. }
  632. .problem-text {
  633. background: rgba(244, 247, 255, 1);
  634. border: 1px solid rgba(85, 124, 255, 1);
  635. }
  636. }
  637. }
  638. .lable-list {
  639. width: 100%;
  640. min-height: 105rpx;
  641. .lable-info {
  642. display: inline-block;
  643. padding: 0 12px;
  644. margin-left: 10px;
  645. height: 24px;
  646. line-height: 24px;
  647. border-radius: 2px;
  648. border: 1px solid #d6d6d6;
  649. margin-bottom: 10px;
  650. }
  651. .add-lable {
  652. display: inline-block;
  653. width: 27px;
  654. height: 24px;
  655. line-height: 24px;
  656. font-size: 12px;
  657. font-family: PingFang-SC-Regular, PingFang-SC;
  658. font-weight: 400;
  659. color: #333333;
  660. text-align: center;
  661. margin-left: 10px;
  662. border-radius: 2px;
  663. border: 1px solid #d6d6d6;
  664. }
  665. }
  666. .remarks {
  667. /deep/ .el-textarea__inner:focus {
  668. border-color: #fa852f;
  669. }
  670. }
  671. }
  672. .ps {
  673. font-size: 14px;
  674. font-family: PingFangSC-Medium, PingFang SC;
  675. font-weight: 500;
  676. color: #333333;
  677. line-height: 20px;
  678. .ps-text {
  679. margin-top: 10px;
  680. font-size: 12px;
  681. font-weight: 400;
  682. color: #666666;
  683. line-height: 17px;
  684. }
  685. }
  686. }
  687. }
  688. .right-bottom {
  689. margin-top: 18px;
  690. width: 575px;
  691. height: 286px;
  692. background: #ffffff;
  693. box-shadow: 0px 2px 4px 0px rgba(184, 191, 198, 0.2);
  694. border-radius: 8px;
  695. padding: 16px 12px 12px 12px;
  696. .programme {
  697. // margin-top: 20px;
  698. width: 100%;
  699. background: #ffffff;
  700. border-radius: 8px;
  701. .programmeList {
  702. width: 550px;
  703. .programmeWeek {
  704. display: flex;
  705. align-items: center;
  706. }
  707. .programmeItem {
  708. margin-top: 20px;
  709. flex: 1;
  710. display: flex;
  711. }
  712. .weekItem {
  713. text-align: center;
  714. font-size: 13px;
  715. font-family: PingFangSC-Regular, PingFang SC;
  716. font-weight: 400;
  717. color: #999999;
  718. flex: 1;
  719. }
  720. .weekItemSelect {
  721. text-align: center;
  722. font-size: 13px;
  723. font-family: PingFangSC-Regular, PingFang SC;
  724. font-weight: 400;
  725. color: #fa7d22;
  726. flex: 1;
  727. }
  728. .weekLine {
  729. width: 1px;
  730. height: 12px;
  731. background: #f0f0f0;
  732. }
  733. .doTime {
  734. // margin-left: 20px;
  735. line-height: 30px;
  736. font-size: 12px;
  737. font-weight: 500;
  738. color: #333333;
  739. }
  740. .weekDetails {
  741. height: 180px;
  742. border-radius: 6px;
  743. border: 1px solid #f5f5f5;
  744. display: flex;
  745. align-items: center;
  746. overflow: scroll;
  747. }
  748. .contentItem {
  749. margin-left: 10px;
  750. width: 317px;
  751. min-height: 211px;
  752. border-right: 1px solid #f5f5f5;
  753. // overflow-y: scroll;
  754. }
  755. .line-hor {
  756. margin-top: 30px;
  757. margin-left: 10px;
  758. width: 1px;
  759. height: 261px;
  760. background: #f0f0f0;
  761. }
  762. .itemTitle {
  763. display: flex;
  764. padding-right: 10px;
  765. justify-content: space-between;
  766. width: 100%;
  767. line-height: 20px;
  768. font-size: 12px;
  769. font-weight: 400;
  770. color: #333333;
  771. }
  772. .itemContent {
  773. width: 317px;
  774. margin-top: 10px;
  775. display: flex;
  776. align-items: center;
  777. height: 49px;
  778. }
  779. .itemContent-img {
  780. width: 49px;
  781. height: 49px;
  782. background: #d8d8d8;
  783. border-radius: 2px;
  784. }
  785. .itemContent-right {
  786. margin-left: 10px;
  787. display: flex;
  788. flex-direction: column;
  789. height: 49px;
  790. flex: 1;
  791. }
  792. .right-content {
  793. flex: 1;
  794. display: flex;
  795. }
  796. .right-name {
  797. font-size: 12px;
  798. font-family: PingFangSC-Medium, PingFang SC;
  799. font-weight: 500;
  800. color: #333333;
  801. flex: 1;
  802. }
  803. .right-price {
  804. margin-right: 10px;
  805. margin-left: 20px;
  806. font-size: 12px;
  807. font-family: OPPOSans-B, OPPOSans;
  808. font-weight: normal;
  809. color: #ff3007;
  810. }
  811. .right-project {
  812. font-size: 12px;
  813. font-family: PingFangSC-Regular, PingFang SC;
  814. font-weight: 400;
  815. color: #ffc630;
  816. }
  817. }
  818. .tab {
  819. display: flex;
  820. align-items: center;
  821. justify-content: space-between;
  822. .tab-title {
  823. font-size: 14px;
  824. font-family: PingFangSC-Medium, PingFang SC;
  825. font-weight: 500;
  826. color: #333333;
  827. line-height: 20px;
  828. }
  829. }
  830. .programme-list {
  831. margin-top: 10px;
  832. position: relative;
  833. z-index: 1;
  834. .programme-info {
  835. position: relative;
  836. margin-bottom: 10px;
  837. border-radius: 4px;
  838. border: 1px solid #f5f5f5;
  839. display: flex;
  840. justify-content: space-between;
  841. padding: 8px 8px 8px 10px;
  842. align-items: center;
  843. .programme-left {
  844. display: flex;
  845. align-items: center;
  846. .programme-img {
  847. width: 48px;
  848. display: inline-block;
  849. img {
  850. width: 100%;
  851. display: block;
  852. }
  853. }
  854. .programme-tips {
  855. display: inline-block;
  856. margin-left: 10px;
  857. font-size: 10px;
  858. font-family: PingFangSC-Regular, PingFang SC;
  859. font-weight: 400;
  860. color: #999999;
  861. line-height: 14px;
  862. zoom: 0.83;
  863. }
  864. }
  865. .programme-right {
  866. font-size: 12px;
  867. font-family: PingFangSC-Regular, PingFang SC;
  868. font-weight: 400;
  869. color: #333333;
  870. line-height: 17px;
  871. .duration {
  872. margin-top: 14px;
  873. }
  874. }
  875. .operation {
  876. position: absolute;
  877. left: 50%;
  878. transform: translateX(-50%);
  879. top: 10px;
  880. z-index: 10;
  881. width: 44px;
  882. background: #ffffff;
  883. box-shadow: 0px 9px 28px 8px rgba(0, 0, 0, 0.05),
  884. 0px 6px 16px 0px rgba(0, 0, 0, 0.08),
  885. 0px 3px 6px -4px rgba(0, 0, 0, 0.12);
  886. border-radius: 2px;
  887. padding: 10px;
  888. font-size: 12px;
  889. font-family: PingFangSC-Regular, PingFang SC;
  890. font-weight: 400;
  891. color: #333333;
  892. line-height: 17px;
  893. .delete {
  894. margin-top: 20px;
  895. }
  896. }
  897. }
  898. .programme-active {
  899. border: 1px solid #fa852f;
  900. }
  901. }
  902. }
  903. }
  904. }
  905. .block {
  906. width: 540px;
  907. background: #ffffff;
  908. border-radius: 8px;
  909. position: relative;
  910. padding: 42px;
  911. .delete-pupop {
  912. position: absolute;
  913. width: 32px;
  914. height: 32px;
  915. top: 5px;
  916. right: 5px;
  917. img {
  918. width: 100%;
  919. height: 100%;
  920. display: block;
  921. }
  922. }
  923. .pupop-title {
  924. font-size: 14px;
  925. font-family: PingFangSC-Medium, PingFang SC;
  926. font-weight: 500;
  927. color: #333333;
  928. line-height: 20px;
  929. text-align: center;
  930. }
  931. .noticeInput {
  932. margin-top: 50px;
  933. margin-left: 80px;
  934. padding: 10px;
  935. width: 307px;
  936. height: 184px;
  937. border: 1px solid #f5f5f5;
  938. }
  939. .noticeSubmit {
  940. margin-top: 20px;
  941. width: 100%;
  942. display: flex;
  943. align-items: center;
  944. justify-content: center;
  945. }
  946. .submit-notice {
  947. width: 100px;
  948. height: 29px;
  949. border-radius: 14px;
  950. font-size: 14px;
  951. font-weight: 500;
  952. background: #fa7d22;
  953. color: white;
  954. line-height: 29px;
  955. text-align: center;
  956. margin-left: 22px;
  957. }
  958. }
  959. }
  960. </style>