index.vue 31 KB

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