dispatch.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892
  1. <template>
  2. <div class="addRepair">
  3. <div class="reportBody">
  4. <ul class="detailUl">
  5. <li class="detailLi">
  6. <span class="liName">当前企业</span>
  7. <span class="liInfo">{{ detail.companyName }}</span>
  8. </li>
  9. <li class="detailLi">
  10. <span class="liName">
  11. <span style="color: red; margin-right: 10rpx">*</span>
  12. 您是想
  13. </span>
  14. <span class="liInfo">
  15. <van-radio-group :value="detail.type" disabled>
  16. <van-radio name="1">报事</van-radio>
  17. <van-radio name="2">咨询</van-radio>
  18. </van-radio-group>
  19. </span>
  20. </li>
  21. <li class="detailLi2">
  22. <span class="liName"> 快捷选择 </span>
  23. <div class="detailLi2Box">
  24. <div class="detailLi2BoxTop">
  25. <div
  26. class="checkItem"
  27. :class="detail.serviceType === item.label ? 'checked' : ''"
  28. v-for="item in checkList"
  29. >
  30. {{ item.label }}
  31. </div>
  32. </div>
  33. <van-field
  34. :value="detail.description"
  35. autosize
  36. type="textarea"
  37. placeholder="请输入文字进行报事报修描述"
  38. class="myField"
  39. maxlength="800"
  40. show-word-limit
  41. readonly
  42. />
  43. </div>
  44. </li>
  45. <li class="detailLi">
  46. <span class="liName">
  47. <span style="color: red; margin-right: 10rpx">*</span>
  48. 位置
  49. </span>
  50. <span class="liInfo">
  51. <van-radio-group :value="detail.position" disabled>
  52. <van-radio name="1">室内</van-radio>
  53. <van-radio name="2">公区</van-radio>
  54. </van-radio-group>
  55. </span>
  56. </li>
  57. <li class="detailLi2">
  58. <span class="liName">
  59. 补充说明
  60. <span style="color: #b3b3b3; font-size: 28rpx"
  61. >(支持图片/视频上传限20M内,最多6张)</span
  62. >
  63. </span>
  64. <div style="display: flex; flex-wrap: wrap; gap: 24rpx">
  65. <div
  66. class="detailLi2Box annex-item"
  67. style="margin: 24rpx 0 0 0"
  68. v-for="(item, index) in explainAnnexList"
  69. :key="index"
  70. >
  71. <img
  72. :src="item.url"
  73. alt=""
  74. v-if="item.type === 'image'"
  75. class="anImg"
  76. @tap="clickImg(item.url)"
  77. />
  78. </div>
  79. </div>
  80. <div
  81. class="detailLi2Box annex-item"
  82. style="margin: 24rpx 0 0 0"
  83. v-for="(item, index) in explainAnnexList"
  84. :key="index"
  85. >
  86. <video
  87. :src="item.url"
  88. v-if="item.type === 'video'"
  89. style="width: 686rpx"
  90. height="100%"
  91. autoplay
  92. ></video>
  93. </div>
  94. </li>
  95. <li class="detailLi">
  96. <span class="liName"> 报事人 </span>
  97. <span class="liInfo">
  98. {{ detail.userName }}
  99. <img
  100. src="https://www.idea-co-sf.com/gardenProduct/image/phoneIcon.png"
  101. class="phoneIcon"
  102. />
  103. </span>
  104. </li>
  105. <li class="detailLi" style="border-bottom: none">
  106. <span class="liName"> 报事时间 </span>
  107. <span class="liInfo">
  108. {{ detail.createdAt }}
  109. </span>
  110. </li>
  111. </ul>
  112. </div>
  113. <div class="handleBox">
  114. <div class="handleTitle">处理情况</div>
  115. <div class="imageBox">
  116. <div class="imageItem">
  117. <img
  118. src="https://www.idea-co-sf.com/gardenProduct/image/upImage.svg"
  119. class="handleImg"
  120. />
  121. <span>上报</span>
  122. </div>
  123. <img
  124. src="https://www.idea-co-sf.com/gardenProduct/image/arrow.png"
  125. class="handleArrow"
  126. />
  127. <div class="imageItem">
  128. <img
  129. :src="
  130. stepActive === '已受理' || stepActive === '已处理'
  131. ? 'https://www.idea-co-sf.com/gardenProduct/image/acceptance.svg'
  132. : 'https://www.idea-co-sf.com/gardenProduct/image/unAcceptance.svg'
  133. "
  134. class="handleImg"
  135. />
  136. <span>受理</span>
  137. </div>
  138. <img
  139. src="https://www.idea-co-sf.com/gardenProduct/image/arrow.png"
  140. class="handleArrow"
  141. />
  142. <div class="imageItem">
  143. <img
  144. :src="
  145. stepActive === '已处理'
  146. ? 'https://www.idea-co-sf.com/gardenProduct/image/handle.svg'
  147. : 'https://www.idea-co-sf.com/gardenProduct/image/unHandle.svg'
  148. "
  149. class="handleImg"
  150. />
  151. <span>处理</span>
  152. </div>
  153. <img
  154. src="https://www.idea-co-sf.com/gardenProduct/image/arrow.png"
  155. class="handleArrow"
  156. />
  157. <div class="imageItem">
  158. <img
  159. :src="
  160. detail.evaluateStatus === 2
  161. ? 'https://www.idea-co-sf.com/gardenProduct/image/unEvaluate.svg'
  162. : 'https://www.idea-co-sf.com/gardenProduct/image/evaluate.svg'
  163. "
  164. class="handleImg"
  165. />
  166. <span>评价</span>
  167. </div>
  168. </div>
  169. </div>
  170. <div class="reportBody" v-if="stepActive !== '已处理'">
  171. <ul class="detailUl">
  172. <li class="detailLi">
  173. <span class="liInfo">
  174. <van-radio-group
  175. :value="optionsType"
  176. :disabled="stepActive === '已处理' || stepActive === '已受理'"
  177. @change="changeHandle"
  178. >
  179. <van-radio name="1">派单</van-radio>
  180. <van-radio name="2">处理</van-radio>
  181. </van-radio-group>
  182. </span>
  183. </li>
  184. <li class="detailLi" v-if="optionsType === '1'">
  185. <span class="liName"> 派单给 </span>
  186. <input
  187. v-model="handler"
  188. class="liInfo"
  189. @click="showPicker = true"
  190. placeholder="请选择"
  191. disabled
  192. />
  193. </li>
  194. <li class="detailLi2" v-if="optionsType === '1'">
  195. <span class="liName" style="margin-bottom: 16rpx"> 备注 </span>
  196. <van-field
  197. :value="params.contant"
  198. autosize
  199. type="textarea"
  200. placeholder="请输入文字进行报事报修描述"
  201. class="myField2"
  202. maxlength="800"
  203. show-word-limit
  204. @change="changeRemark"
  205. />
  206. </li>
  207. <li class="detailLi2" v-if="optionsType === '2'">
  208. <span class="liName">
  209. 处理后拍照
  210. <span style="color: #b3b3b3; font-size: 28rpx"
  211. >(支持图片上传限20M内,最多6张)</span
  212. >
  213. </span>
  214. <div class="detailLi2Box" style="margin: 24rpx 0 0 0">
  215. <van-uploader
  216. :max-count="6"
  217. @delete="deleteRYXXZP"
  218. :file-list="fileList"
  219. @after-read="uploadRYXXZP"
  220. :show-upload="true"
  221. />
  222. </div>
  223. </li>
  224. <li class="detailLi" v-if="optionsType === '2'">
  225. <span class="liName"> 处理人 </span>
  226. <span class="liInfo">
  227. {{ getUserLocalStorageInfo.username }}
  228. </span>
  229. </li>
  230. <li
  231. class="detailLi"
  232. v-if="optionsType === '2'"
  233. style="border-bottom: none"
  234. >
  235. <span class="liName"> 处理时间 </span>
  236. <span class="liInfo">
  237. {{ timeNow }}
  238. </span>
  239. </li>
  240. </ul>
  241. </div>
  242. <van-popup :show="showPicker" position="bottom">
  243. <van-picker
  244. class="picker-box"
  245. show-toolbar
  246. :columns="dispatchPerson"
  247. @confirm="(value) => onSelect(value)"
  248. @cancel="showPicker = false"
  249. />
  250. </van-popup>
  251. <div
  252. class="reportBody"
  253. v-if="stepActive === '已处理' || stepActive === '已受理'"
  254. >
  255. <div class="handleTitle">派单信息</div>
  256. <ul class="detailUl">
  257. <li class="detailLi">
  258. <span class="liName"> 派单给 </span>
  259. <span class="liInfo">
  260. {{ detail.handleUserName }}
  261. </span>
  262. </li>
  263. <li class="detailLi2">
  264. <span class="liName" style="margin-bottom: 16rpx"> 备注 </span>
  265. <van-field
  266. :value="detail.remark"
  267. autosize
  268. type="textarea"
  269. placeholder=" "
  270. class="myField2"
  271. readonly
  272. />
  273. </li>
  274. <li class="detailLi">
  275. <span class="liName"> 派单人 </span>
  276. <span class="liInfo">
  277. {{ detail.dispatchUserName }}
  278. </span>
  279. </li>
  280. <li class="detailLi" style="border-bottom: none">
  281. <span class="liName"> 派单时间 </span>
  282. <span class="liInfo">
  283. {{ detail.dispatchTime }}
  284. </span>
  285. </li>
  286. </ul>
  287. </div>
  288. <div class="reportBody" v-if="stepActive === '已处理'">
  289. <div class="handleTitle">处理信息</div>
  290. <ul class="detailUl">
  291. <li class="detailLi2">
  292. <span class="liName">
  293. 处理后拍照
  294. <span style="color: #b3b3b3; font-size: 28rpx"
  295. >(支持图片上传限20M内,最多6张)</span
  296. >
  297. </span>
  298. <div style="display: flex; flex-wrap: wrap; gap: 24rpx">
  299. <div
  300. class="detailLi2Box annex-item"
  301. style="margin: 24rpx 0 0 0"
  302. v-for="(item, index) in handleUrlList"
  303. :key="index"
  304. >
  305. <img
  306. :src="item.url"
  307. alt=""
  308. class="anImg"
  309. @tap="clickImg(item.url)"
  310. />
  311. </div>
  312. </div>
  313. </li>
  314. <li class="detailLi">
  315. <span class="liName"> 处理人 </span>
  316. <span class="liInfo">
  317. {{ detail.handleUserName }}
  318. </span>
  319. </li>
  320. <li class="detailLi" style="border-bottom: none">
  321. <span class="liName"> 处理时间 </span>
  322. <span class="liInfo">
  323. {{ detail.handleTime }}
  324. </span>
  325. </li>
  326. </ul>
  327. </div>
  328. <div class="reportBody" v-if="detail.evaluateStatus === 2">
  329. <div class="evaluationBox">
  330. <span class="evaName">您对本次服务的评价</span>
  331. <van-rate
  332. :value="detail.evaluateNum"
  333. :size="24"
  334. gutter="32rpx"
  335. void-color="#eee"
  336. color="#fd9a63"
  337. disabled-color="#fd9a63"
  338. disabled
  339. />
  340. </div>
  341. </div>
  342. <div class="buttonBox">
  343. <button
  344. class="zcBtn"
  345. @tap="closePage"
  346. :class="stepActive === '已处理' ? 'btn2' : 'btn '"
  347. >
  348. 关闭
  349. </button>
  350. <button class="btn tjBtn" v-if="stepActive !== '已处理'" @tap="onConfirm">
  351. 提交
  352. </button>
  353. </div>
  354. </div>
  355. </template>
  356. <script>
  357. import {
  358. getRepairDispatchById,
  359. getUserLocalStorageInfo,
  360. getByCodes,
  361. getDispatchToPerson,
  362. editRepair,
  363. } from "@/js_sdk/http";
  364. export default {
  365. data() {
  366. return {
  367. getUserLocalStorageInfo: getUserLocalStorageInfo(),
  368. showPicker: false,
  369. dc_key: ["QUICK_SELECTION"],
  370. isCheck: false,
  371. isCheck2: false,
  372. detail: {},
  373. checkList: [
  374. // {name:'挂件安装',isCheck:true},
  375. // {name:'我要投诉',isCheck:false},
  376. // {name:'疏通管道',isCheck:false},
  377. // {name:'维修线路',isCheck:false},
  378. // {name:'更换灯泡',isCheck:false},
  379. // {name:'网络维修',isCheck:false},
  380. // {name:'保洁服务',isCheck:false},
  381. // {name:'其他维修',isCheck:false},
  382. ],
  383. fileList: [],
  384. optionsType: "2",
  385. timeNow: "",
  386. value: "5",
  387. id: "",
  388. dic_SelectList: [],
  389. explainAnnexList: [],
  390. stepActive: "0",
  391. dispatchPerson: [],
  392. params: {
  393. id: "",
  394. status: "acceptance",
  395. dispatchUserId: getUserLocalStorageInfo().userId,
  396. dispatchUserName: getUserLocalStorageInfo().username,
  397. handleUserName: "",
  398. dispatchTime: this.$common.transServDate(new Date()),
  399. handleUserId: "",
  400. remark: "",
  401. },
  402. handleParams: {
  403. id: "",
  404. status: "processed",
  405. handleUrl: "",
  406. handleTime: "",
  407. handleUserId: getUserLocalStorageInfo().userId,
  408. handleUserName: getUserLocalStorageInfo().username,
  409. },
  410. handler: "",
  411. handleUrlList: [],
  412. };
  413. },
  414. onLoad(options) {
  415. const item = JSON.parse(options.item);
  416. this.id = item.id;
  417. if (options.type === "待处理") {
  418. uni.setNavigationBarTitle({
  419. title: "报修处理",
  420. });
  421. } else if (options.type === "已处理") {
  422. uni.setNavigationBarTitle({
  423. title: "报修详情",
  424. });
  425. } else {
  426. uni.setNavigationBarTitle({
  427. title: "报修派单",
  428. });
  429. }
  430. this.getByCodes();
  431. },
  432. mounted() {
  433. this.getTime();
  434. this.getDispatch();
  435. },
  436. methods: {
  437. onConfirm(value) {
  438. // console.log(this.optionsType)
  439. if (this.optionsType == "1") {
  440. if (
  441. this.params.handleUserId == null ||
  442. this.params.handleUserId === ""
  443. ) {
  444. uni.showToast({
  445. title: "请选择处理人",
  446. icon: "none",
  447. mask: true,
  448. duration: 1000,
  449. });
  450. return;
  451. }
  452. this.params.id = this.id;
  453. // console.log('this.params',this.params)
  454. editRepair(this.params).then((res) => {
  455. if (res.code === 200) {
  456. uni.showToast({
  457. title: "派单成功",
  458. icon: "none",
  459. mask: true,
  460. duration: 1000,
  461. });
  462. uni.navigateBack({});
  463. } else {
  464. uni.showToast({
  465. title: res.msg,
  466. icon: "none",
  467. mask: true,
  468. duration: 1000,
  469. });
  470. }
  471. });
  472. } else {
  473. if (this.fileList.length <= 0 || !this.fileList) {
  474. uni.showToast({
  475. title: "请上传处理图片",
  476. icon: "none",
  477. mask: true,
  478. duration: 1000,
  479. });
  480. return;
  481. }
  482. if (this.stepActive === "待受理") {
  483. (this.handleParams.dispatchUserId =
  484. this.getUserLocalStorageInfo.userId),
  485. (this.handleParams.dispatchUserName =
  486. this.getUserLocalStorageInfo.username);
  487. this.handleParams.dispatchTime = this.$common.transServDate(
  488. new Date()
  489. );
  490. this.handleParams.remark = null;
  491. }
  492. this.handleParams.id = this.id;
  493. this.handleParams.handleUrl = JSON.stringify(this.fileList);
  494. this.handleParams.handleTime = this.$common.transServDate(new Date());
  495. // console.log('this.handleParams',this.handleParams)
  496. editRepair(this.handleParams).then((res) => {
  497. if (res.code === 200) {
  498. uni.showToast({
  499. title: "处理成功",
  500. icon: "none",
  501. mask: true,
  502. duration: 1000,
  503. });
  504. uni.navigateBack({});
  505. } else {
  506. uni.showToast({
  507. title: res.msg,
  508. icon: "none",
  509. mask: true,
  510. duration: 1000,
  511. });
  512. }
  513. });
  514. }
  515. },
  516. changeRemark(e) {
  517. this.params.remark = e.detail;
  518. },
  519. onSelect(val) {
  520. // console.log('val',val.detail.value.text)
  521. this.handler = val.detail.value.text;
  522. this.params.handleUserId = val.detail.value.value;
  523. this.params.handleUserName = val.detail.value.text;
  524. this.showPicker = false;
  525. },
  526. changeHandle(e) {
  527. // console.log(e)
  528. this.optionsType = e.detail;
  529. },
  530. getDispatch() {
  531. getDispatchToPerson({}).then((res) => {
  532. this.dispatchPerson = res.data;
  533. });
  534. },
  535. // 放大图片
  536. clickImg(url) {
  537. wx.previewImage({
  538. urls: [url], //接受的是一个数组,默认展示第一张
  539. current: "",
  540. success: function (res) {},
  541. fail: function (res) {},
  542. complete: function (res) {},
  543. });
  544. },
  545. async getByCodes() {
  546. let data = await getByCodes(JSON.stringify(this.dc_key));
  547. this.dic_SelectList = this.$common.handleDicList(data);
  548. this.checkList = this.dic_SelectList.QUICK_SELECTION;
  549. this.getById();
  550. },
  551. getById() {
  552. const _this = this;
  553. getRepairDispatchById(this.id).then((res) => {
  554. if (res.data) {
  555. const det = _this.getItemJson(res.data);
  556. this.detail = det;
  557. // console.log('this.detail',this.detail)
  558. this.explainAnnexList = det.fileUrlList;
  559. this.handleUrlList = det.handleUrlList;
  560. this.detailStatus = det.status;
  561. // this.params = {
  562. // id: det.id,
  563. // evaluateNum: det.evaluateNum,
  564. // score: det.score
  565. // }
  566. // this.evaluateVal = ((det.score == null ? 0 : det.score) / (det.evaluateNum == null ? 1 : det.evaluateNum))
  567. }
  568. });
  569. },
  570. getTime() {
  571. let timestamp = new Date().getTime();
  572. let dateStr = new Date().toLocaleDateString();
  573. let date = new Date();
  574. let year = date.getFullYear();
  575. let month = date.getMonth() + 1;
  576. let day = date.getDate();
  577. let hours = date.getHours();
  578. let minutes = date.getMinutes();
  579. let fullDateStr = `${year}-${month}-${day} ${hours}:${
  580. minutes < 10 ? "0" + minutes : minutes
  581. }`;
  582. console.log(fullDateStr);
  583. this.timeNow = fullDateStr;
  584. return fullDateStr;
  585. },
  586. getItemJson: function (item) {
  587. item.releaseTime = this.$common.transDate(item.releaseTime);
  588. item.createdAt = this.$common.transDate(item.createdAt);
  589. let transformedObject = this.dic_SelectList.QUICK_SELECTION.reduce(
  590. (acc, obj) => {
  591. acc[obj.value] = obj.label;
  592. return acc;
  593. },
  594. {}
  595. );
  596. item.serviceType = transformedObject[item.serviceType];
  597. if (item.userId) {
  598. const user = item.userId.split("-");
  599. item.userPhone = user[1] + "-" + user[2];
  600. item.phone = user[2];
  601. }
  602. if (item.handleUserId) {
  603. const test = item.handleUserId.split("-");
  604. item.handleUserId = test[1] + "-" + test[2];
  605. item.hanleUserPhone = test[2];
  606. }
  607. // item.handleTime = this.$common.transDate(item.handleTime)
  608. switch (item.status) {
  609. case "unAcceptance":
  610. this.stepActive = "待受理";
  611. break;
  612. case "acceptance":
  613. this.stepActive = "已受理";
  614. break;
  615. case "processed":
  616. this.stepActive = "已处理";
  617. break;
  618. case "unSubmit":
  619. this.stepActive = "暂存";
  620. break;
  621. }
  622. if (item.fileUrl) {
  623. // console.log('item.fileUrl' ,JSON.parse(item.fileUrl))
  624. const fileUrl = JSON.parse(item.fileUrl);
  625. const newFile = [];
  626. fileUrl.forEach((e) => {
  627. newFile.push({
  628. imgUrl: e.imgUrl,
  629. id: e.id,
  630. url: e.url,
  631. type: e.type,
  632. });
  633. });
  634. // console.log('newFile',newFile)
  635. item.fileUrlList = newFile;
  636. }
  637. if (item.handleUrl) {
  638. // console.log('item.fileUrl' ,JSON.parse(item.fileUrl))
  639. const fileUrl = JSON.parse(item.handleUrl);
  640. const newFile = [];
  641. fileUrl.forEach((e) => {
  642. newFile.push({
  643. imgUrl: e.imgUrl,
  644. id: e.id,
  645. url: e.url,
  646. type: e.type,
  647. });
  648. });
  649. // console.log('newFile',newFile)
  650. item.handleUrlList = newFile;
  651. }
  652. const handleUrls = JSON.parse(item.handleUrl);
  653. const handleUrl = [];
  654. if (handleUrls !== null && handleUrls.length > 0) {
  655. handleUrls.forEach((item) => {
  656. if (item.url) {
  657. const ul = {
  658. type: "image",
  659. url: item.url.replace("/server", "/smartParkH5Server"),
  660. };
  661. handleUrl.push(ul);
  662. }
  663. });
  664. }
  665. item.handleUrlList = handleUrl;
  666. console.log("item", item);
  667. return item;
  668. },
  669. closePage() {
  670. uni.navigateBack({});
  671. },
  672. deleteRYXXZP(event) {
  673. this.fileList.splice(event.detail.index, 1);
  674. this.$forceUpdate();
  675. },
  676. uploadRYXXZP(event) {
  677. // console.log(event)
  678. let that = this;
  679. const { file } = event.detail;
  680. uni.uploadFile({
  681. url: that.$constant.BASE_URI + "/wx/fileController/upload",
  682. filePath: file.url,
  683. name: "file",
  684. formData: { user: "test" },
  685. success(res) {
  686. // 上传完成需要更新 fileList
  687. let data = JSON.parse(res.data);
  688. that.fileList.push({
  689. imgUrl: "/FileController/download/" + data.data[0],
  690. id: data.data[0],
  691. url:
  692. that.$constant.BASE_URI +
  693. "/FileController/download/" +
  694. data.data[0],
  695. isImage: true,
  696. });
  697. },
  698. fail(res) {},
  699. });
  700. },
  701. },
  702. };
  703. </script>
  704. <style lang="scss">
  705. .addRepair {
  706. .reportBody {
  707. margin-top: 24rpx;
  708. padding: 38rpx 36rpx;
  709. background: white;
  710. //height: 1416rpx;
  711. box-sizing: border-box;
  712. .record {
  713. display: flex;
  714. align-items: center;
  715. justify-content: flex-end;
  716. color: #0365f9;
  717. font-size: 32rpx;
  718. .recordImg {
  719. width: 36rpx;
  720. height: 36rpx;
  721. padding: 5rpx 0 0 10rpx;
  722. }
  723. }
  724. .detailUl {
  725. margin-top: 20rpx;
  726. .liName {
  727. font-size: 32rpx;
  728. color: rgba(51, 51, 51, 1);
  729. white-space: nowrap;
  730. }
  731. .detailLi {
  732. display: flex;
  733. justify-content: space-between;
  734. align-items: center;
  735. padding: 32rpx 0;
  736. border-bottom: 2rpx solid #e6e6e6;
  737. .liInfo {
  738. display: inline-block;
  739. text-align: right;
  740. max-width: 428rpx;
  741. color: rgba(102, 102, 102, 1);
  742. font-size: 32rpx;
  743. line-height: 38rpx;
  744. display: flex;
  745. align-items: center;
  746. .phoneIcon {
  747. width: 64rpx;
  748. height: 64rpx;
  749. margin-left: 24rpx;
  750. }
  751. }
  752. .van-radio-group {
  753. display: flex;
  754. align-items: center;
  755. gap: 0 32rpx;
  756. }
  757. }
  758. .detailLi2 {
  759. display: flex;
  760. flex-direction: column;
  761. padding: 32rpx 0;
  762. border-bottom: 2rpx solid #e6e6e6;
  763. .detailLi2BoxTop {
  764. display: flex;
  765. flex-wrap: wrap;
  766. justify-content: space-between;
  767. margin: 12rpx 0;
  768. .checkItem {
  769. width: 160rpx;
  770. height: 64rpx;
  771. font-size: 28rpx;
  772. color: #666666;
  773. display: flex;
  774. align-items: center;
  775. justify-content: center;
  776. background: #f5f7fa;
  777. border-radius: 8rpx;
  778. margin: 12rpx 0;
  779. }
  780. .checked {
  781. background: #0365f9;
  782. color: white;
  783. }
  784. }
  785. }
  786. }
  787. }
  788. .anImg {
  789. width: 200rpx;
  790. height: 200rpx;
  791. }
  792. .van-cell {
  793. background: #f5f7fa !important;
  794. border-radius: 8rpx;
  795. font-size: 28rpx;
  796. }
  797. .buttonBox {
  798. display: flex;
  799. justify-content: center;
  800. .btn {
  801. width: 240rpx;
  802. height: 80rpx;
  803. display: flex;
  804. border-radius: 8rpx;
  805. align-items: center;
  806. justify-content: center;
  807. margin: 48rpx 16rpx 150rpx 16rpx;
  808. color: white;
  809. letter-spacing: 2rpx;
  810. text-indent: 2rpx;
  811. }
  812. .btn2 {
  813. width: 654rpx;
  814. height: 96rpx;
  815. display: flex;
  816. border-radius: 8rpx;
  817. align-items: center;
  818. justify-content: center;
  819. margin: 48rpx 48rpx 150rpx 48rpx;
  820. color: white;
  821. letter-spacing: 2rpx;
  822. text-indent: 2rpx;
  823. }
  824. .zcBtn {
  825. background: rgba(0, 0, 0, 0.05);
  826. color: rgba(3, 101, 249, 1);
  827. &::after {
  828. border: none;
  829. }
  830. }
  831. .tjBtn {
  832. background: #0365f9;
  833. }
  834. }
  835. .handleBox {
  836. background: white;
  837. padding: 32rpx;
  838. margin: 24rpx 0;
  839. .imageBox {
  840. display: flex;
  841. justify-content: space-evenly;
  842. align-items: center;
  843. margin-top: 48rpx;
  844. .handleImg {
  845. width: 72rpx;
  846. height: 72rpx;
  847. margin-bottom: 8rpx;
  848. }
  849. .handleArrow {
  850. width: 64rpx;
  851. height: 20rpx;
  852. }
  853. }
  854. .imageItem {
  855. display: flex;
  856. flex-direction: column;
  857. align-items: center;
  858. color: rgba(34, 34, 34, 1);
  859. font-size: 28rpx;
  860. }
  861. }
  862. .handleTitle {
  863. color: rgba(34, 34, 34, 1);
  864. font-size: 36rpx;
  865. font-weight: 600;
  866. }
  867. .evaluationBox {
  868. width: 686rpx;
  869. height: 100rpx;
  870. padding: 0 24rpx;
  871. display: flex;
  872. align-items: center;
  873. justify-content: space-between;
  874. background: #f5f7fa;
  875. border-radius: 8rpx;
  876. box-sizing: border-box;
  877. margin-top: 24rpx;
  878. .evaName {
  879. font-size: 28rpx;
  880. color: rgba(51, 51, 51, 1);
  881. }
  882. }
  883. }
  884. </style>