contractdetail.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988
  1. <template>
  2. <view>
  3. <view class="headboxcon">
  4. <view class="contractin">
  5. <text class="tis">合同基础信息</text>
  6. <view class="tip">
  7. <text class="yu">合同名称</text>
  8. <text class="yuna">{{msg.name}}</text>
  9. </view>
  10. <view class="tip">
  11. <text class="yu">合同编号</text>
  12. <text class="yuna">{{msg.contractNo}}</text>
  13. </view>
  14. <view class="tipup">
  15. <text class="yu">合同附件</text>
  16. <view class="upbox">
  17. <u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
  18. :maxCount="fileList1.length" :deletable="false"></u-upload>
  19. </view>
  20. </view>
  21. <view class="tipup">
  22. <text class="yu">发票附件</text>
  23. <view class="upbox">
  24. <u-upload :fileList="fileList2" @afterRead="afterRead" @delete="deletePic" name="2" multiple
  25. :maxCount="fileList2.length" :deletable="false"></u-upload>
  26. </view>
  27. </view>
  28. <view class="tipup">
  29. <text class="yu">贸易合同</text>
  30. <view class="upbox">
  31. <u-upload :fileList="fileList3" @afterRead="afterRead" @delete="deletePic" name="3" multiple
  32. :maxCount="fileList3.length" :deletable="false"></u-upload>
  33. </view>
  34. </view>
  35. <view class="tip" style="border-top: 1rpx solid #E8E8E8;margin-top: 20rpx;padding-top: 30rpx;">
  36. <text class="yu">合同状态</text>
  37. <text v-if="msg.statusText=='待审核'" :style="{'color':'#D05C39;'}">{{msg.statusText}}</text>
  38. <text v-if="msg.statusText=='失败'" :style="{'color':'#1F242A'}">{{msg.statusText}}</text>
  39. <text v-if="msg.statusText=='已删除'" :style="{'color':'#1F242A'}">{{msg.statusText}}</text>
  40. <text v-if="msg.statusText=='成功'" :style="{'color':'#D8AB5A'}">{{msg.statusText}}</text>
  41. </view>
  42. <view class="" >
  43. <view class="tipup " style="display: flex;flex-direction: column;">
  44. <text class="yu">审核反馈</text>
  45. <view>
  46. <textarea :placeholder="placehodertitle"
  47. style="background-color: #F6F6F6;width: 640rpx;height: 200rpx;border-radius: 20rpx;padding: 20rpx;box-sizing: border-box;margin:20rpx 0;margin-bottom: 30rpx;"
  48. v-model="feedback" :disabled="disabled"></textarea>
  49. </view>
  50. </view>
  51. <view class="tipup">
  52. <text class="yu">反馈截图</text>
  53. <view class="upbox" style="margin-bottom: 30rpx;" v-if="state==0">
  54. <u-upload :fileList="fileList4" @afterRead="afterRead" @delete="deletePic" name="4" multiple
  55. :maxCount="6" :disabled="disabled" :deletable="delablepic"></u-upload>
  56. </view>
  57. <view class="upbox" style="margin-bottom: 30rpx;" v-if="state==1">
  58. <u-upload :fileList="fileList4" @afterRead="afterRead" @delete="deletePic" name="4" multiple
  59. :maxCount="fileList4.length" :deletable="delablepic"></u-upload>
  60. </view>
  61. </view>
  62. </view>
  63. </view>
  64. </view>
  65. <view class="acpcardlist">
  66. <view class="lable " v-for="(item,index) in msg.contractDraft.result" :key="index">
  67. <view class="radiobox" v-if="editall">
  68. <radio :value="index" :checked="item.checked" color="#D8AB5A" @click="checkBox(item.id)" />
  69. </view>
  70. <view class="acpcard" @click="billDetail(item.id,index)">
  71. <view class="allmsg">
  72. <view class="acpcont">
  73. <view class="acpname">
  74. <text style="flex: 1;">{{item.name}}</text>
  75. <view class="tag">{{item.statusText}}</view>
  76. </view>
  77. <view class="acpinfo ">
  78. <text class="pt">汇票号码:{{item.draftNo}}</text>
  79. <text class="pt">金额:¥ {{item.money}}</text>
  80. <text class="pt">服务费:¥ {{item.serviceMoney}}</text>
  81. <text class="pt">承兑人:{{item.acceptorName}}</text>
  82. </view>
  83. </view>
  84. </view>
  85. </view>
  86. </view>
  87. </view>
  88. <view class="totalmanage ">
  89. <text style="color:#68625B;font-size: 28rpx;">合计:{{msg.contractDraft.total}}份</text>
  90. <view class=" maboxtitls" @click="editall=true">
  91. <view class="managebox">
  92. <image src="/static/img/manage.png" mode="aspectFit"></image>
  93. </view>
  94. <text style="padding-left: 15rpx;">管理</text>
  95. </view>
  96. </view>
  97. <view style="padding-bottom:150rpx;"></view>
  98. <view class="safebt"></view>
  99. <!-- <view class="newbill flex1" v-if="state==1&&msg.statusText=='失败'" >
  100. <view class="newbillbtn" @click="addBill">
  101. <text>新增汇票</text>
  102. </view>
  103. </view> -->
  104. <view class="newbill flex1" v-if="state==1&&msg.statusText=='成功'" >
  105. <view class="newbillbtn" @click="addBill">
  106. <text>新增汇票</text>
  107. </view>
  108. </view>
  109. <view class="newbill flex1" v-if="state==0">
  110. <view class="choosebtn">
  111. <view class="delbtn flex1" @click="examineFail()">审核失败</view>
  112. <view class="succbtn flex1" @click="examineSuccess()">审核成功</view>
  113. </view>
  114. </view>
  115. <!-- <view class="newbill flex1" >
  116. <view class="newbillbtn" @click="tryAgain">
  117. <text>重新提交</text>
  118. </view>
  119. </view> -->
  120. <view class="newbill flex1" v-if="msg.statusText=='失败'&&state==1">
  121. <view class="choosebtn">
  122. <view class="delbtn flex1" @click="tryAgain()">重新提交</view>
  123. <view class="succbtn flex1" @click="addBill()">新增汇票</view>
  124. </view>
  125. </view>
  126. <!-- 底部删除 -->
  127. <u-popup :show="editall&&state==1" @close="closeEidt" @open="openEidt" :overlay="false">
  128. <view class="editbox">
  129. <view class="chooseall flex6">
  130. <view class="leftchoose ">
  131. <radio :checked="quan" @click="makeSureAll" color="#D8AB5A"></radio>
  132. <text>全选</text>
  133. </view>
  134. <view class="surebtn" @click="selectDown">
  135. 完成
  136. </view>
  137. </view>
  138. <view class="choosebtn">
  139. <view class="delbtn flex1" @click="dele()">刪除</view>
  140. <view class="restorebtn flex1" @click="restore()">复原</view>
  141. </view>
  142. </view>
  143. </u-popup>
  144. <!-- 底部删除 -->
  145. <u-popup :show="editall&&state==0" @close="closeEidt" @open="openEidt" :overlay="false">
  146. <view class="editbox">
  147. <view class="chooseall flex6">
  148. <view class="leftchoose ">
  149. <radio :checked="quan" @click="makeSureAll" color="#D8AB5A"></radio>
  150. <text>全选</text>
  151. </view>
  152. <view class="anniu">
  153. <text class="usa" @click="dele()">删除</text>
  154. <text class="usa" @click="restore()">复原</text>
  155. <text @click="selectDown" class="usa">完成</text>
  156. </view>
  157. </view>
  158. <view class="choosebtn">
  159. <view class="delbtn flex1" @click="examineBillFail()">审核失败</view>
  160. <view class="restorebtn flex1" @click="examineBillSuccess()">审核成功</view>
  161. </view>
  162. </view>
  163. </u-popup>
  164. </view>
  165. </template>
  166. <script>
  167. let that
  168. import {
  169. mainUrl
  170. } from '@/http/baseUrl.js';
  171. export default {
  172. data() {
  173. return {
  174. editall: false,
  175. quan: false,
  176. state: 0,
  177. fileList1: [],
  178. fileList2: [],
  179. fileList3: [],
  180. fileList4: [],
  181. msg: '',
  182. id: '',
  183. fankui: '',
  184. feedback:'',
  185. disabled:false,
  186. delablepic:true,
  187. placehodertitle:'请输入审核反馈'
  188. }
  189. },
  190. onLoad(o) {
  191. that = this
  192. if (o.id) {
  193. this.id = o.id
  194. }
  195. this.state = this.$store.state.admin
  196. if(this.state==1){
  197. this.disabled=true
  198. this.delablepic=false
  199. }
  200. },
  201. onShow() {
  202. this.init()
  203. },
  204. methods: {
  205. init() {
  206. uni.showLoading()
  207. uni.$u.http.get(`/api/Contract/${this.id}`, {
  208. custom: {
  209. auth: true
  210. }
  211. }).then((res) => {
  212. uni.hideLoading()
  213. this.msg = res
  214. this.msg.contractDraft.result.forEach(item => {
  215. item.checked = false
  216. })
  217. const newData1 = res.picList.map((item) => {
  218. return {
  219. url: item,
  220. }
  221. })
  222. this.fileList1 = newData1
  223. const newData2 = res.invoicePicList.map((item) => {
  224. return {
  225. url: item,
  226. }
  227. })
  228. this.fileList2 = newData2
  229. const newData3 = res.tradePicList.map((item) => {
  230. return {
  231. url: item,
  232. }
  233. })
  234. this.fileList3 = newData3
  235. if(res.feedbackPics){
  236. const newData4 = res.feedbackPics.map((item) => {
  237. return {
  238. url: item,
  239. }
  240. })
  241. this.fileList4 = newData4
  242. }
  243. if(this.state==1){
  244. if(res.feedback.length>0){
  245. this.feedback=res.feedback
  246. }else{
  247. this.feedback="无"
  248. }
  249. }else{
  250. if(res.feedback.length>0){
  251. this.feedback=res.feedback
  252. }else{
  253. this.placehodertitle="请输入审核反馈"
  254. }
  255. }
  256. }).catch((err) => {
  257. uni.hideLoading()
  258. console.log(err)
  259. })
  260. },
  261. openEidt() {
  262. this.editall = true
  263. },
  264. checkBox(id) {
  265. let list = this.msg.contractDraft.result
  266. list.forEach(item => {
  267. if (item.id == id) {
  268. item.checked = !item.checked
  269. }
  270. })
  271. this.msg.contractDraft.result = JSON.parse(JSON.stringify(list))
  272. },
  273. allSelect() {
  274. let list = this.msg.contractDraft.result
  275. if (this.quan) {
  276. list.forEach(item => {
  277. item.checked = true
  278. })
  279. } else {
  280. list.forEach(item => {
  281. item.checked = false
  282. })
  283. }
  284. this.msg.contractDraft.result = JSON.parse(JSON.stringify(list))
  285. },
  286. acpDetail() {
  287. uni.navigateTo({
  288. url: "/pages/alldeatil/acptdetail"
  289. })
  290. },
  291. addBill() {
  292. let obj = {
  293. contractId:this.id
  294. }
  295. uni.navigateTo({
  296. url: "/pages/alldeatil/addbill?obj="+ JSON.stringify(obj)
  297. })
  298. },
  299. billDetail(id, index) {
  300. // if(this.msg.statusText=="待审核"&&this.state==1){
  301. // return
  302. // }else{
  303. let obj = {
  304. id: id,
  305. index: index,
  306. contractId:this.id,
  307. statusText:this.msg.statusText
  308. }
  309. uni.navigateTo({
  310. url: "/pages/alldeatil/billdetail?obj=" + JSON.stringify(obj)
  311. })
  312. // }
  313. },
  314. makeSureAll() {
  315. this.quan = !this.quan
  316. this.allSelect()
  317. },
  318. selectDown() {
  319. this.editall = false
  320. this.quan = true
  321. let list = this.msg.contractDraft.result
  322. list.forEach(item => {
  323. item.checked = false
  324. })
  325. },
  326. tryAgain(){
  327. let obj=this.msg
  328. uni.navigateTo({
  329. url:"/pages/alldeatil/upcontract?obj="+JSON.stringify(obj)
  330. })
  331. },
  332. examineSuccess() {
  333. // let ids = []
  334. // ids.push(this.id)
  335. uni.showModal({
  336. title: '提示',
  337. content: "是否审核成功?",
  338. success: function(res) {
  339. if (res.confirm) {
  340. let form={
  341. id:Number(that.id),
  342. approveStatus: 1
  343. }
  344. if(that.fileList4.length>0){
  345. let feedbackPicList=[]
  346. that.fileList4.forEach(item=>{
  347. feedbackPicList.push(item.url)
  348. })
  349. form.feedbackPicList=feedbackPicList
  350. }
  351. let feedback=that.feedback
  352. if(feedback.length>0){
  353. form.feedback=feedback
  354. }
  355. // ={
  356. // feedback:feedback,
  357. // feedbackPicList:feedbackPicList
  358. // }
  359. uni.showLoading()
  360. uni.$u.http.post('api/Contract/approveContract',form, {
  361. custom: {
  362. auth: true
  363. }
  364. }).then((res) => {
  365. uni.hideLoading()
  366. that.editall = false
  367. that.quan = false
  368. that.$toast("操作成功")
  369. setTimeout(() => {
  370. that.init()
  371. }, 500)
  372. }).catch((err) => {
  373. uni.hideLoading()
  374. that.$toast(err.msg)
  375. })
  376. } else if (res.cancel) {
  377. }
  378. }
  379. })
  380. },
  381. examineFail() {
  382. uni.showModal({
  383. title: '提示',
  384. content: "是否审核失败?",
  385. success: function(res) {
  386. if (res.confirm) {
  387. let form={
  388. id:Number(that.id),
  389. approveStatus: 2
  390. }
  391. if(that.fileList4.length>0){
  392. let feedbackPicList=[]
  393. that.fileList4.forEach(item=>{
  394. feedbackPicList.push(item.url)
  395. })
  396. form.feedbackPicList=feedbackPicList
  397. }
  398. let feedback=that.feedback
  399. if(feedback.length>0){
  400. form.feedback=feedback
  401. }
  402. // ={
  403. // feedback:feedback,
  404. // feedbackPicList:feedbackPicList
  405. // }
  406. uni.showLoading()
  407. uni.$u.http.post('api/Contract/approveContract',form, {
  408. custom: {
  409. auth: true
  410. }
  411. }).then((res) => {
  412. uni.hideLoading()
  413. that.editall = false
  414. that.quan = false
  415. that.$toast("操作成功")
  416. setTimeout(() => {
  417. that.init()
  418. }, 500)
  419. }).catch((err) => {
  420. uni.hideLoading()
  421. that.$toast(err.msg)
  422. })
  423. } else if (res.cancel) {
  424. }
  425. }
  426. })
  427. },
  428. examineBillSuccess() {
  429. let ids = []
  430. this.msg.contractDraft.result.forEach(item => {
  431. if (item.checked) {
  432. ids.push(item.id)
  433. }
  434. })
  435. if (ids.length == 0) {
  436. that.$toast("请选择汇票")
  437. return
  438. }
  439. uni.showModal({
  440. title: '提示',
  441. content: "是否批量审核成功?",
  442. success: function(res) {
  443. if (res.confirm) {
  444. uni.showLoading()
  445. uni.$u.http.post('/api/Contract/contractDraft/manager', {
  446. ids: ids,
  447. operateType: 3
  448. }, {
  449. custom: {
  450. auth: true
  451. }
  452. }).then((res) => {
  453. uni.hideLoading()
  454. that.editall = false
  455. that.quan = false
  456. that.$toast("操作成功")
  457. setTimeout(() => {
  458. that.init()
  459. }, 500)
  460. }).catch((err) => {
  461. uni.hideLoading()
  462. that.$toast(err.msg)
  463. })
  464. } else if (res.cancel) {
  465. }
  466. }
  467. })
  468. },
  469. examineBillFail() {
  470. let ids = []
  471. this.msg.contractDraft.result.forEach(item => {
  472. if (item.checked) {
  473. ids.push(item.id)
  474. }
  475. })
  476. if (ids.length == 0) {
  477. this.$toast("请选择汇票")
  478. return
  479. }
  480. uni.showModal({
  481. title: '提示',
  482. content: '是否审核失败?',
  483. success: function(res) {
  484. if (res.confirm) {
  485. uni.showLoading()
  486. uni.$u.http.post('/api/Contract/contractDraft/manager', {
  487. ids: ids,
  488. operateType: 4
  489. }, {
  490. custom: {
  491. auth: true
  492. }
  493. }).then((res) => {
  494. uni.hideLoading()
  495. that.editall = false
  496. that.quan = false
  497. that.$toast("操作成功")
  498. setTimeout(() => {
  499. that.init()
  500. }, 500)
  501. }).catch((err) => {
  502. uni.hideLoading()
  503. that.$toast(err.msg)
  504. })
  505. } else if (res.cancel) {
  506. console.log('用户点击取消');
  507. }
  508. }
  509. });
  510. },
  511. dele() {
  512. let ids = []
  513. this.msg.contractDraft.result.forEach(item => {
  514. if (item.checked) {
  515. ids.push(item.id)
  516. }
  517. })
  518. if (ids.length == 0) {
  519. that.$toast("请选择汇票")
  520. return
  521. }
  522. uni.showModal({
  523. title: '提示',
  524. content: "是否删除汇票?",
  525. success: function(res) {
  526. if (res.confirm) {
  527. uni.showLoading()
  528. uni.$u.http.post('/api/Contract/contractDraft/manager', {
  529. ids: ids,
  530. operateType: 1
  531. }, {
  532. custom: {
  533. auth: true
  534. }
  535. }).then((res) => {
  536. uni.hideLoading()
  537. that.editall = false
  538. that.quan = false
  539. that.$toast("操作成功")
  540. setTimeout(() => {
  541. that.init()
  542. }, 500)
  543. }).catch((err) => {
  544. uni.hideLoading()
  545. that.$toast(err.msg)
  546. })
  547. } else if (res.cancel) {
  548. }
  549. }
  550. })
  551. },
  552. restore() {
  553. let ids = []
  554. this.msg.contractDraft.result.forEach(item => {
  555. if (item.checked) {
  556. ids.push(item.id)
  557. }
  558. })
  559. if (ids.length == 0) {
  560. that.$toast("请选择汇票")
  561. return
  562. }
  563. uni.showModal({
  564. title: '提示',
  565. content: "是否复原汇票?",
  566. success: function(res) {
  567. if (res.confirm) {
  568. uni.showLoading()
  569. uni.$u.http.post('/api/Contract/contractDraft/manager', {
  570. ids: ids,
  571. operateType: 2
  572. }, {
  573. custom: {
  574. auth: true
  575. }
  576. }).then((res) => {
  577. uni.hideLoading()
  578. that.editall = false
  579. that.quan = false
  580. that.$toast("操作成功")
  581. setTimeout(() => {
  582. that.init()
  583. }, 500)
  584. }).catch((err) => {
  585. uni.hideLoading()
  586. that.$toast(err.msg)
  587. })
  588. } else if (res.cancel) {
  589. }
  590. }
  591. })
  592. },
  593. deleContract() {
  594. let ids = []
  595. this.msg.contractDraft.result.forEach(item => {
  596. if (item.checked) {
  597. ids.push(item.id)
  598. }
  599. })
  600. if (ids.length == 0) {
  601. that.$toast("请选择汇票")
  602. return
  603. }
  604. uni.showModal({
  605. title: '提示',
  606. content: "是否删除汇票?",
  607. success: function(res) {
  608. if (res.confirm) {
  609. uni.showLoading()
  610. uni.$u.http.post('/api/Contract/contractDraft/manager', {
  611. ids: ids,
  612. operateType: 1
  613. }, {
  614. custom: {
  615. auth: true
  616. }
  617. }).then((res) => {
  618. uni.hideLoading()
  619. that.editall = false
  620. that.quan = false
  621. that.$toast("操作成功")
  622. setTimeout(() => {
  623. that.init()
  624. }, 500)
  625. }).catch((err) => {
  626. uni.hideLoading()
  627. that.$toast(err.msg)
  628. })
  629. } else if (res.cancel) {
  630. }
  631. }
  632. })
  633. },
  634. restoreContract() {
  635. let ids = []
  636. this.msg.contractDraft.result.forEach(item => {
  637. if (item.checked) {
  638. ids.push(item.id)
  639. }
  640. })
  641. if (ids.length == 0) {
  642. that.$toast("请选择汇票")
  643. return
  644. }
  645. uni.showModal({
  646. title: '提示',
  647. content: "是否复原汇票?",
  648. success: function(res) {
  649. if (res.confirm) {
  650. uni.showLoading()
  651. uni.$u.http.post('/api/Contract/contractDraft/manager', {
  652. ids: ids,
  653. operateType: 2
  654. }, {
  655. custom: {
  656. auth: true
  657. }
  658. }).then((res) => {
  659. uni.hideLoading()
  660. that.editall = false
  661. that.quan = false
  662. that.$toast("操作成功")
  663. setTimeout(() => {
  664. that.init()
  665. }, 500)
  666. }).catch((err) => {
  667. uni.hideLoading()
  668. that.$toast(err.msg)
  669. })
  670. } else if (res.cancel) {
  671. }
  672. }
  673. })
  674. },
  675. // 删除图片
  676. deletePic(event) {
  677. this[`fileList${event.name}`].splice(event.index, 1)
  678. },
  679. // 新增图片
  680. async afterRead(event) {
  681. // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
  682. let lists = [].concat(event.file)
  683. let fileListLen = this[`fileList${event.name}`].length
  684. lists.map((item) => {
  685. this[`fileList${event.name}`].push({
  686. ...item,
  687. status: 'uploading',
  688. message: '上传中'
  689. })
  690. })
  691. for (let i = 0; i < lists.length; i++) {
  692. const result = await this.uploadFilePromise(lists[i].url)
  693. let item = this[`fileList${event.name}`][fileListLen]
  694. this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
  695. status: 'success',
  696. message: '',
  697. url: result
  698. }))
  699. fileListLen++
  700. }
  701. },
  702. uploadFilePromise(url) {
  703. return new Promise((resolve, reject) => {
  704. let a = uni.uploadFile({
  705. url:mainUrl + '/api/File', // 仅为示例,非真实的接口地址
  706. filePath: url,
  707. name: 'File',
  708. header: {
  709. "User-Agent": "apifox/1.0.0 (https://www.apifox.cn)"
  710. },
  711. formData: {
  712. File: JSON.stringify(url),
  713. },
  714. success: (res) => {
  715. let request = JSON.parse(res.data)
  716. setTimeout(() => {
  717. resolve(request.data.file)
  718. }, 1000)
  719. }
  720. });
  721. })
  722. },
  723. }
  724. }
  725. </script>
  726. <style lang="scss">
  727. page {
  728. background-color: #F6F6F6 !important;
  729. }
  730. .headboxcon {
  731. margin: 20rpx 30rpx;
  732. background-color: #fff;
  733. border-radius: 20rpx;
  734. padding: 0 30rpx;
  735. box-sizing: border-box;
  736. .tis {
  737. font-size: 36rpx;
  738. font-weight: 600;
  739. display: block;
  740. padding: 30rpx 0;
  741. // width: 120rpx;
  742. padding-top: 50rpx;
  743. }
  744. .tipup {
  745. display: flex;
  746. padding-bottom: 30rpx;
  747. }
  748. .upbox {
  749. margin-left: 30rpx;
  750. // width: 490rpx;
  751. }
  752. .yu {
  753. display: block;
  754. // width: 120rpx;
  755. color: #BEBDBB;
  756. }
  757. .tip {
  758. padding-bottom: 30rpx;
  759. font-size: 28rpx;
  760. display: flex;
  761. justify-content: space-between;
  762. .yuna {}
  763. }
  764. }
  765. .searchbox {
  766. padding-left: 30rpx;
  767. box-sizing: border-box;
  768. background-color: #ECECEC;
  769. border-radius: 38rpx;
  770. // width: 688rpx;
  771. flex: 1;
  772. height: 75rpx;
  773. margin: 0 auto;
  774. display: flex;
  775. align-items: center;
  776. justify-content: center;
  777. }
  778. .acpcardlist {
  779. // margin-top: 140rpx;
  780. .acpcard {
  781. flex: 1;
  782. // width: 690rpx;
  783. // height: 333rpx;
  784. margin: 0 30rpx;
  785. // margin-top: 20rpx;
  786. background-color: #fff;
  787. border-radius: 20rpx;
  788. box-shadow: 0px 8rpx 20rpx 1rpx rgba(31, 36, 42, 0.08);
  789. .allmsg {
  790. display: flex;
  791. padding: 40rpx 30rpx;
  792. box-sizing: border-box;
  793. width: 100%;
  794. .cicle {
  795. width: 28rpx;
  796. height: 28rpx;
  797. border-radius: 50%;
  798. background-color: #D8AB5A;
  799. margin-top: 8rpx;
  800. }
  801. .acpcont {
  802. margin-left: 20rpx;
  803. width: 100%;
  804. .acpname {
  805. box-sizing: border-box;
  806. display: flex;
  807. align-items: center;
  808. justify-content: space-between;
  809. padding-bottom: 30rpx;
  810. flex-grow: 1;
  811. width: 100%;
  812. // width: 572rpx;
  813. font-size: 36rpx;
  814. font-weight: 600;
  815. .tag {
  816. margin-left: 10rpx;
  817. font-weight: 500;
  818. border-radius: 10rpx;
  819. // font-size: 36rpx;
  820. color: #BEBDBB;
  821. text-align: center;
  822. }
  823. }
  824. }
  825. .acpinfo {
  826. border-top: 1rpx solid #E8E8E8;
  827. display: flex;
  828. flex: 1;
  829. flex-direction: column;
  830. font-size: 28rpx;
  831. color: #68625B;
  832. justify-content: space-between;
  833. box-sizing: border-box;
  834. .pt {
  835. padding-top: 20rpx;
  836. }
  837. }
  838. }
  839. }
  840. }
  841. .totalmanage {
  842. margin-top: 50rpx;
  843. margin-bottom: 100rpx;
  844. // position: fixed;
  845. bottom: 0;
  846. display: flex;
  847. justify-content: space-between;
  848. align-items: center;
  849. width: 100%;
  850. padding: 0 30rpx;
  851. box-sizing: border-box;
  852. .managebox {
  853. width: 23.8rpx;
  854. height: 29.7rpx;
  855. image {
  856. width: 100%;
  857. height: 100%;
  858. }
  859. }
  860. .maboxtitls {
  861. width: 160rpx;
  862. height: 60rpx;
  863. display: flex;
  864. align-items: center;
  865. justify-content: center;
  866. border-radius: 30rpx;
  867. background-color: #D9D9D9;
  868. // line-height: 60rpx;
  869. font-size: 28rpx;
  870. box-sizing: border-box;
  871. // align-items: center;
  872. }
  873. }
  874. .newbill {
  875. background-color: #fff;
  876. position: fixed;
  877. bottom: 0;
  878. padding-top: 10rpx;
  879. padding-bottom: 40rpx;
  880. width: 100%;
  881. z-index: 999;
  882. .newbillbtn {
  883. background: linear-gradient(to right, #FFE1AD, #D8AB5A);
  884. width: 474rpx;
  885. height: 88rpx;
  886. border-radius: 43rpx;
  887. box-shadow: 0 10rpx 20rpx 1rpx rgba(179, 116, 5, 0.2);
  888. line-height: 88rpx;
  889. color: #fff;
  890. text-align: center;
  891. }
  892. }
  893. </style>