index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855
  1. <template>
  2. <view class="page">
  3. <view class="head u-flex-y">
  4. <view class="head_title">
  5. 维修中心
  6. <image class="loc" src="../../static/rep.svg" mode=""></image>
  7. </view>
  8. <view class="nav">
  9. <navigator url="../evaluation/index" hover-class="navigator-hover" class="u-flex-y">
  10. <image src="../../static/sug.svg" mode=""></image>
  11. <span>评价建议</span>
  12. </navigator>
  13. </view>
  14. <!-- <view class="point"></view> -->
  15. </view>
  16. <!-- <view class="point"></view> -->
  17. <view class="content">
  18. <view class="point"></view>
  19. <view class="list-text" v-if="workerList.length !== 0">---- 报修订单 ----</view>
  20. <view
  21. v-if="item.orderStatus"
  22. class="content-list"
  23. v-for="(item, index) in workerList"
  24. :key="item.orderId"
  25. @click="handleLookInfo(item)"
  26. >
  27. <text class="num">订单号:{{ item.orderId }}</text>
  28. <text class="newList">{{ item.orderStatus == 0 ? '新订单' : '' }}</text>
  29. <!-- 新订单 -->
  30. <text class="waitList">{{ item.orderStatus == 1 ? '待接单' : '' }}</text>
  31. <!-- 待接单 -->
  32. <text class="readyList">{{ item.orderStatus == 2 ? '已接单' : '' }}</text>
  33. <!-- 已接单 -->
  34. <text class="finishList">{{ item.orderStatus == 3 ? '维修完成' : '' }}</text>
  35. <!-- 维修完成 -->
  36. <text class="refuseList">{{ item.orderStatus == 4 ? '退单' : '' }}</text>
  37. <!-- 已退单 -->
  38. <!-- <view>
  39. <span class="orderId">订单号:{{ item.orderId }}</span>
  40. <span :class="orderStatusStyle(item.orderStatus)">{{ orderStatusText(item.orderStatus) }}}</span>.
  41. </view> -->
  42. <view class="list flex column">
  43. <span>故障类型:{{ item.repairsFault.faultName }}</span>
  44. <span>维修人员:{{ item.repairsWork.workName }}</span>
  45. <span>提交时间:{{ item.orderCommitTime }}</span>
  46. <span>预约时间:{{ item.orderExpectedTime }}</span>
  47. <!-- <view v-if="item.orderStatus == 1">派单时间:{{ item.orderCompleteTime }}</view> -->
  48. <span v-if="item.orderStatus == 2">维修时间:{{ item.orderCompleteTime }}</span>
  49. <span v-if="item.orderStatus == 3">完成时间:{{ item.orderCompleteTime }}</span>
  50. </view>
  51. <button class="agreeIt2" v-if="item.orderStatus == 1" @click.stop="open(item, 1)">接受</button>
  52. <button class="refuse" v-if="item.orderStatus == 1" @click.stop="open(item, 2)">拒绝</button>
  53. <button class="agreeIt" v-if="item.orderStatus == 2" @click.stop="handleFinish(item.orderId)">完成维修</button>
  54. </view>
  55. <view class="isOver" v-if="flag">----我是有底线的----</view>
  56. <view class="isOver" v-if="workerList.length == 0">----暂无订单----</view>
  57. </view>
  58. <!-- 查看详情弹窗 -->
  59. <uni-popup ref="popup" background-color="#fff">
  60. <view class="popup_view" v-if="info">
  61. <view class="popup_title">订单信息</view>
  62. <view class="popup_item">订单号:{{ info.orderId }}</view>
  63. <view class="popup_item">报修类型:{{ info.repairsFault.faultName }}</view>
  64. <view class="popup_item">宿舍楼栋:{{ info.repairsStudent.dormNumber }}</view>
  65. <view class="popup_item">预约时间:{{ info.orderExpectedTime }}</view>
  66. <view v-if="info.orderStatus == 1">派单时间:{{ info.orderCompleteTime }}</view>
  67. <view v-if="info.orderStatus == 2">维修时间:{{ info.orderCompleteTime }}</view>
  68. <view v-if="info.orderStatus == 3">完成时间:{{ info.orderCompleteTime }}</view>
  69. <view class="popup_item">联系电话:{{ info.repairsStudent.studentPhone }}</view>
  70. <view class="popup_item">备选电话:{{ info.repairsStudent.studentOtherPhone }}</view>
  71. <view class="popup_img">
  72. <text>故障图片:</text>
  73. <image
  74. v-for="(item, index) in info.orderImages"
  75. :key="index"
  76. :src="item ? item : '../../static/no-image.gif'"
  77. mode="aspectFit"
  78. @click="handleBig(index)"
  79. ></image>
  80. </view>
  81. </view>
  82. </uni-popup>
  83. <!-- 图片放大弹窗 -->
  84. <uni-popup ref="popup2">
  85. <view class="popup_view" v-if="info" style="padding: 0px">
  86. <image
  87. v-for="(item, index) in info.orderImages"
  88. :key="index"
  89. :src="item ? item : '../../static/no-image.gif'"
  90. v-if="index == activeIndex"
  91. ></image>
  92. </view>
  93. </uni-popup>
  94. <!-- 是否拒绝单子 -->
  95. <view class="box" v-if="dialogShows">
  96. <view id="dialog">
  97. <!-- <view class="replace">通知</view> -->
  98. <view class="uni-textarea">请填写拒绝理由</view>
  99. <u--textarea v-model="orderBack" placeholder="请输入退回理由"></u--textarea>
  100. <!-- <textarea v-modal="orderBack"></textarea> -->
  101. <view class="cancle" @click="dialogShows = false">取消</view>
  102. <view class="agree" @click="handleRefuse">确定</view>
  103. </view>
  104. </view>
  105. <!-- 是否接受单子 -->
  106. <view class="box" v-if="dialogShow">
  107. <view id="dialog">
  108. <view class="replace">选择维修时间</view>
  109. <view class="uni-textarea">
  110. <view @click="onShowDatePicker('datetime')" class="uni-list-cell-db-2">
  111. <text style="margin-left: 20rpx">{{ timeValue }}</text>
  112. </view>
  113. <mx-date-picker
  114. :show="showPicker"
  115. :type="type"
  116. :value="timeValue"
  117. :show-tips="true"
  118. :begin-text="'开始'"
  119. :end-text="'截至'"
  120. :show-seconds="true"
  121. @confirm="onSelected"
  122. @cancel="onSelected"
  123. />
  124. </view>
  125. <view class="cancle" @click="cancleclose">取消</view>
  126. <view class="agree" @click="agreeList">确定</view>
  127. </view>
  128. </view>
  129. <!-- 完成订单 -> 上传图片 -->
  130. <view class="box" v-if="uploadDialog">
  131. <view id="dialog">
  132. <view class="replace">请上传维修图片</view>
  133. <!-- 照片 -->
  134. <view class="photo">
  135. <view class="upload-image-view">
  136. <uni-file-picker
  137. limit="3"
  138. :value="imageValue"
  139. fileMediatype="image"
  140. :image-styles="imageStyles"
  141. mode="grid"
  142. @select="select"
  143. @delete="handleDelete"
  144. ></uni-file-picker>
  145. </view>
  146. </view>
  147. <view class="cancle" @click="uploadDialog = false">取消</view>
  148. <view class="agree" @click="onFinish">确定</view>
  149. </view>
  150. </view>
  151. </view>
  152. </template>
  153. <script>
  154. import * as TranslateImage from '../../utils/imageZip.js'
  155. import '../../static/upload-imgs.css'
  156. import MxDatePicker from '@/components/mx-datepicker'
  157. export default {
  158. components: {
  159. MxDatePicker,
  160. },
  161. data() {
  162. return {
  163. orderBack: '',
  164. dialogShow: false,
  165. dialogShows: false,
  166. uploadDialog: false,
  167. orderId: '',
  168. orderStatus: null,
  169. orderStatusStyle: {},
  170. orderStatusText: {},
  171. workerList: [],
  172. flag: false,
  173. pageNum: 1,
  174. pageSize: 6,
  175. total: '',
  176. title: 'picker-view',
  177. visible: true,
  178. showPicker: false,
  179. datetime: '',
  180. range: ['2022-03-27', '2022-03-27'],
  181. rangetime: '',
  182. type: 'rangetime',
  183. timeValue: '请点击选择时间',
  184. info: null,
  185. activeIndex: null,
  186. imageValue: [],
  187. ceshiData1: [],
  188. Timer: null,
  189. imgs: null,
  190. imageStyles: {
  191. width: 75,
  192. height: 75,
  193. border: {
  194. color: '#ccc',
  195. width: 1,
  196. style: 'dashed',
  197. radius: '5px',
  198. },
  199. },
  200. finishJsonPramas: null, // 完成维修
  201. }
  202. },
  203. onLoad() {
  204. this.getworkList()
  205. this.getTime()
  206. },
  207. // computed: {
  208. // orderStatusStyle: () => {
  209. // }
  210. // },
  211. methods: {
  212. // 初始化时间
  213. getTime() {
  214. let date = new Date(),
  215. year = date.getFullYear(),
  216. month = date.getMonth() + 1,
  217. day = date.getDate(),
  218. hour = date.getHours() < 10 ? '0' + date.getHours() : date.getHours(),
  219. minute = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes(),
  220. second = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
  221. month >= 1 && month <= 9 ? (month = '0' + month) : ''
  222. day >= 0 && day <= 9 ? (day = '0' + day) : ''
  223. let timer = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second
  224. this.datetime = timer
  225. },
  226. // 获取报修订单列表
  227. async getworkList() {
  228. let res = await this.$myRequest({
  229. method: 'post',
  230. url: `/order/queryAllOrderByWorkId?pageNum=${this.pageNum}&pageSize=${this.pageSize}`,
  231. // data: {
  232. // pageNum: this.pageNum,
  233. // pageSize: this.pageSize,
  234. // },
  235. })
  236. // console.log(res)
  237. if (res.status == 200) {
  238. this.total = res.data.total
  239. this.workerList = [...this.workerList, ...res.data.list]
  240. }
  241. uni.hideLoading()
  242. },
  243. // 接受订单
  244. async agreeList() {
  245. console.log(this.timeValue, ' agree')
  246. if (this.timeValue == '请点击选择时间') {
  247. uni.showToast({
  248. title: '请选择时间',
  249. })
  250. } else {
  251. this.dialogShow = false
  252. let res = await this.$myRequest({
  253. method: 'post',
  254. url: `/order/updateOrderAccept?orderId=${this.orderId}&completeTime=${this.timeValue}`,
  255. })
  256. // console.log(res)
  257. if (res.status == 200) {
  258. uni.showToast({
  259. title: '接单成功',
  260. icon: 'success',
  261. })
  262. this.workerList = []
  263. this.pageNum = 1
  264. uni.pageScrollTo({
  265. scrollTop: 0,
  266. })
  267. this.getworkList()
  268. }
  269. this.timeValue = '请点击选择时间'
  270. }
  271. },
  272. // 拒绝订单
  273. async handleRefuse() {
  274. this.dialogShows = false
  275. console.log(this.orderBack, 'orderBack')
  276. let res = await this.$myRequest({
  277. method: 'post',
  278. url: `/order/updateOrderRefused?orderId=${this.orderId}&orderBack=${this.orderBack}`,
  279. })
  280. // console.log(res)
  281. if (res.status == 200) {
  282. uni.showToast({
  283. title: '拒单成功',
  284. icon: 'success',
  285. })
  286. this.workerList = []
  287. this.pageNum = 1
  288. uni.pageScrollTo({
  289. scrollTop: 0,
  290. })
  291. this.getworkList()
  292. }
  293. },
  294. onShowDatePicker(type) {
  295. this.type = type
  296. this.showPicker = true
  297. this.timeValue = this[type]
  298. },
  299. onSelected(e) {
  300. this.showPicker = false
  301. if (e) {
  302. this[this.type] = e.value
  303. this.timeValue = e.value
  304. }
  305. },
  306. // 页面拉到底部触发事件
  307. onReachBottom() {
  308. if (this.workerList.length < this.total) {
  309. uni.showLoading({
  310. title: '数据加载中',
  311. })
  312. this.pageNum++
  313. this.getworkList()
  314. } else {
  315. this.flag = true
  316. }
  317. },
  318. // 下拉页面刷新函数
  319. onPullDownRefresh() {
  320. this.flag = false
  321. this.workerList = []
  322. this.pageNum = 1
  323. this.getworkList()
  324. setTimeout(() => {
  325. uni.stopPullDownRefresh()
  326. }, 1000)
  327. },
  328. // 控制 接受或者拒绝弹窗 打开
  329. open(item, num) {
  330. this.orderId = item.orderId
  331. this.orderStatus = item.orderStatus
  332. if (num == 1) {
  333. this.dialogShow = true
  334. } else {
  335. this.dialogShows = true
  336. }
  337. },
  338. cancleclose() {
  339. this.dialogShow = false
  340. this.timeValue = '请点击选择时间'
  341. },
  342. // 完成维修按钮回调
  343. handleFinish(orderId) {
  344. this.finishJsonPramas = orderId
  345. this.uploadDialog = true
  346. },
  347. onFinish() {
  348. // 处理图片参数数据
  349. this.imgs = this.ceshiData1.join(';')
  350. if (this.Timer != null) {
  351. clearTimeout(this.Timer)
  352. }
  353. console.log(this.imgs, 'this.imgs')
  354. if (this.imgs === '') {
  355. return uni.showToast({
  356. title: '请上传维修图片',
  357. icon: 'error',
  358. })
  359. }
  360. this.Timer = setTimeout(async () => {
  361. let res = await this.$myRequest({
  362. method: 'post',
  363. url: `/order/updateOrderFinish?orderId=${this.finishJsonPramas}&repairImage=${this.imgs}`,
  364. // data: {
  365. // repairImage: this.imgs,
  366. // orderId: this.finishJsonPramas,
  367. // },
  368. })
  369. // console.log(res)
  370. if (res.status == 200) {
  371. uni.showToast({
  372. title: res.message,
  373. icon: 'success',
  374. })
  375. this.workerList = []
  376. this.pageNum = 1
  377. uni.pageScrollTo({
  378. scrollTop: 0,
  379. })
  380. this.uploadDialog = false
  381. this.getworkList()
  382. } else {
  383. uni.showToast({
  384. title: res.message,
  385. icon: 'error',
  386. })
  387. }
  388. }, 1500)
  389. },
  390. // 选择图片压缩并上传
  391. select(e) {
  392. // console.log('选择文件:', e)
  393. e.tempFiles.forEach((item) => {
  394. TranslateImage.translate(item.path, (res) => {
  395. if (Number(res.size) > 1000000) {
  396. this.imageValue = []
  397. uni.showModal({
  398. content: `图片过大,请重新上传`,
  399. showCancel: false,
  400. success() {},
  401. })
  402. return
  403. }
  404. uni.showLoading({
  405. title: '上传中',
  406. })
  407. uni.uploadFile({
  408. url: `/baoxiu/repairApi/order/uploadImage`,
  409. filePath: res.url,
  410. name: 'orderImages',
  411. success: (uploadFileRes) => {
  412. this.ceshiData1.push(JSON.parse(uploadFileRes.data).data)
  413. const path = item.path
  414. this.imageValue.push({
  415. url: path,
  416. name: '',
  417. })
  418. uni.hideLoading()
  419. },
  420. fail: () => {
  421. uni.hideLoading()
  422. },
  423. })
  424. })
  425. })
  426. },
  427. // 删除图片回调
  428. handleDelete(e) {
  429. const num = this.imageValue.findIndex((v) => v.path === e.tempFilePath)
  430. this.imageValue.splice(num, 1)
  431. this.ceshiData1.splice(num, 1)
  432. this.uploadDialog = false
  433. },
  434. // 查看详情回调
  435. async handleLookInfo(item) {
  436. this.info = null
  437. this.$refs.popup.open()
  438. if (item.orderStatus == 0) {
  439. let res = await this.$myRequest({
  440. method: 'post',
  441. url: `/order/queryByOrderIdNotWork?orderId=${item.orderId}`,
  442. })
  443. // console.log(res)
  444. this.$nextTick(() => {
  445. this.info = res.data
  446. this.info.orderImages = this.info.orderImages.split(';')
  447. })
  448. } else {
  449. let res = await this.$myRequest({
  450. method: 'post',
  451. url: `/order/queryByOrderId?orderId=${item.orderId}`,
  452. })
  453. // console.log(res)
  454. this.$nextTick(() => {
  455. this.info = res.data
  456. this.info.orderImages = this.info.orderImages.split(';')
  457. })
  458. }
  459. },
  460. // 点击图片放大
  461. handleBig(index) {
  462. this.activeIndex = index
  463. this.$refs.popup2.open()
  464. },
  465. },
  466. }
  467. </script>
  468. <style lang="scss" scoped>
  469. .page {
  470. height: 100hv;
  471. }
  472. .head {
  473. position: fixed;
  474. top: 0;
  475. left: 0;
  476. right: 0;
  477. align-items: center;
  478. height: 350rpx;
  479. border-radius: 0rpx 0rpx 20rpx 20rpx;
  480. background-color: rgba(42, 130, 228, 1);
  481. text-align: center;
  482. padding-top: 38rpx;
  483. z-index: 2;
  484. &_title {
  485. font-size: 30rpx;
  486. font-weight: bold;
  487. color: rgba(255, 255, 255, 1);
  488. }
  489. .nav {
  490. width: 718rpx;
  491. height: 236rpx;
  492. margin-top: 78rpx;
  493. padding-top: 50rpx;
  494. background-color: rgba(255, 255, 255, 1);
  495. border-radius: 28rpx 28rpx 0rpx 0rpx;
  496. navigator {
  497. width: 108rpx;
  498. height: 120rpx;
  499. margin: 0 auto;
  500. }
  501. image {
  502. display: block;
  503. width: 96rpx;
  504. height: 96rpx;
  505. margin-left: 18rpx;
  506. }
  507. span {
  508. font-size: 26rpx;
  509. }
  510. }
  511. }
  512. .point {
  513. width: 100%;
  514. height: 14rpx;
  515. border-radius: 14rpx;
  516. background-color: rgba(229, 229, 229, 0.62);
  517. }
  518. .content {
  519. margin-top: 400rpx;
  520. padding: 0 10rpx;
  521. // height: 1200rpx;
  522. background-color: rgba(255, 255, 255, 1);
  523. .point {
  524. width: 100%;
  525. height: 14rpx;
  526. background-color: rgba(229, 229, 229, 0.62);
  527. }
  528. .list-text {
  529. margin-top: 30rpx;
  530. font-size: 24rpx;
  531. text-align: center;
  532. color: rgba(80, 80, 80, 0.27);
  533. }
  534. .content-list {
  535. position: relative;
  536. margin-top: 22rpx;
  537. padding-left: 20rpx;
  538. height: 330rpx;
  539. border-radius: 28rpx 28rpx 28rpx 28rpx;
  540. font-size: 24rpx;
  541. background-color: rgba(229, 229, 229, 0.62);
  542. .num {
  543. float: left;
  544. // margin-left: 14rpx;
  545. margin-top: 18rpx;
  546. font-weight: 700;
  547. color: rgba(42, 130, 228, 1);
  548. }
  549. .newList {
  550. float: right;
  551. margin-top: 20rpx;
  552. margin-right: 32rpx;
  553. color: rgba(212, 48, 48, 1);
  554. }
  555. .readyList {
  556. float: right;
  557. margin-top: 20rpx;
  558. margin-right: 4rpx;
  559. color: orange;
  560. }
  561. .waitList {
  562. float: right;
  563. margin-top: 20rpx;
  564. margin-right: 4rpx;
  565. color: rgba(212, 48, 48, 1);
  566. }
  567. .finishList {
  568. float: right;
  569. margin-top: 20rpx;
  570. margin-right: 4rpx;
  571. color: blue;
  572. }
  573. .refuseList {
  574. float: right;
  575. margin-top: 20rpx;
  576. margin-right: 4rpx;
  577. color: rgba(212, 48, 48, 1);
  578. }
  579. .list {
  580. float: left;
  581. width: 500rpx;
  582. // margin-left: -280rpx;
  583. // margin-top: 64rpx;
  584. span {
  585. width: 100%;
  586. text-align: left;
  587. }
  588. }
  589. }
  590. }
  591. // .point {
  592. // height: 14rpx;
  593. // background-color: rgba(229, 229, 229, 0.62);
  594. // }
  595. // .list-text {
  596. // margin-top: 30rpx;
  597. // font-size: 24rpx;
  598. // text-align: center;
  599. // color: rgba(80, 80, 80, 0.27);
  600. // }
  601. .picker-view {
  602. width: 750rpx;
  603. height: 600rpx;
  604. margin-top: 20rpx;
  605. }
  606. .item {
  607. height: 100rpx;
  608. align-items: center;
  609. justify-content: center;
  610. text-align: center;
  611. }
  612. .loc {
  613. font-size: 24rpx;
  614. width: 40rpx;
  615. height: 40rpx;
  616. vertical-align: baseline;
  617. }
  618. .list-text {
  619. margin-top: 30rpx;
  620. font-size: 24rpx;
  621. text-align: center;
  622. color: rgba(80, 80, 80, 0.27);
  623. }
  624. // .content-list {
  625. // position: relative;
  626. // margin-top: 22rpx;
  627. // padding-left: 20rpx;
  628. // height: 250rpx;
  629. // border-radius: 28rpx 28rpx 0rpx 0rpx;
  630. // font-size: 24rpx;
  631. // background-color: rgba(229, 229, 229, 0.62);
  632. // }
  633. // .list {
  634. // float: left;
  635. // margin-left: -280rpx;
  636. // margin-top: 64rpx;
  637. // }
  638. .content-list .agreeIt {
  639. position: absolute;
  640. bottom: 20rpx;
  641. right: 42rpx;
  642. line-height: 50rpx;
  643. width: 152rpx;
  644. height: 50rpx;
  645. background-color: rgba(42, 130, 228, 1);
  646. color: white;
  647. font-size: 24rpx;
  648. border-radius: 28rpx;
  649. }
  650. .agreeIt2 {
  651. position: absolute;
  652. bottom: 20rpx;
  653. right: 42rpx;
  654. line-height: 50rpx;
  655. width: 122rpx;
  656. height: 50rpx;
  657. background-color: rgba(42, 130, 228, 1);
  658. color: white;
  659. font-size: 24rpx;
  660. border-radius: 28rpx;
  661. }
  662. .content-list .refuse {
  663. position: absolute;
  664. bottom: 20rpx;
  665. right: 190rpx;
  666. line-height: 50rpx;
  667. width: 122rpx;
  668. height: 50rpx;
  669. background-color: rgba(42, 130, 228, 1);
  670. color: white;
  671. font-size: 24rpx;
  672. border-radius: 28rpx;
  673. }
  674. .isOver {
  675. width: 100%;
  676. height: 100rpx;
  677. line-height: 100rpx;
  678. text-align: center;
  679. font-size: 24rpx;
  680. color: rgba(80, 80, 80, 0.27);
  681. }
  682. #dialog {
  683. position: absolute;
  684. top: 0;
  685. right: 0;
  686. bottom: 0;
  687. left: 0;
  688. width: 80%;
  689. height: 25%;
  690. margin: auto;
  691. border-radius: 16rpx;
  692. text-align: center;
  693. background-color: white;
  694. }
  695. .uni-textarea {
  696. // margin-top: 70rpx;
  697. color: rgba(80, 80, 80, 1);
  698. }
  699. .box {
  700. position: fixed;
  701. top: 0;
  702. left: 0;
  703. width: 100%;
  704. height: 100%;
  705. background: rgba(0, 0, 0, 0.3);
  706. }
  707. .replace {
  708. margin-top: 4%;
  709. font-size: 28rpx;
  710. color: #4cd964;
  711. }
  712. .cancle {
  713. position: absolute;
  714. top: 78%;
  715. width: 50%;
  716. height: 22%;
  717. border: 2rpx solid rgba(229, 229, 229, 0.62);
  718. border-radius: 0 0 0 16rpx;
  719. line-height: 2.7;
  720. background-color: white;
  721. }
  722. .agree {
  723. position: absolute;
  724. right: 0;
  725. top: 78%;
  726. width: 50%;
  727. height: 22%;
  728. border-radius: 0 0 16rpx 0;
  729. border: 2rpx solid rgba(229, 229, 229, 0.62);
  730. line-height: 2.7;
  731. background-color: white;
  732. }
  733. // .newList {
  734. // float: right;
  735. // margin-top: 20rpx;
  736. // margin-right: 32rpx;
  737. // color: rgba(255, 141, 26, 1);
  738. // }
  739. // .readyList {
  740. // float: right;
  741. // margin-top: 20rpx;
  742. // margin-right: 4rpx;
  743. // color: rgba(212, 48, 48, 1);
  744. // }
  745. // .waitList {
  746. // float: right;
  747. // margin-top: 20rpx;
  748. // margin-right: 4rpx;
  749. // color: orange;
  750. // }
  751. // .finishList {
  752. // float: right;
  753. // margin-top: 20rpx;
  754. // margin-right: 4rpx;
  755. // color: blue;
  756. // }
  757. // .refuseList {
  758. // float: right;
  759. // margin-top: 20rpx;
  760. // margin-right: 4rpx;
  761. // color: rgba(212, 48, 48, 1);
  762. // }
  763. .popup_view {
  764. box-sizing: border-box;
  765. width: 600rpx;
  766. height: 840rpx;
  767. padding: 50rpx;
  768. overflow: scroll;
  769. image {
  770. width: 100%;
  771. height: 100%;
  772. }
  773. .popup_title {
  774. font-size: 20px;
  775. }
  776. .popup_item {
  777. margin: 20rpx 0;
  778. }
  779. .popup_img {
  780. display: flex;
  781. image {
  782. margin: 0 6rpx;
  783. width: 100rpx;
  784. height: 200rpx;
  785. background-color: #eee;
  786. }
  787. }
  788. }
  789. .photo {
  790. padding: 10px;
  791. }
  792. </style>