index.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155
  1. <template>
  2. <view class="invoice">
  3. <view class="invoice__tabs">
  4. <u-tabs :list="list" sticky :current="current" @change="change" active-color="#007AFF"></u-tabs>
  5. </view>
  6. <view class="invoice__content">
  7. <view class="open" v-if="current == 0">
  8. <view class="form">
  9. <u-form :model="form" ref="uForm">
  10. <u-form-item label="发票类型" label-width="130" required prop="type" >
  11. <u-radio-group v-model="form.type" @change="formTypeChange">
  12. <u-radio v-for="(item, index) in typeList" :key="index" :name="item.value">
  13. {{ item.name }}
  14. </u-radio>
  15. </u-radio-group>
  16. </u-form-item>
  17. <!-- 增值税发票 -->
  18. <template v-if="form.type == 2">
  19. <u-form-item label="申请主体" label-width="130" required prop="main">
  20. <u-radio-group v-model="form.main">
  21. <u-radio :key="index" name="2">
  22. 企业
  23. </u-radio>
  24. </u-radio-group>
  25. </u-form-item>
  26. <u-form-item label="发票抬头" label-width="130" required prop="header" >
  27. <u-input placeholder="请输入" v-model="form.header" />
  28. </u-form-item>
  29. <u-form-item label="单位税号" label-width="130" required prop="tax" >
  30. <u-input placeholder="请输入" v-model="form.tax" />
  31. </u-form-item>
  32. <u-form-item label="单位地址" label-width="130" required prop="address" >
  33. <u-input placeholder="请输入" v-model="form.address" />
  34. </u-form-item>
  35. <u-form-item label="电话号码" label-width="130" required prop="tel" >
  36. <u-input placeholder="请输入" v-model="form.tel" />
  37. </u-form-item>
  38. <u-form-item label="开户银行" label-width="130" required prop="bank" >
  39. <u-input placeholder="请输入" v-model="form.bank" />
  40. </u-form-item>
  41. <u-form-item label="银行账号" label-width="130" required prop="bankNo" >
  42. <u-input placeholder="请输入" v-model="form.bankNo" />
  43. </u-form-item>
  44. <u-form-item label="收件地址" label-width="130" required prop="recieveAddress" >
  45. <u-input placeholder="请输入" v-model="form.recieveAddress" />
  46. </u-form-item>
  47. <u-form-item label="收件人" label-width="130" required prop="name" >
  48. <u-input placeholder="请输入" v-model="form.name" />
  49. </u-form-item>
  50. <u-form-item label="收件手机" label-width="130" required prop="phone" >
  51. <u-input placeholder="请输入" v-model="form.phone" />
  52. </u-form-item>
  53. </template>
  54. <!-- 增值税发票 -->
  55. <!-- 普通发票 -->
  56. <template v-else>
  57. <u-form-item label="申请主体" label-width="130" required prop="main">
  58. <u-radio-group v-model="form.main">
  59. <u-radio v-for="(item, index) in mainList" :key="index" :name="item.value">
  60. {{ item.name }}
  61. </u-radio>
  62. </u-radio-group>
  63. </u-form-item>
  64. <u-form-item label="发票抬头" label-width="130" required prop="header" >
  65. <u-input placeholder="请输入" v-model="form.header" />
  66. </u-form-item>
  67. </template>
  68. <!-- 普通发票 -->
  69. <u-form-item label="选择订单" label-width="130" required prop="orderIds" right-icon="arrow-right" ref="orderIds">
  70. <view class="form-item" @click="selectOrderModal = true">
  71. <u-input placeholder="请选择" disabled @click="selectOrderModal = true" v-model="form.orderIds" />
  72. </view>
  73. </u-form-item>
  74. <view>
  75. <view class="check-order" v-for="(item,index) in orderList" :key="index" v-if="item.disabled">
  76. <view class="close" @click="deleteOrder(index)">
  77. <u-icon name="close-circle-fill" color="#FF2D55" size="40"></u-icon>
  78. </view>
  79. <view class="title">商品名称</view>
  80. <view class="number">订单编号</view>
  81. <view class="price">¥ 100元</view>
  82. </view>
  83. </view>
  84. </u-form>
  85. </view>
  86. <view class="order-text">
  87. <view class="order-text__label">本次申请开票金额:</view>
  88. <view class="order-text__price">¥ 999.00</view>
  89. </view>
  90. <view class="submit" @click="formSubmit">
  91. 提交申请
  92. </view>
  93. </view>
  94. <view class="." v-if="current == 1">
  95. <view class="nodata" v-if="!recordList.length">
  96. 您暂无相关发票记录哦~
  97. </view>
  98. <view class="record__list">
  99. <view class="record-item" @click="orderDetailModal = true;" v-for="(record,index) in recordList" :key="index">
  100. <view class="item__time">2021/10/29 09:30:00</view>
  101. <view class="item__content">
  102. <view class="top">
  103. <view class="state" :class="{wait:record.state == 1,refuse:record.state == 2,agree:record.state == 3}">
  104. <text v-if="record.state == 1">待审核</text>
  105. <text v-if="record.state == 2">驳回</text>
  106. <text v-if="record.state == 3">通过</text>
  107. <u-icon class="arrow" name="arrow-right" color="#ffffff" size="28"></u-icon>
  108. </view>
  109. </view>
  110. <view class="bottom">
  111. <view class="flex">
  112. <view class="text">发票类型</view>
  113. <view class="flex__auto">
  114. <text>普通发票</text>
  115. </view>
  116. </view>
  117. <view class="flex">
  118. <view class="text">申请主体</view>
  119. <view class="flex__auto">
  120. <text>个人</text>
  121. </view>
  122. </view>
  123. <view class="flex">
  124. <view class="text">发票状态</view>
  125. <view class="flex__auto">
  126. <text class="red" :class="{red:record.state != 2 ,green:record.state == 2}">未开票</text>
  127. </view>
  128. </view>
  129. <view @click.stop="showOrder(record.checked,index)">
  130. <view class="flex noborder" >
  131. <view class="text">开票订单</view>
  132. <view class="flex__auto">
  133. <text class="red">3</text>
  134. <u-icon v-if="!record.checked" name="arrow-down" color="#ccc" size="28"></u-icon>
  135. <u-icon v-if="record.checked" name="arrow-up" color="#ccc" size="28"></u-icon>
  136. </view>
  137. </view>
  138. <view class="order-list" v-if="record.checked">
  139. <view class="order-item">1.2021七大员新考施工专业人员岗提高班</view>
  140. <view class="order-item">2.2021七大员新考施工专业人员岗提高班订单名称过长换行</view>
  141. </view>
  142. </view>
  143. </view>
  144. </view>
  145. </view>
  146. </view>
  147. </view>
  148. </view>
  149. <u-popup class="modal" v-model="selectOrderModal" mode="bottom" border-radius="24">
  150. <view class="select-order">
  151. <view class="line"></view>
  152. <view class="title">选择订单</view>
  153. <u-line color="#D6D6DB" />
  154. <view>
  155. <scroll-view scroll-y="true" style="height: 500rpx;">
  156. <view>
  157. <u-checkbox-group>
  158. <view v-for="(item, index) in orderList" :key="index" >
  159. <view class="order-item">
  160. <view>
  161. <u-checkbox
  162. :disabled="item.disabled"
  163. shape="circle"
  164. :name="item.name"
  165. v-model="item.checked"
  166. >
  167. <view class="order-item__bg" :class="item.checked?'active':''" >
  168. <view>
  169. <view class="order-title">商品名称</view>
  170. <view class="order-number">订单编号</view>
  171. <view class="order-price">¥ 100元</view>
  172. </view>
  173. </view>
  174. </u-checkbox >
  175. </view>
  176. </view>
  177. </view>
  178. </u-checkbox-group>
  179. </view>
  180. </scroll-view>
  181. </view>
  182. <view class="confrim-btn">
  183. <view class="okBtn" @click="okPopup()">确定</view>
  184. </view>
  185. </view>
  186. </u-popup>
  187. <u-popup class="modal" v-model="orderDetailModal" mode="center" border-radius="40">
  188. <view class="order-detail">
  189. <view class="order-detail__content">
  190. <scroll-view scroll-y="true" style="height: 972rpx;">
  191. <view class="header">2021年10月29日 09:30:00</view>
  192. <view class="body">
  193. <view class="body__item">
  194. <view class="title">发票申请信息</view>
  195. <view class="content">
  196. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  197. <view slot="title">发票类型:</view>
  198. <text>普通发票</text>
  199. </u-cell-item>
  200. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  201. <view slot="title">申请主体:</view>
  202. <text>个人</text>
  203. </u-cell-item>
  204. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  205. <view slot="title">发票抬头:</view>
  206. <text>广东中正科技教育科技有限公司</text>
  207. </u-cell-item>
  208. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  209. <view slot="title">单位税号:</view>
  210. <text>SH123456789</text>
  211. </u-cell-item>
  212. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  213. <view slot="title">单位地址:</view>
  214. <text>广州市天河区燕岭路123号建设大厦F座 16楼过长换行</text>
  215. </u-cell-item>
  216. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  217. <view slot="title">电话号码:</view>
  218. <text>企业 拷贝</text>
  219. </u-cell-item>
  220. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  221. <view slot="title">开户银行:</view>
  222. <text>中国工商银行星星支行</text>
  223. </u-cell-item>
  224. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  225. <view slot="title">银行账号:</view>
  226. <text>SH123456789 拷贝</text>
  227. </u-cell-item>
  228. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  229. <view slot="title">收件地址:</view>
  230. <text>广州市天河区燕岭路123号</text>
  231. </u-cell-item>
  232. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  233. <view slot="title">收件人:</view>
  234. <text>李大米</text>
  235. </u-cell-item>
  236. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  237. <view slot="title">发票抬头:</view>
  238. <text>广东中正科技教育科技有限公司</text>
  239. </u-cell-item>
  240. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false" >
  241. <view slot="title">收件手机:</view>
  242. <text>13800138000</text>
  243. </u-cell-item>
  244. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false" >
  245. <view slot="title">开票订单:</view>
  246. </u-cell-item>
  247. <view class="order-list">
  248. <view class="order-item">
  249. <view class="order-title">2021七大员新考施工专业人员岗提高班</view>
  250. <view class="order-number">GDXY1234567890</view>
  251. <view class="order-price">¥ 100元</view>
  252. </view>
  253. <view class="order-item">
  254. <view class="order-title">2021七大员新考施工专业人员岗提高班</view>
  255. <view class="order-number">GDXY1234567890</view>
  256. <view class="order-price">¥ 100元</view>
  257. </view>
  258. <view class="order-item">
  259. <view class="order-title">2021七大员新考施工专业人员岗提高班</view>
  260. <view class="order-number">GDXY1234567890</view>
  261. <view class="order-price">¥ 100元</view>
  262. </view>
  263. </view>
  264. <view class="order-text">
  265. <view class="order-text__label">本次申请开票金额:</view>
  266. <view class="order-text__price">¥ 999.00</view>
  267. </view>
  268. </view>
  269. </view>
  270. <view class="body__item">
  271. <view class="title">发票申请结果</view>
  272. <view class="content">
  273. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  274. <view slot="title">审核结果:</view>
  275. <text class="text wait">待审核</text>
  276. <text class="text agree">通过</text>
  277. <text class="text refuse">驳回</text>
  278. </u-cell-item>
  279. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  280. <view slot="title">发票状态:</view>
  281. <text class="text refuse">未开票</text>
  282. <text class="text agree">已开票</text>
  283. <text class="text refuse">已退票</text>
  284. </u-cell-item>
  285. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  286. <view slot="title">发票预览:</view>
  287. <view>
  288. <image class="preview" src="/static/info_3.png"></image>
  289. <view class="download-btn" @click="download">下载电子发票</view>
  290. </view>
  291. </u-cell-item>
  292. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  293. <view slot="title">机构发票邮寄状态:</view>
  294. <text class="text">是</text>
  295. </u-cell-item>
  296. <u-cell-item :border-bottom="false" hover-class="none" :arrow="false">
  297. <view slot="title">发票邮寄快递单号:</view>
  298. <text class="text">153666689456</text>
  299. </u-cell-item>
  300. </view>
  301. </view>
  302. </view>
  303. </scroll-view>
  304. </view>
  305. <view class="order-detail__btns">
  306. <view class="btn" @click="orderDetailModal = false;">知道了</view>
  307. <view class="btn warm" @click="orderCancelModal = true;">撤销申请</view>
  308. </view>
  309. </view>
  310. </u-popup>
  311. <u-popup class="modal" v-model="orderCancelModal" mode="center" border-radius="24">
  312. <view class="order-cancel">
  313. <view class="header">
  314. 温馨提示
  315. </view>
  316. <view class="body">
  317. <view>撤销申请后,</view>
  318. <view>本次的发票申请内容将不存在。</view>
  319. <view>请慎重考虑。 </view>
  320. <view>您确定要取消本次发票申请吗?</view>
  321. </view>
  322. <view class="footer">
  323. <view class="btn cancel" @click="orderCancelModal = false;">取消</view>
  324. <view class="btn ok" @click="orderCancel()">确定</view>
  325. </view>
  326. </view>
  327. </u-popup>
  328. </view>
  329. </template>
  330. <script>
  331. import { mapGetters } from 'vuex';
  332. export default {
  333. components: {},
  334. data() {
  335. return {
  336. checkOrderList:[],
  337. recordList:[{
  338. checked:false,
  339. state:'1'
  340. },{
  341. checked:false,
  342. state:'2'
  343. },{
  344. checked:false,
  345. state:'3'
  346. }],
  347. list: [
  348. {
  349. name: '发票申请'
  350. },
  351. {
  352. name: '发票记录'
  353. }
  354. ],
  355. form:{
  356. type:'',
  357. main:'',
  358. header:'',
  359. orderIds:'',
  360. },
  361. rules: {
  362. phone: [
  363. {
  364. required: true,
  365. message: '请输入收件手机',
  366. // 可以单个或者同时写两个触发验证方式
  367. trigger: ['change'],
  368. },
  369. {
  370. validator: (rule, value, callback) => {
  371. // 上面有说,返回true表示校验通过,返回false表示不通过
  372. // this.$u.test.mobile()就是返回true或者false的
  373. return this.$u.test.mobile(value);
  374. },
  375. message: '手机号码格式不正确',
  376. // 触发器可以同时用blur和change
  377. trigger: ['change'],
  378. }
  379. ],
  380. type: [
  381. {
  382. required: true,
  383. message: '请选择发票类型',
  384. // 可以单个或者同时写两个触发验证方式
  385. trigger: ['change'],
  386. }
  387. ],
  388. main: [
  389. {
  390. required: true,
  391. message: '请选择申请主体',
  392. // 可以单个或者同时写两个触发验证方式
  393. trigger: ['change'],
  394. }
  395. ],
  396. header: [
  397. {
  398. required: true,
  399. message: '请输入发票抬头',
  400. // 可以单个或者同时写两个触发验证方式
  401. trigger: ['change'],
  402. }
  403. ],
  404. tax: [
  405. {
  406. required: true,
  407. message: '请输入单位税号',
  408. // 可以单个或者同时写两个触发验证方式
  409. trigger: ['change'],
  410. }
  411. ],
  412. address: [
  413. {
  414. required: true,
  415. message: '请输入单位地址',
  416. // 可以单个或者同时写两个触发验证方式
  417. trigger: ['change'],
  418. }
  419. ],
  420. tel: [
  421. {
  422. required: true,
  423. message: '请输入电话号码',
  424. // 可以单个或者同时写两个触发验证方式
  425. trigger: ['change'],
  426. }
  427. ],
  428. bank: [
  429. {
  430. required: true,
  431. message: '请输入开户银行',
  432. // 可以单个或者同时写两个触发验证方式
  433. trigger: ['change'],
  434. }
  435. ],
  436. bankNo: [
  437. {
  438. required: true,
  439. message: '请输入银行账号',
  440. // 可以单个或者同时写两个触发验证方式
  441. trigger: ['change'],
  442. }
  443. ],
  444. recieveAddress: [
  445. {
  446. required: true,
  447. message: '请输入收件地址',
  448. // 可以单个或者同时写两个触发验证方式
  449. trigger: ['change'],
  450. }
  451. ],
  452. name: [
  453. {
  454. required: true,
  455. message: '请输入收件人',
  456. // 可以单个或者同时写两个触发验证方式
  457. trigger: ['change'],
  458. }
  459. ],
  460. orderIds: [
  461. {
  462. required: true,
  463. message: '请选择订单',
  464. // 可以单个或者同时写两个触发验证方式
  465. trigger: ['change'],
  466. }
  467. ],
  468. },
  469. orderValue:'',
  470. orderList:[{checked:false,name:'1'},{checked:false,name:'2'},{checked:false,name:'3'},{checked:false,name:'4'}],
  471. selectOrderModal:false,
  472. orderDetailModal:false,
  473. orderCancelModal:false,
  474. current: 1,
  475. order: [],
  476. typeList:[{
  477. name:'普通发票',
  478. value:'1'
  479. },{
  480. name:'增值税专用发票',
  481. value:'2'
  482. }],
  483. mainList:[{
  484. name:'个人',
  485. value:'1'
  486. },{
  487. name:'企业',
  488. value:'2'
  489. }]
  490. };
  491. },
  492. // onPullDownRefresh() {},
  493. onLoad(option) {
  494. // this.$refs.uForm.setRules(this.rules)
  495. },
  496. onShow() {
  497. },
  498. methods: {
  499. /**
  500. * @param {Object} checkedState 显示状态
  501. * @param {Object} index 索引值
  502. * 修改开票订单列表显示状态
  503. */
  504. showOrder(showState,index) {
  505. this.$set(this.recordList[index],'checked',!showState)
  506. },
  507. /**
  508. * 发票申请提交
  509. */
  510. formSubmit() {
  511. this.$refs.uForm.validate(valid => {
  512. if(valid) {
  513. uni.showToast({
  514. title:'申请成功'
  515. })
  516. }
  517. })
  518. },
  519. /**
  520. * @param {Object} e value
  521. * 发票类型修改
  522. */
  523. formTypeChange(e) {
  524. console.log(e)
  525. if(e == '2') {
  526. this.$set(this.form,'main','2')
  527. } else {
  528. this.$set(this.form,'main','')
  529. }
  530. },
  531. /**
  532. * @param {Object} e
  533. * tabs 切换
  534. */
  535. change(e) {
  536. console.log(e)
  537. this.current = e;
  538. },
  539. radioGroupChange(e) {
  540. console.log(e)
  541. },
  542. okPopup() {
  543. this.selectOrderModal = false;
  544. let strArr = [];
  545. this.orderList.forEach((item,index) => {
  546. if(item.checked) {
  547. this.$set(this.orderList[index],'disabled',true)
  548. strArr.push(item.name)
  549. }
  550. })
  551. this.form.orderIds = strArr.join(',')
  552. this.$nextTick(() => {
  553. this.$refs.orderIds.onFieldChange()
  554. })
  555. console.log(this.$refs.orderIds)
  556. },
  557. deleteOrder(index) {
  558. this.$set(this.orderList[index],'disabled',false)
  559. this.$set(this.orderList[index],'checked',false)
  560. let strArr = [];
  561. this.orderList.forEach((item,index) => {
  562. if(item.checked) {
  563. strArr.push(item.name)
  564. }
  565. })
  566. this.form.orderIds = strArr.join(',')
  567. this.$nextTick(() => {
  568. this.$refs.orderIds.onFieldChange()
  569. })
  570. },
  571. download() {
  572. uni.downloadFile({
  573. url: 'https://gw.alipayobjects.com/os/bmw-prod/c134022a-1088-47e2-bb76-a33ec0519101.pdf?spm=a2c4g.11186623.0.0.cf863d1fUcFiPN&file=c134022a-1088-47e2-bb76-a33ec0519101.pdf',
  574. success: function (res) {
  575. console.log(999)
  576. var filePath = res.tempFilePath;
  577. uni.openDocument({
  578. filePath: filePath,
  579. showMenu: true,
  580. success: function (res) {
  581. console.log(res,'打开文档成功');
  582. },
  583. fail:function(err) {
  584. console.log(err)
  585. }
  586. });
  587. }
  588. });
  589. },
  590. orderCancel() {
  591. this.orderDetailModal = false;
  592. this.orderCancelModal = false;
  593. uni.showToast({
  594. title:'撤销成功',
  595. icon:'none'
  596. })
  597. }
  598. },
  599. computed: { ...mapGetters(['userInfo']) }
  600. };
  601. </script>
  602. <style>
  603. page {
  604. background: #eaeef1;
  605. }
  606. </style>
  607. <style scoped lang="scss">
  608. .invoice {
  609. &__tabs {
  610. width: 100%;
  611. text-align: center;
  612. position: fixed;
  613. height: 96rpx;
  614. z-index: 999;
  615. }
  616. &__content {
  617. padding-top:96rpx;
  618. .open {
  619. padding-bottom:150rpx;
  620. margin:8rpx 24rpx 0;
  621. .form {
  622. padding:24rpx;
  623. width: 702rpx;
  624. background: #FFFFFF;
  625. border-radius: 24rpx;
  626. // /deep/ .u-input__input {
  627. // text-align: right;
  628. // }
  629. .form-item {
  630. height:78rpx;
  631. display: flex;
  632. align-items: center;
  633. .text {
  634. font-size: 28rpx;
  635. width:120rpx;
  636. // color: #999999;
  637. }
  638. .content {
  639. flex:1;
  640. text-align: left;
  641. color:#bbb;
  642. }
  643. }
  644. .check-order {
  645. margin-top:20rpx;
  646. width: 654rpx;
  647. height: 168rpx;
  648. background: #F5F5F5;
  649. border: 2px solid #F5F5F5;
  650. padding:20rpx;
  651. position:relative;
  652. .close {
  653. position:absolute;
  654. right:0;
  655. top:0;
  656. }
  657. .title,.number,.price {
  658. color:#333333;
  659. margin-top:10rpx;
  660. line-height: 30rpx;
  661. font-size: 30rpx;
  662. }
  663. .number {
  664. color:#999;
  665. }
  666. }
  667. }
  668. .order-text {
  669. margin-top:16rpx;
  670. padding:0 30rpx;
  671. width: 702rpx;
  672. height: 80rpx;
  673. background: #FFFFFF;
  674. border-radius: 24rpx;
  675. display: flex;
  676. align-items: center;
  677. &__label {
  678. font-size: 24rpx;
  679. }
  680. &__price {
  681. font-size: 30rpx;
  682. margin-left:20rpx;
  683. color:#FF2D55;
  684. }
  685. }
  686. .submit {
  687. text-align: center;
  688. line-height: 80rpx;
  689. color:#fff;
  690. font-size: 30rpx;
  691. width: 526rpx;
  692. height: 80rpx;
  693. background: #007AFF;
  694. box-shadow: 0rpx 8rpx 7rpx 1rpx rgba(0, 122, 255, 0.1);
  695. border-radius: 40rpx;
  696. position:fixed;
  697. left:50%;
  698. bottom:40rpx;
  699. transform: translateX(-50%);
  700. }
  701. }
  702. .record {
  703. .nodata {
  704. padding-top:160rpx;
  705. font-size: 32rpx;
  706. text-align: center;
  707. color: #999999;
  708. }
  709. &__list {
  710. .record-item {
  711. margin:0 8rpx 10rpx;
  712. .item__time {
  713. padding:20rpx 0;
  714. text-align: center;
  715. font-size: 24rpx;
  716. color: #999999;
  717. }
  718. .item__content {
  719. background:#fff;
  720. border-radius: 16rpx;
  721. .top {
  722. padding:12rpx 0;
  723. border-bottom:1px solid #EEEEEE;
  724. .state {
  725. position:relative;
  726. text-align: center;
  727. color:#fff;
  728. font-size: 30rpx;
  729. margin:0 auto;
  730. width: 240rpx;
  731. height: 56rpx;
  732. line-height: 56rpx;
  733. background: #007AFF;
  734. border-radius: 28rpx;
  735. &.wait {
  736. background: #007AFF;
  737. }
  738. &.refuse {
  739. background: #FF3B30;
  740. }
  741. &.wait {
  742. background: #34C759;
  743. }
  744. .arrow {
  745. position:absolute;
  746. top:50%;
  747. transform: translateY(-50%);
  748. right:18rpx;
  749. }
  750. }
  751. }
  752. .bottom {
  753. padding:0 32rpx;
  754. .flex {
  755. height:80rpx;
  756. display: flex;
  757. align-items: center;
  758. border-bottom:1px solid #EEEEEE;
  759. &.noborder{
  760. border:0;
  761. }
  762. .text {
  763. font-size: 24rpx;
  764. color: #666666;
  765. }
  766. &__auto {
  767. text-align: right;
  768. flex:1;
  769. font-size: 30rpx;
  770. font-weight: bold;
  771. color: #666666;
  772. .red {
  773. color:#FF3B30;
  774. }
  775. .green {
  776. color:#34C759;
  777. }
  778. }
  779. }
  780. .order-list {
  781. padding-bottom:30rpx;
  782. .order-item {
  783. border-radius: 16rpx;
  784. padding:14rpx;
  785. background:#F5F5F5;
  786. font-size: 30rpx;
  787. color:#333;
  788. margin-top:16rpx;
  789. }
  790. }
  791. }
  792. }
  793. }
  794. }
  795. }
  796. }
  797. .modal {
  798. .select-order {
  799. .line {
  800. width: 80rpx;
  801. height: 8rpx;
  802. background: #999999;
  803. border-radius: 4rpx;
  804. margin:8rpx auto 0;
  805. }
  806. .title {
  807. margin:20rpx 0 15rpx;
  808. text-align: center;
  809. font-size: 24rpx;
  810. color: #999999;
  811. }
  812. .order-item {
  813. display: flex;
  814. align-items: center;
  815. padding: 20rpx;
  816. &__bg {
  817. width: 654rpx;
  818. height: 168rpx;
  819. background: #F5F5F5;
  820. border: 2px solid #F5F5F5;
  821. border-radius: 16rpx;
  822. padding:20rpx;
  823. &.active {
  824. background: #EBF5FF;
  825. border: 2px solid #007AFF;
  826. }
  827. .order-title,.order-number,.order-price {
  828. color:#333333;
  829. margin-top:10rpx;
  830. line-height: 30rpx;
  831. font-size: 30rpx;
  832. }
  833. .order-number {
  834. color:#999;
  835. }
  836. }
  837. }
  838. .confrim-btn {
  839. width: 750rpx;
  840. height: 98rpx;
  841. background: rgba(255, 255, 255, 0.98);
  842. display: flex;
  843. align-items: center;
  844. justify-content: center;
  845. .okBtn {
  846. text-align: center;
  847. line-height: 64rpx;
  848. color:#fff;
  849. font-size: 30rpx;
  850. width: 200rpx;
  851. height: 64rpx;
  852. background: linear-gradient(0deg, #015EEA, #00C0FA);
  853. border-radius: 32rpx;
  854. }
  855. }
  856. }
  857. .order-detail {
  858. padding:24rpx 0 0;
  859. width: 640rpx;
  860. height: 1112rpx;
  861. background: #FFFFFF;
  862. display: flex;
  863. flex-direction: column;
  864. &__content {
  865. flex:1;
  866. padding:0 24rpx;
  867. /deep/ .u-cell {
  868. padding:10rpx;
  869. &_title {
  870. color:#999;
  871. }
  872. &__value {
  873. color:#333;
  874. text-align: left;
  875. }
  876. .text {
  877. &.wait {
  878. color:#007AFF;
  879. }
  880. &.agree {
  881. color:#34C759;
  882. }
  883. &.refuse {
  884. color:#FF3B30;
  885. }
  886. }
  887. .preview {
  888. width:240rpx;
  889. height:160rpx;
  890. }
  891. .download-btn {
  892. margin:10rpx 0 0;
  893. text-align: center;
  894. line-height: 56rpx;
  895. color:#fff;
  896. font-size: 30rpx;
  897. width: 224rpx;
  898. height: 56rpx;
  899. background: #007AFF;
  900. border-radius: 16rpx;
  901. }
  902. }
  903. .header {
  904. font-size: 30rpx;
  905. font-weight: bold;
  906. color: #333333;
  907. line-height: 48rpx;
  908. }
  909. .body {
  910. &__item {
  911. border-bottom:1px solid #EEEEEE;
  912. padding-bottom:30rpx;
  913. &:last-child {
  914. border:0;
  915. }
  916. .title {
  917. margin-top:30rpx;
  918. font-size: 24rpx;
  919. color: #007AFF;
  920. line-height: 48rpx;
  921. &::before {
  922. content:'';
  923. width: 4rpx;
  924. height: 24rpx;
  925. background: #007AFF;
  926. border-radius: 2rpx;
  927. display: inline-block;
  928. margin-right:10rpx;
  929. }
  930. }
  931. .order-list {
  932. .order-item {
  933. overflow: hidden;
  934. border-radius: 16rpx;
  935. padding:0 14rpx 14rpx;
  936. background:#F5F5F5;
  937. font-size: 30rpx;
  938. color:#333;
  939. margin-top:16rpx;
  940. .order-title,.order-number,.order-price {
  941. color:#333333;
  942. margin-top:20rpx;
  943. line-height: 26rpx;
  944. font-size: 26rpx;
  945. }
  946. .order-number {
  947. color:#999;
  948. }
  949. }
  950. }
  951. .order-text {
  952. margin-top:16rpx;
  953. padding:0 30rpx;
  954. height: 80rpx;
  955. background: #F5F5F5;
  956. border-radius: 16rpx;
  957. display: flex;
  958. align-items: center;
  959. &__label {
  960. font-size: 24rpx;
  961. color:#999999;
  962. }
  963. &__price {
  964. font-size: 30rpx;
  965. margin-left:20rpx;
  966. color:#FF2D55;
  967. }
  968. }
  969. }
  970. }
  971. }
  972. &__btns {
  973. border-top:1px solid #EEEEEE;
  974. padding:0 24rpx;
  975. width: 100%;
  976. height: 140rpx;
  977. background: #FFFFFF;
  978. display: flex;
  979. justify-content: center;
  980. align-items: center;
  981. .btn {
  982. text-align: center;
  983. width: 200rpx;
  984. height: 80rpx;
  985. line-height: 80rpx;
  986. background: #F5F5F5;
  987. border-radius: 40rpx;
  988. color:#007AFF;
  989. font-size: 30rpx;
  990. margin:0 10rpx;
  991. }
  992. .warm {
  993. background: #FF3B30;
  994. color:#fff;
  995. }
  996. }
  997. }
  998. .order-cancel {
  999. width: 640rpx;
  1000. height: 439rpx;
  1001. background: #FFFFFF;
  1002. padding:40rpx;
  1003. .header {
  1004. text-align: center;
  1005. font-size: 30rpx;
  1006. font-weight: bold;
  1007. color: #333333;
  1008. line-height: 48rpx;
  1009. }
  1010. .body {
  1011. margin-top:40rpx;
  1012. view {
  1013. font-size: 30rpx;
  1014. color: #666666;
  1015. line-height: 48rpx;
  1016. }
  1017. }
  1018. .footer {
  1019. margin-top:40rpx;
  1020. display: flex;
  1021. align-items: center;
  1022. justify-content: center;
  1023. .btn {
  1024. text-align: center;
  1025. line-height: 80rpx;
  1026. font-size: 30rpx;
  1027. color:#007AFF;
  1028. width: 200rpx;
  1029. height: 80rpx;
  1030. background: #F5F5F5;
  1031. border-radius: 40rpx;
  1032. margin:0 10rpx;
  1033. &.ok {
  1034. color:#fff;
  1035. background: #007AFF;
  1036. }
  1037. }
  1038. }
  1039. }
  1040. }
  1041. }
  1042. </style>