charge_against_revenue.vue 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387
  1. <template>
  2. <view class="warp">
  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="status == '已驳回'"
  8. style="height: 40rpx;"></image><!-- 驳回 -->
  9. <image src="../../../static/img/tongguo.png" mode="" v-if="status == '已通过'"
  10. style="height: 40rpx;"></image><!-- 通过 -->
  11. <!-- v-if="status == '审核中' || status == '待决策人审核'" -->
  12. <image src="../../../static/img/daishenhe.png" mode="" style="height: 40rpx;"></image>
  13. <!-- 待审核 -->
  14. </view>
  15. <!-- {{auditList.length > 0 ?auditList[auditList.length - 1].operatorMajorRoleName:""}} -->
  16. <view class="infoText">{{auditInfo.approveStatus?auditInfo.approveStatus:auditInfo.status}}</view>
  17. </view>
  18. <view class="infoData">{{auditInfo.updateDate}}</view>
  19. </view>
  20. </view>
  21. <!-- <view class='content1'>
  22. <view class='row content-item'>
  23. <view class="left" style="color: #878C9C ;">仓库</view>
  24. <view class="right">{{warehouseName}}</view>
  25. </view>
  26. <view class="content-item">
  27. <view v-for="(item,index) in List">
  28. <view class='row row1'>
  29. <view class="left title">{{item.paymentNo}}</view>
  30. <view class="right title">{{item.carNo}}</view>
  31. </view>
  32. <view class='row'>
  33. <view class="left goodsInfoCss">{{item.goodsName}}({{item.netWeight}}kg -
  34. ¥{{item.tidalGrainPrice}})</view>
  35. <view class="right priceCss">¥{{item.amountIngPayable}}</view>
  36. </view>
  37. </view>
  38. </view>
  39. </view> -->
  40. <view class="content1">
  41. <!-- <view class="title">
  42. 销售外勤 张三
  43. </view> -->
  44. <view class="row">
  45. <view class="left">用途</view>
  46. <view class="right" v-if='auditInfo.expensesPurpose==1'>合同费用</view>
  47. <view class="right" v-if='auditInfo.expensesPurpose==3'>库点费用</view>
  48. <view class="right" v-if='auditInfo.expensesPurpose==5'>经营性费用</view>
  49. </view>
  50. <view v-if='auditInfo.expensesPurpose==1' class="row">
  51. <view class="left">类型</view>
  52. <view class="right" v-if='auditInfo.costType==1'>粮款</view>
  53. <view class="right" v-if='auditInfo.costType==3'>非粮款</view>
  54. <view class="right" v-if='auditInfo.costType==5'>保证金</view>
  55. <view class="right" v-if='auditInfo.costType==7'>利息</view>
  56. </view>
  57. <view v-if='auditInfo.expensesPurpose==1' class="row">
  58. <view class="left">合同编号</view>
  59. <view class="right">{{auditInfo.contractNo}}</view>
  60. </view>
  61. <view v-if='auditInfo.expensesPurpose==3' class="row">
  62. <view class="left">仓库名称</view>
  63. <view class="right">{{auditInfo.warehouseName}}</view>
  64. </view>
  65. <view class="row">
  66. <view class="left">费用名称</view>
  67. <view class="right">{{auditInfo.expenseName}}</view>
  68. </view>
  69. <view class="row" v-if='auditInfo.expensesType==2'>
  70. <view class="left">付款方名头</view>
  71. <view class="right">{{auditInfo.payerHeader}}</view>
  72. </view>
  73. <view class="row" v-if='auditInfo.expensesPurpose==5 && auditInfo.expensesType==2'>
  74. <view class="left">所属名头</view>
  75. <view class="right">{{auditInfo.belongName}}</view>
  76. </view>
  77. <view class="row">
  78. <view class="left">金额(元)</view>
  79. <view class="right">{{auditInfo.amountMoney}}</view>
  80. <view style="color: blue;" v-if="auditInfo.paymentIdentifi==1">备用金支付</view>
  81. <view style="color: blue;" v-if="auditInfo.noPaymentFlag==1">无需付款</view>
  82. </view>
  83. <view style='border-bottom: 0;' class="row">
  84. <view class="left">备注</view>
  85. <view class="right">{{auditInfo.remark}}</view>
  86. </view>
  87. <!-- <view class="row">
  88. <view class="left">附件</view>
  89. <view class="right">{{auditInfo.amountMoney}}</view>
  90. </view> -->
  91. <!-- <view class="row row-bottom">
  92. <view class="left">水分(%)</view>
  93. <input type="digit" v-model='detailData.warehouseInOutDetail.waterContent' class="right-bottom"
  94. placeholder="输入水分占比"></input>
  95. </view>
  96. <view class="row row-bottom">
  97. <view class="left">容重(克/升)</view>
  98. <input type="digit" v-model='detailData.warehouseInOutDetail.bulkDensity' class="right-bottom"
  99. placeholder="输入容重"></input>
  100. </view>
  101. <view class="row row-bottom">
  102. <view class="left">热损伤(%)</view>
  103. <input type="digit" v-model='detailData.warehouseInOutDetail.jiaorenli' class="right-bottom"
  104. placeholder="输入热损伤占比"></input>
  105. </view>
  106. <view class="row row-bottom">
  107. <view class="left">杂质(%)</view>
  108. <input type="digit" v-model='detailData.warehouseInOutDetail.impurity' class="right-bottom"
  109. placeholder="输入杂质占比"></input>
  110. </view>
  111. <view class="row row-bottom">
  112. <view class="left">霉变粒(%)</view>
  113. <input type="digit" v-model='detailData.warehouseInOutDetail.mildewGrain' class="right-bottom"
  114. placeholder="输入霉变粒占比"></input>
  115. </view>
  116. <view class="row row-bottom">
  117. <view class="left">不完善粒(%)</view>
  118. <input type="digit" v-model='detailData.warehouseInOutDetail.imperfectGrain' class="right-bottom"
  119. placeholder="输入不完善粒占比"></input>
  120. </view> -->
  121. </view>
  122. <view class="content1">
  123. <view class="title ">
  124. 收款账户信息
  125. </view>
  126. <view v-if='auditInfo.expensesType==2' class="row">
  127. <view class="left">收款方</view>
  128. <view class="right">{{auditInfo.payee}}</view>
  129. </view>
  130. <view v-if='auditInfo.expensesType==2' class="row">
  131. <view class="left">账户</view>
  132. <view class="right">{{auditInfo.accountNumber}}</view>
  133. </view>
  134. <view v-if='auditInfo.expensesType==2' class="row">
  135. <view class="left">开户行</view>
  136. <view class="right">{{auditInfo.bank}}</view>
  137. </view>
  138. <view v-if='auditInfo.expensesType==2' class="row">
  139. <view class="left">开户支行</view>
  140. <view class="right">{{auditInfo.bankBranch}}</view>
  141. </view>
  142. </view>
  143. <view class="content1" v-if="url && url != 'ng'">
  144. <view class="title ">
  145. 附件
  146. </view>
  147. <view v-if='auditInfo.srcList.length>0' class="">
  148. <view style='flex-wrap: wrap;' class="file">
  149. <view class="" v-for='(item,index) in imglist2'>
  150. <view class="img_item">
  151. <view class="" style="width: 16%;">
  152. <image
  153. v-if="item.type == 'pdf'"
  154. class="imgsign" src="../../../static/img/oa_office/pdf3.png"
  155. mode=""></image>
  156. <image v-else-if="item.type == 'xls'||item.type == 'xlsx'"
  157. class="imgsign" src="../../../static/img/oa_office/excle3.png"
  158. mode=""></image>
  159. <image v-else-if="item.type == 'doc'||item.type == 'docx'"
  160. class="imgsign" src="../../../static/img/oa_office/word3.png"
  161. mode=""></image>
  162. <image v-else class="imgsign"
  163. src="../../../static/img/oa_office/img.png" mode=""></image>
  164. </view>
  165. <view class="" style="width: 70%;">
  166. <view class="char_css">{{item.appendixName}}</view>
  167. <u-line-progress v-if='item.progressstatus' :striped="true" :percent="item.progress" :striped-active="true"></u-line-progress>
  168. <view class="img_size">{{item.appendixSize}}</view>
  169. </view>
  170. <view class="img_dowload" @click="openDocument(item)">下载</view>
  171. </view>
  172. </view>
  173. </view>
  174. </view>
  175. <view v-else class="">
  176. 暂无附件
  177. </view>
  178. </view>
  179. <view class="content1" v-if="url && url != 'ng'&&auditInfo.expenseAllocationInfoList">
  180. <view class="title ">
  181. 费用分配附件
  182. </view>
  183. <view class="file" @click="openXls">
  184. <image src="../../../static/img/excle.png" mode="" class="img_css"></image>
  185. <text class="text_css">明细.xls</text>
  186. </view>
  187. </view>
  188. <view class="content2">
  189. <view class="title row">
  190. 流程
  191. </view>
  192. <view v-for="(item,index) in auditList" :key='index' class="audit">
  193. <view class="row">
  194. <view class="left">
  195. <view class="item1">
  196. <view class="item-content">{{item.operatorTitle}}</view>
  197. <view v-if="item.status=='success'" class='status success'>
  198. <u-icon name="checkmark" color="#2979ff" size="24"></u-icon>
  199. </view>
  200. <view v-if="item.status=='error'" class='status error'>
  201. <u-icon name="close" color="rgb(245, 108, 108)" size="24"></u-icon>
  202. </view>
  203. <view v-if="item.status=='question'" class='status question'>
  204. <u-icon name="question" color="#f9ae3d" size="24"></u-icon>
  205. </view>
  206. </view>
  207. </view>
  208. <view class="right">
  209. <view class="right-item">
  210. <view class="item2">
  211. <view class="name">{{item.desc}}
  212. </view>
  213. <!-- <view class='time'>{{item.updateDate}}</view> -->
  214. <view v-if="item.status=='success'" class="status success">
  215. {{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
  216. v-if='!item.commonStaffs1&&index!=0'>已审核</text>
  217. </view>
  218. <view v-if="item.status=='error'" class="status error">
  219. {{item.commonStaffs1?item.staffscontent:item.operatorName}}<text
  220. v-if='!item.commonStaffs1'>{{item.workflowHistoricTasks ? "已驳回":''}}</text>
  221. </view>
  222. <view v-if="item.status=='question'" class="status question">
  223. {{item.commonStaffs1?item.staffscontent:''}}<text
  224. v-if='!item.commonStaffs1'>未审核</text>
  225. </view>
  226. <!-- <view class="status success">吕波(已审核)</view> -->
  227. </view>
  228. <view v-if='index==0||item.workflowHistoricTasks&&item.workflowHistoricTasks.length>0'
  229. class='time'>
  230. {{item.updateDate}}
  231. </view>
  232. </view>
  233. <view v-if='item.auditMind' class="right-content">
  234. {{item.auditMind}}
  235. </view>
  236. <view class="flex audit_img">
  237. <view v-for="(items,indexs) in item.fileUrl" class="url_css">
  238. <image :src="items" mode='aspectFill' class="url_img" @click="auditFile(items)"></image>
  239. </view>
  240. </view>
  241. </view>
  242. <view v-if='item.commonStaffs1' class="right">
  243. <u-icon @click='showcontent(item)' :name="item.showflow?'arrow-up':'arrow-down'" size="28">
  244. </u-icon>
  245. </view>
  246. </view>
  247. <view v-if='item.showflow' style='padding:10px 0 0 50px;'>
  248. <view class='row2'>
  249. <view v-for='item1 in item.commonStaffs1' style='margin:5px;text-align:center;'>
  250. <view class="item-content">
  251. <u-icon v-if='item1.status' name="checkmark" color="#fff" size="14"></u-icon>
  252. <u-icon v-if='!item1.status' name="question" color="#f9ae3d" size="14"></u-icon>
  253. </view>
  254. <view class="name">{{item1.staffName}}</view>
  255. </view>
  256. </view>
  257. </view>
  258. <view class="row-line" v-if="index!= auditList.length - 1"></view>
  259. </view>
  260. </view>
  261. <view v-if='show' class="shade">
  262. <view class="wrap">
  263. <view class="alert-top">
  264. <view class="title">
  265. {{title}}
  266. </view>
  267. <u-icon name="close" class="close" color="#8890B1" @click="close()"></u-icon>
  268. </view>
  269. <view class="content">
  270. <view class="u-textarea-style">
  271. <view class="right-bottom">
  272. {{auditMind.length}}/1000个字
  273. </view>
  274. <u-input :clearable='false' class="" v-model='auditMind' placeholder="请在此输入审核意见" type="textarea" height="240"
  275. maxlength="1000" />
  276. </view>
  277. <view class="upload_css">
  278. 上传附件
  279. <!-- <upload class="upload" :width="150" ref="upload" :action="action" :max-size="maxSize" :max-count="99"
  280. :form-data="{companyId: pcUserInfo.compId,
  281. modelId: '',
  282. vesselId: ''}" :size-type="['compressed']" @on-success="getImgUrl" @on-error="onError" @on-remove="onRemove"
  283. @on-uploaded="isAdd = true" :before-upload="filterFileType" @on-progress="onProgress"></upload> -->
  284. <u-upload :custom-btn='true' class="upload" ref="upload" name='fileName' :form-data="{companyId: pcUserInfo.compId,
  285. modelId: '',
  286. vesselId: ''}" :action="action" :show-tips="false" :max-size="maxSize" :max-count="9"
  287. :size-type="['compressed']" @on-success="getImgUrl($event)" @on-error="onError"
  288. @on-remove="onRemove" @on-uploaded="isAdd = true" :limitType ="['png', 'jpg', 'jpeg', 'webp', 'gif']"
  289. @on-progress="onProgress">
  290. <view slot="addBtn" class="slot-btn u-list-item" hover-class="slot-btn__hover" hover-stay-time="150">
  291. <image style="width:23px;height:23px;" src="../../../static/img/liangmai/xiangji-2.png" mode=""></image>
  292. <view>选择图片</view>
  293. </view>
  294. </u-upload>
  295. </view>
  296. </view>
  297. <view class="audit_btn">
  298. <view @click='close()' class="cancel">取消</view>
  299. <view @click='passSubmit()' class="confirm">确定</view>
  300. </view>
  301. </view>
  302. </view>
  303. <u-toast ref="uToast" />
  304. <view style='padding:10px;' class='flex bottom-btn'>
  305. <u-button @click='reject' type="error" class="btn1" hover-class='none'>驳回</u-button>
  306. <u-button @click='pass' type="success" class="btn2">通过</u-button>
  307. </view>
  308. </view>
  309. </template>
  310. <script>
  311. import helper from '@/common/helper.js';
  312. import upload from '@/components/upload.vue';
  313. import {
  314. mapState
  315. } from 'vuex';
  316. export default {
  317. components: {
  318. upload,
  319. },
  320. data() {
  321. return {
  322. src: '../../../static/img/myimg/LiangShang@2x.png',
  323. isSHowBtn: true,
  324. height: 200,
  325. autoHeight: true,
  326. border: false,
  327. title: '',
  328. show: false,
  329. auditMind: '',
  330. id: "",
  331. currentPage: 1,
  332. pageSize: 100,
  333. List: [],
  334. status: "",
  335. updateDate: "",
  336. warehouseName: "",
  337. everyCheck: '',
  338. detialData:{
  339. id:'',
  340. },
  341. auditInfo: {
  342. srcList: []
  343. },
  344. id: "",
  345. auditList: [],
  346. url: "11",
  347. imglist: [],
  348. imglist2: [],
  349. // 上传附件、
  350. action: this.$uploadUrl,
  351. pcUserInfo :uni.getStorageSync('pcUserInfo'),
  352. maxSize: 50 * 1024 * 1024, //限制文件大小 50M
  353. isAdd: true,
  354. fileUrl: []
  355. }
  356. },
  357. onBackPress(e) {
  358. if (this.everyCheck) {
  359. uni.navigateTo({
  360. url: "/pages/task/my_task"
  361. })
  362. return true;
  363. }
  364. },
  365. onLoad(options) {
  366. this.id = options.id
  367. this.vesselId = options.vesselId
  368. this.everyCheck = uni.getStorageSync("everyTask")
  369. this.isSHowBtn = options.isShowbtn
  370. },
  371. onShow(options) {
  372. this.getList()
  373. },
  374. computed: {
  375. ...mapState(['hasLogin', 'userInfo']),
  376. },
  377. watch: {
  378. imglist: {
  379. handler: function() {
  380. let that = this
  381. this.$api.doRequest('get', 'appendix/query/getFileList', {
  382. appendixIds: this.imglist.toString()
  383. }).then(res => {
  384. this.imglist2 = res.data.data
  385. for (let i = 0; i < this.imglist2.length; i++) {
  386. that.imglist2[i].progressstatus=false
  387. that.imglist2[i].progress=0
  388. if (this.imglist2[i].appendixName) {//获取文件的后缀名
  389. let index = that.imglist2[i].appendixName.lastIndexOf(".")//获取最后出现.的下标
  390. that.imglist2[i].type = that.imglist2[i].appendixName.substring(index+1)
  391. // this.imglist2[i].type = this.imglist2[i].appendixName.split(".")[1]
  392. }
  393. }
  394. })
  395. },
  396. deep: true
  397. }
  398. },
  399. methods: {
  400. auditFile(src) {
  401. uni.downloadFile({
  402. url: src,
  403. success: function(res) {
  404. var filePath = res.tempFilePath;
  405. uni.openDocument({
  406. filePath: filePath,
  407. showMenu: true,
  408. success: function(res) {
  409. console.log('打开文档成功');
  410. }
  411. });
  412. }
  413. });
  414. },
  415. getImgUrl(res) {
  416. this.fileUrl.push(res.data.appendixPath)
  417. },
  418. onError(error) {
  419. alert(error)
  420. console.log('------------error-----------')
  421. console.log(error)
  422. },
  423. onProgress(e) {
  424. console.log(e)
  425. },
  426. onRemove(index) {
  427. this.fileUrl.splice(index, 1)
  428. },
  429. openDocument(item) {
  430. this.$set(item,'progressstatus',true)
  431. this.$forceUpdate()
  432. const downloadTask =uni.downloadFile({
  433. url: item.appendixPath,
  434. success: function(res) {
  435. var filePath = res.tempFilePath;
  436. if(item.type=='pdf'||item.type == 'xls'||item.type == 'xlsx'||item.type == 'doc'||item.type == 'docx'){
  437. uni.openDocument({
  438. filePath: filePath,
  439. showMenu: true,
  440. success: function(res) {
  441. console.log('打开文档成功');
  442. }
  443. });
  444. }else{
  445. uni.previewImage({
  446. current: 0, //预览图片的下标
  447. urls: [item.appendixPath]
  448. })
  449. }
  450. }
  451. });
  452. downloadTask.onProgressUpdate((res) => {
  453. this.$set(item,'progress',res.progress)
  454. this.$forceUpdate()
  455. console.log('下载进度' + res.progress);
  456. console.log('已经下载的数据长度' + res.totalBytesWritten);
  457. console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
  458. // 满足测试条件,取消下载任务。
  459. // if (res.progress > 50) {
  460. // downloadTask.abort();
  461. // }
  462. });
  463. },
  464. previewImageFn(index) {
  465. /* 预览图片 */
  466. uni.previewImage({
  467. current: index,
  468. /* 需要是数组 */
  469. urls: this.auditInfo.srcList,
  470. /* 默认底部圆点 number顶部数字1234 */
  471. // indicator:'default',
  472. indicator: 'number',
  473. loop: false,
  474. /* 长按图片底部显示选项 */
  475. longPressActions: {
  476. itemList: ['保存图片'],
  477. itemColor: '#d60000',
  478. success: data => {
  479. console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
  480. /* 保存图片到系统相册 */
  481. plus.nativeUI.closePreviewImage();
  482. if (data.tapIndex == 0) {
  483. uni.saveImageToPhotosAlbum({
  484. filePath: this.auditInfo.srcList[data.index],
  485. success: res => {
  486. // console.log(this.userImgList[data.index])
  487. // console.log(res.path,"res")
  488. // plus.nativeUI.closePreviewImage();
  489. plus.nativeUI.closePreviewImage();
  490. // uni.closePreviewImage()
  491. plus.nativeUI.toast("保存成功", {
  492. background: "#c3002f"
  493. });
  494. // this.$http.showTK({title:"保存成功",duration:500,position:"bottom"})
  495. },
  496. fail: err => {
  497. console.log(err, "err")
  498. }
  499. })
  500. } else if (data.tapIndex == 1) {
  501. this.uniShare()
  502. }
  503. },
  504. fail: err => {
  505. console.log(err.errMsg);
  506. }
  507. }
  508. });
  509. },
  510. openXls() {
  511. if (this.url && this.url != "ng") {
  512. uni.downloadFile({
  513. url: this.url,
  514. success: function(res) {
  515. var filePath = res.tempFilePath;
  516. uni.openDocument({
  517. filePath: filePath,
  518. showMenu: true,
  519. success: function(res) {
  520. console.log('打开文档成功');
  521. }
  522. });
  523. }
  524. });
  525. }
  526. },
  527. getList() {
  528. var that =this
  529. that.detialData.id = this.id
  530. uni.showLoading({
  531. title: "加载中...",
  532. mask: true
  533. })
  534. // this.$api.doRequest('get', '/paymentManagement/selectPaymentManagement', {
  535. // currentPage: 1,
  536. // pageSize: 100,
  537. // searchType: '1', //searchType:1待审核
  538. // warehouseName: this.vesselId,
  539. // managementType: 1
  540. // }).then(res1 => {
  541. // uni.hideLoading()
  542. // if (res1.data.code == 200) {
  543. // this.List = res1.data.data.records
  544. // }
  545. // })
  546. // this.$api.doRequest('get', '/paymentManagement/getInfo', {
  547. // id: this.id
  548. // }).then(res => {
  549. // if (res.data.code == 200) {
  550. // uni.showLoading({
  551. // title: "加载中...",
  552. // mask: true
  553. // })
  554. // }
  555. // })
  556. this.$api.doRequest('post', '/expenseInfo/exportPhone', {
  557. id:this.id
  558. }).then(res1 => {
  559. if (res1.data.code == 200) {
  560. this.url = res1.data.data
  561. }
  562. })
  563. this.$api.doRequest('get', '/expenseInfo/ExpenseInfo', {
  564. id: this.id
  565. }).then(res1 => {
  566. if (res1.data.code == 200) {
  567. this.auditInfo = res1.data.data
  568. if (this.auditInfo.addressUrl) {
  569. this.imglist = this.auditInfo.addressUrl.split(',')
  570. }
  571. if (this.auditInfo.addressUrl && this.auditInfo.addressUrl != '') {
  572. this.auditInfo.srcList = this.auditInfo.addressUrl.split(',')
  573. } else {
  574. this.auditInfo.srcList = []
  575. }
  576. this.auditInfo.amountIngPayableTotal1 = helper.convertCurrency(this.auditInfo
  577. .amountIngPayableTotal)
  578. if((this.auditInfo.status == '已收款' && this.vesselId == '点击切换任务状态')
  579. || (this.auditInfo.status == '待付款' && this.vesselId == '点击切换任务状态')){
  580. this.$api.doRequest('post', '/expenseInfo/editCollectionStatus',
  581. that.detialData).then(res1 => {
  582. if (res1.data.code == 200) {
  583. that.$api.msg('任务状态切换成功!')
  584. setTimeout(function() {
  585. uni.navigateBack();
  586. }, 2000);
  587. }else{
  588. return
  589. }
  590. })
  591. }
  592. this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
  593. businessCode: 'FEIYONGGUANLI-APPROVE',
  594. tmpCompId: uni.getStorageSync('pcUserInfo').compId
  595. }).then(res1 => {
  596. this.$api.doRequest('get', '/commonUser/getHis', {
  597. workflowId: res1.data.data[0].id,
  598. businessKey: this.id,
  599. branch:that.auditInfo.jointVentureParties?that.auditInfo.jointVentureParties:'zt'
  600. }).then(response => {
  601. uni.hideLoading()
  602. for (let i = 0; i < response.data.data.length; i++) {
  603. this.$set(response.data.data[i], 'status', 'question')
  604. console.log(response.data.data[i].workflowHistoricTasks, i)
  605. if (response.data.data[i].commonStaffs) {
  606. response.data.data[i].showflow = false
  607. response.data.data[i].operatorTitle = response.data.data[i]
  608. .desc.substring(0, 2)
  609. response.data.data[i].operatorName = response.data.data[i]
  610. .desc
  611. response.data.data[i].staffscontent = '共' + response.data
  612. .data[i].commonStaffs.length + '人,当前审核' + response.data
  613. .data[i].workflowHistoricTasks.length + '人'
  614. if (response.data.data[i].workflowHistoricTasks && response
  615. .data.data[i].workflowHistoricTasks.length > 0) {
  616. if (response.data.data[i].workflowHistoricTasks
  617. .length != response.data.data[i].commonStaffs
  618. .length) {
  619. // response.data.data[i].status='question'
  620. this.$set(response.data.data[i], 'status',
  621. 'question')
  622. } else {
  623. this.$set(response.data.data[i], 'status',
  624. 'success')
  625. // response.data.data[i].status='success'
  626. }
  627. response.data.data[i].workflowlen = response.data.data[
  628. i].workflowHistoricTasks.length
  629. var workflowdata = response.data.data[i]
  630. .workflowHistoricTasks
  631. var staffsdata = response.data.data[i].commonStaffs
  632. for (let q = 0; q < staffsdata.length; q++) {
  633. staffsdata[q].status = false
  634. staffsdata[q].staffTitle = staffsdata[q].staffName
  635. for (let k = 0; k < workflowdata.length; k++) {
  636. if (staffsdata[q].staffId == workflowdata[k]
  637. .operatorId) {
  638. staffsdata[q].status = true
  639. }
  640. }
  641. }
  642. }
  643. response.data.data[i].commonStaffs1 = response.data.data[i]
  644. .commonStaffs
  645. } else {
  646. if (response.data.data[i].workflowHistoricTasks && response
  647. .data.data[i].workflowHistoricTasks.length > 0) {
  648. var len = response.data.data[i].workflowHistoricTasks
  649. .length - 1
  650. if (response.data.data[i].workflowHistoricTasks[len]
  651. .approved) {
  652. this.$set(response.data.data[i], 'status',
  653. 'success')
  654. } else {
  655. this.$set(response.data.data[i], 'status', 'error')
  656. }
  657. response.data.data[i].operatorTitle = response.data
  658. .data[i].workflowHistoricTasks[len].operatorName
  659. .substring(response.data.data[i]
  660. .workflowHistoricTasks[0].operatorName.length -
  661. 2)
  662. response.data.data[i].operatorName = response.data
  663. .data[i].workflowHistoricTasks[len].operatorName
  664. var time = new Date(response.data.data[i]
  665. .workflowHistoricTasks[len].claimTime)
  666. .getTime()
  667. response.data.data[i].updateDate = this.$u.timeFormat(
  668. time, 'mm.dd hh:MM')
  669. // response.data.data[i].auditMind = response.data.data[i]
  670. // .workflowHistoricTasks[len].auditMind
  671. // 显示附件和审核意见
  672. if (response.data.data[i].workflowHistoricTasks[len].auditMind && response.data.data[i].workflowHistoricTasks[len].auditMind.indexOf("##") !=-1) {
  673. response.data.data[i].auditMind = response.data.data[i].workflowHistoricTasks[len].auditMind.split("##")[0]
  674. response.data.data[i].fileUrl = response.data.data[i].workflowHistoricTasks[len].auditMind.split("##")[1].split(",")
  675. }else{
  676. response.data.data[i].auditMind = response.data.data[i].workflowHistoricTasks[len].auditMind
  677. }
  678. } else {
  679. this.$set(response.data.data[i], 'status', 'question')
  680. // response.data.data[i].status='question'
  681. if (response.data.data[i].desc == '总经理助理审核') {
  682. response.data.data[i].operatorTitle = '总助'
  683. } else if (response.data.data[i].desc == '杜大光审核') {
  684. response.data.data[i].operatorTitle = '大光'
  685. } else {
  686. response.data.data[i].operatorTitle = response.data
  687. .data[i].desc.substring(0, 2)
  688. }
  689. response.data.data[i].operatorName = response.data
  690. .data[i].desc
  691. var time1 = new Date(response.data.data[i].updateDate)
  692. .getTime()
  693. response.data.data[i].updateDate = this.$u.timeFormat(
  694. time1, 'mm.dd hh:MM')
  695. response.data.data[i].auditMind = ''
  696. }
  697. }
  698. }
  699. console.log(response.data.data)
  700. this.auditList = response.data.data
  701. var time2 = new Date(this.auditList[0].createDate).getTime()
  702. var time3 = this.$u.timeFormat(time2, 'mm.dd hh:MM')
  703. this.auditList.unshift({
  704. operatorTitle: this.auditInfo.creater.substring(0, 2),
  705. operatorName: this.auditInfo.creater,
  706. updateDate: time3,
  707. auditMind: '',
  708. desc: '发起申请',
  709. showflow: false,
  710. commonStaffs1: null,
  711. commonStaffs: null,
  712. workflowHistoricTasks: [],
  713. status: 'success'
  714. })
  715. })
  716. })
  717. }
  718. })
  719. // this.$api.doRequest('get', '/workflow/query/workflowDefinitions', {
  720. // businessCode: 'FEIYONGGUANLI-APPROVE',
  721. // tmpCompId: uni.getStorageSync('pcUserInfo').compId
  722. // }).then(res1 => {
  723. // this.updateDate = res1.data.data[0].updateDate
  724. // this.$api.doRequest('get', '/commonUser/getHis', {
  725. // workflowId: res1.data.data[0].id,
  726. // businessKey: this.id
  727. // }).then(response => {
  728. // // uni.hideLoading()
  729. // this.auditList = response.data.data
  730. // })
  731. // })
  732. },
  733. close() {
  734. this.show = false
  735. this.fileUrl = []
  736. },
  737. pass() {
  738. this.show = true
  739. this.title = '审核意见(通过)'
  740. },
  741. reject() {
  742. this.show = true
  743. this.title = '驳回原因(驳回)'
  744. },
  745. //驳回
  746. // rejectSubmit() {
  747. // if (!this.auditMind) {
  748. // this.$api.msg('驳回原因不能为空!')
  749. // } else {
  750. // var that = this
  751. // that.show = false
  752. // if (this.List.length > 0) {
  753. // uni.showModal({
  754. // content: "确定驳回付款申请?",
  755. // showCancel: true,
  756. // confirmText: '确定',
  757. // success: function(res) {
  758. // if (res.confirm) {
  759. // that.audit(that.List[0], 0, false, '', '')
  760. // }
  761. // }
  762. // })
  763. // }
  764. // }
  765. // },
  766. //审核确定
  767. passSubmit() {
  768. var that = this
  769. that.show = false
  770. if (this.title == '驳回原因(驳回)') {
  771. // this.rejectSubmit()
  772. if (!that.auditMind) {
  773. this.$api.msg('驳回原因不能为空!')
  774. } else {
  775. uni.showModal({
  776. content: "确定驳回费用支出申请?",
  777. showCancel: true,
  778. confirmText: '确定',
  779. success: function(res) {
  780. if (res.confirm) {
  781. uni.showLoading({
  782. title: "驳回中...",
  783. mask: true
  784. })
  785. var count = 0
  786. // for (let num = 0; num < that.List.length; num++) {
  787. var info = that.auditMind
  788. if (that.fileUrl.length > 0) {
  789. info = that.auditMind + "##" + that.fileUrl.toString()
  790. }
  791. that.$api.doRequest('post', '/newWorkflow/api/handle', {
  792. taskId: that.auditInfo.taskId,
  793. approved: false,
  794. auditMind: info ? info : "",
  795. needReapply: true
  796. }).then(res => {
  797. // count++
  798. // if (count == that.List.length) {
  799. uni.hideLoading()
  800. that.$api.msg('驳回成功!')
  801. console.log('驳回成功!')
  802. setTimeout(function() {
  803. uni.navigateBack();
  804. }, 2000);
  805. // }
  806. })
  807. // }
  808. }
  809. }
  810. })
  811. }
  812. } else {
  813. var that = this
  814. this.show = false
  815. uni.showModal({
  816. content: "确定通过费用支出申请?",
  817. showCancel: true,
  818. confirmText: '确定',
  819. success: function(res) {
  820. if (res.confirm) {
  821. uni.showLoading({
  822. title: "审核中...",
  823. mask: true
  824. })
  825. // for (let num = 0; num < that.List.length; num++) {
  826. // var tmp = 0
  827. var info = that.auditMind
  828. if (that.fileUrl.length > 0) {
  829. info = that.auditMind + "##" + that.fileUrl.toString()
  830. }
  831. that.$api.doRequest('post', '/newWorkflow/api/handle', {
  832. taskId: that.auditInfo.taskId,
  833. approved: true,
  834. auditMind: info ? info : "",
  835. needReapply: false
  836. }).then(res => {
  837. // tmp++
  838. // if (tmp == that.List.length) {
  839. uni.hideLoading()
  840. that.$api.msg('审核成功!')
  841. console.log('审核通过!')
  842. setTimeout(function() {
  843. uni.navigateBack();
  844. }, 2000);
  845. // }
  846. })
  847. // }
  848. }
  849. }
  850. })
  851. }
  852. },
  853. // audit(list, index, status, status2, reason) {
  854. // uni.showLoading({
  855. // title: "审核中"
  856. // })
  857. // if (this.List.length > 0) {
  858. // if (status == true && list.status == "已驳回") {
  859. // this.$api.doRequest('get', '/paymentManagement/api/openAuditFlow', {
  860. // compId: "2710b21efc1e4393930c5dc800010dc4",
  861. // id: list.id
  862. // }).then(res => {
  863. // if (res.data.code == 200) {
  864. // this.audit(this.List[index + 1], index + 1, status, status2, reason)
  865. // }
  866. // })
  867. // } else {
  868. // for (var i = 0; i < this.List.length; i++) {
  869. // this.$api.doRequest('post', '/newWorkflow/api/handle', {
  870. // taskId: this.List[i].taskId,
  871. // approved: status,
  872. // auditMind: this.auditMind ? this.auditMind : "",
  873. // needReapply: status2 ? true : false
  874. // }).then(res => {
  875. // if (res.data.code == 200) {
  876. // uni.hideLoading()
  877. // // this.audit(this.List[index + 1], index + 1, status, status2, reason)
  878. // this.$api.msg('通过成功')
  879. // }else{
  880. // uni.hideLoading()
  881. // this.$api.msg('审核失败')
  882. // }
  883. // })
  884. // }
  885. // }
  886. // } else {
  887. // if (status == true) {
  888. // this.$api.msg('通过成功')
  889. // } else if (status == false) {
  890. // this.$api.msg('驳回成功')
  891. // }
  892. // let that = this
  893. // setTimeout(function() {
  894. // if (that.everyCheck) {
  895. // helper.setAudit(that.list)
  896. // } else {
  897. // uni.navigateBack()
  898. // }
  899. // uni.hideLoading()
  900. // }, 1000);
  901. // }
  902. // },
  903. }
  904. }
  905. </script>
  906. <style scoped lang="scss">
  907. .warp {
  908. margin: 10rpx;
  909. padding: 20rpx 20rpx 240rpx 20rpx;
  910. }
  911. .content1 {
  912. font-size: 28rpx;
  913. color: #333333;
  914. margin-top: 30rpx;
  915. padding: 20rpx;
  916. // .content-item {
  917. border-radius: 20rpx;
  918. background: white;
  919. // padding: 40rpx 20rpx;
  920. // margin-bottom: 30rpx;
  921. // }
  922. // .title {
  923. // font-size: 32rpx;
  924. // font-weight: 600;
  925. // color: #333333;
  926. // margin: 30rpx 0;
  927. // }
  928. // .goodsInfoCss {
  929. // font-size: 28rpx;
  930. // font-weight: 600;
  931. // color: #878C9C;
  932. // margin: 26rpx 10rpx;
  933. // }
  934. // .priceCss {
  935. // font-size: 40rpx;
  936. // margin: 26rpx 10rpx;
  937. // color: #22C572;
  938. // font-weight: 600;
  939. // }
  940. .row {
  941. display: flex;
  942. justify-content: space-between;
  943. border-bottom: 1px solid #EEEEEE;
  944. padding: 20rpx 0;
  945. .right,
  946. input {
  947. font-size: 28rpx;
  948. // color: #333333;
  949. }
  950. }
  951. .img_css {
  952. width: 50rpx;
  953. height: 50rpx;
  954. }
  955. .file {
  956. // display: flex;
  957. align-items: center;
  958. margin: 30rpx 0 0 20rpx;
  959. .text_css {
  960. font-size: 30rpx;
  961. margin-left: 20rpx;
  962. }
  963. }
  964. }
  965. .title {
  966. font-size: 34rpx;
  967. font-weight: 700;
  968. // margin-bottom: 20rpx;
  969. height: 70rpx;
  970. border-bottom: 2rpx solid #EEEEEE;
  971. }
  972. .titlerow {
  973. font-size: 34rpx;
  974. font-weight: 700;
  975. // margin-bottom: 20rpx;
  976. // height: 70rpx;
  977. // border-bottom: 2rpx solid #EEEEEE;
  978. }
  979. .content2 {
  980. background: white;
  981. margin: 20rpx 0;
  982. border-radius: 20rpx;
  983. padding: 20rpx;
  984. .row {
  985. display: flex;
  986. .left {
  987. display: flex;
  988. align-items: center;
  989. .item1 {
  990. position: relative;
  991. .item-content {
  992. background: #617AE0;
  993. width: 44px;
  994. height: 44px;
  995. border-radius: 22px;
  996. line-height: 44px;
  997. text-align: center;
  998. font-size: 15px;
  999. color: #fff;
  1000. }
  1001. .status {
  1002. position: absolute;
  1003. border-radius: 50%;
  1004. padding: 0px 2px;
  1005. right: -3px;
  1006. bottom: -3px;
  1007. background: #fff;
  1008. }
  1009. .status.success {
  1010. border: 1px solid rgb(60, 156, 255);
  1011. }
  1012. .status.error {
  1013. border: 1px solid rgb(245, 108, 108);
  1014. }
  1015. .status.question {
  1016. border: 1px solid #f9ae3d;
  1017. }
  1018. }
  1019. }
  1020. .right {
  1021. width: 80%;
  1022. // color: #B0B1B5;
  1023. margin-top: 10px;
  1024. .right-content {
  1025. background: #F2F3F7;
  1026. margin-left: 10px;
  1027. margin-top: 10px;
  1028. padding: 10px;
  1029. border-radius: 5px;
  1030. color: #B0B1B5;
  1031. }
  1032. .right-item {
  1033. display: flex;
  1034. justify-content: space-between;
  1035. .time {
  1036. color: #999;
  1037. }
  1038. .item2 {
  1039. margin-left: 20rpx;
  1040. margin-top: -7px;
  1041. .name {
  1042. font-size: 28rpx;
  1043. font-weight: 800;
  1044. margin-bottom: 4px;
  1045. }
  1046. .status.success {
  1047. color: #6CC48C;
  1048. }
  1049. .status.error {
  1050. color: rgb(245, 108, 108);
  1051. }
  1052. .status.question {
  1053. color: #f9ae3d;
  1054. }
  1055. }
  1056. }
  1057. .audit_img {
  1058. flex-wrap: wrap;
  1059. // margin: 0 10rpx;
  1060. margin-left: 20rpx;
  1061. .url_css {
  1062. border: 1px solid #999999;
  1063. border-radius: 10px;
  1064. margin-top: 10px;
  1065. margin-right: 4px;
  1066. overflow: hidden;
  1067. width: 73px;
  1068. height: 73px;
  1069. .url_img {
  1070. width: 73px;
  1071. height: 73px;
  1072. // border-radius: 10px;
  1073. }
  1074. }
  1075. }
  1076. }
  1077. }
  1078. .row2 {
  1079. display: flex;
  1080. .item-content {
  1081. background: #22C572;
  1082. width: 30px;
  1083. height: 30px;
  1084. border-radius: 50%;
  1085. line-height: 30px;
  1086. text-align: center;
  1087. font-size: 12px;
  1088. color: #fff;
  1089. padding: 0 2px;
  1090. margin: 0 auto;
  1091. }
  1092. .status {
  1093. position: absolute;
  1094. top: 0;
  1095. right: 0;
  1096. }
  1097. }
  1098. .row-line {
  1099. width: 1px;
  1100. height: 30px;
  1101. background: #F2F2F2;
  1102. margin: 10rpx 50rpx;
  1103. }
  1104. .audit {
  1105. margin-top: 20rpx;
  1106. }
  1107. }
  1108. .bottom-btn {
  1109. width: 100%;
  1110. position: fixed;
  1111. bottom: 0;
  1112. display: flex;
  1113. z-index: 2;
  1114. left: 0;
  1115. background-color: #f8f8f8;
  1116. flex-direction: column;
  1117. .btn1,
  1118. .btn2 {
  1119. width: 100%;
  1120. margin-bottom: 26rpx;
  1121. border-radius: 90rpx;
  1122. }
  1123. .btn1 {
  1124. background: white;
  1125. color: #00C265;
  1126. }
  1127. }
  1128. .row1 {
  1129. border-bottom: 0 !important;
  1130. }
  1131. .topInfo {
  1132. height: 210rpx;
  1133. background: linear-gradient(270deg, #22C572 0%, #34DE8A 100%);
  1134. padding: 30rpx;
  1135. .topInfo-item {
  1136. height: 150rpx;
  1137. background-color: #FFFFFF;
  1138. border-radius: 20rpx;
  1139. padding: 40rpx;
  1140. .logo {
  1141. width: 40rpx;
  1142. height: 40rpx;
  1143. margin-top: 8rpx;
  1144. }
  1145. .infoText {
  1146. font-size: 36rpx;
  1147. font-weight: 600;
  1148. margin-left: 20rpx;
  1149. }
  1150. .infoData {
  1151. color: #878C9C;
  1152. font-size: 26rpx;
  1153. margin-top: 10rpx;
  1154. }
  1155. }
  1156. }
  1157. .shade {
  1158. position: fixed;
  1159. top: 0;
  1160. left: 0;
  1161. height: 100%;
  1162. width: 100%;
  1163. background: rgba(0, 0, 0, 0.4);
  1164. z-index: 3;
  1165. overflow-y: scroll;
  1166. .wrap {
  1167. position: absolute;
  1168. left: 0;
  1169. top: 0;
  1170. right: 0;
  1171. bottom: 0;
  1172. margin: auto;
  1173. background: #fff;
  1174. width: calc(100% - 198rpx);
  1175. height: 780rpx;
  1176. // overflow: hidden;
  1177. border-radius: 20rpx;
  1178. .content{
  1179. height:600rpx;
  1180. overflow-y: scroll;
  1181. }
  1182. .alert-top {
  1183. padding: 33rpx;
  1184. display: flex;
  1185. justify-content: center;
  1186. align-items: center;
  1187. position: relative;
  1188. }
  1189. .title {
  1190. font-size: 32rpx;
  1191. font-weight: 600;
  1192. color: #333333;
  1193. }
  1194. .close {
  1195. position: absolute;
  1196. right: 33rpx;
  1197. }
  1198. .upload_css {
  1199. margin-left: 20rpx;
  1200. .upload {
  1201. // width: 80px;
  1202. // height: 80px;
  1203. }
  1204. }
  1205. }
  1206. }
  1207. .audit_btn {
  1208. display: flex;
  1209. top: 0px;
  1210. }
  1211. .cancel,
  1212. .confirm {
  1213. // position: absolute;
  1214. // display: inline-block;
  1215. width: 50%;
  1216. text-align: center;
  1217. // bottom: 0;
  1218. padding: 10px;
  1219. border-top: 1px solid #eee;
  1220. font-size: 34rpx;
  1221. margin: auto;
  1222. }
  1223. .cancel {
  1224. left: 0;
  1225. border-right: 1px solid #eee;
  1226. color: #AFB3BF;
  1227. }
  1228. .u-textarea-style {
  1229. margin: 20rpx;
  1230. background: #F9F9FA;
  1231. border-radius: 10px;
  1232. border: 1px solid #EEEEEE;
  1233. padding: 10rpx 20rpx;
  1234. position: relative;
  1235. .right-bottom {
  1236. position: absolute;
  1237. right: 20rpx;
  1238. bottom: 20rpx;
  1239. color: #AFB3BF;
  1240. }
  1241. }
  1242. /deep/.u-input__textarea {
  1243. height: 300rpx !important;
  1244. }
  1245. .fujianImg {
  1246. width: 30%;
  1247. height: 80px;
  1248. border-radius: 3px;
  1249. border: 1px solid #ccc;
  1250. margin: 5px;
  1251. }
  1252. // .char_css {
  1253. // // text-align: center;
  1254. // // width: 90px;
  1255. // font-size: 30rpx;
  1256. // font-weight: 600;
  1257. // display: -webkit-box;
  1258. // overflow: hidden;
  1259. // /*! autoprefixer: off; */
  1260. // -webkit-box-orient: vertical;
  1261. // -webkit-line-clamp: 1;
  1262. // -webkit-box-orient: vertical;
  1263. // text-overflow: ellipsis;
  1264. // word-break: break-all;
  1265. // }
  1266. .img_item {
  1267. display: flex;
  1268. width: 100%;
  1269. margin: 10px 0;
  1270. padding: 0 10rpx;
  1271. .imgsign{
  1272. width: 25px;
  1273. height: 25px;
  1274. margin-top: 6px;
  1275. }
  1276. .char_css {
  1277. font-size: 28rpx;
  1278. font-weight: 600;
  1279. display: -webkit-box;
  1280. overflow: hidden;
  1281. /*! autoprefixer: off; */
  1282. -webkit-box-orient: vertical;
  1283. -webkit-line-clamp: 1;
  1284. -webkit-box-orient: vertical;
  1285. text-overflow: ellipsis;
  1286. word-break: break-all;
  1287. }
  1288. .img_size{
  1289. color: #B0B3BF;
  1290. font-size: 12px;
  1291. margin-top: 5px;
  1292. }
  1293. .img_dowload {
  1294. width: 14%;
  1295. color: #22C572;
  1296. text-align: right;
  1297. }
  1298. }
  1299. /deep/.u-upload .u-list-item{
  1300. background:#fff;
  1301. border:1px dashed #ccc;
  1302. border-radius:10rpx;
  1303. height:190rpx !important;
  1304. width:190rpx !important;
  1305. margin:10rpx;
  1306. text-align:center;
  1307. display: flex;
  1308. align-items: center;
  1309. justify-content: center;
  1310. flex-direction: column;
  1311. }
  1312. </style>