purchasecontract.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968
  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}}/300个字
  282. </view>
  283. <u-input class="" v-model='auditMind' placeholder="请在此输入审核意见" type="textarea" height="414"
  284. maxlength="300" />
  285. </view>
  286. <view @click='close()' class="cancel">取消</view>
  287. <view @click='passSubmit()' class="confirm">确定</view>
  288. </view>
  289. </view>
  290. <view @click='imgShow=false' v-if="imgShow" class="shade">
  291. <image style='position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;' :src="url" mode=""></image>
  292. </view>
  293. </view>
  294. </template>
  295. <script>
  296. import upload from '@/components/upload.vue';
  297. import helper from '@/common/helper.js';
  298. export default {
  299. components: {
  300. upload
  301. },
  302. data() {
  303. return {
  304. isSHowBtn: true,
  305. id: "",
  306. currentPage: 1,
  307. pageSize: 10,
  308. list: {
  309. status: "",
  310. contractGoodsInfo: {},
  311. contractProcessInfo: {}
  312. },
  313. imglist: [],
  314. auditList:[],
  315. auditMind: '',
  316. show: false,
  317. title: '',
  318. contractNo: "",
  319. action: this.$uploadUrl,
  320. maxSize: 50 * 1024 * 1024, //限制文件大小 50M
  321. isAdd: true,
  322. imgShow: false,
  323. url: "",
  324. everyCheck: ''
  325. }
  326. },
  327. onBackPress(e) {
  328. if(this.everyCheck){
  329. uni.navigateTo({
  330. url: "/pages/task/my_task"
  331. })
  332. return true;
  333. }
  334. },
  335. onLoad(options) {
  336. this.id = options.id
  337. this.getList()
  338. this.everyCheck = uni.getStorageSync("everyTask")
  339. this.isSHowBtn = options.isShowbtn
  340. },
  341. methods: {
  342. shadeshow(url) {
  343. this.imgShow = true
  344. this.url = url
  345. },
  346. openDocument(src){
  347. uni.downloadFile({
  348. url: src.appendixPath,
  349. success: function (res) {
  350. var filePath = res.tempFilePath;
  351. uni.openDocument({
  352. filePath: filePath,
  353. showMenu: true,
  354. success: function (res) {
  355. console.log('打开文档成功');
  356. }
  357. });
  358. }
  359. });
  360. },
  361. showcontent(item){
  362. item.showflow=!item.showflow
  363. },
  364. getList(id) {
  365. uni.showLoading({
  366. title:'加载中',
  367. mask:true
  368. })
  369. var that = this
  370. this.$api.doRequest('get', '/contractManagementInfo/getInfo', {
  371. id: this.id
  372. }).then(res => {
  373. if (res.data.code == 200) {
  374. this.list = res.data.data
  375. if (this.list.deliverType == 1) {
  376. this.list.deliverType1 = '我方自提'
  377. } else if (this.list.deliverType == 2) {
  378. this.list.deliverType1 = '对方送货'
  379. }else if (this.list.deliverType == 3) {
  380. this.list.deliverType1 = '对方送货(临时库)'
  381. }
  382. this.$api.doRequest('get', '/appendix/query/getFileList', {
  383. appendixIds: that.list.addressUrl
  384. }).then(res1 => {
  385. that.imglist=res1.data.data
  386. })
  387. this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
  388. businessCode: 'BUY-CONTRACT-APPROVE',
  389. tmpCompId: uni.getStorageSync('pcUserInfo').compId
  390. }).then(res1 => {
  391. this.$api.doRequest('get', '/commonUser/getHis', {
  392. workflowId: res1.data.data[0].id,
  393. businessKey: this.id
  394. }).then(response => {
  395. uni.hideLoading()
  396. for (let i = 0; i < response.data.data.length; i++) {
  397. this.$set(response.data.data[i],'status','question')
  398. // console.log(response.data.data[i].workflowHistoricTasks,i)
  399. if(response.data.data[i].commonStaffs){
  400. response.data.data[i].showflow=false
  401. response.data.data[i].operatorTitle=response.data.data[i].desc.substring(0,2)
  402. response.data.data[i].operatorName=response.data.data[i].desc
  403. response.data.data[i].staffscontent='共'+response.data.data[i].commonStaffs.length+'人,当前审核'+response.data.data[i].workflowHistoricTasks.length+'人'
  404. if(response.data.data[i].workflowHistoricTasks&&response.data.data[i].workflowHistoricTasks.length>0){
  405. if(response.data.data[i].workflowHistoricTasks.length!=response.data.data[i].commonStaffs.length){
  406. // response.data.data[i].status='question'
  407. this.$set(response.data.data[i],'status','question')
  408. }else{
  409. this.$set(response.data.data[i],'status','success')
  410. // response.data.data[i].status='success'
  411. }
  412. response.data.data[i].workflowlen=response.data.data[i].workflowHistoricTasks.length
  413. var workflowdata=response.data.data[i].workflowHistoricTasks
  414. var staffsdata=response.data.data[i].commonStaffs
  415. for (let q = 0; q < staffsdata.length; q++) {
  416. staffsdata[q].status=false
  417. staffsdata[q].staffTitle=staffsdata[q].staffName
  418. for (let k = 0; k < workflowdata.length; k++) {
  419. if(staffsdata[q].staffId==workflowdata[k].operatorId){
  420. staffsdata[q].status=true
  421. }
  422. }
  423. }
  424. }
  425. response.data.data[i].commonStaffs1=response.data.data[i].commonStaffs
  426. }else{
  427. if(response.data.data[i].workflowHistoricTasks&&response.data.data[i].workflowHistoricTasks.length>0){
  428. var len =response.data.data[i].workflowHistoricTasks.length-1
  429. if(response.data.data[i].workflowHistoricTasks[len].approved){
  430. this.$set(response.data.data[i],'status','success')
  431. }else{
  432. this.$set(response.data.data[i],'status','error')
  433. }
  434. response.data.data[i].operatorTitle=response.data.data[i].workflowHistoricTasks[len].operatorName.substring(response.data.data[i].workflowHistoricTasks[0].operatorName.length - 2)
  435. response.data.data[i].operatorName=response.data.data[i].workflowHistoricTasks[len].operatorName
  436. var time=new Date(response.data.data[i].workflowHistoricTasks[len].claimTime).getTime()
  437. response.data.data[i].updateDate=this.$u.timeFormat(time, 'mm.dd hh:MM')
  438. response.data.data[i].auditMind=response.data.data[i].workflowHistoricTasks[len].auditMind
  439. }else{
  440. this.$set(response.data.data[i],'status','question')
  441. // response.data.data[i].status='question'
  442. if(response.data.data[i].desc=='总经理助理审核'){
  443. response.data.data[i].operatorTitle='总助'
  444. }else if(response.data.data[i].desc=='杜大光审核'){
  445. response.data.data[i].operatorTitle='大光'
  446. }else{
  447. response.data.data[i].operatorTitle=response.data.data[i].desc.substring(0,2)
  448. }
  449. response.data.data[i].operatorName=response.data.data[i].desc
  450. var time1=new Date(response.data.data[i].updateDate).getTime()
  451. response.data.data[i].updateDate=this.$u.timeFormat(time1, 'mm.dd hh:MM')
  452. response.data.data[i].auditMind=''
  453. }
  454. }
  455. }
  456. console.log(response.data.data)
  457. this.auditList = response.data.data
  458. var time2=new Date(this.list.createDate).getTime()
  459. var time3=this.$u.timeFormat(time2, 'mm.dd hh:MM')
  460. this.auditList.unshift({
  461. operatorTitle:this.list.creater.substring(0,2),
  462. operatorName:this.list.creater,
  463. updateDate:time3,
  464. auditMind:'',
  465. desc:'发起申请',
  466. showflow:false,
  467. commonStaffs1:null,
  468. commonStaffs:null,
  469. workflowHistoricTasks:[],
  470. status:'success'
  471. })
  472. })
  473. })
  474. }
  475. })
  476. },
  477. filterFileType(index, lists) {
  478. if (lists[index].fileType != 'jpg' && lists[index].fileType != 'png' && lists[index].fileType != 'gif') {
  479. lists.splice(index, 1);
  480. // 当前文件不支持
  481. uni.showModal({
  482. title: '暂不支持当前图片类型',
  483. showCancel: false
  484. });
  485. } else {
  486. this.isAdd = false;
  487. }
  488. },
  489. //驳回
  490. rejectSubmit() {
  491. uni.showLoading({
  492. title: '加载中',
  493. mask: true
  494. });
  495. var that = this
  496. that.$api.doRequest('post', '/workflow/api/handle', {
  497. taskId: that.list.taskId,
  498. approved: false,
  499. auditMind: this.auditMind,
  500. needReapply: true,
  501. }).then(res => {
  502. that.$api.msg('驳回成功')
  503. that.show = false
  504. setTimeout(function() {
  505. if (that.everyCheck) {
  506. helper.setAudit(that.list)
  507. } else {
  508. uni.navigateBack()
  509. }
  510. uni.hideLoading()
  511. }, 1000);
  512. })
  513. },
  514. close() {
  515. this.show = false
  516. },
  517. pass() {
  518. this.show = true
  519. this.title = '审核意见(通过)'
  520. },
  521. reject() {
  522. this.show = true
  523. this.title = '驳回原因(驳回)'
  524. },
  525. //通过
  526. passSubmit() {
  527. var that = this
  528. if (this.title == '驳回原因(驳回)') {
  529. this.rejectSubmit()
  530. } else {
  531. uni.showLoading({
  532. title: '加载中',
  533. mask: true
  534. });
  535. that.$api.doRequest('post', '/workflow/api/handle', {
  536. taskId: that.list.taskId,
  537. approved: true,
  538. auditMind: this.auditMind,
  539. needReapply: true,
  540. }).then(res => {
  541. that.$api.msg('通过成功')
  542. that.show = false
  543. setTimeout(function() {
  544. if (that.everyCheck) {
  545. helper.setAudit(that.list)
  546. } else {
  547. uni.navigateBack()
  548. }
  549. uni.hideLoading()
  550. }, 1000);
  551. })
  552. }
  553. },
  554. //审核方法
  555. audit(item, index, status, status2, reason) {
  556. if (index < this.list.length) {
  557. this.$api.doRequest('post', '/workflow/api/handle', {
  558. taskId: item.taskId,
  559. approved: status,
  560. auditMind: reason != undefined ? '已驳回' : '34',
  561. needReapply: status2 != undefined ? true : false,
  562. }).then(res => {
  563. this.audit(this.list[index + 1], index + 1, status)
  564. })
  565. } else {
  566. if (status == true) {
  567. that.$api.msg('通过成功')
  568. this.getList()
  569. } else if (status == false) {
  570. that.$api.msg('驳回成功')
  571. this.getList()
  572. }
  573. }
  574. },
  575. }
  576. }
  577. </script>
  578. <style scoped lang="scss">
  579. .container {
  580. padding: 20rpx 20rpx 250rpx 20rpx;
  581. }
  582. .u-form {
  583. background: #fff;
  584. border-radius: 10px;
  585. padding: 30rpx 10px;
  586. .u-form-item {
  587. line-height: 30px;
  588. padding: 0px 0;
  589. font-size: 20rpx;
  590. color: #878C9C;
  591. }
  592. }
  593. .content {
  594. margin-top: 30rpx;
  595. .top {
  596. display: flex;
  597. justify-content: space-between;
  598. }
  599. .content-item {
  600. border-radius: 20rpx;
  601. background: white;
  602. padding: 40rpx 20rpx;
  603. margin-bottom: 30rpx;
  604. }
  605. .title {
  606. font-size: 32rpx;
  607. font-weight: 600;
  608. color: #333333;
  609. text-align: left;
  610. margin: 20rpx 0;
  611. }
  612. .car-container {
  613. border-bottom: 2rpx solid #EEEEEE;
  614. }
  615. .car-type-item {
  616. font-size: 28rpx;
  617. margin: 20rpx 0;
  618. color: #878C9C;
  619. }
  620. .weightInfoCss {
  621. font-size: 28rpx;
  622. color: #333333;
  623. font-weight: 500;
  624. }
  625. .row {
  626. display: flex;
  627. justify-content: space-between;
  628. // .right,
  629. // input {
  630. // font-size: 28rpx;
  631. // // color: #333333;
  632. // }
  633. }
  634. .money {
  635. font-size: 32rpx;
  636. font-weight: 500;
  637. margin-bottom: 30rpx;
  638. }
  639. .moneyInfo {
  640. color: #22C572;
  641. font-size: 32rpx;
  642. }
  643. }
  644. .bottom-btn {
  645. width: 100%;
  646. position: fixed;
  647. bottom: 0;
  648. display: flex;
  649. z-index: 2;
  650. left: 0;
  651. background-color: #f8f8f8;
  652. flex-direction: column;
  653. .btn1,
  654. .btn2 {
  655. width: 100%;
  656. margin-bottom: 26rpx;
  657. border-radius: 90rpx;
  658. }
  659. .btn1 {
  660. background: white;
  661. color: #00C265;
  662. }
  663. }
  664. .topInfo {
  665. height: 210rpx;
  666. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  667. padding: 30rpx;
  668. .topInfo-item {
  669. height: 150rpx;
  670. background-color: #FFFFFF;
  671. border-radius: 20rpx;
  672. padding: 40rpx;
  673. .logo {
  674. width: 40rpx;
  675. height: 40rpx;
  676. margin-top: 8rpx;
  677. }
  678. .infoText {
  679. font-size: 36rpx;
  680. font-weight: 600;
  681. margin-left: 20rpx;
  682. }
  683. .infoData {
  684. color: #878C9C;
  685. font-size: 26rpx;
  686. margin-top: 10rpx;
  687. }
  688. }
  689. }
  690. .shade {
  691. position: fixed;
  692. top: 0;
  693. left: 0;
  694. height: 100%;
  695. width: 100%;
  696. background: rgba(0, 0, 0, 0.4);
  697. z-index: 3;
  698. .wrap {
  699. position: absolute;
  700. left: 0;
  701. top: 0;
  702. right: 0;
  703. bottom: 0;
  704. margin: auto;
  705. background: #fff;
  706. width: calc(100% - 198rpx);
  707. height: 700rpx;
  708. border-radius: 20rpx;
  709. .alert-top {
  710. padding: 33rpx;
  711. display: flex;
  712. justify-content: center;
  713. align-items: center;
  714. position: relative;
  715. }
  716. .title {
  717. font-size: 32rpx;
  718. font-weight: 600;
  719. color: #333333;
  720. }
  721. .close {
  722. position: absolute;
  723. right: 33rpx;
  724. }
  725. }
  726. }
  727. .cancel,
  728. .confirm {
  729. position: absolute;
  730. display: inline-block;
  731. width: 50%;
  732. text-align: center;
  733. bottom: 0;
  734. padding: 10px;
  735. border-top: 1px solid #eee;
  736. font-size: 34rpx;
  737. }
  738. .cancel {
  739. left: 0;
  740. border-right: 1px solid #eee;
  741. color: #AFB3BF;
  742. }
  743. .confirm {
  744. right: 0;
  745. color: #22C572;
  746. }
  747. .textCss {
  748. display: flex;
  749. justify-content: flex-end;
  750. width: 100%;
  751. text-align: right;
  752. }
  753. .textarea {
  754. margin: 20px auto;
  755. width: 100%;
  756. background: #F9F9FA;
  757. border-radius: 10px;
  758. border: 1px solid #EEEEEE;
  759. font-size: 28rpx;
  760. padding: 10px;
  761. }
  762. .u-textarea-style {
  763. margin: 20rpx;
  764. background: #F9F9FA;
  765. border-radius: 10px;
  766. border: 1px solid #EEEEEE;
  767. padding: 10rpx 20rpx;
  768. position: relative;
  769. .right-bottom {
  770. position: absolute;
  771. right: 20rpx;
  772. bottom: 20rpx;
  773. color: #AFB3BF;
  774. }
  775. }
  776. .content2 {
  777. background: white;
  778. margin: 20rpx 0;
  779. border-radius: 20rpx;
  780. padding: 20rpx;
  781. .row {
  782. display: flex;
  783. .left {
  784. display: flex;
  785. align-items: center;
  786. .item1{
  787. position:relative;
  788. .item-content{
  789. background:#22C572;
  790. width: 50px;
  791. height: 50px;
  792. border-radius: 10px;
  793. line-height: 50px;
  794. text-align: center;
  795. font-size: 18px;
  796. color: #fff;
  797. }
  798. .status{
  799. position:absolute;
  800. border-radius: 50%;
  801. padding: 0px 2px;
  802. right: -3px;
  803. bottom: -3px;
  804. background:#fff;
  805. }
  806. .status.success{
  807. border:1px solid rgb(60, 156, 255);
  808. }
  809. .status.error{
  810. border:1px solid rgb(245, 108, 108);
  811. }
  812. .status.question{
  813. border:1px solid #f9ae3d;
  814. }
  815. }
  816. }
  817. .right {
  818. width:80%;
  819. // color: #B0B1B5;
  820. margin-top: 10px;
  821. .right-content{
  822. background:#F2F3F7;
  823. margin-left:10px;
  824. margin-top:10px;
  825. padding:10px;
  826. border-radius:5px;
  827. color: #B0B1B5;
  828. }
  829. .right-item{
  830. display: flex;
  831. justify-content: space-between;
  832. .time{
  833. color:#999;
  834. }
  835. .item2 {
  836. margin-left: 20rpx;
  837. .name {
  838. font-size: 28rpx;
  839. font-weight: 800;
  840. }
  841. .status.success {
  842. color: #6CC48C;
  843. }
  844. .status.error {
  845. color: rgb(245, 108, 108);
  846. }
  847. .status.question {
  848. color: #f9ae3d;
  849. }
  850. }
  851. }
  852. }
  853. }
  854. .row2{
  855. display:flex;
  856. .item-content{
  857. background:#22C572;
  858. width: 30px;
  859. height: 30px;
  860. border-radius: 50%;
  861. line-height: 30px;
  862. text-align: center;
  863. font-size: 12px;
  864. color: #fff;
  865. padding:0 2px;
  866. margin:0 auto;
  867. }
  868. .status{
  869. position:absolute;
  870. top:0;right:0;
  871. }
  872. }
  873. .row-line {
  874. width: 1px;
  875. height: 30px;
  876. background: #F2F2F2;
  877. margin: 10rpx 50rpx;
  878. }
  879. .audit {
  880. margin-top: 20rpx;
  881. }
  882. }
  883. .form_top {
  884. border-bottom: 1px solid #C7CAD6;
  885. padding-bottom: 10px;
  886. font-size: 30rpx;
  887. font-weight: 600;
  888. }
  889. .form_view{
  890. margin: 20rpx 0;
  891. border-radius: 20rpx;
  892. }
  893. .label_css{
  894. font-size: 20rpx;
  895. color: #878C9C;
  896. }
  897. .input_css{
  898. font-size: 20rpx;
  899. }
  900. </style>