freight_settlement_approvalcopy.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395
  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. this.imglist = this.dataobj.freightAddressUrl.split(',')
  334. if (res.data.data.tranTaskInfoList.length > 0) {
  335. this.num = 0
  336. for (var i = 0; i < res.data.data.tranTaskInfoList.length; i++) {
  337. if (res.data.data.tranTaskInfoList[i].tranSettlementReportList) {
  338. var data = res.data.data.tranTaskInfoList[i].tranSettlementReportList
  339. for (var q = 0; q < data.length; q++) {
  340. if (data[q].totalPayable) {
  341. this.num += data[q].totalPayable
  342. }
  343. }
  344. }
  345. }
  346. }
  347. this.num = this.num.toFixed(2)
  348. this.list = res.data.data.tranTaskInfoList
  349. // console.log(this.list, 124)
  350. // 查流程
  351. this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
  352. businessCode: 'FEIYONGYUNFEI-APPROVE',
  353. tmpCompId: uni.getStorageSync('pcUserInfo').compId
  354. }).then(res1 => {
  355. this.$api.doRequest('get', '/commonUser/getHis', {
  356. workflowId: res1.data.data[0].id,
  357. businessKey: this.id,
  358. // branch:that.list[0].jointVentureParties?that.list[0].jointVentureParties:'zt'
  359. }).then(response => {
  360. uni.hideLoading()
  361. for (let i = 0; i < response.data.data.length; i++) {
  362. this.$set(response.data.data[i], 'status', 'question')
  363. console.log(response.data.data[i].workflowHistoricTasks, i)
  364. if (response.data.data[i].commonStaffs) {
  365. response.data.data[i].showflow = false
  366. response.data.data[i].operatorTitle = response.data.data[i]
  367. .desc.substring(0, 2)
  368. response.data.data[i].operatorName = response.data.data[i]
  369. .desc
  370. response.data.data[i].staffscontent = '共' + response.data
  371. .data[i].commonStaffs.length + '人,当前审核' + response.data
  372. .data[i].workflowHistoricTasks.length + '人'
  373. if (response.data.data[i].workflowHistoricTasks && response
  374. .data.data[i].workflowHistoricTasks.length > 0) {
  375. if (response.data.data[i].workflowHistoricTasks
  376. .length != response.data.data[i].commonStaffs
  377. .length) {
  378. // response.data.data[i].status='question'
  379. this.$set(response.data.data[i], 'status',
  380. 'question')
  381. } else {
  382. this.$set(response.data.data[i], 'status',
  383. 'success')
  384. // response.data.data[i].status='success'
  385. }
  386. response.data.data[i].workflowlen = response.data.data[
  387. i].workflowHistoricTasks.length
  388. var workflowdata = response.data.data[i]
  389. .workflowHistoricTasks
  390. var staffsdata = response.data.data[i].commonStaffs
  391. for (let q = 0; q < staffsdata.length; q++) {
  392. staffsdata[q].status = false
  393. staffsdata[q].staffTitle = staffsdata[q].staffName
  394. for (let k = 0; k < workflowdata.length; k++) {
  395. if (staffsdata[q].staffId == workflowdata[k]
  396. .operatorId) {
  397. staffsdata[q].status = true
  398. }
  399. }
  400. }
  401. }
  402. response.data.data[i].commonStaffs1 = response.data.data[i]
  403. .commonStaffs
  404. } else {
  405. if (response.data.data[i].workflowHistoricTasks && response
  406. .data.data[i].workflowHistoricTasks.length > 0) {
  407. var len = response.data.data[i].workflowHistoricTasks
  408. .length - 1
  409. if (response.data.data[i].workflowHistoricTasks[len]
  410. .approved) {
  411. this.$set(response.data.data[i], 'status',
  412. 'success')
  413. } else {
  414. this.$set(response.data.data[i], 'status', 'error')
  415. }
  416. response.data.data[i].operatorTitle = response.data
  417. .data[i].workflowHistoricTasks[len].operatorName
  418. .substring(response.data.data[i]
  419. .workflowHistoricTasks[0].operatorName.length -
  420. 2)
  421. response.data.data[i].operatorName = response.data
  422. .data[i].workflowHistoricTasks[len].operatorName
  423. var time = new Date(response.data.data[i]
  424. .workflowHistoricTasks[len].claimTime)
  425. .getTime()
  426. response.data.data[i].updateDate = this.$u.timeFormat(
  427. time, 'mm.dd hh:MM')
  428. response.data.data[i].auditMind = response.data.data[i]
  429. .workflowHistoricTasks[len].auditMind
  430. } else {
  431. this.$set(response.data.data[i], 'status', 'question')
  432. // response.data.data[i].status='question'
  433. if (response.data.data[i].desc == '总经理助理审核') {
  434. response.data.data[i].operatorTitle = '总助'
  435. } else if (response.data.data[i].desc == '杜大光审核') {
  436. response.data.data[i].operatorTitle = '大光'
  437. } else {
  438. response.data.data[i].operatorTitle = response.data
  439. .data[i].desc.substring(0, 2)
  440. }
  441. response.data.data[i].operatorName = response.data
  442. .data[i].desc
  443. var time1 = new Date(response.data.data[i].updateDate)
  444. .getTime()
  445. response.data.data[i].updateDate = this.$u.timeFormat(
  446. time1, 'mm.dd hh:MM')
  447. response.data.data[i].auditMind = ''
  448. }
  449. }
  450. }
  451. console.log(response.data.data)
  452. for (let i = 0; i < response.data.data.length; i++) {
  453. if (response.data.data[i].status == "error") {
  454. this.auditCheck = "error"
  455. break;
  456. } else if (response.data.data[i].status == "question") {
  457. this.auditCheck = "question"
  458. break;
  459. } else {
  460. this.auditCheck = "success"
  461. }
  462. }
  463. this.auditList = response.data.data
  464. var time2 = new Date(this.dataobj.createDate).getTime()
  465. var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
  466. this.auditList.unshift({
  467. operatorTitle: this.dataobj.creater.substring(0, 2),
  468. operatorName: this.dataobj.creater,
  469. updateDate: time3,
  470. auditMind: '',
  471. desc: '发起申请',
  472. showflow: false,
  473. commonStaffs1: null,
  474. commonStaffs: null,
  475. workflowHistoricTasks: [],
  476. status: 'success'
  477. })
  478. })
  479. })
  480. }
  481. })
  482. // this.$api.doRequest('get', '/tranSettlementReport/getInfo', {
  483. // id: this.id
  484. // }).then(res => {
  485. // this.contractNo = res.data.data.contractNo
  486. // this.carId = res.data.data.carId
  487. // this.customerName = res.data.data.customer
  488. // this.shippingAddress = res.data.data.send
  489. // this.receivingAddress = res.data.data.receive
  490. // if (res.data.code == 200) {
  491. // this.$api.doRequest('get', '/tranSettlementReport/getTranSettlementReport', {
  492. // compId: "2710b21efc1e4393930c5dc800010dc4",
  493. // currentPage: this.currentPage,
  494. // pageSize: this.pageSize,
  495. // contractNo: this.contractNo,
  496. // carId: this.carId,
  497. // }).then(res => {
  498. // if (res.data.code == 200) {
  499. // this.list = res.data.data.records[0]
  500. // console.log(this.list, 124)
  501. // }
  502. // })
  503. // }
  504. // })
  505. },
  506. close() {
  507. this.show = false
  508. },
  509. pass() {
  510. this.show = true
  511. this.title = '审核意见(通过)'
  512. },
  513. reject() {
  514. this.show = true
  515. this.title = '驳回原因(驳回)'
  516. },
  517. // 驳回
  518. rejectSubmit() {
  519. var that = this
  520. if (!this.auditMind) {
  521. this.$api.msg('驳回原因不能为空!')
  522. } else {
  523. this.show = false
  524. uni.showModal({
  525. content: "是否确定驳回?",
  526. showCancel: true,
  527. confirmText: '确定',
  528. success: function(res) {
  529. if (res.confirm) {
  530. that.audit(that.dataobj, 0, false, true, that.auditMind)
  531. }
  532. }
  533. })
  534. }
  535. },
  536. //通过
  537. passSubmit() {
  538. var that = this
  539. if (this.title == '驳回原因(驳回)') {
  540. this.rejectSubmit()
  541. } else {
  542. this.show = false
  543. uni.showModal({
  544. content: "是否确定通过?",
  545. showCancel: true,
  546. confirmText: '确定',
  547. success: function(res) {
  548. if (res.confirm) {
  549. that.audit(that.dataobj, 0, true, 2, that.auditMind)
  550. }
  551. }
  552. })
  553. }
  554. },
  555. //审核方法
  556. audit(list, index, status, status2, reason) {
  557. uni.showLoading({
  558. title: "审核中"
  559. })
  560. let that = this
  561. if (this.list) {
  562. this.$api.doRequest('post', '/newWorkflow/api/handle', {
  563. taskId: list.taskId,
  564. approved: status,
  565. auditMind: this.auditMind,
  566. needReapply: status2 != undefined ? true : false,
  567. }).then(res => {
  568. if (status == true) {
  569. this.$api.msg('通过成功')
  570. } else if (status == false) {
  571. this.$api.msg('驳回成功')
  572. }
  573. setTimeout(function() {
  574. if (that.everyCheck) {
  575. helper.setAudit(that.list[0])
  576. } else {
  577. uni.navigateBack()
  578. }
  579. }, 1000);
  580. })
  581. }
  582. },
  583. }
  584. }
  585. </script>
  586. <style scoped lang="scss">
  587. .container {
  588. margin: 10rpx;
  589. padding: 20rpx 20rpx 230rpx 20rpx;
  590. }
  591. .u-form {
  592. margin-bottom: 20rpx;
  593. background: #fff;
  594. border-radius: 10px;
  595. padding: 30rpx 10px;
  596. .u-form-item {
  597. line-height: 30px;
  598. padding: 0px 0;
  599. font-size: 26rpx;
  600. color: #878C9C;
  601. }
  602. }
  603. .content {
  604. .top {
  605. display: flex;
  606. justify-content: space-between;
  607. border-radius: 20rpx;
  608. background: white;
  609. padding: 30rpx 20rpx;
  610. font-size: 36rpx;
  611. margin-top: 20rpx;
  612. }
  613. .top1 {
  614. // display: flex;
  615. justify-content: space-between;
  616. align-items: center;
  617. border-radius: 20rpx;
  618. background: white;
  619. padding: 10rpx 20rpx;
  620. font-size: 30rpx;
  621. margin-top: 20rpx;
  622. }
  623. .top_info {
  624. margin: 10rpx 0;
  625. width: 70%;
  626. text-align: right;
  627. }
  628. .title {
  629. font-size: 28rpx;
  630. font-weight: 600;
  631. color: #333333;
  632. text-align: left;
  633. margin-bottom: 30rpx;
  634. }
  635. .car-container {
  636. // border-bottom: 2rpx solid #EEEEEE;
  637. }
  638. .car-container-item {
  639. background: white;
  640. padding: 10rpx 20rpx;
  641. border-radius: 20rpx;
  642. margin: 20rpx 0;
  643. }
  644. .car-type-item {
  645. display: inline-flex;
  646. // justify-content: center;
  647. width: 33.33%;
  648. margin-bottom: 40rpx;
  649. }
  650. .title {
  651. font-size: 36rpx;
  652. }
  653. }
  654. .bottom-btn {
  655. width: 100%;
  656. position: fixed;
  657. bottom: 0;
  658. display: flex;
  659. z-index: 2;
  660. left: 0;
  661. background-color: #f8f8f8;
  662. flex-direction: column;
  663. .btn1,
  664. .btn2 {
  665. width: 100%;
  666. margin-bottom: 26rpx;
  667. border-radius: 90rpx;
  668. }
  669. .btn1 {
  670. background: white;
  671. color: #00C265;
  672. }
  673. }
  674. .submit {
  675. width: 40%;
  676. background: #22C572;
  677. border-radius: 10rpx;
  678. }
  679. .left {
  680. background: #FEECE6;
  681. color: #FE6430;
  682. }
  683. .center {
  684. background: #EBEEFA;
  685. color: #5C76DF;
  686. }
  687. .right {
  688. background: #E9F8F0;
  689. color: #22C572;
  690. }
  691. .left,
  692. .center,
  693. .right {
  694. width: 50rpx;
  695. height: 50rpx;
  696. text-align: center;
  697. line-height: 50rpx;
  698. border-radius: 10rpx;
  699. }
  700. .textInfo {
  701. margin: 6rpx 0 0 10rpx;
  702. }
  703. .topInfo {
  704. height: 210rpx;
  705. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  706. padding: 30rpx;
  707. .topInfo-item {
  708. height: 158rpx;
  709. background-color: #FFFFFF;
  710. border-radius: 20rpx;
  711. padding: 40rpx;
  712. .logo {
  713. width: 40rpx;
  714. height: 40rpx;
  715. margin-top: 8rpx;
  716. }
  717. .infoText {
  718. font-size: 36rpx;
  719. font-weight: 600;
  720. margin-left: 20rpx;
  721. }
  722. .infoData {
  723. color: #878C9C;
  724. font-size: 26rpx;
  725. margin-top: 10rpx;
  726. }
  727. }
  728. }
  729. .shade {
  730. position: fixed;
  731. top: 0;
  732. left: 0;
  733. height: 100%;
  734. width: 100%;
  735. background: rgba(0, 0, 0, 0.4);
  736. z-index: 3;
  737. .wrap {
  738. position: absolute;
  739. left: 0;
  740. top: 0;
  741. right: 0;
  742. bottom: 0;
  743. margin: auto;
  744. background: #fff;
  745. width: calc(100% - 198rpx);
  746. height: 700rpx;
  747. border-radius: 20rpx;
  748. .alert-top {
  749. padding: 33rpx;
  750. display: flex;
  751. justify-content: center;
  752. align-items: center;
  753. position: relative;
  754. }
  755. .title {
  756. font-size: 32rpx;
  757. font-weight: 600;
  758. color: #333333;
  759. }
  760. .close {
  761. position: absolute;
  762. right: 33rpx;
  763. }
  764. }
  765. }
  766. .cancel,
  767. .confirm {
  768. position: absolute;
  769. display: inline-block;
  770. width: 50%;
  771. text-align: center;
  772. bottom: 0;
  773. padding: 10px;
  774. border-top: 1px solid #eee;
  775. font-size: 34rpx;
  776. }
  777. .cancel {
  778. left: 0;
  779. border-right: 1px solid #eee;
  780. color: #AFB3BF;
  781. }
  782. .confirm {
  783. right: 0;
  784. color: #22C572;
  785. }
  786. .u-textarea-style {
  787. margin: 20rpx;
  788. background: #F9F9FA;
  789. border-radius: 10px;
  790. border: 1px solid #EEEEEE;
  791. padding: 10rpx 20rpx;
  792. position: relative;
  793. .right-bottom {
  794. position: absolute;
  795. right: 20rpx;
  796. bottom: 20rpx;
  797. color: #AFB3BF;
  798. }
  799. }
  800. /deep/.u-input__textarea {
  801. height: 300rpx !important;
  802. }
  803. .person-info {
  804. background: white;
  805. padding: 20rpx 0;
  806. border-radius: 20rpx;
  807. // margin-bottom: 50rpx;
  808. margin: 20rpx 0;
  809. .tit {
  810. font-size: 36rpx;
  811. }
  812. }
  813. .c-row {
  814. display: -webkit-box;
  815. display: -webkit-flex;
  816. display: flex;
  817. -webkit-box-align: center;
  818. -webkit-align-items: center;
  819. align-items: center;
  820. padding: 20rpx 30rpx;
  821. position: relative;
  822. }
  823. .c-row1 {
  824. // display: -webkit-box;
  825. // display: -webkit-flex;
  826. // display: flex;
  827. -webkit-box-align: center;
  828. -webkit-align-items: center;
  829. align-items: center;
  830. padding: 20rpx 30rpx;
  831. position: relative;
  832. }
  833. .container {
  834. padding: 20rpx 20rpx 250rpx 20rpx;
  835. }
  836. .u-form {
  837. margin-bottom: 20rpx;
  838. background: #fff;
  839. border-radius: 10px;
  840. padding: 30rpx 10px;
  841. .u-form-item {
  842. line-height: 30px;
  843. padding: 0px 0;
  844. font-size: 26rpx;
  845. color: #878C9C;
  846. }
  847. }
  848. .content {
  849. margin-top: 30rpx;
  850. .top {
  851. display: flex;
  852. justify-content: space-between;
  853. }
  854. .content-item {
  855. border-radius: 20rpx;
  856. background: white;
  857. padding: 40rpx 20rpx;
  858. margin-bottom: 30rpx;
  859. }
  860. .title {
  861. font-size: 32rpx;
  862. font-weight: 600;
  863. color: #333333;
  864. text-align: left;
  865. margin: 20rpx 0;
  866. }
  867. .car-container {
  868. border-bottom: 2rpx solid #EEEEEE;
  869. }
  870. .car-type-item {
  871. font-size: 28rpx;
  872. margin: 20rpx 0;
  873. color: #878C9C;
  874. }
  875. .weightInfoCss {
  876. font-size: 28rpx;
  877. color: #333333;
  878. font-weight: 500;
  879. }
  880. .row {
  881. display: flex;
  882. justify-content: space-between;
  883. // .right,
  884. // input {
  885. // font-size: 28rpx;
  886. // // color: #333333;
  887. // }
  888. }
  889. .money {
  890. font-size: 32rpx;
  891. font-weight: 500;
  892. margin-bottom: 30rpx;
  893. }
  894. .moneyInfo {
  895. color: #22C572;
  896. font-size: 32rpx;
  897. }
  898. }
  899. .bottom-btn {
  900. width: 100%;
  901. position: fixed;
  902. bottom: 0;
  903. display: flex;
  904. z-index: 2;
  905. left: 0;
  906. background-color: #f8f8f8;
  907. flex-direction: column;
  908. .btn1,
  909. .btn2 {
  910. width: 100%;
  911. margin-bottom: 26rpx;
  912. border-radius: 90rpx;
  913. }
  914. .btn1 {
  915. background: white;
  916. color: #00C265;
  917. }
  918. }
  919. .topInfo {
  920. height: 210rpx;
  921. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  922. padding: 30rpx;
  923. .topInfo-item {
  924. height: 150rpx;
  925. background-color: #FFFFFF;
  926. border-radius: 20rpx;
  927. padding: 40rpx;
  928. .logo {
  929. width: 40rpx;
  930. height: 40rpx;
  931. margin-top: 8rpx;
  932. }
  933. .infoText {
  934. font-size: 36rpx;
  935. font-weight: 600;
  936. margin-left: 20rpx;
  937. }
  938. .infoData {
  939. color: #878C9C;
  940. font-size: 26rpx;
  941. margin-top: 10rpx;
  942. }
  943. }
  944. }
  945. .shade {
  946. position: fixed;
  947. top: 0;
  948. left: 0;
  949. height: 100%;
  950. width: 100%;
  951. background: rgba(0, 0, 0, 0.4);
  952. z-index: 3;
  953. .wrap {
  954. position: absolute;
  955. left: 0;
  956. top: 0;
  957. right: 0;
  958. bottom: 0;
  959. margin: auto;
  960. background: #fff;
  961. width: calc(100% - 198rpx);
  962. height: 700rpx;
  963. border-radius: 20rpx;
  964. .alert-top {
  965. padding: 33rpx;
  966. display: flex;
  967. justify-content: center;
  968. align-items: center;
  969. position: relative;
  970. }
  971. .title {
  972. font-size: 32rpx;
  973. font-weight: 600;
  974. color: #333333;
  975. }
  976. .close {
  977. position: absolute;
  978. right: 33rpx;
  979. }
  980. }
  981. }
  982. .cancel,
  983. .confirm {
  984. position: absolute;
  985. display: inline-block;
  986. width: 50%;
  987. text-align: center;
  988. bottom: 0;
  989. padding: 10px;
  990. border-top: 1px solid #eee;
  991. font-size: 34rpx;
  992. }
  993. .cancel {
  994. left: 0;
  995. border-right: 1px solid #eee;
  996. color: #AFB3BF;
  997. }
  998. .confirm {
  999. right: 0;
  1000. color: #22C572;
  1001. }
  1002. .textarea {
  1003. margin: 18rpx auto;
  1004. width: 100%;
  1005. background: #F9F9FA;
  1006. border-radius: 10px;
  1007. border: 1px solid #EEEEEE;
  1008. font-size: 28rpx;
  1009. padding: 10px;
  1010. }
  1011. .textCss {
  1012. display: flex;
  1013. justify-content: flex-end;
  1014. width: 100%;
  1015. text-align: right;
  1016. color: #333333;
  1017. }
  1018. .u-textarea-style {
  1019. margin: 20rpx;
  1020. background: #F9F9FA;
  1021. border-radius: 10px;
  1022. border: 1px solid #EEEEEE;
  1023. padding: 10rpx 20rpx;
  1024. position: relative;
  1025. height: 240px;
  1026. /deep/.uni-textarea-textarea {
  1027. width: 80%;
  1028. }
  1029. .right-bottom {
  1030. position: absolute;
  1031. right: 20rpx;
  1032. bottom: 20rpx;
  1033. color: #AFB3BF;
  1034. }
  1035. }
  1036. /deep/.u-input__textarea {
  1037. height: 300rpx !important;
  1038. }
  1039. .content2 {
  1040. background: white;
  1041. margin: 20rpx 0;
  1042. border-radius: 20rpx;
  1043. padding: 20rpx;
  1044. .row {
  1045. display: flex;
  1046. .row-left {
  1047. display: flex;
  1048. align-items: center;
  1049. .item1 {
  1050. position: relative;
  1051. .item-content {
  1052. background: #617AE0;
  1053. width: 44px;
  1054. height: 44px;
  1055. border-radius: 22px;
  1056. line-height: 44px;
  1057. text-align: center;
  1058. font-size: 15px;
  1059. color: #fff;
  1060. }
  1061. .status {
  1062. position: absolute;
  1063. border-radius: 50%;
  1064. padding: 0px 2px;
  1065. right: -3px;
  1066. bottom: -3px;
  1067. background: #fff;
  1068. }
  1069. .status.success {
  1070. border: 1px solid rgb(60, 156, 255);
  1071. }
  1072. .status.error {
  1073. border: 1px solid rgb(245, 108, 108);
  1074. }
  1075. .status.question {
  1076. border: 1px solid #f9ae3d;
  1077. }
  1078. }
  1079. }
  1080. .row-right {
  1081. width: 80%;
  1082. // color: #B0B1B5;
  1083. margin-top: 10px;
  1084. .right-content {
  1085. background: #F2F3F7;
  1086. margin-left: 10px;
  1087. margin-top: 10px;
  1088. padding: 10px;
  1089. border-radius: 5px;
  1090. color: #B0B1B5;
  1091. }
  1092. .right-item {
  1093. display: flex;
  1094. justify-content: space-between;
  1095. .time {
  1096. color: #999;
  1097. }
  1098. .item2 {
  1099. margin-left: 20rpx;
  1100. margin-top: -7px;
  1101. .name {
  1102. font-size: 28rpx;
  1103. font-weight: 800;
  1104. margin-bottom: 4px;
  1105. }
  1106. .status.success {
  1107. color: #6CC48C;
  1108. }
  1109. .status.error {
  1110. color: rgb(245, 108, 108);
  1111. }
  1112. .status.question {
  1113. color: #f9ae3d;
  1114. }
  1115. }
  1116. }
  1117. }
  1118. }
  1119. .row2 {
  1120. display: flex;
  1121. .item-content {
  1122. background: #22C572;
  1123. width: 30px;
  1124. height: 30px;
  1125. border-radius: 50%;
  1126. line-height: 30px;
  1127. text-align: center;
  1128. font-size: 12px;
  1129. color: #fff;
  1130. padding: 0 2px;
  1131. margin: 0 auto;
  1132. }
  1133. .status {
  1134. position: absolute;
  1135. top: 0;
  1136. right: 0;
  1137. }
  1138. }
  1139. .row-line {
  1140. width: 1px;
  1141. height: 30px;
  1142. background: #F2F2F2;
  1143. margin: 10rpx 50rpx;
  1144. }
  1145. .audit {
  1146. margin-top: 20rpx;
  1147. }
  1148. }
  1149. .form_top {
  1150. border-bottom: 1px solid #C7CAD6;
  1151. padding-bottom: 10px;
  1152. font-size: 30rpx;
  1153. font-weight: 600;
  1154. }
  1155. .form_view {
  1156. margin: 20rpx 0;
  1157. border-radius: 20rpx;
  1158. background: #F9F9FA;
  1159. padding: 30rpx 20rpx;
  1160. }
  1161. .label_css {
  1162. font-size: 26rpx;
  1163. color: #878C9C;
  1164. }
  1165. .input_css {
  1166. font-size: 20rpx;
  1167. }
  1168. /deep/.uni-textarea-wrapper {
  1169. height: 200px;
  1170. }
  1171. // .fujian_title{
  1172. // font-size: 34rpx;
  1173. // margin-top: 20px;
  1174. // font-weight: 600;
  1175. // // margin-left: 10px;
  1176. // }
  1177. .headInfo {
  1178. height: 100px;
  1179. background-color: #FFFFFF;
  1180. margin-bottom: 20rpx;
  1181. border-radius: 10px;
  1182. padding: 30rpx 10px;
  1183. display: flex;
  1184. .headInfo_left {
  1185. width: 10%;
  1186. line-height: 60px;
  1187. text-align: center;
  1188. }
  1189. .headInfo_middle {
  1190. width: 70%;
  1191. padding-left: 10px;
  1192. }
  1193. .headInfo_right {
  1194. width: 20%;
  1195. line-height: 60px;
  1196. .char_a {
  1197. color: #22C572;
  1198. }
  1199. .char_b {
  1200. color: #FE6430;
  1201. }
  1202. .char_c {
  1203. color: #FB2323;
  1204. }
  1205. .char_a,
  1206. .char_b,
  1207. .char_c {
  1208. font-size: 16px;
  1209. }
  1210. }
  1211. .adopt {
  1212. position: absolute;
  1213. right: 30px;
  1214. top: 60px;
  1215. .adopt_img {
  1216. width: 90px;
  1217. height: 90px;
  1218. }
  1219. }
  1220. .headInfo_title {
  1221. font-size: 19px;
  1222. color: #333333;
  1223. font-weight: 600;
  1224. }
  1225. .headInfo_No {
  1226. color: #878C9C;
  1227. font-size: 13px;
  1228. margin-top: 10px;
  1229. }
  1230. }
  1231. .img_item {
  1232. display: flex;
  1233. width: 100%;
  1234. margin: 10px 0;
  1235. padding: 0 10rpx;
  1236. .imgsign {
  1237. width: 25px;
  1238. height: 25px;
  1239. margin-top: 6px;
  1240. }
  1241. .char_css {
  1242. font-size: 28rpx;
  1243. font-weight: 600;
  1244. display: -webkit-box;
  1245. overflow: hidden;
  1246. /*! autoprefixer: off; */
  1247. -webkit-box-orient: vertical;
  1248. -webkit-line-clamp: 1;
  1249. -webkit-box-orient: vertical;
  1250. text-overflow: ellipsis;
  1251. word-break: break-all;
  1252. }
  1253. .img_size {
  1254. color: #B0B3BF;
  1255. font-size: 12px;
  1256. margin-top: 5px;
  1257. }
  1258. .img_dowload {
  1259. width: 14%;
  1260. color: #22C572;
  1261. text-align: right;
  1262. }
  1263. }
  1264. </style>