freight_settlement_approvalcopy.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398
  1. <template>
  2. <view class="container">
  3. <view class="topInfo">
  4. <view class="topInfo-item">
  5. <view class="flex info">
  6. <view class="logo">
  7. <image src="../../../static/img/reject.png" mode="" v-if="dataobj.approveStatus == '已驳回'"
  8. style="height: 40rpx;"></image><!-- 驳回 -->
  9. <image src="../../../static/img/tongguo.png" mode="" v-if="dataobj.approveStatus == '已通过'"
  10. style="height: 40rpx;"></image><!-- 通过 -->
  11. <image src="../../../static/img/daishenhe.png" mode=""
  12. v-if="dataobj.approveStatus == '待决策人审核'|| dataobj.approveStatus == '待财务审核'"
  13. style="height: 40rpx;"></image><!-- 待审核 -->
  14. </view>
  15. <view class="infoText">{{dataobj.approveStatus?dataobj.approveStatus:dataobj.status}}</view>
  16. </view>
  17. <view class="infoData">{{dataobj.updateDate}}</view>
  18. </view>
  19. </view>
  20. <view class="content">
  21. <view class="top">
  22. <view v-if='dataobj.contractFlag=="1"'>合同编号</view>
  23. <view v-if='dataobj.contractFlag=="0"'>移库编号</view>
  24. <view>{{dataobj.contractNo}}</view>
  25. </view>
  26. <view class="person-info">
  27. <view style='display:flex;align-items: center;' class="top1">
  28. <view>收款方</view>
  29. <view class="top_info">{{dataobj.payee}}</view>
  30. </view>
  31. <view style='display:flex;align-items: center;' class="top1">
  32. <view>账号</view>
  33. <view class="top_info">{{dataobj.accountNumber}}</view>
  34. </view>
  35. <view style='display:flex;align-items: center;' class="top1">
  36. <view>开户行</view>
  37. <view class="top_info">{{dataobj.bank}}</view>
  38. </view>
  39. <view style='display:flex;align-items: center;' class="top1">
  40. <view>开户支行</view>
  41. <view class="top_info">{{dataobj.bankBranch}}</view>
  42. </view>
  43. <view style='display:flex;align-items: center;' class="top1">
  44. <view>备注</view>
  45. <view class="top_info">{{dataobj.remark}}</view>
  46. </view>
  47. <view style='display:flex;align-items: center;' class="top1">
  48. <view>合计(元)</view>
  49. <view class="top_info">{{num}}</view>
  50. </view>
  51. <view style='display:flex;align-items: center;' class="top1">
  52. <view>附件</view>
  53. <view>
  54. <view v-if='imglist2.length>0'>
  55. <view style="margin-top: 20rpx;" v-for='item in imglist2'>
  56. <view class="img_item">
  57. <view class="" style="width: 16%;">
  58. <image
  59. v-if="item.type == 'pdf'"
  60. style="width: 40px; height: 40px;" src="../../../static/img/pdf3.png"
  61. mode=""></image>
  62. <image v-else-if="item.type == 'xls'||item.type == 'xlsx'"
  63. style="width: 40px; height: 40px;" src="../../../static/img/excle3.png"
  64. mode=""></image>
  65. <image v-else-if="item.type == 'doc'||item.type == 'docx'"
  66. style="width: 40px; height: 40px;" src="../../../static/img/word3.png"
  67. mode=""></image>
  68. <image v-else style="width: 40px; height: 40px;" :src="item.appendixPath" mode="">
  69. </image>
  70. </view>
  71. <view class="" style="width: 70%;">
  72. <view class="char_css">{{item.appendixName}}</view>
  73. <view class="">{{item.appendixSize}}</view>
  74. </view>
  75. <view class="img_dowload" @click="openDocument(item)">下载</view>
  76. </view>
  77. </view>
  78. </view>
  79. </view>
  80. </view>
  81. </view>
  82. <view class="car-container">
  83. <view v-for="item1 in list" class="car-container-item">
  84. <view style='display:flex;align-items: center;' class="top1">
  85. <view>运输编号</view>
  86. <view class="top_info">{{item1.taskNo}}</view>
  87. </view>
  88. <view style='display:flex;align-items: center;' class="top1">
  89. <view>发货地</view>
  90. <view class="top_info">
  91. {{item1.startPrivate}}{{item1.startCity}}{{item1.startArea}}{{item1.startDetailedAddress}}
  92. </view>
  93. </view>
  94. <view style='display:flex;align-items: center;' class="top1">
  95. <view>收货地</view>
  96. <view class="top_info">
  97. {{item1.endPrivate}}{{item1.endCity}}{{item1.endArea}}{{item1.endDetailedAddress}}</view>
  98. </view>
  99. <view v-for="item in item1.tranSettlementReportList" class="car-container-item">
  100. <view class="car-num title" v-if="item.tranTypeKey== '1'">{{item.carNo}} ({{item.tranCarNo}})
  101. </view>
  102. <view class="car-num title" v-if="item.tranTypeKey== '2'">车厢号{{item.boxNo}}</view>
  103. <view class="car-num title" v-if="item.tranTypeKey== '3'&&item.shipType== '散船'">
  104. 仓位号{{item.boxNo}}
  105. </view>
  106. <view class="car-num title" v-if="item.tranTypeKey== '3'&&item.shipType== '集装箱'">
  107. 箱号{{item.boxNo}}
  108. </view>
  109. <view class="car-type-item">
  110. <view class="left">装</view>
  111. <view class="textInfo">{{item.loadingWeight}}吨</view>
  112. </view>
  113. <view class="car-type-item">
  114. <view class="center">卸</view>
  115. <view class="textInfo">{{item.unloadingWeight}}吨</view>
  116. </view>
  117. <view class="car-type-item">
  118. <view class="right">结</view>
  119. <view class="textInfo">{{item.settlementWeight}}吨</view>
  120. </view>
  121. <view class="car-type-item">
  122. <view class="left">预</view>
  123. <view class="textInfo">{{item.transportPrice}}元/吨</view>
  124. </view>
  125. <view class="car-type-item">
  126. <view class="center">算</view>
  127. <view class="textInfo">{{item.settlementPrice}}元/吨</view>
  128. </view>
  129. <view class="car-type-item">
  130. <view v-if='item.deductionAmount>=0' class="right">扣</view>
  131. <view v-if='item.deductionAmount<0' class="right">加</view>
  132. <view v-if='item.deductionAmount<0' class="textInfo">
  133. {{item.deductionAmount?-item.deductionAmount:0}}元</view>
  134. <view v-if='item.deductionAmount>=0' class="textInfo">
  135. {{item.deductionAmount?-item.deductionAmount:0}}元</view>
  136. </view>
  137. <view class="car-type-item">
  138. <view class="left">服</view>
  139. <view class="textInfo">{{item.serviceCharge}}元</view>
  140. </view>
  141. <view class="car-type-item">
  142. <view class="center">税</view>
  143. <view class="textInfo">{{item.taxPoint}}元</view>
  144. </view>
  145. <view class="car-type-item">
  146. <view class="right">实</view>
  147. <view class="textInfo">{{item.amountActuallyPaid}}元</view>
  148. </view>
  149. <view class="car-type-item">
  150. <view class="left">合</view>
  151. <view class="textInfo">{{item.totalPayable}}元</view>
  152. </view>
  153. </view>
  154. </view>
  155. </view>
  156. </view>
  157. <u-form ref="uForm">
  158. <view class="form_top">流程</view>
  159. <view class="content2">
  160. <view v-for="(item,index) in auditList" :key='index' class="audit">
  161. <view class="row" v-if='item.desc!="_PLACEHOLDER_"'>
  162. <view class="row-left">
  163. <view class="item1">
  164. <view class="item-content">{{item.operatorTitle}}</view>
  165. <view v-if="item.status=='success'" class='status success'>
  166. <u-icon name="checkmark" color="#2979ff" size="24"></u-icon>
  167. </view>
  168. <view v-if="item.status=='error'" class='status error'>
  169. <u-icon name="close" color="rgb(245, 108, 108)" size="24"></u-icon>
  170. </view>
  171. <view v-if="item.status=='question'" class='status question'>
  172. <u-icon name="question" color="#f9ae3d" size="24"></u-icon>
  173. </view>
  174. </view>
  175. </view>
  176. <view class="row-right">
  177. <view class="right-item">
  178. <view class="item2">
  179. <view class="name">{{item.desc}}
  180. </view>
  181. <!-- <view class='time'>{{item.updateDate}}</view> -->
  182. <view v-if="item.status=='success'" class="status success">
  183. {{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
  184. v-if='!item.commonStaffs1&&index!=0'>已审核</text>
  185. </view>
  186. <view v-if="item.status=='error'" class="status error">
  187. {{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
  188. v-if='!item.commonStaffs1'>{{item.workflowHistoricTasks ? "已驳回":''}}</text>
  189. </view>
  190. <view v-if="item.status=='question'" class="status question">
  191. {{item.commonStaffs1?item.staffscontent:''}}<text
  192. v-if='!item.commonStaffs1'>未审核</text>
  193. </view>
  194. <!-- <view class="status success">吕波(已审核)</view> -->
  195. </view>
  196. <view v-if='index==0||item.workflowHistoricTasks&&item.workflowHistoricTasks.length>0'
  197. class='time'>
  198. {{item.updateDate}}
  199. </view>
  200. </view>
  201. <view v-if='item.auditMind' class="right-content">
  202. {{item.auditMind}}
  203. </view>
  204. </view>
  205. <view v-if='item.commonStaffs1' class="right">
  206. <u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'" size="28">
  207. </u-icon>
  208. </view>
  209. </view>
  210. <view v-if='item.showflow' style='padding:10px 0 0 50px;'>
  211. <view class='row2'>
  212. <view v-for='item1 in item.commonStaffs1' style='margin:5px;text-align:center;'>
  213. <view class="item-content">
  214. <u-icon v-if='item1.status' name="checkmark" color="#fff" size="14"></u-icon>
  215. <u-icon v-if='!item1.status' name="question" color="#f9ae3d" size="14"></u-icon>
  216. </view>
  217. <view class="name">{{item1.staffName}}</view>
  218. </view>
  219. </view>
  220. </view>
  221. <view class="row-line" v-if="index!= auditList.length - 1 &&item.desc!='_PLACEHOLDER_'"></view>
  222. </view>
  223. </view>
  224. </u-form>
  225. <view v-if='show' class="shade">
  226. <view class="wrap">
  227. <view class="alert-top">
  228. <view class="title">
  229. {{title}}
  230. </view>
  231. <u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
  232. </view>
  233. <view class="u-textarea-style">
  234. <view class="right-bottom">
  235. {{auditMind.length}}/1000个字
  236. </view>
  237. <u-input class="" v-model='auditMind' placeholder="请在此输入审核意见" type="textarea" height="414"
  238. maxlength="1000" />
  239. </view>
  240. <view @click='close()' class="cancel">取消</view>
  241. <view @click='passSubmit()' class="confirm">确定</view>
  242. </view>
  243. </view>
  244. <u-toast ref="uToast" />
  245. <view style='padding:10px;' class='flex bottom-btn'>
  246. <u-button v-if='isSHowBtn' @click='reject' type="error" class="btn1" hover-class='none'>驳回</u-button>
  247. <u-button v-if='isSHowBtn' @click='pass' type="success" class="btn2">通过</u-button>
  248. </view>
  249. </view>
  250. </template>
  251. <script>
  252. import helper from '@/common/helper.js';
  253. export default {
  254. data() {
  255. return {
  256. isSHowBtn: true,
  257. currentPage: 1,
  258. pageSize: 10,
  259. list: {
  260. approveStatus: "",
  261. },
  262. dataobj: {},
  263. title: '',
  264. num: 0,
  265. show: false,
  266. height: 200,
  267. auditList: [],
  268. auditMind: '',
  269. autoHeight: true,
  270. border: false,
  271. everyCheck: '',
  272. customerName: "", //客户
  273. shippingAddress: "", //发货地址
  274. receivingAddress: "", //收货地址
  275. imglist: [], //存
  276. imglist2: [], //展示
  277. }
  278. },
  279. onBackPress(e) {
  280. if (this.everyCheck) {
  281. uni.navigateTo({
  282. url: "/pages/task/my_task"
  283. })
  284. return true;
  285. }
  286. },
  287. onLoad(options) {
  288. this.id = options.id
  289. this.everyCheck = uni.getStorageSync("everyTask")
  290. this.isSHowBtn = options.isShowbtn
  291. this.getList()
  292. },
  293. watch: {
  294. imglist: {
  295. handler: function() {
  296. this.$api.doRequest('get', 'appendix/query/getFileList', {
  297. appendixIds: this.imglist.toString()
  298. }).then(res => {
  299. this.imglist2 = res.data.data
  300. for (let i = 0; i < this.imglist2.length; i++) {
  301. if (this.imglist2[i].appendixName) {
  302. this.imglist2[i].type = this.imglist2[i].appendixName.split(".")[1]
  303. }
  304. }
  305. })
  306. },
  307. deep: true
  308. }
  309. },
  310. methods: {
  311. openDocument(src) {
  312. uni.downloadFile({
  313. url: src.appendixPath,
  314. success: function(res) {
  315. var filePath = res.tempFilePath;
  316. uni.openDocument({
  317. filePath: filePath,
  318. showMenu: true,
  319. success: function(res) {
  320. console.log('打开文档成功');
  321. }
  322. });
  323. }
  324. });
  325. },
  326. getList() {
  327. var that = this
  328. this.$api.doRequest('get', '/expenseInfo/ExpenseInfo', {
  329. id: this.id
  330. }).then(res => {
  331. if (res.data.code == 200) {
  332. this.dataobj = res.data.data
  333. if(this.dataobj.freightAddressUrl){
  334. this.imglist = this.dataobj.freightAddressUrl.split(',')
  335. }
  336. if (res.data.data.tranTaskInfoList.length > 0) {
  337. this.num = 0
  338. for (var i = 0; i < res.data.data.tranTaskInfoList.length; i++) {
  339. if (res.data.data.tranTaskInfoList[i].tranSettlementReportList) {
  340. var data = res.data.data.tranTaskInfoList[i].tranSettlementReportList
  341. for (var q = 0; q < data.length; q++) {
  342. if (data[q].totalPayable) {
  343. this.num += data[q].totalPayable
  344. }
  345. }
  346. }
  347. }
  348. }
  349. this.num = this.num.toFixed(2)
  350. this.list = res.data.data.tranTaskInfoList
  351. // console.log(this.list, 124)
  352. // 查流程
  353. this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
  354. businessCode: 'FEIYONGYUNFEI-APPROVE',
  355. tmpCompId: uni.getStorageSync('pcUserInfo').compId
  356. }).then(res1 => {
  357. this.$api.doRequest('get', '/commonUser/getHis', {
  358. workflowId: res1.data.data[0].id,
  359. businessKey: this.id,
  360. // branch:that.list[0].jointVentureParties?that.list[0].jointVentureParties:'zt'
  361. }).then(response => {
  362. uni.hideLoading()
  363. for (let i = 0; i < response.data.data.length; i++) {
  364. this.$set(response.data.data[i], 'status', 'question')
  365. console.log(response.data.data[i].workflowHistoricTasks, i)
  366. if (response.data.data[i].commonStaffs) {
  367. response.data.data[i].showflow = false
  368. response.data.data[i].operatorTitle = response.data.data[i]
  369. .desc.substring(0, 2)
  370. response.data.data[i].operatorName = response.data.data[i]
  371. .desc
  372. response.data.data[i].staffscontent = '共' + response.data
  373. .data[i].commonStaffs.length + '人,当前审核' + response.data
  374. .data[i].workflowHistoricTasks.length + '人'
  375. if (response.data.data[i].workflowHistoricTasks && response
  376. .data.data[i].workflowHistoricTasks.length > 0) {
  377. if (response.data.data[i].workflowHistoricTasks
  378. .length != response.data.data[i].commonStaffs
  379. .length) {
  380. // response.data.data[i].status='question'
  381. this.$set(response.data.data[i], 'status',
  382. 'question')
  383. } else {
  384. this.$set(response.data.data[i], 'status',
  385. 'success')
  386. // response.data.data[i].status='success'
  387. }
  388. response.data.data[i].workflowlen = response.data.data[
  389. i].workflowHistoricTasks.length
  390. var workflowdata = response.data.data[i]
  391. .workflowHistoricTasks
  392. var staffsdata = response.data.data[i].commonStaffs
  393. for (let q = 0; q < staffsdata.length; q++) {
  394. staffsdata[q].status = false
  395. staffsdata[q].staffTitle = staffsdata[q].staffName
  396. for (let k = 0; k < workflowdata.length; k++) {
  397. if (staffsdata[q].staffId == workflowdata[k]
  398. .operatorId) {
  399. staffsdata[q].status = true
  400. }
  401. }
  402. }
  403. }
  404. response.data.data[i].commonStaffs1 = response.data.data[i]
  405. .commonStaffs
  406. } else {
  407. if (response.data.data[i].workflowHistoricTasks && response
  408. .data.data[i].workflowHistoricTasks.length > 0) {
  409. var len = response.data.data[i].workflowHistoricTasks
  410. .length - 1
  411. if (response.data.data[i].workflowHistoricTasks[len]
  412. .approved) {
  413. this.$set(response.data.data[i], 'status',
  414. 'success')
  415. } else {
  416. this.$set(response.data.data[i], 'status', 'error')
  417. }
  418. response.data.data[i].operatorTitle = response.data
  419. .data[i].workflowHistoricTasks[len].operatorName
  420. .substring(response.data.data[i]
  421. .workflowHistoricTasks[0].operatorName.length -
  422. 2)
  423. response.data.data[i].operatorName = response.data
  424. .data[i].workflowHistoricTasks[len].operatorName
  425. var time = new Date(response.data.data[i]
  426. .workflowHistoricTasks[len].claimTime)
  427. .getTime()
  428. response.data.data[i].updateDate = this.$u.timeFormat(
  429. time, 'mm.dd hh:MM')
  430. response.data.data[i].auditMind = response.data.data[i]
  431. .workflowHistoricTasks[len].auditMind
  432. } else {
  433. this.$set(response.data.data[i], 'status', 'question')
  434. // response.data.data[i].status='question'
  435. if (response.data.data[i].desc == '总经理助理审核') {
  436. response.data.data[i].operatorTitle = '总助'
  437. } else if (response.data.data[i].desc == '杜大光审核') {
  438. response.data.data[i].operatorTitle = '大光'
  439. } else {
  440. response.data.data[i].operatorTitle = response.data
  441. .data[i].desc.substring(0, 2)
  442. }
  443. response.data.data[i].operatorName = response.data
  444. .data[i].desc
  445. var time1 = new Date(response.data.data[i].updateDate)
  446. .getTime()
  447. response.data.data[i].updateDate = this.$u.timeFormat(
  448. time1, 'mm.dd hh:MM')
  449. response.data.data[i].auditMind = ''
  450. }
  451. }
  452. }
  453. console.log(response.data.data)
  454. for (let i = 0; i < response.data.data.length; i++) {
  455. if (response.data.data[i].status == "error") {
  456. this.auditCheck = "error"
  457. break;
  458. } else if (response.data.data[i].status == "question") {
  459. this.auditCheck = "question"
  460. break;
  461. } else {
  462. this.auditCheck = "success"
  463. }
  464. }
  465. this.auditList = response.data.data
  466. var time2 = new Date(this.dataobj.createDate).getTime()
  467. var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
  468. this.auditList.unshift({
  469. operatorTitle: this.dataobj.creater.substring(0, 2),
  470. operatorName: this.dataobj.creater,
  471. updateDate: time3,
  472. auditMind: '',
  473. desc: '发起申请',
  474. showflow: false,
  475. commonStaffs1: null,
  476. commonStaffs: null,
  477. workflowHistoricTasks: [],
  478. status: 'success'
  479. })
  480. })
  481. })
  482. }
  483. })
  484. // this.$api.doRequest('get', '/tranSettlementReport/getInfo', {
  485. // id: this.id
  486. // }).then(res => {
  487. // this.contractNo = res.data.data.contractNo
  488. // this.carId = res.data.data.carId
  489. // this.customerName = res.data.data.customer
  490. // this.shippingAddress = res.data.data.send
  491. // this.receivingAddress = res.data.data.receive
  492. // if (res.data.code == 200) {
  493. // this.$api.doRequest('get', '/tranSettlementReport/getTranSettlementReport', {
  494. // compId: "2710b21efc1e4393930c5dc800010dc4",
  495. // currentPage: this.currentPage,
  496. // pageSize: this.pageSize,
  497. // contractNo: this.contractNo,
  498. // carId: this.carId,
  499. // }).then(res => {
  500. // if (res.data.code == 200) {
  501. // this.list = res.data.data.records[0]
  502. // console.log(this.list, 124)
  503. // }
  504. // })
  505. // }
  506. // })
  507. },
  508. close() {
  509. this.show = false
  510. },
  511. pass() {
  512. this.show = true
  513. this.title = '审核意见(通过)'
  514. },
  515. reject() {
  516. this.show = true
  517. this.title = '驳回原因(驳回)'
  518. },
  519. // 驳回
  520. rejectSubmit() {
  521. var that = this
  522. if (!this.auditMind) {
  523. this.$api.msg('驳回原因不能为空!')
  524. } else {
  525. this.show = false
  526. uni.showModal({
  527. content: "是否确定驳回?",
  528. showCancel: true,
  529. confirmText: '确定',
  530. success: function(res) {
  531. if (res.confirm) {
  532. that.audit(that.dataobj, 0, false, true, that.auditMind)
  533. }
  534. }
  535. })
  536. }
  537. },
  538. //通过
  539. passSubmit() {
  540. var that = this
  541. if (this.title == '驳回原因(驳回)') {
  542. this.rejectSubmit()
  543. } else {
  544. this.show = false
  545. uni.showModal({
  546. content: "是否确定通过?",
  547. showCancel: true,
  548. confirmText: '确定',
  549. success: function(res) {
  550. if (res.confirm) {
  551. that.audit(that.dataobj, 0, true, 2, that.auditMind)
  552. }
  553. }
  554. })
  555. }
  556. },
  557. //审核方法
  558. audit(list, index, status, status2, reason) {
  559. uni.showLoading({
  560. title: "审核中"
  561. })
  562. let that = this
  563. if (this.list) {
  564. this.$api.doRequest('post', '/newWorkflow/api/handle', {
  565. taskId: list.taskId,
  566. approved: status,
  567. auditMind: this.auditMind,
  568. needReapply: status2 != undefined ? true : false,
  569. }).then(res => {
  570. if (status == true) {
  571. this.$api.msg('通过成功')
  572. } else if (status == false) {
  573. this.$api.msg('驳回成功')
  574. }
  575. setTimeout(function() {
  576. if (that.everyCheck) {
  577. helper.setAudit(that.list[0])
  578. } else {
  579. uni.navigateBack()
  580. }
  581. }, 1000);
  582. })
  583. }
  584. },
  585. }
  586. }
  587. </script>
  588. <style scoped lang="scss">
  589. .container {
  590. margin: 10rpx;
  591. padding: 20rpx 20rpx 230rpx 20rpx;
  592. }
  593. .u-form {
  594. margin-bottom: 20rpx;
  595. background: #fff;
  596. border-radius: 10px;
  597. padding: 30rpx 10px;
  598. .u-form-item {
  599. line-height: 30px;
  600. padding: 0px 0;
  601. font-size: 26rpx;
  602. color: #878C9C;
  603. }
  604. }
  605. .content {
  606. .top {
  607. display: flex;
  608. justify-content: space-between;
  609. border-radius: 20rpx;
  610. background: white;
  611. padding: 30rpx 20rpx;
  612. font-size: 36rpx;
  613. margin-top: 20rpx;
  614. }
  615. .top1 {
  616. // display: flex;
  617. justify-content: space-between;
  618. align-items: center;
  619. border-radius: 20rpx;
  620. background: white;
  621. padding: 10rpx 20rpx;
  622. font-size: 30rpx;
  623. margin-top: 20rpx;
  624. }
  625. .top_info {
  626. margin: 10rpx 0;
  627. width: 70%;
  628. text-align: right;
  629. }
  630. .title {
  631. font-size: 28rpx;
  632. font-weight: 600;
  633. color: #333333;
  634. text-align: left;
  635. margin-bottom: 30rpx;
  636. }
  637. .car-container {
  638. // border-bottom: 2rpx solid #EEEEEE;
  639. }
  640. .car-container-item {
  641. background: white;
  642. padding: 10rpx 20rpx;
  643. border-radius: 20rpx;
  644. margin: 20rpx 0;
  645. }
  646. .car-type-item {
  647. display: inline-flex;
  648. // justify-content: center;
  649. width: 33.33%;
  650. margin-bottom: 40rpx;
  651. }
  652. .title {
  653. font-size: 36rpx;
  654. }
  655. }
  656. .bottom-btn {
  657. width: 100%;
  658. position: fixed;
  659. bottom: 0;
  660. display: flex;
  661. z-index: 2;
  662. left: 0;
  663. background-color: #f8f8f8;
  664. flex-direction: column;
  665. .btn1,
  666. .btn2 {
  667. width: 100%;
  668. margin-bottom: 26rpx;
  669. border-radius: 90rpx;
  670. }
  671. .btn1 {
  672. background: white;
  673. color: #00C265;
  674. }
  675. }
  676. .submit {
  677. width: 40%;
  678. background: #22C572;
  679. border-radius: 10rpx;
  680. }
  681. .left {
  682. background: #FEECE6;
  683. color: #FE6430;
  684. }
  685. .center {
  686. background: #EBEEFA;
  687. color: #5C76DF;
  688. }
  689. .right {
  690. background: #E9F8F0;
  691. color: #22C572;
  692. }
  693. .left,
  694. .center,
  695. .right {
  696. width: 50rpx;
  697. height: 50rpx;
  698. text-align: center;
  699. line-height: 50rpx;
  700. border-radius: 10rpx;
  701. }
  702. .textInfo {
  703. margin: 6rpx 0 0 10rpx;
  704. }
  705. .topInfo {
  706. height: 210rpx;
  707. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  708. padding: 30rpx;
  709. .topInfo-item {
  710. height: 158rpx;
  711. background-color: #FFFFFF;
  712. border-radius: 20rpx;
  713. padding: 40rpx;
  714. .logo {
  715. width: 40rpx;
  716. height: 40rpx;
  717. margin-top: 8rpx;
  718. }
  719. .infoText {
  720. font-size: 36rpx;
  721. font-weight: 600;
  722. margin-left: 20rpx;
  723. }
  724. .infoData {
  725. color: #878C9C;
  726. font-size: 26rpx;
  727. margin-top: 10rpx;
  728. }
  729. }
  730. }
  731. .shade {
  732. position: fixed;
  733. top: 0;
  734. left: 0;
  735. height: 100%;
  736. width: 100%;
  737. background: rgba(0, 0, 0, 0.4);
  738. z-index: 3;
  739. .wrap {
  740. position: absolute;
  741. left: 0;
  742. top: 0;
  743. right: 0;
  744. bottom: 0;
  745. margin: auto;
  746. background: #fff;
  747. width: calc(100% - 198rpx);
  748. height: 700rpx;
  749. border-radius: 20rpx;
  750. .alert-top {
  751. padding: 33rpx;
  752. display: flex;
  753. justify-content: center;
  754. align-items: center;
  755. position: relative;
  756. }
  757. .title {
  758. font-size: 32rpx;
  759. font-weight: 600;
  760. color: #333333;
  761. }
  762. .close {
  763. position: absolute;
  764. right: 33rpx;
  765. }
  766. }
  767. }
  768. .cancel,
  769. .confirm {
  770. position: absolute;
  771. display: inline-block;
  772. width: 50%;
  773. text-align: center;
  774. bottom: 0;
  775. padding: 10px;
  776. border-top: 1px solid #eee;
  777. font-size: 34rpx;
  778. }
  779. .cancel {
  780. left: 0;
  781. border-right: 1px solid #eee;
  782. color: #AFB3BF;
  783. }
  784. .confirm {
  785. right: 0;
  786. color: #22C572;
  787. }
  788. .u-textarea-style {
  789. margin: 20rpx;
  790. background: #F9F9FA;
  791. border-radius: 10px;
  792. border: 1px solid #EEEEEE;
  793. padding: 10rpx 20rpx;
  794. position: relative;
  795. .right-bottom {
  796. position: absolute;
  797. right: 20rpx;
  798. bottom: 20rpx;
  799. color: #AFB3BF;
  800. }
  801. }
  802. /deep/.u-input__textarea {
  803. height: 300rpx !important;
  804. }
  805. .person-info {
  806. background: white;
  807. padding: 20rpx 0;
  808. border-radius: 20rpx;
  809. // margin-bottom: 50rpx;
  810. margin: 20rpx 0;
  811. .tit {
  812. font-size: 36rpx;
  813. }
  814. }
  815. .c-row {
  816. display: -webkit-box;
  817. display: -webkit-flex;
  818. display: flex;
  819. -webkit-box-align: center;
  820. -webkit-align-items: center;
  821. align-items: center;
  822. padding: 20rpx 30rpx;
  823. position: relative;
  824. }
  825. .c-row1 {
  826. // display: -webkit-box;
  827. // display: -webkit-flex;
  828. // display: flex;
  829. -webkit-box-align: center;
  830. -webkit-align-items: center;
  831. align-items: center;
  832. padding: 20rpx 30rpx;
  833. position: relative;
  834. }
  835. .container {
  836. padding: 20rpx 20rpx 250rpx 20rpx;
  837. }
  838. .u-form {
  839. margin-bottom: 20rpx;
  840. background: #fff;
  841. border-radius: 10px;
  842. padding: 30rpx 10px;
  843. .u-form-item {
  844. line-height: 30px;
  845. padding: 0px 0;
  846. font-size: 26rpx;
  847. color: #878C9C;
  848. }
  849. }
  850. .content {
  851. margin-top: 30rpx;
  852. .top {
  853. display: flex;
  854. justify-content: space-between;
  855. }
  856. .content-item {
  857. border-radius: 20rpx;
  858. background: white;
  859. padding: 40rpx 20rpx;
  860. margin-bottom: 30rpx;
  861. }
  862. .title {
  863. font-size: 32rpx;
  864. font-weight: 600;
  865. color: #333333;
  866. text-align: left;
  867. margin: 20rpx 0;
  868. }
  869. .car-container {
  870. border-bottom: 2rpx solid #EEEEEE;
  871. }
  872. .car-type-item {
  873. font-size: 28rpx;
  874. margin: 20rpx 0;
  875. color: #878C9C;
  876. }
  877. .weightInfoCss {
  878. font-size: 28rpx;
  879. color: #333333;
  880. font-weight: 500;
  881. }
  882. .row {
  883. display: flex;
  884. justify-content: space-between;
  885. // .right,
  886. // input {
  887. // font-size: 28rpx;
  888. // // color: #333333;
  889. // }
  890. }
  891. .money {
  892. font-size: 32rpx;
  893. font-weight: 500;
  894. margin-bottom: 30rpx;
  895. }
  896. .moneyInfo {
  897. color: #22C572;
  898. font-size: 32rpx;
  899. }
  900. }
  901. .bottom-btn {
  902. width: 100%;
  903. position: fixed;
  904. bottom: 0;
  905. display: flex;
  906. z-index: 2;
  907. left: 0;
  908. background-color: #f8f8f8;
  909. flex-direction: column;
  910. .btn1,
  911. .btn2 {
  912. width: 100%;
  913. margin-bottom: 26rpx;
  914. border-radius: 90rpx;
  915. }
  916. .btn1 {
  917. background: white;
  918. color: #00C265;
  919. }
  920. }
  921. .topInfo {
  922. height: 210rpx;
  923. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  924. padding: 30rpx;
  925. .topInfo-item {
  926. height: 150rpx;
  927. background-color: #FFFFFF;
  928. border-radius: 20rpx;
  929. padding: 40rpx;
  930. .logo {
  931. width: 40rpx;
  932. height: 40rpx;
  933. margin-top: 8rpx;
  934. }
  935. .infoText {
  936. font-size: 36rpx;
  937. font-weight: 600;
  938. margin-left: 20rpx;
  939. }
  940. .infoData {
  941. color: #878C9C;
  942. font-size: 26rpx;
  943. margin-top: 10rpx;
  944. }
  945. }
  946. }
  947. .shade {
  948. position: fixed;
  949. top: 0;
  950. left: 0;
  951. height: 100%;
  952. width: 100%;
  953. background: rgba(0, 0, 0, 0.4);
  954. z-index: 3;
  955. .wrap {
  956. position: absolute;
  957. left: 0;
  958. top: 0;
  959. right: 0;
  960. bottom: 0;
  961. margin: auto;
  962. background: #fff;
  963. width: calc(100% - 198rpx);
  964. height: 700rpx;
  965. border-radius: 20rpx;
  966. .alert-top {
  967. padding: 33rpx;
  968. display: flex;
  969. justify-content: center;
  970. align-items: center;
  971. position: relative;
  972. }
  973. .title {
  974. font-size: 32rpx;
  975. font-weight: 600;
  976. color: #333333;
  977. }
  978. .close {
  979. position: absolute;
  980. right: 33rpx;
  981. }
  982. }
  983. }
  984. .cancel,
  985. .confirm {
  986. position: absolute;
  987. display: inline-block;
  988. width: 50%;
  989. text-align: center;
  990. bottom: 0;
  991. padding: 10px;
  992. border-top: 1px solid #eee;
  993. font-size: 34rpx;
  994. }
  995. .cancel {
  996. left: 0;
  997. border-right: 1px solid #eee;
  998. color: #AFB3BF;
  999. }
  1000. .confirm {
  1001. right: 0;
  1002. color: #22C572;
  1003. }
  1004. .textarea {
  1005. margin: 18rpx auto;
  1006. width: 100%;
  1007. background: #F9F9FA;
  1008. border-radius: 10px;
  1009. border: 1px solid #EEEEEE;
  1010. font-size: 28rpx;
  1011. padding: 10px;
  1012. }
  1013. .textCss {
  1014. display: flex;
  1015. justify-content: flex-end;
  1016. width: 100%;
  1017. text-align: right;
  1018. color: #333333;
  1019. }
  1020. .u-textarea-style {
  1021. margin: 20rpx;
  1022. background: #F9F9FA;
  1023. border-radius: 10px;
  1024. border: 1px solid #EEEEEE;
  1025. padding: 10rpx 20rpx;
  1026. position: relative;
  1027. height: 240px;
  1028. /deep/.uni-textarea-textarea {
  1029. width: 80%;
  1030. }
  1031. .right-bottom {
  1032. position: absolute;
  1033. right: 20rpx;
  1034. bottom: 20rpx;
  1035. color: #AFB3BF;
  1036. }
  1037. }
  1038. /deep/.u-input__textarea {
  1039. height: 300rpx !important;
  1040. }
  1041. .content2 {
  1042. background: white;
  1043. margin: 20rpx 0;
  1044. border-radius: 20rpx;
  1045. padding: 20rpx;
  1046. .row {
  1047. display: flex;
  1048. .row-left {
  1049. display: flex;
  1050. align-items: center;
  1051. .item1 {
  1052. position: relative;
  1053. .item-content {
  1054. background: #617AE0;
  1055. width: 44px;
  1056. height: 44px;
  1057. border-radius: 22px;
  1058. line-height: 44px;
  1059. text-align: center;
  1060. font-size: 15px;
  1061. color: #fff;
  1062. }
  1063. .status {
  1064. position: absolute;
  1065. border-radius: 50%;
  1066. padding: 0px 2px;
  1067. right: -3px;
  1068. bottom: -3px;
  1069. background: #fff;
  1070. }
  1071. .status.success {
  1072. border: 1px solid rgb(60, 156, 255);
  1073. }
  1074. .status.error {
  1075. border: 1px solid rgb(245, 108, 108);
  1076. }
  1077. .status.question {
  1078. border: 1px solid #f9ae3d;
  1079. }
  1080. }
  1081. }
  1082. .row-right {
  1083. width: 80%;
  1084. // color: #B0B1B5;
  1085. margin-top: 10px;
  1086. .right-content {
  1087. background: #F2F3F7;
  1088. margin-left: 10px;
  1089. margin-top: 10px;
  1090. padding: 10px;
  1091. border-radius: 5px;
  1092. color: #B0B1B5;
  1093. }
  1094. .right-item {
  1095. display: flex;
  1096. justify-content: space-between;
  1097. .time {
  1098. color: #999;
  1099. }
  1100. .item2 {
  1101. margin-left: 20rpx;
  1102. margin-top: -7px;
  1103. .name {
  1104. font-size: 28rpx;
  1105. font-weight: 800;
  1106. margin-bottom: 4px;
  1107. }
  1108. .status.success {
  1109. color: #6CC48C;
  1110. }
  1111. .status.error {
  1112. color: rgb(245, 108, 108);
  1113. }
  1114. .status.question {
  1115. color: #f9ae3d;
  1116. }
  1117. }
  1118. }
  1119. }
  1120. }
  1121. .row2 {
  1122. display: flex;
  1123. .item-content {
  1124. background: #22C572;
  1125. width: 30px;
  1126. height: 30px;
  1127. border-radius: 50%;
  1128. line-height: 30px;
  1129. text-align: center;
  1130. font-size: 12px;
  1131. color: #fff;
  1132. padding: 0 2px;
  1133. margin: 0 auto;
  1134. }
  1135. .status {
  1136. position: absolute;
  1137. top: 0;
  1138. right: 0;
  1139. }
  1140. }
  1141. .row-line {
  1142. width: 1px;
  1143. height: 30px;
  1144. background: #F2F2F2;
  1145. margin: 10rpx 50rpx;
  1146. }
  1147. .audit {
  1148. margin-top: 20rpx;
  1149. }
  1150. }
  1151. .form_top {
  1152. border-bottom: 1px solid #C7CAD6;
  1153. padding-bottom: 10px;
  1154. font-size: 30rpx;
  1155. font-weight: 600;
  1156. }
  1157. .form_view {
  1158. margin: 20rpx 0;
  1159. border-radius: 20rpx;
  1160. background: #F9F9FA;
  1161. padding: 30rpx 20rpx;
  1162. }
  1163. .label_css {
  1164. font-size: 26rpx;
  1165. color: #878C9C;
  1166. }
  1167. .input_css {
  1168. font-size: 20rpx;
  1169. }
  1170. /deep/.uni-textarea-wrapper {
  1171. height: 200px;
  1172. }
  1173. // .fujian_title{
  1174. // font-size: 34rpx;
  1175. // margin-top: 20px;
  1176. // font-weight: 600;
  1177. // // margin-left: 10px;
  1178. // }
  1179. .headInfo {
  1180. height: 100px;
  1181. background-color: #FFFFFF;
  1182. margin-bottom: 20rpx;
  1183. border-radius: 10px;
  1184. padding: 30rpx 10px;
  1185. display: flex;
  1186. .headInfo_left {
  1187. width: 10%;
  1188. line-height: 60px;
  1189. text-align: center;
  1190. }
  1191. .headInfo_middle {
  1192. width: 70%;
  1193. padding-left: 10px;
  1194. }
  1195. .headInfo_right {
  1196. width: 20%;
  1197. line-height: 60px;
  1198. .char_a {
  1199. color: #22C572;
  1200. }
  1201. .char_b {
  1202. color: #FE6430;
  1203. }
  1204. .char_c {
  1205. color: #FB2323;
  1206. }
  1207. .char_a,
  1208. .char_b,
  1209. .char_c {
  1210. font-size: 16px;
  1211. }
  1212. }
  1213. .adopt {
  1214. position: absolute;
  1215. right: 30px;
  1216. top: 60px;
  1217. .adopt_img {
  1218. width: 90px;
  1219. height: 90px;
  1220. }
  1221. }
  1222. .headInfo_title {
  1223. font-size: 19px;
  1224. color: #333333;
  1225. font-weight: 600;
  1226. }
  1227. .headInfo_No {
  1228. color: #878C9C;
  1229. font-size: 13px;
  1230. margin-top: 10px;
  1231. }
  1232. }
  1233. .img_item {
  1234. display: flex;
  1235. width: 100%;
  1236. margin: 10px 0;
  1237. padding: 0 10rpx;
  1238. .imgsign {
  1239. width: 25px;
  1240. height: 25px;
  1241. margin-top: 6px;
  1242. }
  1243. .char_css {
  1244. font-size: 28rpx;
  1245. font-weight: 600;
  1246. display: -webkit-box;
  1247. overflow: hidden;
  1248. /*! autoprefixer: off; */
  1249. -webkit-box-orient: vertical;
  1250. -webkit-line-clamp: 1;
  1251. -webkit-box-orient: vertical;
  1252. text-overflow: ellipsis;
  1253. word-break: break-all;
  1254. }
  1255. .img_size {
  1256. color: #B0B3BF;
  1257. font-size: 12px;
  1258. margin-top: 5px;
  1259. }
  1260. .img_dowload {
  1261. width: 14%;
  1262. color: #22C572;
  1263. text-align: right;
  1264. }
  1265. }
  1266. </style>