daichu_details.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. <template>
  2. <view class="container">
  3. <u-form ref="uForm">
  4. <u-form-item label-width='260' label="合同编号">
  5. <u-input v-model="list.contractNo" input-align="right" placeholder="" disabled />
  6. </u-form-item>
  7. <u-form-item label-width='260' label="运输方式">
  8. <u-input v-model="list.shippingType" input-align="right" placeholder="" disabled />
  9. </u-form-item>
  10. <u-form-item label-width='260' label="买方">
  11. <u-input v-model="list.buyer" input-align="right" placeholder="" disabled />
  12. </u-form-item>
  13. <u-form-item label-width='260' label="买方电话">
  14. <u-input v-model="list.buyerPhone" input-align="right" placeholder="" disabled />
  15. </u-form-item>
  16. <u-form-item label-width='260' label="卖方">
  17. <u-input v-model="list.seller" input-align="right" placeholder="" disabled />
  18. </u-form-item>
  19. <u-form-item label-width='260' label="卖方电话">
  20. <u-input v-model="list.sellerPhone" input-align="right" placeholder="" disabled />
  21. </u-form-item>
  22. <u-form-item label-width='260' label="结算方式">
  23. <u-input v-model="list.settlementMethod" input-align="right" placeholder="" disabled />
  24. </u-form-item>
  25. <u-form-item label-width='260' label="交货方式">
  26. <u-input v-model="list.deliverType1" input-align="right" placeholder="" disabled />
  27. </u-form-item>
  28. <u-form-item label-width='260' label="包装方式">
  29. <u-input v-model="list.packingMethod" input-align="right" placeholder="" disabled />
  30. </u-form-item>
  31. <u-form-item label-width='260' label="验收方式">
  32. <u-input v-model="list.acceptanceMethod" input-align="right" placeholder="" disabled />
  33. </u-form-item>
  34. <u-form-item label-width='260' label="重量(吨)">
  35. <u-input v-model="list.weight" input-align="right" placeholder="" disabled />
  36. </u-form-item>
  37. <u-form-item label-width='260' label="交货日期(起)">
  38. <u-input v-model="list.deliveryDateStart" input-align="right" placeholder="" disabled />
  39. </u-form-item>
  40. <u-form-item label-width='260' label="溢短装(%)">
  41. <u-input v-model="list.overShort" input-align="right" placeholder="" disabled />
  42. </u-form-item>
  43. <u-form-item label-width='260' label="交货日期(止)">
  44. <u-input v-model="list.deliveryDateEnd" input-align="right" placeholder="" disabled />
  45. </u-form-item>
  46. <u-form-item label-width='260' label="货源地所在地区">
  47. <view class="textCss">
  48. {{list.sourceProvince}}{{list.sourceCity}}{{list.sourceArea}}
  49. </view>
  50. </u-form-item>
  51. <u-form-item label-width='260' label="货源地详细地址">
  52. <u-input v-model="list.sourceGoods" input-align="right" placeholder="" disabled />
  53. </u-form-item>
  54. <u-form-item label-width='260' label="交货地所在地区">
  55. <view class="textCss">
  56. {{list.deliveryProvince}}{{list.deliveryCity}}{{list.deliveryArea}}
  57. </view>
  58. </u-form-item>
  59. <u-form-item label-width='260' label="交货地详细地址">
  60. <u-input v-model="list.placeDelivery" input-align="right" placeholder="" disabled />
  61. </u-form-item>
  62. <u-form-item label-width='260' label="签订日期">
  63. <u-input v-model="list.signingDate" input-align="right" placeholder="" disabled />
  64. </u-form-item>
  65. <u-form-item label-width='260' label="代储费">
  66. <view class="textCss">
  67. {{list.storageFee}}
  68. </view>
  69. </u-form-item>
  70. <u-form-item label-width='300' label="合同单价(元/吨)">
  71. <u-input v-model="list.unitContractPrice" input-align="right" placeholder="" disabled />
  72. </u-form-item>
  73. <u-form-item label-width='300' label="代储费起算重量">
  74. <u-input v-model="list.storageFeeWeight" input-align="right" placeholder="" disabled />
  75. </u-form-item>
  76. <u-form-item label-width='300' label="合同总价">
  77. <u-input v-model="list.totalContractPrice" input-align="right" placeholder="" disabled />
  78. </u-form-item>
  79. <u-form-item label-width='300' label="代储费起算日期">
  80. <u-input v-model="list.storageFeeStartdate" input-align="right" placeholder="" disabled />
  81. </u-form-item>
  82. <u-form-item label-width='300' label="代储费预计终止日期">
  83. <u-input v-model="list.storageFeeEnddate" input-align="right" placeholder="" disabled />
  84. </u-form-item>
  85. <u-form-item label-width='300' label="最终实际交易量(吨)">
  86. <u-input v-model="list.finalTradingVolume" input-align="right" placeholder="" disabled />
  87. </u-form-item>
  88. <u-form-item label-width='260' label="货名">
  89. <u-input v-model="list.contractGoodsInfo.goodsName" input-align="right" placeholder="" disabled />
  90. </u-form-item>
  91. <u-form-item label-width='260' label="水分(%)<=">
  92. <u-input v-model="list.contractGoodsInfo.waterContent" input-align="right" placeholder="" disabled />
  93. </u-form-item>
  94. <u-form-item label-width='260' label="品级">
  95. <u-input v-model="list.contractGoodsInfo.grade" input-align="right" placeholder="" disabled />
  96. </u-form-item>
  97. <u-form-item label-width='260' label="杂质(%)<=">
  98. <u-input v-model="list.contractGoodsInfo.impurity" input-align="right" placeholder="" disabled />
  99. </u-form-item>
  100. <u-form-item label-width='260' label="容重(克/升)>=">
  101. <u-input v-model="list.contractGoodsInfo.bulkDensity" input-align="right" placeholder="" disabled />
  102. </u-form-item>
  103. <u-form-item label-width='260' label="霉变粒(%)<=">
  104. <u-input v-model="list.contractGoodsInfo.mildewGrain" input-align="right" placeholder="" disabled />
  105. </u-form-item>
  106. <u-form-item label-width='260' label="热损伤(%)<=">
  107. <u-input v-model="list.contractGoodsInfo.jiaorenli" input-align="right" placeholder="" disabled />
  108. </u-form-item>
  109. <u-form-item label-width='260' label="不完善粒(%)<=">
  110. <u-input v-model="list.contractGoodsInfo.imperfectGrain" input-align="right" placeholder="" disabled />
  111. </u-form-item>
  112. <u-form-item label-width='260' label="合同收入(元)">
  113. <u-input v-model="list.contractProcessInfo.goodsNameKey" input-align="right" placeholder="" disabled />
  114. </u-form-item>
  115. <u-form-item label-width='260' label="已开发票(元)">
  116. <u-input v-model="list.contractProcessInfo.goodsName" input-align="right" placeholder="" disabled />
  117. </u-form-item>
  118. <u-form-item label-width='260' label="费用支出(元)">
  119. <u-input v-model="list.contractProcessInfo.waterContent" input-align="right" placeholder="" disabled />
  120. </u-form-item>
  121. <u-form-item label-width='260' label="未开发票(元)">
  122. <u-input v-model="list.contractProcessInfo.impurity" input-align="right" placeholder="" disabled />
  123. </u-form-item>
  124. <u-form-item label-width='260' label="未回款(元)">
  125. <u-input v-model="list.contractProcessInfo.mildewGrain" input-align="right" placeholder="" disabled />
  126. </u-form-item>
  127. <u-form-item label-width='260' label="双章原件回收情况">
  128. <u-input v-model="list.contractProcessInfo.grade" input-align="right" placeholder="" disabled />
  129. </u-form-item>
  130. <u-form-item label-width='260' label="备注信息">
  131. </u-form-item>
  132. <u-form-item>
  133. <textarea class='textarea' v-model="list.remarks" input-align="right" placeholder="" disabled />
  134. </u-form-item>
  135. <u-form-item label-width='260' label="附件">
  136. <view class="form_top">共{{imglist.length}}个附件</view>
  137. <view v-if='imglist.length>0'>
  138. <view style="justify-content: space-between;" class='flex' v-for='item in imglist'>
  139. <view class="img_item">
  140. <view class="" style="width: 16%;">
  141. <image
  142. v-if="item.type == 'pdf'"
  143. class="imgsign" src="../../../static/img/oa_office/pdf3.png"
  144. mode=""></image>
  145. <image v-else-if="item.type == 'xls'||item.type == 'xlsx'"
  146. class="imgsign" src="../../../static/img/oa_office/excle3.png"
  147. mode=""></image>
  148. <image v-else-if="item.type == 'doc'||item.type == 'docx'"
  149. class="imgsign" src="../../../static/img/oa_office/word3.png"
  150. mode=""></image>
  151. <image v-else class="imgsign" :src="item.appendixPath" mode="">
  152. </image>
  153. </view>
  154. <view class="" style="width: 70%;">
  155. <view class="char_css">{{item.appendixName}}</view>
  156. <view class="img_size">{{item.appendixSize}}</view>
  157. </view>
  158. <view style="color: #22C572;" class="img_dowload" @click="openDocument(item)">
  159. 下载
  160. </view>
  161. </view>
  162. </view>
  163. </view>
  164. </u-form-item>
  165. </u-form>
  166. <view style='padding:10px;' class='flex bottom-btn'>
  167. <u-button v-if='list.approveStatus||isSHowBtn' @click='reject' type="error" class="btn1" hover-class='none'>
  168. 驳回
  169. </u-button>
  170. <u-button v-if='list.approveStatus||isSHowBtn' @click='pass' type="success" class="btn2">通过</u-button>
  171. </view>
  172. <view v-if='show' class="shade">
  173. <view class="wrap">
  174. <view class="alert-top">
  175. <view class="title">
  176. {{title}}
  177. </view>
  178. <u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
  179. </view>
  180. <view class="u-textarea-style">
  181. <view class="right-bottom">
  182. {{auditMind.length}}/100个字
  183. </view>
  184. <u-input class="" v-model='auditMind' placeholder="请在此输入审核意见" type="textarea" height="414"
  185. maxlength="100" />
  186. </view>
  187. <view @click='close()' class="cancel">取消</view>
  188. <view @click='passSubmit()' class="confirm">确定</view>
  189. </view>
  190. </view>
  191. <view @click='imgShow=false' v-if="imgShow" class="shade">
  192. <image style='position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;' :src="url" mode=""></image>
  193. </view>
  194. </view>
  195. </template>
  196. <script>
  197. import upload from '@/components/upload.vue';
  198. import helper from '@/common/helper.js';
  199. export default {
  200. components: {
  201. upload
  202. },
  203. data() {
  204. return {
  205. isSHowBtn: true,
  206. id: "",
  207. currentPage: 1,
  208. pageSize: 10,
  209. list: {
  210. status: "",
  211. contractGoodsInfo: {},
  212. contractProcessInfo: {}
  213. },
  214. imglist: [],
  215. auditMind: '',
  216. show: false,
  217. title: '',
  218. contractNo: "",
  219. action: this.$uploadUrl,
  220. maxSize: 50 * 1024 * 1024, //限制文件大小 50M
  221. isAdd: true,
  222. imgShow: false,
  223. url: "",
  224. everyCheck: ''
  225. }
  226. },
  227. onBackPress(e) {
  228. if(this.everyCheck){
  229. uni.navigateTo({
  230. url: "/pages/task/my_task"
  231. })
  232. return true;
  233. }
  234. },
  235. onLoad(options) {
  236. this.id = options.id
  237. this.getList()
  238. this.everyCheck = uni.getStorageSync("everyTask")
  239. this.isSHowBtn = options.isShowbtn
  240. },
  241. methods: {
  242. shadeshow(url) {
  243. this.imgShow = true
  244. this.url = url
  245. },
  246. getList(id) {
  247. var that = this
  248. this.$api.doRequest('get', '/contractManagementInfo/getInfo', {
  249. id: this.id
  250. }).then(res => {
  251. if (res.data.code == 200) {
  252. this.list = res.data.data
  253. if (this.list.deliverType == 1) {
  254. this.list.deliverType1 = '我方自提'
  255. } else if (this.list.deliverType == 2) {
  256. this.list.deliverType1 = '对方送货'
  257. }
  258. this.$api.doRequest('get', '/appendix/query/getFileList', {
  259. appendixIds: that.list.addressUrl
  260. }).then(res1 => {
  261. that.imglist=res1.data.data
  262. for (let i = 0; i < that.imglist.length; i++) {//获取后缀
  263. if (that.imglist[i].appendixName) {
  264. let index = that.imglist[i].appendixName.lastIndexOf(".")
  265. that.imglist[i].type = that.imglist[i].appendixName.substring(index+1)
  266. }
  267. }
  268. })
  269. }
  270. })
  271. },
  272. filterFileType(index, lists) {
  273. if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
  274. lists.splice(index, 1);
  275. // 当前文件不支持
  276. uni.showModal({
  277. title: '暂不支持当前图片类型',
  278. showCancel: false
  279. });
  280. } else {
  281. this.isAdd = false;
  282. }
  283. },
  284. //驳回
  285. rejectSubmit() {
  286. uni.showLoading({
  287. title: '加载中',
  288. mask: true
  289. });
  290. var that = this
  291. that.$api.doRequest('post', '/newWorkflow/api/handle', {
  292. taskId: that.list.taskId,
  293. approved: false,
  294. auditMind: this.auditMind,
  295. needReapply: true,
  296. }).then(res => {
  297. that.$api.msg('驳回成功')
  298. that.show = false
  299. setTimeout(function() {
  300. if (that.everyCheck) {
  301. helper.setAudit(that.list)
  302. } else {
  303. uni.navigateBack()
  304. }
  305. uni.hideLoading()
  306. }, 1000);
  307. })
  308. },
  309. close() {
  310. this.show = false
  311. },
  312. pass() {
  313. this.show = true
  314. this.title = '审核意见(通过)'
  315. },
  316. reject() {
  317. this.show = true
  318. this.title = '驳回原因(驳回)'
  319. },
  320. //通过
  321. passSubmit() {
  322. var that = this
  323. if (this.title == '驳回原因(驳回)') {
  324. this.rejectSubmit()
  325. } else {
  326. uni.showLoading({
  327. title: '加载中',
  328. mask: true
  329. });
  330. that.$api.doRequest('post', '/newWorkflow/api/handle', {
  331. taskId: that.list.taskId,
  332. approved: true,
  333. auditMind: this.auditMind,
  334. needReapply: true,
  335. }).then(res => {
  336. that.$api.msg('通过成功')
  337. that.show = false
  338. setTimeout(function() {
  339. if (that.everyCheck) {
  340. helper.setAudit(that.list)
  341. } else {
  342. uni.navigateBack()
  343. }
  344. uni.hideLoading()
  345. }, 1000);
  346. })
  347. }
  348. },
  349. //审核方法
  350. audit(item, index, status, status2, reason) {
  351. if (index < this.list.length) {
  352. this.$api.doRequest('post', '/newWorkflow/api/handle', {
  353. taskId: item.taskId,
  354. approved: status,
  355. auditMind: reason != undefined ? '已驳回' : '34',
  356. needReapply: status2 != undefined ? true : false,
  357. }).then(res => {
  358. this.audit(this.list[index + 1], index + 1, status)
  359. })
  360. } else {
  361. if (status == true) {
  362. that.$api.msg('通过成功')
  363. this.getList()
  364. } else if (status == false) {
  365. that.$api.msg('驳回成功')
  366. this.getList()
  367. }
  368. }
  369. },
  370. }
  371. }
  372. </script>
  373. <style scoped lang="scss">
  374. .container {
  375. padding: 20rpx 20rpx 250rpx 20rpx;
  376. }
  377. .u-form {
  378. background: #fff;
  379. border-radius: 10px;
  380. padding: 0 10px;
  381. .u-form-item {
  382. line-height: 30px;
  383. padding: 5px 0;
  384. }
  385. }
  386. .content {
  387. margin-top: 30rpx;
  388. .top {
  389. display: flex;
  390. justify-content: space-between;
  391. }
  392. .content-item {
  393. border-radius: 20rpx;
  394. background: white;
  395. padding: 40rpx 20rpx;
  396. margin-bottom: 30rpx;
  397. }
  398. .title {
  399. font-size: 32rpx;
  400. font-weight: 600;
  401. color: #333333;
  402. text-align: left;
  403. margin: 20rpx 0;
  404. }
  405. .car-container {
  406. border-bottom: 2rpx solid #EEEEEE;
  407. }
  408. .car-type-item {
  409. font-size: 28rpx;
  410. margin: 20rpx 0;
  411. color: #878C9C;
  412. }
  413. .weightInfoCss {
  414. font-size: 28rpx;
  415. color: #333333;
  416. font-weight: 500;
  417. }
  418. .row {
  419. display: flex;
  420. justify-content: space-between;
  421. // .right,
  422. // input {
  423. // font-size: 28rpx;
  424. // // color: #333333;
  425. // }
  426. }
  427. .money {
  428. font-size: 32rpx;
  429. font-weight: 500;
  430. margin-bottom: 30rpx;
  431. }
  432. .moneyInfo {
  433. color: #22C572;
  434. font-size: 32rpx;
  435. }
  436. }
  437. .bottom-btn {
  438. width: 100%;
  439. position: fixed;
  440. bottom: 0;
  441. display: flex;
  442. z-index: 2;
  443. left: 0;
  444. background-color: #f8f8f8;
  445. flex-direction: column;
  446. .btn1,
  447. .btn2 {
  448. width: 100%;
  449. margin-bottom: 26rpx;
  450. border-radius: 90rpx;
  451. }
  452. .btn1 {
  453. background: white;
  454. color: #00C265;
  455. }
  456. }
  457. .topInfo {
  458. height: 210rpx;
  459. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  460. padding: 30rpx;
  461. .topInfo-item {
  462. height: 150rpx;
  463. background-color: #FFFFFF;
  464. border-radius: 20rpx;
  465. padding: 40rpx;
  466. .logo {
  467. width: 40rpx;
  468. height: 40rpx;
  469. margin-top: 8rpx;
  470. }
  471. .infoText {
  472. font-size: 36rpx;
  473. font-weight: 600;
  474. margin-left: 20rpx;
  475. }
  476. .infoData {
  477. color: #878C9C;
  478. font-size: 26rpx;
  479. margin-top: 10rpx;
  480. }
  481. }
  482. }
  483. .shade {
  484. position: fixed;
  485. top: 0;
  486. left: 0;
  487. height: 100%;
  488. width: 100%;
  489. background: rgba(0, 0, 0, 0.4);
  490. z-index: 3;
  491. .wrap {
  492. position: absolute;
  493. left: 0;
  494. top: 0;
  495. right: 0;
  496. bottom: 0;
  497. margin: auto;
  498. background: #fff;
  499. width: calc(100% - 198rpx);
  500. height: 700rpx;
  501. border-radius: 20rpx;
  502. .alert-top {
  503. padding: 33rpx;
  504. display: flex;
  505. justify-content: center;
  506. align-items: center;
  507. position: relative;
  508. }
  509. .title {
  510. font-size: 32rpx;
  511. font-weight: 600;
  512. color: #333333;
  513. }
  514. .close {
  515. position: absolute;
  516. right: 33rpx;
  517. }
  518. }
  519. }
  520. .cancel,
  521. .confirm {
  522. position: absolute;
  523. display: inline-block;
  524. width: 50%;
  525. text-align: center;
  526. bottom: 0;
  527. padding: 10px;
  528. border-top: 1px solid #eee;
  529. font-size: 34rpx;
  530. }
  531. .cancel {
  532. left: 0;
  533. border-right: 1px solid #eee;
  534. color: #AFB3BF;
  535. }
  536. .confirm {
  537. right: 0;
  538. color: #22C572;
  539. }
  540. .textCss {
  541. display: flex;
  542. justify-content: flex-end;
  543. width: 100%;
  544. text-align: right;
  545. }
  546. .textarea {
  547. margin: 20px auto;
  548. width: 100%;
  549. background: #F9F9FA;
  550. border-radius: 10px;
  551. border: 1px solid #EEEEEE;
  552. font-size: 28rpx;
  553. padding: 10px;
  554. }
  555. /deep/.u-form-item--right__content__slot{
  556. flex-wrap: wrap;
  557. }
  558. .u-textarea-style {
  559. margin: 20rpx;
  560. background: #F9F9FA;
  561. border-radius: 10px;
  562. border: 1px solid #EEEEEE;
  563. padding: 10rpx 20rpx;
  564. position: relative;
  565. .right-bottom {
  566. position: absolute;
  567. right: 20rpx;
  568. bottom: 20rpx;
  569. color: #AFB3BF;
  570. }
  571. }
  572. .img_item {
  573. display: flex;
  574. width: 100%;
  575. margin: 10px 0;
  576. padding: 0 10rpx;
  577. .imgsign{
  578. width: 25px;
  579. height: 25px;
  580. margin-top: 6px;
  581. }
  582. .char_css {
  583. font-size: 28rpx;
  584. font-weight: 600;
  585. display: -webkit-box;
  586. overflow: hidden;
  587. /*! autoprefixer: off; */
  588. -webkit-box-orient: vertical;
  589. -webkit-line-clamp: 1;
  590. -webkit-box-orient: vertical;
  591. text-overflow: ellipsis;
  592. word-break: break-all;
  593. }
  594. .img_size{
  595. color: #B0B3BF;
  596. font-size: 12px;
  597. margin-top: 5px;
  598. }
  599. .img_dowload {
  600. width: 14%;
  601. color: #22C572;
  602. text-align: right;
  603. }
  604. }
  605. </style>