purchasecontract.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972
  1. <template>
  2. <view class="container">
  3. <u-form ref="uForm">
  4. <view class="form_top">基本信息</view>
  5. <view class="form_view" style="background: #F9F9FA;">
  6. <u-row customStyle="margin-bottom: 10px;">
  7. <u-col span="6">
  8. <u-form-item label-width='150' label="结算方式" class="label_css" :borderBottom="false">
  9. <u-input v-model="list.settlementMethod" input-align="right" placeholder="" disabled />
  10. </u-form-item>
  11. </u-col>
  12. <u-col span="6">
  13. <u-form-item label-width='150' label="交货方式" class="label_css" :borderBottom="false">
  14. <u-input v-model="list.deliverType1" input-align="right" placeholder="" disabled />
  15. </u-form-item>
  16. </u-col>
  17. </u-row>
  18. <u-row customStyle="margin-bottom: 10px;">
  19. <u-col span="6">
  20. <u-form-item label-width='150' label="货名" class="label_css" :borderBottom="false">
  21. <u-input v-model="list.contractGoodsInfo.goodsName" input-align="right" placeholder="" disabled />
  22. </u-form-item>
  23. </u-col>
  24. <u-col span="6">
  25. <u-form-item label-width='150' label="品级" class="label_css" :borderBottom="false">
  26. <u-input v-model="list.contractGoodsInfo.grade" input-align="right" placeholder="" disabled />
  27. </u-form-item>
  28. </u-col>
  29. </u-row>
  30. <u-row customStyle="margin-bottom: 10px;">
  31. <u-col span="6">
  32. <u-form-item label-width='200' label="容重(克/升)>=" class="label_css" :borderBottom="false">
  33. <u-input v-model="list.contractGoodsInfo.bulkDensity" input-align="right" placeholder="" disabled />
  34. </u-form-item>
  35. </u-col>
  36. <u-col span="6">
  37. <u-form-item label-width='200' label="水分(%)<=" class="label_css" :borderBottom="false">
  38. <u-input v-model="list.contractGoodsInfo.waterContent" input-align="right" placeholder="" disabled />
  39. </u-form-item>
  40. </u-col>
  41. </u-row>
  42. <u-row customStyle="margin-bottom: 10px;">
  43. <u-col span="6">
  44. <u-form-item label-width='200' label="热损伤(%)<=" class="label_css" :borderBottom="false">
  45. <u-input v-model="list.contractGoodsInfo.jiaorenli" input-align="right" placeholder="" disabled />
  46. </u-form-item>
  47. </u-col>
  48. <u-col span="6">
  49. <u-form-item label-width='200' label="杂质(%)<=" class="label_css" :borderBottom="false">
  50. <u-input v-model="list.contractGoodsInfo.impurity" input-align="right" placeholder="" disabled />
  51. </u-form-item>
  52. </u-col>
  53. </u-row>
  54. <u-row customStyle="margin-bottom: 10px;">
  55. <u-col span="6">
  56. <u-form-item label-width='200' label="霉变粒(%)<=" class="label_css" :borderBottom="false">
  57. <u-input v-model="list.contractGoodsInfo.mildewGrain" input-align="right" placeholder="" disabled />
  58. </u-form-item>
  59. </u-col>
  60. <u-col span="6">
  61. <u-form-item label-width='230' label="不完善粒(%)<=" class="label_css" :borderBottom="false">
  62. <u-input v-model="list.contractGoodsInfo.imperfectGrain" input-align="right" placeholder="" disabled />
  63. </u-form-item>
  64. </u-col>
  65. </u-row>
  66. <u-row customStyle="margin-bottom: 10px;">
  67. <u-col span="6">
  68. <u-form-item label-width='200' label="霉变粒(%)<=" class="label_css" :borderBottom="false">
  69. <u-input v-model="list.contractGoodsInfo.mildewGrain" input-align="right" placeholder="" disabled />
  70. </u-form-item>
  71. </u-col>
  72. <u-col span="6">
  73. <u-form-item label-width='200' label="不完善粒(%)<=" class="label_css" :borderBottom="false">
  74. <u-input v-model="list.contractGoodsInfo.imperfectGrain" input-align="right" placeholder="" disabled />
  75. </u-form-item>
  76. </u-col>
  77. </u-row>
  78. <u-row customStyle="margin-bottom: 10px;">
  79. <u-col span="6">
  80. <u-form-item label-width='150' label="运输方式" class="label_css" :borderBottom="false">
  81. <u-input v-model="list.shippingType" input-align="right" placeholder="" disabled />
  82. </u-form-item>
  83. </u-col>
  84. <u-col span="6">
  85. <u-form-item label-width='150' label="包装方式" class="label_css" :borderBottom="false">
  86. <u-input v-model="list.packingMethod" input-align="right" placeholder="" disabled />
  87. </u-form-item>
  88. </u-col>
  89. </u-row>
  90. <u-row customStyle="margin-bottom: 10px;">
  91. <u-col span="6">
  92. <u-form-item label-width='150' label="验收方式" class="label_css" :borderBottom="false">
  93. <u-input v-model="list.acceptanceMethod" input-align="right" placeholder="" disabled />
  94. </u-form-item>
  95. </u-col>
  96. <u-col span="6">
  97. <u-form-item label-width='150' label="重量(吨)" class="label_css" :borderBottom="false">
  98. <u-input v-model="list.weight" input-align="right" placeholder="" disabled />
  99. </u-form-item>
  100. </u-col>
  101. </u-row>
  102. </view>
  103. <u-form-item label-width='260' label="合同编号">
  104. <u-input v-model="list.contractNo" input-align="right" placeholder="" disabled />
  105. </u-form-item>
  106. <u-form-item label-width='260' label="交易主体">
  107. <u-input v-model="list.transactionSubject" input-align="right" placeholder="" disabled />
  108. </u-form-item>
  109. <u-form-item label-width='260' label="买方">
  110. <u-input v-model="list.buyer" input-align="right" placeholder="" disabled />
  111. </u-form-item>
  112. <u-form-item label-width='260' label="买方电话">
  113. <u-input v-model="list.buyerPhone" input-align="right" placeholder="" disabled />
  114. </u-form-item>
  115. <u-form-item label-width='260' label="卖方">
  116. <u-input v-model="list.seller" input-align="right" placeholder="" disabled />
  117. </u-form-item>
  118. <u-form-item label-width='260' label="卖方电话">
  119. <u-input v-model="list.sellerPhone" input-align="right" placeholder="" disabled />
  120. </u-form-item>
  121. <u-form-item label-width='260' label="交货日期(起)">
  122. <u-input v-model="list.deliveryDateStart" input-align="right" placeholder="" disabled />
  123. </u-form-item>
  124. <u-form-item label-width='260' label="溢短装(%)">
  125. <u-input v-model="list.overShort" input-align="right" placeholder="" disabled />
  126. </u-form-item>
  127. <u-form-item label-width='260' label="交货日期(止)">
  128. <u-input v-model="list.deliveryDateEnd" input-align="right" placeholder="" disabled />
  129. </u-form-item>
  130. <u-form-item label-width='260' label="合同单价(元/吨)">
  131. <u-input v-model="list.unitContractPrice" input-align="right" placeholder="" disabled />
  132. </u-form-item>
  133. <u-form-item label-width='260' label="合同总价(元)">
  134. <u-input v-model="list.totalContractPrice" input-align="right" placeholder="" disabled />
  135. </u-form-item>
  136. <u-form-item label-width='260' label="货源所在地区">
  137. <view class="textCss">
  138. {{list.sourceProvince}}{{list.sourceCity}}{{list.sourceArea}}
  139. </view>
  140. </u-form-item>
  141. <u-form-item label-width='260' label="货源详细地址">
  142. <u-input v-model="list.sourceGoods" input-align="right" placeholder="" disabled />
  143. </u-form-item>
  144. <u-form-item label-width='260' label="交货地所在地区">
  145. <view class="textCss">
  146. {{list.deliveryProvince}}{{list.deliveryCity}}{{list.deliveryArea}}
  147. </view>
  148. </u-form-item>
  149. <u-form-item label-width='260' label="交货地详细地址">
  150. <u-input v-model="list.placeDelivery" input-align="right" placeholder="" disabled />
  151. </u-form-item>
  152. <u-form-item label-width='260' label="签订日期">
  153. <u-input v-model="list.signingDate" input-align="right" placeholder="" disabled />
  154. </u-form-item>
  155. <u-form-item label-width='300' label="最终实际交易量(吨)">
  156. <u-input v-model="list.finalTradingVolume" input-align="right" placeholder="" disabled />
  157. </u-form-item>
  158. <u-form-item v-if='list.deliverType == 1' label-width='260' label="临时仓库负责人">
  159. <u-input v-model="list.personCharge" input-align="right" placeholder="" disabled />
  160. </u-form-item>
  161. <u-form-item label-width='300' label="结算单价(元/吨)">
  162. <u-input v-model="list.settlementPrice" input-align="right" placeholder="" disabled />
  163. </u-form-item>
  164. <u-form-item label-width='260' label="合同收入(元)">
  165. <u-input v-model="list.contractProcessInfo.goodsNameKey" input-align="right" placeholder="" disabled />
  166. </u-form-item>
  167. <u-form-item label-width='260' label="已开发票(元)">
  168. <u-input v-model="list.contractProcessInfo.goodsName" input-align="right" placeholder="" disabled />
  169. </u-form-item>
  170. <u-form-item label-width='260' label="费用支出(元)">
  171. <u-input v-model="list.contractProcessInfo.waterContent" input-align="right" placeholder="" disabled />
  172. </u-form-item>
  173. <u-form-item label-width='260' label="未开发票(元)">
  174. <u-input v-model="list.contractProcessInfo.impurity" input-align="right" placeholder="" disabled />
  175. </u-form-item>
  176. <u-form-item label-width='260' label="未回款(元)">
  177. <u-input v-model="list.contractProcessInfo.mildewGrain" input-align="right" placeholder="" disabled />
  178. </u-form-item>
  179. <u-form-item label-width='260' label="双章原件回收情况">
  180. <u-input v-model="list.contractProcessInfo.grade" input-align="right" placeholder="" disabled />
  181. </u-form-item>
  182. <u-form-item label-width='260' label="备注信息">
  183. </u-form-item>
  184. <u-form-item>
  185. <textarea class='textarea' v-model="list.remarks" input-align="right" placeholder="" disabled />
  186. </u-form-item>
  187. <u-form-item label-width='260' label="附件">
  188. <!-- <view class="textCss">
  189. <upload class="upload" ref="upload" :action="action" :max-size="maxSize" :max-count="1"
  190. :file-list="imglist" :size-type="['compressed']" @on-success="getImgUrl" @on-error="onError"
  191. @on-remove="onRemove" @on-uploaded="isAdd = true" :before-upload="filterFileType"
  192. @on-progress="onProgress" :deletable="false" :showProgress = "false"></upload>
  193. </view> -->
  194. <view v-if='imglist.length>0'>
  195. <view style="justify-content: space-between;" class='flex' v-for='item in imglist'>
  196. <view style="max-width:60%;word-break: break-word">
  197. {{item.appendixName}}
  198. </view>
  199. <view class="" style="color: #19be6b;text-decoration:underline;" @click="openDocument(item)">
  200. 点击下载
  201. </view>
  202. <!-- <u-icon name="attach" ></u-icon> -->
  203. <!-- <image style='width: 200rpx;height: 200rpx;' :src="item" mode=""></image> -->
  204. </view>
  205. </view>
  206. </u-form-item>
  207. <view class="content2">
  208. <view class="title row">
  209. 流程
  210. </view>
  211. <view v-for="(item,index) in auditList" :key='index' class="audit">
  212. <view class="row">
  213. <view class="left">
  214. <view class="item1">
  215. <view class="item-content">{{item.operatorTitle}}</view>
  216. <view v-if="item.status=='success'" class='status success'>
  217. <u-icon name="checkmark" color="#2979ff" size="24"></u-icon>
  218. </view>
  219. <view v-if="item.status=='error'" class='status error'>
  220. <u-icon name="close" color="rgb(245, 108, 108)" size="24"></u-icon>
  221. </view>
  222. <view v-if="item.status=='question'" class='status question'>
  223. <u-icon name="question" color="#f9ae3d" size="24"></u-icon>
  224. </view>
  225. </view>
  226. </view>
  227. <view class="right">
  228. <view class="right-item">
  229. <view class="item2">
  230. <view class="name">{{item.desc}}
  231. </view>
  232. <!-- <view class='time'>{{item.updateDate}}</view> -->
  233. <view v-if="item.status=='success'" class="status success">{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text v-if='!item.commonStaffs1&&index!=0'>已审核</text></view>
  234. <view v-if="item.status=='error'" class="status error">{{item.commonStaffs1?item.staffscontent:item.operatorName}}<text v-if='!item.commonStaffs1'>{{item.workflowHistoricTasks ? "已驳回":''}}</text></view>
  235. <view v-if="item.status=='question'" class="status question">{{item.commonStaffs1?item.staffscontent:''}}<text v-if='!item.commonStaffs1'>未审核</text></view>
  236. <!-- <view class="status success">吕波(已审核)</view> -->
  237. </view>
  238. <view v-if='index==0||item.workflowHistoricTasks&&item.workflowHistoricTasks.length>0' class='time'>
  239. {{item.updateDate}}
  240. </view>
  241. </view>
  242. <view v-if='item.auditMind' class="right-content">
  243. {{item.auditMind}}
  244. </view>
  245. </view>
  246. <view v-if='item.commonStaffs1' class="right">
  247. <u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'" size="28"></u-icon>
  248. </view>
  249. </view>
  250. <view v-if='item.showflow' style='padding:10px 0 0 50px;'>
  251. <view class='row2'>
  252. <view v-for='item1 in item.commonStaffs1' style='margin:5px;text-align:center;'>
  253. <view class="item-content">
  254. <u-icon v-if='item1.status' name="checkmark" color="#fff" size="14"></u-icon>
  255. <u-icon v-if='!item1.status' name="question" color="#f9ae3d" size="14"></u-icon>
  256. </view>
  257. <view class="name">{{item1.staffName}}</view>
  258. </view>
  259. </view>
  260. </view>
  261. <view class="row-line" v-if="index!= auditList.length - 1"></view>
  262. </view>
  263. </view>
  264. </u-form>
  265. <view v-if='list.taskId' style='padding:10px;' class='flex bottom-btn'>
  266. <u-button v-if='list.approveStatus||isSHowBtn' @click='reject' type="error" class="btn1" hover-class='none'>
  267. 驳回
  268. </u-button>
  269. <u-button v-if='list.approveStatus||isSHowBtn' @click='pass' type="success" class="btn2">通过</u-button>
  270. </view>
  271. <view v-if='show' class="shade">
  272. <view class="wrap">
  273. <view class="alert-top">
  274. <view class="title">
  275. {{title}}
  276. </view>
  277. <u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
  278. </view>
  279. <view class="u-textarea-style">
  280. <view class="right-bottom">
  281. {{auditMind.length}}/500个字
  282. </view>
  283. <textarea maxlength="500" v-model='auditMind' placeholder="请在此输入审核意见" name="" id="" cols="30" rows="11"></textarea>
  284. <!-- <u-input class="" v-model='auditMind' placeholder="请在此输入审核意见" type="textarea" height="414"
  285. maxlength="300" /> -->
  286. </view>
  287. <view @click='close()' class="cancel">取消</view>
  288. <view @click='passSubmit()' class="confirm">确定</view>
  289. </view>
  290. </view>
  291. <view @click='imgShow=false' v-if="imgShow" class="shade">
  292. <image style='position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;' :src="url" mode=""></image>
  293. </view>
  294. </view>
  295. </template>
  296. <script>
  297. import upload from '@/components/upload.vue';
  298. import helper from '@/common/helper.js';
  299. export default {
  300. components: {
  301. upload
  302. },
  303. data() {
  304. return {
  305. isSHowBtn: true,
  306. id: "",
  307. currentPage: 1,
  308. pageSize: 10,
  309. list: {
  310. status: "",
  311. contractGoodsInfo: {},
  312. contractProcessInfo: {}
  313. },
  314. imglist: [],
  315. auditList:[],
  316. auditMind: '',
  317. show: false,
  318. title: '',
  319. contractNo: "",
  320. action: this.$uploadUrl,
  321. maxSize: 50 * 1024 * 1024, //限制文件大小 50M
  322. isAdd: true,
  323. imgShow: false,
  324. url: "",
  325. everyCheck: ''
  326. }
  327. },
  328. onBackPress(e) {
  329. if(this.everyCheck){
  330. uni.navigateTo({
  331. url: "/pages/task/my_task"
  332. })
  333. return true;
  334. }
  335. },
  336. onLoad(options) {
  337. this.id = options.id
  338. this.getList()
  339. this.everyCheck = uni.getStorageSync("everyTask")
  340. this.isSHowBtn = options.isShowbtn
  341. },
  342. methods: {
  343. shadeshow(url) {
  344. this.imgShow = true
  345. this.url = url
  346. },
  347. openDocument(src){
  348. uni.downloadFile({
  349. url: src.appendixPath,
  350. success: function (res) {
  351. var filePath = res.tempFilePath;
  352. uni.openDocument({
  353. filePath: filePath,
  354. showMenu: true,
  355. success: function (res) {
  356. console.log('打开文档成功');
  357. }
  358. });
  359. }
  360. });
  361. },
  362. showcontent(item){
  363. item.showflow=!item.showflow
  364. },
  365. getList(id) {
  366. uni.showLoading({
  367. title:'加载中',
  368. mask:true
  369. })
  370. var that = this
  371. this.$api.doRequest('get', '/contractManagementInfo/getInfo', {
  372. id: this.id
  373. }).then(res => {
  374. if (res.data.code == 200) {
  375. this.list = res.data.data
  376. if (this.list.deliverType == 1) {
  377. this.list.deliverType1 = '我方自提'
  378. } else if (this.list.deliverType == 2) {
  379. this.list.deliverType1 = '对方送货'
  380. }else if (this.list.deliverType == 3) {
  381. this.list.deliverType1 = '对方送货(临时库)'
  382. }
  383. this.$api.doRequest('get', '/appendix/query/getFileList', {
  384. appendixIds: that.list.addressUrl
  385. }).then(res1 => {
  386. that.imglist=res1.data.data
  387. })
  388. this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
  389. businessCode: 'BUY-CONTRACT-APPROVE',
  390. tmpCompId: uni.getStorageSync('pcUserInfo').compId
  391. }).then(res1 => {
  392. this.$api.doRequest('get', '/commonUser/getHis', {
  393. workflowId: res1.data.data[0].id,
  394. businessKey: this.id
  395. }).then(response => {
  396. uni.hideLoading()
  397. for (let i = 0; i < response.data.data.length; i++) {
  398. this.$set(response.data.data[i],'status','question')
  399. // console.log(response.data.data[i].workflowHistoricTasks,i)
  400. if(response.data.data[i].commonStaffs){
  401. response.data.data[i].showflow=false
  402. response.data.data[i].operatorTitle=response.data.data[i].desc.substring(0,2)
  403. response.data.data[i].operatorName=response.data.data[i].desc
  404. response.data.data[i].staffscontent='共'+response.data.data[i].commonStaffs.length+'人,当前审核'+response.data.data[i].workflowHistoricTasks.length+'人'
  405. if(response.data.data[i].workflowHistoricTasks&&response.data.data[i].workflowHistoricTasks.length>0){
  406. if(response.data.data[i].workflowHistoricTasks.length!=response.data.data[i].commonStaffs.length){
  407. // response.data.data[i].status='question'
  408. this.$set(response.data.data[i],'status','question')
  409. }else{
  410. this.$set(response.data.data[i],'status','success')
  411. // response.data.data[i].status='success'
  412. }
  413. response.data.data[i].workflowlen=response.data.data[i].workflowHistoricTasks.length
  414. var workflowdata=response.data.data[i].workflowHistoricTasks
  415. var staffsdata=response.data.data[i].commonStaffs
  416. for (let q = 0; q < staffsdata.length; q++) {
  417. staffsdata[q].status=false
  418. staffsdata[q].staffTitle=staffsdata[q].staffName
  419. for (let k = 0; k < workflowdata.length; k++) {
  420. if(staffsdata[q].staffId==workflowdata[k].operatorId){
  421. staffsdata[q].status=true
  422. }
  423. }
  424. }
  425. }
  426. response.data.data[i].commonStaffs1=response.data.data[i].commonStaffs
  427. }else{
  428. if(response.data.data[i].workflowHistoricTasks&&response.data.data[i].workflowHistoricTasks.length>0){
  429. var len =response.data.data[i].workflowHistoricTasks.length-1
  430. if(response.data.data[i].workflowHistoricTasks[len].approved){
  431. this.$set(response.data.data[i],'status','success')
  432. }else{
  433. this.$set(response.data.data[i],'status','error')
  434. }
  435. response.data.data[i].operatorTitle=response.data.data[i].workflowHistoricTasks[len].operatorName.substring(response.data.data[i].workflowHistoricTasks[0].operatorName.length - 2)
  436. response.data.data[i].operatorName=response.data.data[i].workflowHistoricTasks[len].operatorName
  437. var time=new Date(response.data.data[i].workflowHistoricTasks[len].claimTime).getTime()
  438. response.data.data[i].updateDate=this.$u.timeFormat(time, 'mm.dd hh:MM')
  439. response.data.data[i].auditMind=response.data.data[i].workflowHistoricTasks[len].auditMind
  440. }else{
  441. this.$set(response.data.data[i],'status','question')
  442. // response.data.data[i].status='question'
  443. if(response.data.data[i].desc=='总经理助理审核'){
  444. response.data.data[i].operatorTitle='总助'
  445. }else if(response.data.data[i].desc=='杜大光审核'){
  446. response.data.data[i].operatorTitle='大光'
  447. }else{
  448. response.data.data[i].operatorTitle=response.data.data[i].desc.substring(0,2)
  449. }
  450. response.data.data[i].operatorName=response.data.data[i].desc
  451. var time1=new Date(response.data.data[i].updateDate).getTime()
  452. response.data.data[i].updateDate=this.$u.timeFormat(time1, 'mm.dd hh:MM')
  453. response.data.data[i].auditMind=''
  454. }
  455. }
  456. }
  457. console.log(response.data.data)
  458. this.auditList = response.data.data
  459. var time2=new Date(this.list.createDate).getTime()
  460. var time3=this.$u.timeFormat(time2, 'mm.dd hh:MM')
  461. this.auditList.unshift({
  462. operatorTitle:this.list.creater.substring(0,2),
  463. operatorName:this.list.creater,
  464. updateDate:time3,
  465. auditMind:'',
  466. desc:'发起申请',
  467. showflow:false,
  468. commonStaffs1:null,
  469. commonStaffs:null,
  470. workflowHistoricTasks:[],
  471. status:'success'
  472. })
  473. })
  474. })
  475. }
  476. })
  477. },
  478. filterFileType(index, lists) {
  479. if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
  480. lists.splice(index, 1);
  481. // 当前文件不支持
  482. uni.showModal({
  483. title: '暂不支持当前图片类型',
  484. showCancel: false
  485. });
  486. } else {
  487. this.isAdd = false;
  488. }
  489. },
  490. //驳回
  491. rejectSubmit() {
  492. uni.showLoading({
  493. title: '加载中',
  494. mask: true
  495. });
  496. var that = this
  497. that.$api.doRequest('post', '/workflow/api/handle', {
  498. taskId: that.list.taskId,
  499. approved: false,
  500. auditMind: this.auditMind,
  501. needReapply: true,
  502. }).then(res => {
  503. that.$api.msg('驳回成功')
  504. that.show = false
  505. setTimeout(function() {
  506. if (that.everyCheck) {
  507. helper.setAudit(that.list)
  508. } else {
  509. uni.navigateBack()
  510. }
  511. uni.hideLoading()
  512. }, 1000);
  513. })
  514. },
  515. close() {
  516. this.show = false
  517. },
  518. pass() {
  519. this.show = true
  520. this.title = '审核意见(通过)'
  521. },
  522. reject() {
  523. this.show = true
  524. this.title = '驳回原因(驳回)'
  525. },
  526. //通过
  527. passSubmit() {
  528. var that = this
  529. if (this.title == '驳回原因(驳回)') {
  530. this.rejectSubmit()
  531. } else {
  532. uni.showLoading({
  533. title: '加载中',
  534. mask: true
  535. });
  536. that.$api.doRequest('post', '/workflow/api/handle', {
  537. taskId: that.list.taskId,
  538. approved: true,
  539. auditMind: this.auditMind,
  540. needReapply: true,
  541. }).then(res => {
  542. that.$api.msg('通过成功')
  543. that.show = false
  544. setTimeout(function() {
  545. if (that.everyCheck) {
  546. helper.setAudit(that.list)
  547. } else {
  548. uni.navigateBack()
  549. }
  550. uni.hideLoading()
  551. }, 1000);
  552. })
  553. }
  554. },
  555. //审核方法
  556. audit(item, index, status, status2, reason) {
  557. if (index < this.list.length) {
  558. this.$api.doRequest('post', '/workflow/api/handle', {
  559. taskId: item.taskId,
  560. approved: status,
  561. auditMind: reason != undefined ? '已驳回' : '34',
  562. needReapply: status2 != undefined ? true : false,
  563. }).then(res => {
  564. this.audit(this.list[index + 1], index + 1, status)
  565. })
  566. } else {
  567. if (status == true) {
  568. that.$api.msg('通过成功')
  569. this.getList()
  570. } else if (status == false) {
  571. that.$api.msg('驳回成功')
  572. this.getList()
  573. }
  574. }
  575. },
  576. }
  577. }
  578. </script>
  579. <style scoped lang="scss">
  580. .container {
  581. padding: 20rpx 20rpx 250rpx 20rpx;
  582. }
  583. .u-form {
  584. background: #fff;
  585. border-radius: 10px;
  586. padding: 30rpx 10px;
  587. .u-form-item {
  588. line-height: 30px;
  589. padding: 0px 0;
  590. font-size: 20rpx;
  591. color: #878C9C;
  592. }
  593. }
  594. .content {
  595. margin-top: 30rpx;
  596. .top {
  597. display: flex;
  598. justify-content: space-between;
  599. }
  600. .content-item {
  601. border-radius: 20rpx;
  602. background: white;
  603. padding: 40rpx 20rpx;
  604. margin-bottom: 30rpx;
  605. }
  606. .title {
  607. font-size: 32rpx;
  608. font-weight: 600;
  609. color: #333333;
  610. text-align: left;
  611. margin: 20rpx 0;
  612. }
  613. .car-container {
  614. border-bottom: 2rpx solid #EEEEEE;
  615. }
  616. .car-type-item {
  617. font-size: 28rpx;
  618. margin: 20rpx 0;
  619. color: #878C9C;
  620. }
  621. .weightInfoCss {
  622. font-size: 28rpx;
  623. color: #333333;
  624. font-weight: 500;
  625. }
  626. .row {
  627. display: flex;
  628. justify-content: space-between;
  629. // .right,
  630. // input {
  631. // font-size: 28rpx;
  632. // // color: #333333;
  633. // }
  634. }
  635. .money {
  636. font-size: 32rpx;
  637. font-weight: 500;
  638. margin-bottom: 30rpx;
  639. }
  640. .moneyInfo {
  641. color: #22C572;
  642. font-size: 32rpx;
  643. }
  644. }
  645. .bottom-btn {
  646. width: 100%;
  647. position: fixed;
  648. bottom: 0;
  649. display: flex;
  650. z-index: 2;
  651. left: 0;
  652. background-color: #f8f8f8;
  653. flex-direction: column;
  654. .btn1,
  655. .btn2 {
  656. width: 100%;
  657. margin-bottom: 26rpx;
  658. border-radius: 90rpx;
  659. }
  660. .btn1 {
  661. background: white;
  662. color: #00C265;
  663. }
  664. }
  665. .topInfo {
  666. height: 210rpx;
  667. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  668. padding: 30rpx;
  669. .topInfo-item {
  670. height: 150rpx;
  671. background-color: #FFFFFF;
  672. border-radius: 20rpx;
  673. padding: 40rpx;
  674. .logo {
  675. width: 40rpx;
  676. height: 40rpx;
  677. margin-top: 8rpx;
  678. }
  679. .infoText {
  680. font-size: 36rpx;
  681. font-weight: 600;
  682. margin-left: 20rpx;
  683. }
  684. .infoData {
  685. color: #878C9C;
  686. font-size: 26rpx;
  687. margin-top: 10rpx;
  688. }
  689. }
  690. }
  691. .shade {
  692. position: fixed;
  693. top: 0;
  694. left: 0;
  695. height: 100%;
  696. width: 100%;
  697. background: rgba(0, 0, 0, 0.4);
  698. z-index: 3;
  699. .wrap {
  700. position: absolute;
  701. left: 0;
  702. top: 0;
  703. right: 0;
  704. bottom: 0;
  705. margin: auto;
  706. background: #fff;
  707. width: calc(100% - 198rpx);
  708. height: 700rpx;
  709. border-radius: 20rpx;
  710. .alert-top {
  711. padding: 33rpx;
  712. display: flex;
  713. justify-content: center;
  714. align-items: center;
  715. position: relative;
  716. }
  717. .title {
  718. font-size: 32rpx;
  719. font-weight: 600;
  720. color: #333333;
  721. }
  722. .close {
  723. position: absolute;
  724. right: 33rpx;
  725. }
  726. }
  727. }
  728. .cancel,
  729. .confirm {
  730. position: absolute;
  731. display: inline-block;
  732. width: 50%;
  733. text-align: center;
  734. bottom: 0;
  735. padding: 10px;
  736. border-top: 1px solid #eee;
  737. font-size: 34rpx;
  738. }
  739. .cancel {
  740. left: 0;
  741. border-right: 1px solid #eee;
  742. color: #AFB3BF;
  743. }
  744. .confirm {
  745. right: 0;
  746. color: #22C572;
  747. }
  748. .textCss {
  749. display: flex;
  750. justify-content: flex-end;
  751. width: 100%;
  752. text-align: right;
  753. }
  754. .textarea {
  755. margin: 20px auto;
  756. width: 100%;
  757. background: #F9F9FA;
  758. border-radius: 10px;
  759. border: 1px solid #EEEEEE;
  760. font-size: 28rpx;
  761. padding: 10px;
  762. }
  763. .u-textarea-style {
  764. margin: 20rpx;
  765. background: #F9F9FA;
  766. border-radius: 10px;
  767. border: 1px solid #EEEEEE;
  768. padding: 10rpx 20rpx;
  769. position: relative;
  770. height:240px;
  771. /deep/.uni-textarea-textarea{
  772. width: 80%;
  773. }
  774. .right-bottom {
  775. position: absolute;
  776. right: 20rpx;
  777. bottom: 20rpx;
  778. color: #AFB3BF;
  779. }
  780. }
  781. .content2 {
  782. background: white;
  783. margin: 20rpx 0;
  784. border-radius: 20rpx;
  785. padding: 20rpx;
  786. .row {
  787. display: flex;
  788. .left {
  789. display: flex;
  790. align-items: center;
  791. .item1{
  792. position:relative;
  793. .item-content{
  794. background:#22C572;
  795. width: 50px;
  796. height: 50px;
  797. border-radius: 10px;
  798. line-height: 50px;
  799. text-align: center;
  800. font-size: 18px;
  801. color: #fff;
  802. }
  803. .status{
  804. position:absolute;
  805. border-radius: 50%;
  806. padding: 0px 2px;
  807. right: -3px;
  808. bottom: -3px;
  809. background:#fff;
  810. }
  811. .status.success{
  812. border:1px solid rgb(60, 156, 255);
  813. }
  814. .status.error{
  815. border:1px solid rgb(245, 108, 108);
  816. }
  817. .status.question{
  818. border:1px solid #f9ae3d;
  819. }
  820. }
  821. }
  822. .right {
  823. width:80%;
  824. // color: #B0B1B5;
  825. margin-top: 10px;
  826. .right-content{
  827. background:#F2F3F7;
  828. margin-left:10px;
  829. margin-top:10px;
  830. padding:10px;
  831. border-radius:5px;
  832. color: #B0B1B5;
  833. }
  834. .right-item{
  835. display: flex;
  836. justify-content: space-between;
  837. .time{
  838. color:#999;
  839. }
  840. .item2 {
  841. margin-left: 20rpx;
  842. .name {
  843. font-size: 28rpx;
  844. font-weight: 800;
  845. }
  846. .status.success {
  847. color: #6CC48C;
  848. }
  849. .status.error {
  850. color: rgb(245, 108, 108);
  851. }
  852. .status.question {
  853. color: #f9ae3d;
  854. }
  855. }
  856. }
  857. }
  858. }
  859. .row2{
  860. display:flex;
  861. .item-content{
  862. background:#22C572;
  863. width: 30px;
  864. height: 30px;
  865. border-radius: 50%;
  866. line-height: 30px;
  867. text-align: center;
  868. font-size: 12px;
  869. color: #fff;
  870. padding:0 2px;
  871. margin:0 auto;
  872. }
  873. .status{
  874. position:absolute;
  875. top:0;right:0;
  876. }
  877. }
  878. .row-line {
  879. width: 1px;
  880. height: 30px;
  881. background: #F2F2F2;
  882. margin: 10rpx 50rpx;
  883. }
  884. .audit {
  885. margin-top: 20rpx;
  886. }
  887. }
  888. .form_top {
  889. border-bottom: 1px solid #C7CAD6;
  890. padding-bottom: 10px;
  891. font-size: 30rpx;
  892. font-weight: 600;
  893. }
  894. .form_view{
  895. margin: 20rpx 0;
  896. border-radius: 20rpx;
  897. }
  898. .label_css{
  899. font-size: 20rpx;
  900. color: #878C9C;
  901. }
  902. .input_css{
  903. font-size: 20rpx;
  904. }
  905. </style>