newRevisit.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918
  1. <template>
  2. <view>
  3. <!-- 头部背景 -->
  4. <image src="https://jzmall.lifejingzhi.com/file/jzmall/weixin/revisit-top.png" mode="aspectFill" class="top-img"></image>
  5. <view class="top-block">
  6. <view class="title">尊敬的客户,您的反馈是我们提供更好的服务的基石:</view>
  7. <view class="slogan">您的满意是我们服务第一优先级</view>
  8. </view>
  9. <!-- 服务信息 -->
  10. <view class="service-block">
  11. <view class="title">
  12. <view>服务信息</view>
  13. <!-- <view class="view-detail" bindtap="goDetail">查看订单详情</view> -->
  14. </view>
  15. <view class="content">
  16. <view class="service-times">
  17. {{ tradeOrder.serviceNumber }}
  18. </view>
  19. <view class="item">
  20. <text>服务内容:</text>
  21. {{ tradeOrder.itemName }}
  22. </view>
  23. <view class="item">
  24. <text>服务时间:</text>
  25. {{ tradeOrder.beginDate }} {{ tradeOrder.serviceTime }}
  26. </view>
  27. <view class="item">
  28. <text>服务人员:</text>
  29. {{ tradeOrder.workerName }}
  30. </view>
  31. </view>
  32. </view>
  33. <!-- 是否满意 -->
  34. <view class="service-satisfy">
  35. <view class="satisfy-title">
  36. <view class="dot"></view>
  37. <view class="text">您对本次的服务是否满意?</view>
  38. </view>
  39. <view class="satisfy-select">
  40. <view data-satisfy="1" :class="satisfy == '1' ? 'yes' : ''" @tap="selectSatisfy">满意</view>
  41. <view data-satisfy="2" :class="satisfy == '2' ? 'no' : ''" @tap="selectSatisfy">不满意</view>
  42. <view data-satisfy="3" :class="satisfy == '3' ? 'common' : ''" @tap="selectSatisfy">一般</view>
  43. </view>
  44. <!-- 满意 -->
  45. <view class="satisfy-result" v-if="satisfy == 1">
  46. <view>感谢您的认可,您的认可是我们前行的动力! 如果有需求,您可以长期购买周期单,可以指定阿姨,价格更优惠!</view>
  47. </view>
  48. <!-- 一般 -->
  49. <view class="satisfy-common" v-if="satisfy == 3">诚邀您对我们提出宝贵意见,我们会积极改进,为您提供更好的服务。</view>
  50. <!-- 不满意 -->
  51. <view class="satisfy-common" v-if="satisfy == 2">抱歉给您带来不好的服务体验,我们的工作人员会在第一时间联系您提供后续服务!</view>
  52. </view>
  53. <!-- 一般备注 -->
  54. <view class="remark-wrapper" v-if="satisfy == 3">
  55. <view class="tips">1. 请输入您想和我们说的话:</view>
  56. <textarea @input="remarkInput" placeholder="感谢您的耐心与支持" class="textarea" :value="remark" placeholder-style="color: #E8E8E8;font-size:30rpx;" />
  57. </view>
  58. <!-- 题目 -->
  59. <view class="topic-block" v-if="satisfy == 2">
  60. <!-- 题目选择 -->
  61. <view class="topic-item">
  62. <view class="issue">1. 请选择您发现的问题?</view>
  63. <view class="answer">
  64. <view
  65. :class="(item.checked ? 'selected-answer' : 'common-answer') + ' answer-item'"
  66. :data-checked="item.checked"
  67. :data-index="index"
  68. @tap="questionClick"
  69. v-for="(item, index) in consultList"
  70. :key="index"
  71. >
  72. {{ item.name }}
  73. </view>
  74. </view>
  75. </view>
  76. <view class="topic-item" v-for="(item1, index1) in questionList" :key="index1">
  77. <view class="issue">
  78. <view class="dot"></view>
  79. <view>
  80. <text>{{ item1.name }}</text>
  81. <text class="refer">具体问题</text>
  82. </view>
  83. </view>
  84. <view class="answer">
  85. <view
  86. :class="(item1.consultId == item2.id ? 'selected-answer' : 'common-answer') + ' answer-item'"
  87. :data-id="item2.id"
  88. :data-answer="item2.name"
  89. :data-index1="index1"
  90. @tap="answerClick"
  91. v-for="(item2, index2) in item1.children"
  92. :key="index2"
  93. >
  94. {{ item2.name }}
  95. </view>
  96. </view>
  97. </view>
  98. </view>
  99. <view class="remark-wrapper" v-if="satisfy == 2">
  100. <view class="tips">2. 请输入具体问题描述:</view>
  101. <textarea @input="detailInput" placeholder="感谢您的耐心与支持" class="textarea" :value="detail" placeholder-style="color: #E8E8E8;font-size:30rpx;" />
  102. <!-- 图片上传 -->
  103. <view class="upload-wrapper">
  104. <view class="img-item" v-for="(item, index) in imgList" :key="index">
  105. <image mode="aspectFill" :src="item" class="user-upload" @tap="previewImg" :data-img="item"></image>
  106. <image class="close-img" mode="aspectFill" src="/static/images/icon-close.png" @tap="delImg" :data-index="index"></image>
  107. </view>
  108. <view class="upload" @tap="uploadImg">
  109. <image mode="aspectFill" src="/static/images/icon-add.png"></image>
  110. <view>上传照片</view>
  111. </view>
  112. </view>
  113. </view>
  114. <view class="submit-btn" @tap="sumitRevisit" v-if="!isFinished">提交</view>
  115. <view class="submit-btn disable-btn" v-else>提交</view>
  116. <!-- 底部背景 -->
  117. <image src="https://jzmall.lifejingzhi.com/file/jzmall/weixin/revisit-bottom.png" mode="widthFix" class="bottom-img"></image>
  118. <view v-if="loginShow" @tap="onOverlayHide">
  119. <view class="wrapper">
  120. <view class="block">
  121. <button class="submit-btn" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">手机号一键登录</button>
  122. </view>
  123. </view>
  124. </view>
  125. </view>
  126. </template>
  127. <script>
  128. const util = require('../../../utils/util.js');
  129. const api = require('../../../config/api.js');
  130. //获取应用实例
  131. const app = getApp();
  132. export default {
  133. data() {
  134. return {
  135. consultList: [],
  136. questionList: [],
  137. imgList: [],
  138. remark: '',
  139. detail: '',
  140. satisfy: '',
  141. bookTradeNo: '',
  142. type: '',
  143. isFinished: false,
  144. tradeOrder: {
  145. itemName: '',
  146. serviceNumber: '',
  147. beginDate: '',
  148. serviceTime: '',
  149. workerName: ''
  150. },
  151. code: '',
  152. loginShow: false,
  153. obj1: '',
  154. obj2: '',
  155. isUnMask: ''
  156. };
  157. },
  158. onLoad: function (options) {
  159. console.log('options', options);
  160. if (options) {
  161. this.setData({
  162. bookTradeNo: options.id
  163. // type:options.type
  164. });
  165. this.getOrderDetail();
  166. }
  167. // 获取题目
  168. // this.getConsoultType();
  169. // let that=this;
  170. // wx.login({
  171. // success(res) {
  172. // console.log(res);
  173. // let params = {
  174. // code: res.code,
  175. // bookTradeNo:that.data.bookTradeNo
  176. // };
  177. // if (res.code) {
  178. // that.setData({
  179. // code: res.code
  180. // });
  181. // util.request(api.loginCusUnionId, params, 'POST').then(response => {
  182. // if (response.errno === 0) {
  183. // console.log(response);
  184. // if(response.data.tradeOrder==null||response.data.tradeOrder==''){
  185. // wx.showToast({
  186. // title: '您还没有购买过任何商品,如有疑问,欢迎咨询4009218787',
  187. // icon: 'none',
  188. // duration: 2000
  189. // });
  190. // }else{
  191. // that.setData({
  192. // tradeOrder:response.data.tradeOrder
  193. // });
  194. // that.getConsoultType();
  195. // }
  196. // } else {
  197. // wx.login({
  198. // success(res) {
  199. // console.log(res);
  200. // if (res.code) {
  201. // that.setData({
  202. // code: res.code
  203. // });
  204. // }
  205. // }});
  206. // that.setData({
  207. // loginShow: true
  208. // });
  209. // }
  210. // });
  211. // } else {
  212. // console.log('登录失败!' + res.errMsg)
  213. // }
  214. // }
  215. // });
  216. },
  217. /**
  218. * 生命周期函数--监听页面显示
  219. */
  220. onShow: function (options) {
  221. // wx.hideHomeButton({
  222. // success(){
  223. // }
  224. // });
  225. },
  226. methods: {
  227. getOrderDetail() {
  228. util.request(
  229. api.getTradeOrderList,
  230. {
  231. bookDetailId: this.bookTradeNo
  232. },
  233. 'GET'
  234. )
  235. .then((res) => {
  236. if (res.errno === 0) {
  237. console.log(res);
  238. this.setData({
  239. tradeOrder: res.data
  240. });
  241. // 获取题目
  242. this.getConsoultType();
  243. } else {
  244. uni.showToast({
  245. title: res.errmsg,
  246. icon: 'none',
  247. duration: 2000
  248. });
  249. }
  250. })
  251. .catch((err) => {
  252. console.log(err);
  253. });
  254. },
  255. getConsoultType() {
  256. util.request(
  257. api.getConsoultType,
  258. {
  259. type: this.tradeOrder.goodsType
  260. },
  261. 'GET'
  262. )
  263. .then((res) => {
  264. if (res.errno === 0) {
  265. console.log(res);
  266. let list = res.data[0].children;
  267. list.forEach((item) => {
  268. item.checked = false;
  269. });
  270. this.setData({
  271. consultList: list
  272. });
  273. } else {
  274. uni.showToast({
  275. title: res.errmsg,
  276. icon: 'none',
  277. duration: 2000
  278. });
  279. }
  280. })
  281. .catch((err) => {
  282. console.log(err);
  283. });
  284. },
  285. questionClick(e) {
  286. let checked = e.currentTarget.dataset.checked;
  287. let index = e.currentTarget.dataset.index;
  288. let item = `consultList[${index}].checked`;
  289. this.setData({
  290. [item]: !checked
  291. });
  292. let current = this.consultList.filter((item) => {
  293. return item.checked;
  294. });
  295. this.setData({
  296. questionList: current
  297. });
  298. },
  299. selectSatisfy(e) {
  300. let result = e.currentTarget.dataset.satisfy;
  301. this.setData({
  302. satisfy: result
  303. });
  304. },
  305. remarkInput(e) {
  306. this.setData({
  307. remark: e.detail.value
  308. });
  309. },
  310. detailInput(e) {
  311. this.setData({
  312. detail: e.detail.value
  313. });
  314. },
  315. previewImg(e) {
  316. let img = e.currentTarget.dataset.img;
  317. let imgs = this.imgList;
  318. uni.previewImage({
  319. current: img,
  320. // 当前显示图片的http链接
  321. urls: imgs // 需要预览的图片http链接列表
  322. });
  323. },
  324. delImg(e) {
  325. let imgs = this.imgList;
  326. let index = e.currentTarget.dataset.index;
  327. imgs.splice(index, 1);
  328. this.setData({
  329. imgList: imgs
  330. });
  331. },
  332. uploadImg() {
  333. if (this.imgList.length >= 9) {
  334. uni.showToast({
  335. title: '最多上传9张图片',
  336. icon: 'none',
  337. duration: 2000
  338. });
  339. return false;
  340. }
  341. let that = this;
  342. let count = 9 - that.imgList.length;
  343. uni.chooseImage({
  344. count: count,
  345. sizeType: ['original', 'compressed'],
  346. sourceType: ['album', 'camera'],
  347. success: function (res) {
  348. console.log(res);
  349. let tempFilePaths = res.tempFilePaths;
  350. // for(let i=0;i<tempFilePaths.length;i++){
  351. // if(imgs.length>=9){
  352. // that.setData({
  353. // imgList:imgs
  354. // });
  355. // return false;
  356. // }else{
  357. // imgs.push(tempFilePaths[i]);
  358. // }
  359. // }
  360. // that.setData({
  361. // imgList:imgs
  362. // });
  363. // console.log(that.data.imgList);
  364. uni.showLoading({
  365. title: '上传中...'
  366. });
  367. for (let i = 0; i < tempFilePaths.length; i++) {
  368. let imgs = that.imgList;
  369. if (imgs.length >= 9) {
  370. that.setData({
  371. imgList: imgs
  372. });
  373. return false;
  374. } else {
  375. uni.uploadFile({
  376. url: api.StorageUpload,
  377. filePath: tempFilePaths[i],
  378. name: 'file',
  379. success(res) {
  380. console.log(res);
  381. let data = JSON.parse(res.data);
  382. if (data.errno == 0) {
  383. imgs.push(data.data.url);
  384. that.setData({
  385. imgList: imgs
  386. });
  387. } else {
  388. console.log('上传失败');
  389. }
  390. }
  391. });
  392. }
  393. }
  394. uni.hideLoading();
  395. }
  396. });
  397. },
  398. answerClick(e) {
  399. let index1 = e.currentTarget.dataset.index1;
  400. let answer = e.currentTarget.dataset.answer;
  401. let id = e.currentTarget.dataset.id;
  402. let obj1 = `questionList[${index1}].consultId`;
  403. let obj2 = `questionList[${index1}].consultName`;
  404. this.setData({
  405. [obj1]: id,
  406. [obj2]: answer
  407. });
  408. console.log(this.questionList);
  409. },
  410. maskClick(e) {
  411. let answer = e.currentTarget.dataset.answer;
  412. this.setData({
  413. isUnMask: answer
  414. });
  415. },
  416. getPhoneNumber(e) {
  417. console.log(e.detail);
  418. let params = {
  419. // type:'保洁',
  420. code: this.code,
  421. encryptedData: e.detail.encryptedData,
  422. iv: e.detail.iv,
  423. bookTradeNo: this.bookTradeNo
  424. // loginType: '',
  425. // openId: "",
  426. // sessionKey: "",
  427. // tel: "",
  428. // unionId: "",
  429. // userPassword: ""
  430. };
  431. util.request(api.loginCusTel, params, 'POST').then((res) => {
  432. if (res.errno === 0) {
  433. console.log(res);
  434. this.setData({
  435. loginShow: false
  436. });
  437. if (res.data.tradeOrder == null || res.data.tradeOrder == '') {
  438. uni.showToast({
  439. title: '您还没有购买过任何商品,如有疑问,欢迎咨询4009218787',
  440. icon: 'none',
  441. duration: 2000
  442. });
  443. } else {
  444. this.setData({
  445. tradeOrder: res.data.tradeOrder
  446. });
  447. this.getConsoultType();
  448. }
  449. } else {
  450. this.setData({
  451. loginShow: true
  452. });
  453. uni.showToast({
  454. title: res.errmsg,
  455. icon: 'none',
  456. duration: 2000
  457. });
  458. let that = this;
  459. uni.login({
  460. success(res) {
  461. console.log(res);
  462. if (res.code) {
  463. that.setData({
  464. code: res.code
  465. });
  466. }
  467. }
  468. });
  469. }
  470. });
  471. },
  472. sumitRevisit() {
  473. let params = {
  474. bookTime: this.tradeOrder.beginDate + ' ' + this.tradeOrder.serviceTime,
  475. bookTradeNo: this.tradeOrder.bookTradeNo,
  476. cusTel: this.tradeOrder.cusPhone,
  477. degree: this.satisfy,
  478. type: this.tradeOrder.goodsType,
  479. worderNo: this.tradeOrder.workerNo,
  480. workerName: this.tradeOrder.workerName
  481. };
  482. if (this.satisfy == 2) {
  483. let isEmpty = this.questionList.some((item) => {
  484. return item.consultId == undefined || item.consultId == '';
  485. });
  486. if (isEmpty) {
  487. uni.showToast({
  488. title: '请填写完整',
  489. icon: 'none',
  490. duration: 2000
  491. });
  492. return false;
  493. } else if (this.detail == '') {
  494. uni.showToast({
  495. title: '请输入具体问题描述',
  496. icon: 'none',
  497. duration: 2000
  498. });
  499. return false;
  500. } else {
  501. let title = [];
  502. let titleId = [];
  503. let consultId = [];
  504. let consultName = [];
  505. this.questionList.forEach((item) => {
  506. title.push(item.name);
  507. titleId.push(item.id);
  508. consultId.push(item.consultId);
  509. consultName.push(item.consultName);
  510. });
  511. params.title = title.join(',');
  512. params.titleId = titleId.join(',');
  513. params.consultId = consultId.join(',');
  514. params.consultName = consultName.join(',');
  515. params.question = this.detail;
  516. params.imgSrc = this.imgList.join(',');
  517. }
  518. } else if (this.satisfy == 3) {
  519. if (this.remark == '') {
  520. uni.showToast({
  521. title: '请填写建议',
  522. icon: 'none',
  523. duration: 2000
  524. });
  525. return false;
  526. } else {
  527. params.question = this.remark;
  528. }
  529. }
  530. uni.showLoading({
  531. title: '加载中...'
  532. });
  533. util.request(api.saveVisit, params, 'POST')
  534. .then((res) => {
  535. uni.hideLoading();
  536. if (res.errno === 0) {
  537. console.log(res);
  538. uni.showToast({
  539. title: '提交成功',
  540. icon: 'success',
  541. duration: 2000
  542. });
  543. this.setData({
  544. isFinished: true
  545. });
  546. } else {
  547. uni.showToast({
  548. title: res.errmsg,
  549. icon: 'none',
  550. duration: 2000
  551. });
  552. }
  553. })
  554. .catch((err) => {
  555. uni.hideLoading();
  556. });
  557. },
  558. goDetail() {
  559. uni.navigateTo({
  560. url: '/pages/qwOrderDetail/qwOrderDetail?payId=' + this.tradeOrder.payId
  561. });
  562. },
  563. onOverlayHide() {}
  564. }
  565. };
  566. </script>
  567. <style>
  568. page {
  569. background: #f3f3f3;
  570. padding-bottom: 180rpx;
  571. color: #333;
  572. }
  573. view,
  574. text {
  575. font-size: 30rpx;
  576. }
  577. .top-img {
  578. width: 750rpx;
  579. height: 178rpx;
  580. display: block;
  581. }
  582. .top-block {
  583. margin: 12rpx 0 12rpx;
  584. background: #ffffff;
  585. padding: 24rpx 24rpx 14rpx;
  586. }
  587. .top-block .title {
  588. line-height: 42rpx;
  589. height: 42rpx;
  590. white-space: nowrap;
  591. }
  592. .top-block .slogan {
  593. height: 42rpx;
  594. line-height: 42rpx;
  595. color: #999;
  596. margin-top: 12rpx;
  597. }
  598. .bottom-img {
  599. position: fixed;
  600. bottom: 0;
  601. left: 0;
  602. right: 0;
  603. width: 750rpx;
  604. }
  605. .service-satisfy {
  606. padding: 24rpx 24rpx 34rpx;
  607. background: #fff;
  608. margin: 0 0 24rpx;
  609. }
  610. .satisfy-title {
  611. height: 48rpx;
  612. display: flex;
  613. align-items: center;
  614. }
  615. .satisfy-title .dot {
  616. width: 12rpx;
  617. height: 12rpx;
  618. background: #09afff;
  619. border-radius: 12rpx;
  620. margin-right: 16rpx;
  621. }
  622. .satisfy-title .text {
  623. font-size: 34rpx;
  624. line-height: 48rpx;
  625. }
  626. .satisfy-select {
  627. margin: 24rpx 0;
  628. display: flex;
  629. height: 72rpx;
  630. justify-content: space-between;
  631. }
  632. .satisfy-select view {
  633. width: 218rpx;
  634. height: 72rpx;
  635. line-height: 72rpx;
  636. background: #f5f5f5;
  637. border-radius: 8rpx;
  638. text-align: center;
  639. }
  640. .satisfy-select view.yes {
  641. background: url('https://jzmall.lifejingzhi.com/file/jzmall/weixin/revisit-check.png') no-repeat right bottom;
  642. background-size: 40rpx 32rpx;
  643. background-color: #e7f1ff;
  644. color: #1677ff;
  645. }
  646. .satisfy-select view.no {
  647. background: url('https://jzmall.lifejingzhi.com/file/jzmall/weixin/qw/icon-no.png') no-repeat right bottom;
  648. background-size: 40rpx 32rpx;
  649. background-color: #fff1f0;
  650. color: #f5222d;
  651. }
  652. .satisfy-select view.common {
  653. background: url('https://jzmall.lifejingzhi.com/file/jzmall/weixin/qw/icon-common.png') no-repeat right bottom;
  654. background-size: 40rpx 32rpx;
  655. background-color: #f0f5ff;
  656. color: rgba(0, 0, 0, 0.45);
  657. }
  658. .satisfy-result view {
  659. line-height: 46rpx;
  660. color: #999;
  661. }
  662. .satisfy-result image {
  663. margin: 6rpx 0 -34rpx;
  664. width: 702rpx;
  665. height: 142rpx;
  666. }
  667. .satisfy-common {
  668. color: #6aacc2;
  669. line-height: 46rpx;
  670. }
  671. .remark-wrapper {
  672. padding: 24rpx;
  673. background: #fff;
  674. margin-bottom: 24rpx;
  675. }
  676. .remark-wrapper .tips {
  677. font-size: 34rpx;
  678. line-height: 48tpx;
  679. margin-bottom: 18rpx;
  680. }
  681. .remark-wrapper .textarea {
  682. width: 702rpx;
  683. height: 174rpx;
  684. border-radius: 12rpx;
  685. border: 1rpx solid #dadada;
  686. padding: 12rpx 12rpx 12rpx 24rpx;
  687. line-height: 42rpx;
  688. box-sizing: border-box;
  689. color: #666;
  690. }
  691. .upload-wrapper {
  692. margin: 18rpx -20rpx 56rpx 0;
  693. display: flex;
  694. flex-wrap: wrap;
  695. }
  696. .upload {
  697. width: 160rpx;
  698. height: 160rpx;
  699. background: #fafafa;
  700. border-radius: 2rpx;
  701. border: 1rpx solid #d9d9d9;
  702. display: flex;
  703. align-items: center;
  704. flex-direction: column;
  705. justify-content: center;
  706. margin-right: 16rpx;
  707. box-sizing: border-box;
  708. }
  709. .upload image {
  710. width: 38rpx;
  711. height: 38rpx;
  712. margin-bottom: 22rpx;
  713. }
  714. .upload view {
  715. font-weight: 400;
  716. color: #c5c3c3;
  717. line-height: 48rpx;
  718. font-size: 26rpx;
  719. }
  720. .img-item {
  721. width: 160rpx;
  722. height: 160rpx;
  723. background: #fff;
  724. border-radius: 2rpx;
  725. border: 1rpx solid #d9d9d9;
  726. margin: 0 20rpx 24rpx 0;
  727. padding: 8rpx;
  728. position: relative;
  729. box-sizing: border-box;
  730. }
  731. .img-item .user-upload {
  732. width: 144rpx;
  733. height: 144rpx;
  734. }
  735. .img-item .close-img {
  736. width: 28rpx;
  737. height: 28rpx;
  738. position: absolute;
  739. top: 0;
  740. right: 0;
  741. }
  742. .service-block {
  743. margin-bottom: 10rpx;
  744. background: #fff;
  745. font-size: 30rpx;
  746. }
  747. .service-block .title {
  748. height: 90rpx;
  749. line-height: 90rpx;
  750. padding: 0 24rpx;
  751. border-bottom: 1rpx solid #eeeeee;
  752. display: flex;
  753. align-items: center;
  754. justify-content: space-between;
  755. }
  756. view.view-detail {
  757. color: #09afff;
  758. font-size: 28rpx;
  759. }
  760. .service-block .content {
  761. padding: 20rpx 24rpx;
  762. position: relative;
  763. }
  764. .service-block .item {
  765. line-height: 56rpx;
  766. color: #666;
  767. }
  768. .service-block .item text {
  769. color: #999;
  770. }
  771. .service-times {
  772. position: absolute;
  773. top: 22rpx;
  774. right: 48rpx;
  775. color: #666;
  776. }
  777. .topic-block {
  778. /* margin-bottom:114rpx; */
  779. }
  780. .topic-item {
  781. padding: 24rpx 24rpx 32rpx;
  782. background: #fff;
  783. margin-bottom: 12rpx;
  784. font-size: 34rpx;
  785. }
  786. .topic-item .issue {
  787. /* height: 48rpx; */
  788. line-height: 48rpx;
  789. margin-bottom: 22rpx;
  790. display: flex;
  791. }
  792. .issue .dot {
  793. width: 12rpx;
  794. height: 12rpx;
  795. background: #09afff;
  796. border-radius: 12rpx;
  797. margin-right: 12rpx;
  798. margin-top: 18rpx;
  799. }
  800. .issue text {
  801. font-size: 34rpx;
  802. }
  803. .issue .refer {
  804. color: #c5c5c5;
  805. margin-left: 12rpx;
  806. font-size: 30rpx;
  807. font-weight: 400;
  808. }
  809. .topic-item .answer {
  810. flex-wrap: wrap;
  811. display: flex;
  812. /* justify-content: space-between; */
  813. }
  814. .answer .answer-item {
  815. /* width: 218rpx; */
  816. min-width: 160rpx;
  817. padding: 0 20rpx;
  818. height: 72rpx;
  819. line-height: 72rpx;
  820. border-radius: 8rpx;
  821. text-align: center;
  822. color: #333;
  823. font-size: 28rpx;
  824. margin: 0 20rpx 24rpx 0;
  825. box-sizing: border-box;
  826. }
  827. .answer .common-answer {
  828. background: #f5f5f5;
  829. color: #333;
  830. }
  831. .topic-item .answer .selected-answer {
  832. background: url('https://jzmall.lifejingzhi.com/file/jzmall/weixin/revisit-check.png') no-repeat right bottom;
  833. background-size: 40rpx 32rpx;
  834. background-color: #e7f1ff;
  835. color: #1677ff;
  836. }
  837. .submit-btn {
  838. width: 702rpx;
  839. height: 88rpx;
  840. background: #3d7fff linear-gradient(270deg, rgba(0, 202, 255, 0.5) 0%, rgba(9, 175, 255, 0.5) 100%);
  841. border-radius: 88rpx;
  842. margin: 0 24rpx 60rpx;
  843. line-height: 88rpx;
  844. font-size: 32rpx;
  845. color: #fff;
  846. text-align: center;
  847. margin-top: 100rpx;
  848. }
  849. .submit-btn.disable-btn {
  850. background: #ccc;
  851. box-shadow: 4rpx 4rpx 10rpx 0rpx rgba(201, 205, 207, 0.25);
  852. }
  853. .topic-item .answer.unmask {
  854. justify-content: flex-start;
  855. }
  856. .topic-item .answer.unmask view {
  857. margin-right: 24rpx;
  858. }
  859. .wrapper {
  860. display: flex;
  861. align-items: center;
  862. justify-content: center;
  863. height: 100%;
  864. }
  865. .block {
  866. width: 700rpx;
  867. height: 300rpx;
  868. padding-top: 200rpx;
  869. background-color: #fff;
  870. border-radius: 20rpx;
  871. }
  872. .block .submit-btn {
  873. width: 600rpx;
  874. margin: 0 50rpx 0;
  875. }
  876. </style>