Approvaldetail.vue 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126
  1. <!-- 委员会申请列表 -->
  2. <template>
  3. <div class="autoBox box1" style="position: relative; background: #f5f5f5">
  4. <div class="center" style="margin-top: 20px;height:1026px">
  5. <div class="left">
  6. <div class="centerLeft1" >
  7. <div class="top">
  8. <div class="top1"></div>
  9. <div class="top2"></div>
  10. <div class="allApplication">
  11. <span >{{
  12. $t("common.ApplicationDetails")
  13. }}</span>
  14. </div>
  15. <div @click="back" class="more">
  16. <span>{{ "<" }}{{ $t("common.return") }}</span>
  17. </div>
  18. </div>
  19. <div class="content" >
  20. <div class="content2" style="overflow-y:auto;overflow-x:hidden">
  21. <div style="margin-top: 39px;width: 93%;height:auto;display: flex;flex-wrap: wrap;align-items: center;background-clip: content-box;">
  22. <div class="tableTr">
  23. <div class="tableTd20">{{ $i18n.locale == 'en' ? 'Apply Name ' : '申请人' }}</div>
  24. <div class="tableTd30" >
  25. <span style="margin-left:20px">{{applyname}}</span>
  26. </div>
  27. <div class="tableTd20">{{ $i18n.locale == 'en' ? 'Apply Num ' : '申请编号' }}</div>
  28. <div class="tableTd30">
  29. <span style="margin-left:20px">{{applynumber}}</span>
  30. </div>
  31. </div>
  32. <div class="tableTr">
  33. <div class="tableTd20">{{ $i18n.locale == 'en' ? 'Apply Time ' : '申请时间' }}</div>
  34. <div class="tableTd30" >
  35. <span style="margin-left:20px">{{applytime}}</span>
  36. </div>
  37. <div class="tableTd20">
  38. {{ $i18n.locale == 'en' ? 'Belong Committe ' : '所属委员会' }}
  39. </div>
  40. <div class="tableTd30">
  41. <span style="margin-left:20px"> {{ $i18n.locale == 'en' ? commact_committee_name_en : commact_committee_name }}</span>
  42. <!--<el-select v-model="commact_committee" placeholder="请选择" style="width:300px;margin-left:20px" >
  43. <el-option
  44. style="width:300px"
  45. v-for="item in committeeoptions"
  46. :key="item.value"
  47. :label="item.label"
  48. :value="item.value">
  49. </el-option>
  50. </el-select>-->
  51. </div>
  52. </div>
  53. <div class="tableTr">
  54. <div class="tableTd20">{{ $i18n.locale == 'en' ? 'Application Type ' : '申请类型' }}</div>
  55. <div class="tableTd30" >
  56. <span style="margin-left:20px">{{applytype1}}</span>
  57. </div>
  58. <div class="tableTd20">{{ $i18n.locale == 'en' ? 'Title ' : '标题' }}</div>
  59. <div class="tableTd30">
  60. <span style="margin-left:20px">{{commact_title}}</span>
  61. </div>
  62. </div>
  63. <div class="tableTr" v-if="applytype=='4'">
  64. <div class="tableTd20" >{{ $i18n.locale == 'en' ? 'Work Plans ' : '工作计划' }}</div>
  65. <div class="tableTd120">
  66. <span style="margin-left:20px;margin-top:5px;">{{workPlanSummaryYear}}</span>
  67. </div>
  68. </div>
  69. <div class="tableTr" v-if="applytype=='6'">
  70. <div class="tableTd20" >{{ $i18n.locale == 'en' ? 'Release Range ' : '发布范围' }}</div>
  71. <div class="tableTd120">
  72. <span style="margin-left:20px">{{releaseScope}}</span>
  73. </div>
  74. </div>
  75. <div class="tableTr" v-if="applytype=='2'">
  76. <div class="tableTd20">{{ $i18n.locale == 'en' ? 'Receive Committe ' : '接收委员会' }}</div>
  77. <div class="tableTd30" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
  78. <span :title="acceptCommittee" style="margin-left:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">{{acceptCommittee}}</span>
  79. </div>
  80. <div class="tableTd20" > {{ $i18n.locale == 'en' ? 'Receiver ' : ' 接收人' }}</div>
  81. <div class="tableTd30" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
  82. <span :title="accepter" style="margin-left:20px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">{{accepter}}</span>
  83. </div>
  84. </div>
  85. </div>
  86. <div class="neirong">
  87. <span>{{ $i18n.locale == 'en' ? 'Content ' : ' 摘要' }}:</span>
  88. </div>
  89. <div style="height:auto;width:100%">
  90. <!-- <div class="content_title">{{content_title}}</div>-->
  91. <div class="content_content">{{content}}</div>
  92. </div>
  93. <div style="display:flex;margin-top:31px;margin-left:-20px" >
  94. <div :style="this.$i18n.locale == 'en' ?'width:11%;':''">{{ $i18n.locale == 'en' ? 'Body ' : ' 正文' }}:</div>
  95. <div style="width:93%">
  96. <el-upload
  97. class="upload-demo"
  98. disabled
  99. action="/api/nationregioncomittee-service/nrc/nrcApplys/uploadFile"
  100. :on-preview="handlePreview"
  101. :on-remove="handleRemove"
  102. :before-remove="beforeRemove"
  103. :before-upload="beforeUpload"
  104. :on-success="handleAvatarSuccessAnnex"
  105. multiple
  106. :on-exceed="handleExceed"
  107. :file-list="filesList">
  108. <!-- <el-button size="small"><i class="el-icon-upload2"></i>{{ $i18n.locale == 'en' ? 'Uploadfile ' : ' 上传文件' }}</el-button>
  109. <div slot="tip" class="el-upload__tip">{{ $i18n.locale == 'en' ? 'Supported file name extension :doc :docx: PDF. The size of a single file cannot exceed 4MB ' : ' 支持扩展名:doc :docx :pdf,单个文件大小不超过4MB' }}</div> -->
  110. </el-upload>
  111. </div>
  112. </div>
  113. <div style="display:flex;margin-top:98px;margin-left:-20px">
  114. <div :style="this.$i18n.locale == 'en' ?'width:11%;':''">{{ $i18n.locale == 'en' ? 'Attachment ' : '附件' }}:</div>
  115. <div style="width:89%">
  116. <el-upload
  117. class="upload-demo"
  118. disabled
  119. action="/api/nationregioncomittee-service/nrc/nrcApplys/uploadFile"
  120. :on-preview="handlePreview1"
  121. :on-remove="handleRemove1"
  122. :before-remove="beforeRemove1"
  123. :before-upload="beforeUpload1"
  124. :on-success="handleAvatarSuccessAnnex1"
  125. multiple
  126. :on-exceed="handleExceed1"
  127. :file-list="filesList1">
  128. <!-- <el-button size="small"><i class="el-icon-upload2"></i>{{ $i18n.locale == 'en' ? 'Uploadfile ' : ' 上传文件' }}</el-button>
  129. <div slot="tip" class="el-upload__tip">{{ $i18n.locale == 'en' ? 'Supported file name extension :doc :docx: PDF. The size of a single file cannot exceed 4MB ' : ' 支持扩展名:doc :docx :pdf,单个文件大小不超过4MB' }}</div> -->
  130. </el-upload>
  131. </div>
  132. </div>
  133. <div style="margin-top:107px;margin-bottom:30px;display:flex">
  134. <div class="submit" :style="$i18n.locale == 'en' ?'padding-left:30px;':'padding-left:44px;'" @click="submits">{{ $i18n.locale == 'en' ? 'WithDraw ' : ' 撤回' }}</div>
  135. <div class="cancel" @click="cancel">{{ $i18n.locale == 'en' ? 'Close ' : ' 关闭' }}</div>
  136. </div>
  137. </div>
  138. </div>
  139. </div>
  140. </div>
  141. </div>
  142. </div>
  143. </template>
  144. <script>
  145. import Screen from "@/components/screen";
  146. import {getcommittee1,getwaitdetail,uploadfile,editwaitapply2,editwaittijiao} from '@/api/committee/nrc';
  147. export default {
  148. name: "Approvaldetail",
  149. props: ["detailids","flag","logo"],
  150. components: {
  151. Screen,
  152. },
  153. data() {
  154. return {
  155. content_title:'研讨会',
  156. content_content:'贝克莱主席指出,为了实现预期的目标,非洲国家需要动员能源,扩大合作,促进电力连接和整合,提升能源领域的全球竞争力,并遵守2030年联合国和非盟的2063年议程。作为一个成员国,埃塞俄比亚正在推动跨境基础设施的发展,建立电力互联设施,并开发可再生能源,推动区域合作与一体化。',
  157. tableData:[],
  158. committeeoptions:[],
  159. finished:false,
  160. areadeal1:false,
  161. areadeal2:false,
  162. activeName:'first',
  163. accepter:undefined,//接收人
  164. acceptCommittee:undefined,//接收委员会
  165. applytype:undefined,//4.工作计划
  166. applytype1:undefined,
  167. releaseScope:undefined,//发布范围
  168. workPlanSummaryYear:undefined,//工作计划
  169. handleNode:undefined,
  170. files:[],
  171. id:undefined,
  172. applyStatus:undefined,
  173. frontOrBack:undefined,//前台还是后台
  174. filename:[],
  175. filename1:[],
  176. filename2:undefined,
  177. status:undefined,//状态
  178. fileList:[],
  179. filesList:[],
  180. filesList1:[],
  181. reserveone_s:undefined,
  182. fileList1:[],
  183. filepath:undefined,
  184. filepath1:undefined,
  185. globalReadonly:true,
  186. applyname:undefined,
  187. applynumber:undefined,//申请编号
  188. applytime:undefined,//申请时间
  189. commact_committee:undefined,//委员会id
  190. commact_committee_name:undefined,//委员会名字
  191. commact_committee_name_en:undefined,//委员会名字
  192. content:undefined,//内容
  193. commact_title:undefined,//标题
  194. defaultProps: {
  195. children: "param",
  196. label: "name",
  197. },
  198. defaultShowNodes:[],
  199. refresh:1,
  200. search: "",
  201. screen1s: {
  202. value: "common.type",
  203. item: [],
  204. },
  205. screen1def: null,
  206. screen2Item: null,
  207. };
  208. },
  209. watch: {
  210. "$i18n.locale"() {
  211. if(this.$i18n.locale == 'en'){
  212. if(this.applytype1=='活动方案'){
  213. this.applytype1='Activity Plan'
  214. }
  215. if(this.applytype1=='意见与建议'){
  216. this.applytype1='Comments And Suggestions'
  217. }
  218. if(this.applytype1=='工作计划/总结'){
  219. this.applytype1='Work Plan/ Conclusion'
  220. }
  221. if(this.applytype1=='公文'){
  222. this.applytype1='Document'
  223. }
  224. if(this.applytype1=='资料发布'){
  225. this.applytype1='Data release'
  226. }
  227. }else{
  228. if(this.applytype1=='Activity Plan'){
  229. this.applytype1='活动方案'
  230. }
  231. if(this.applytype1=='Comments And Suggestions'){
  232. this.applytype1='意见与建议'
  233. }
  234. if(this.applytype1=='Work Plan/ Conclusion'){
  235. this.applytype1='工作计划/总结'
  236. }
  237. if(this.applytype1=='Document'){
  238. this.applytype1='公文'
  239. }
  240. if(this.applytype1=='Data release'){
  241. this.applytype1='资料发布'
  242. }
  243. }
  244. },
  245. CountryId() {},
  246. },
  247. updated(){
  248. },
  249. mounted() {
  250. getcommittee1().then(res=>{
  251. /* this.commiteeoptions=res.data.page*/
  252. for(let i=0;i<res.data.page.length;i++){
  253. let obj={}
  254. obj.data=[];
  255. obj.label=res.data.page[i].committeeName
  256. obj.value=res.data.page[i].id
  257. this.committeeoptions.push(obj)
  258. }
  259. })
  260. console.log(this.detailids)
  261. getwaitdetail(this.detailids).then(res=>{
  262. this.applyname=res.data.nrcApply.applyPeopleName;
  263. this.applynumber=res.data.nrcApply.applyNumber
  264. this.applytime=res.data.nrcApply.createDate
  265. this.commact_committee=res.data.nrcApply.belongCommittee
  266. this.commact_committee_name=res.data.nrcApply.belongCommitteeName
  267. this.commact_committee_name_en=res.data.nrcApply.belongCommitteeNameEn
  268. this.content=res.data.nrcApply.abstractInfo
  269. this.commact_title=res.data.nrcApply.title
  270. this.frontOrBack=res.data.nrcApply.frontOrBack
  271. this.status=res.data.nrcApply.applyStatus
  272. if(res.data.nrcApply.applyType=='1'){
  273. if(this.$i18n.locale == 'en'){
  274. this.applytype1='Activity Plan'
  275. }else{
  276. this.applytype1='活动方案'
  277. }
  278. }
  279. if(res.data.nrcApply.applyType=='2'){
  280. if(this.$i18n.locale == 'en'){
  281. this.applytype1='Comments And Suggestions'
  282. }else{
  283. this.applytype1='意见与建议'
  284. }
  285. }
  286. if(res.data.nrcApply.applyType=='4'){
  287. if(this.$i18n.locale == 'en'){
  288. this.applytype1='Work Plan/ Conclusion'
  289. }else{
  290. this.applytype1='工作计划/总结'
  291. }
  292. }
  293. if(res.data.nrcApply.applyType=='5'){
  294. if(this.$i18n.locale == 'en'){
  295. this.applytype1='Document'
  296. }else{
  297. this.applytype1='公文'
  298. }
  299. }
  300. if(res.data.nrcApply.applyType=='6'){
  301. if(this.$i18n.locale == 'en'){
  302. this.applytype1='Data release'
  303. }else{
  304. this.applytype1='资料发布'
  305. }
  306. }
  307. this.applytype=res.data.nrcApply.applyType
  308. this.reserveone_s=res.data.nrcApply.reserveOne
  309. if(res.data.nrcApply.workPlanSummaryYear){
  310. this.workPlanSummaryYear=res.data.nrcApply.workPlanSummaryYear
  311. }
  312. if(res.data.nrcApply.releaseScope){
  313. this.releaseScope=res.data.nrcApply.releaseScope
  314. }
  315. if(res.data.nrcApply.accepter){
  316. this.accepter=res.data.nrcApply.accepter
  317. }
  318. if(res.data.nrcApply.acceptCommittee){
  319. if(this.$i18n.locale == 'en'){
  320. this.acceptCommittee=res.data.nrcApply.acceptCommitteeEn
  321. }else{
  322. this.acceptCommittee=res.data.nrcApply.acceptCommittee
  323. }
  324. }
  325. if(res.data.nrcAccepterReplys){
  326. this.accepterreplys=res.data.nrcAccepterReplys
  327. }
  328. if(res.data.files){
  329. (res.data.files).forEach(item=>{
  330. if(item.type=='2'){
  331. let obj={}
  332. obj.name=item.fileNameDisplay
  333. obj.url=item.filePath
  334. obj.type=item.type
  335. this.filesList.push(obj)
  336. }
  337. if(item.type=='3' || item.type=='5'){
  338. let obj={}
  339. obj.name=item.fileNameDisplay
  340. obj.url=item.filePath
  341. obj.type=item.type
  342. this.filesList1.push(obj)
  343. }
  344. })
  345. }
  346. })
  347. },
  348. destroyed() {},
  349. methods: {
  350. handleCurrentChange() {},
  351. back() {
  352. if(this.flag==1){
  353. var params = {
  354. name: "workspace",
  355. type: false,
  356. };
  357. this.$emit("applicationType", params);
  358. }
  359. if(this.flag==2){
  360. if(this.logo == "my"){
  361. var params = {
  362. name: "application",
  363. type: true,
  364. };
  365. this.$emit("applicationType", params);
  366. }else {
  367. var params = {
  368. name: "application",
  369. type: false,
  370. };
  371. this.$emit("applicationType", params);
  372. }
  373. }
  374. },
  375. cancel(){
  376. if(this.flag==1){
  377. var params = {
  378. name: "workspace",
  379. type: false,
  380. };
  381. this.$emit("applicationType", params);
  382. }
  383. if(this.flag==2){
  384. if(this.logo == "my"){
  385. var params = {
  386. name: "application",
  387. type: true,
  388. };
  389. this.$emit("applicationType", params);
  390. }else {
  391. var params = {
  392. name: "application",
  393. type: false,
  394. };
  395. this.$emit("applicationType", params);
  396. }
  397. }
  398. },
  399. submits(){
  400. let params={
  401. id: this.detailids,
  402. applyStatus: 5,
  403. statusDict:6,
  404. frontOrBack:2,
  405. lauguage:"ZH",
  406. applyType:this.applytype
  407. }
  408. if (this.$i18n.locale.toUpperCase() == 'ZH') {
  409. this.$confirm('确定要撤回本次申请单吗?', '提示', {
  410. confirmButtonText: '确定',
  411. cancelButtonText: '取消',
  412. type: 'warning'
  413. }).then(() => {
  414. editwaitapply2(params).then(res=>{
  415. console.log(res.data)
  416. if(res.status=='200'){
  417. var params2 = {
  418. name: "withdrawdetail",
  419. type: false,
  420. detailids:this.detailids,
  421. reserveone_s:this.reserveone_s,
  422. flag:this.flag
  423. };
  424. this.$emit("applicationType", params2);
  425. this.$message.success('撤回成功')
  426. }
  427. }).catch(() => {
  428. this.$message.error('撤回失败')
  429. });
  430. }).catch(() => {
  431. });
  432. }else{
  433. this.$confirm('Are you sure you want to withdraw your application?', 'Tips', {
  434. confirmButtonText: 'Submit',
  435. cancelButtonText: 'Cancel',
  436. type: 'warning'
  437. }).then(() => {
  438. editwaitapply2(params).then(res=>{
  439. console.log(res.data)
  440. if(res.status=='200'){
  441. var params2 = {
  442. name: "withdrawdetail",
  443. type: false,
  444. detailids:this.detailids,
  445. reserveone_s:this.reserveone_s,
  446. flag:this.flag
  447. };
  448. this.$emit("applicationType", params2);
  449. this.$message.success('Withdraw success')
  450. }
  451. }).catch(() => {
  452. this.$message.error('Withdraw Fail')
  453. });
  454. }).catch(() => {
  455. });
  456. }
  457. /*
  458. this.$alert('确定要撤回本次申请单吗', {
  459. confirmButtonText: '确定',
  460. callback: action => {
  461. editwaitapply(params).then(res=>{
  462. console.log(res.data)
  463. if(res.status=='200'){
  464. var params2 = {
  465. name: "withdrawdetail",
  466. type: false,
  467. detailids:this.detailids,
  468. reserveone_s:this.reserveone_s,
  469. flag:this.flag
  470. };
  471. this.$emit("applicationType", params2);
  472. }
  473. })
  474. }
  475. });*/
  476. },
  477. screenBack() {},
  478. handleAvatarSuccessAnnex(res, file) {
  479. let obj={}
  480. obj.fileNameDisplay=file.name
  481. obj.filePath=res.data.filePath
  482. obj.type=2
  483. this.filename.push(obj)
  484. console.log(this.filename)
  485. },
  486. handleAvatarSuccessAnnex1(res, file) {
  487. let obj={}
  488. obj.fileNameDisplay=file.name
  489. obj.filePath=res.data.filePath
  490. obj.type=3
  491. this.filename1.push(obj)
  492. },
  493. beforeUpload(file) {
  494. var FileExt = file.name.replace(/.+\./, "");
  495. if (['zip', 'pdf', 'doc', 'docx', 'excel', 'xls', 'xlsx'].indexOf(FileExt.toLowerCase()) === -1) {
  496. this.$message({
  497. type: 'warning',
  498. message: '请上传zip,pdf,word,excel的附件!'
  499. });
  500. this.fileList.splice(this.fileList.indexOf(file), 1)
  501. return false;
  502. }
  503. this.isLt2k = file.size / 1024 / 1024 < 10 ? '1' : '0';
  504. if (this.isLt2k === '0') {
  505. if (this.$i18n.locale.toUpperCase() == 'ZH') {
  506. this.$message({
  507. message: '上传文件大小不能超过10M!',
  508. type: 'error'
  509. });
  510. } else {
  511. this.$message({
  512. message: 'Upload file size cannot exceed 10m!',
  513. type: 'error'
  514. });
  515. }
  516. return false;
  517. }
  518. },
  519. handlePreview(file, fileList) {
  520. console.log(file, fileList);
  521. let param={
  522. fileName:file.name,
  523. filePath:file.url
  524. }
  525. uploadfile(param).then(res=>{
  526. const content = res
  527. if(content){
  528. const blob = new Blob([content])//构造一个blob对象来处理数据
  529. const fileName = decodeURIComponent(res.fileName)
  530. //对于<a>标签,只有 Firefox 和 Chrome(内核) 支持 download 属性
  531. //IE10以上支持blob但是依然不支持download
  532. if ('download' in document.createElement('a')) { //支持a标签download的浏览器
  533. const link = document.createElement('a')//创建a标签
  534. link.download = file.name//a标签添加属性
  535. link.style.display = 'none'
  536. link.href = URL.createObjectURL(blob)
  537. document.body.appendChild(link)
  538. link.click()//执行下载
  539. URL.revokeObjectURL(link.href) //释放url
  540. document.body.removeChild(link)//释放标签
  541. } else { //其他浏览器
  542. navigator.msSaveBlob(blob, fileName)
  543. }
  544. }else{
  545. this.$message.error('服务器繁忙');
  546. }
  547. })
  548. },
  549. handlePreview1(file, fileList) {
  550. console.log(file, fileList);
  551. let param={
  552. fileName:file.name,
  553. filePath:file.url
  554. }
  555. uploadfile(param).then(res=>{
  556. const content = res
  557. if(content){
  558. const blob = new Blob([content])//构造一个blob对象来处理数据
  559. const fileName = decodeURIComponent(res.fileName)
  560. //对于<a>标签,只有 Firefox 和 Chrome(内核) 支持 download 属性
  561. //IE10以上支持blob但是依然不支持download
  562. if ('download' in document.createElement('a')) { //支持a标签download的浏览器
  563. const link = document.createElement('a')//创建a标签
  564. link.download = file.name//a标签添加属性
  565. link.style.display = 'none'
  566. link.href = URL.createObjectURL(blob)
  567. document.body.appendChild(link)
  568. link.click()//执行下载
  569. URL.revokeObjectURL(link.href) //释放url
  570. document.body.removeChild(link)//释放标签
  571. } else { //其他浏览器
  572. navigator.msSaveBlob(blob, fileName)
  573. }
  574. }else{
  575. this.$message.error('服务器繁忙');
  576. }
  577. })
  578. },
  579. beforeUpload1(file) {
  580. var FileExt = file.name.replace(/.+\./, "");
  581. if (['zip', 'pdf', 'doc', 'docx', 'excel', 'xls', 'xlsx'].indexOf(FileExt.toLowerCase()) === -1) {
  582. this.$message({
  583. type: 'warning',
  584. message: '请上传zip,pdf,word,excel的附件!'
  585. });
  586. this.fileList.splice(this.fileList.indexOf(file), 1)
  587. return false;
  588. }
  589. this.isLt2k = file.size / 1024 / 1024 < 10 ? '1' : '0';
  590. if (this.isLt2k === '0') {
  591. if (this.$i18n.locale.toUpperCase() == 'ZH') {
  592. this.$message({
  593. message: '上传文件大小不能超过10M!',
  594. type: 'error'
  595. });
  596. } else {
  597. this.$message({
  598. message: 'Upload file size cannot exceed 10m!',
  599. type: 'error'
  600. });
  601. }
  602. return false;
  603. }
  604. },
  605. handleRemove(file, fileList) {
  606. console.log(file, fileList);
  607. this.filename.forEach((item,index)=>{
  608. if(file.name==item.fileNameDisplay){
  609. this.filename.splice(index,1)
  610. }
  611. })
  612. this.fileList.forEach((item,index)=>{
  613. if(file.name==item.name){
  614. this.fileList.splice(index,1)
  615. }
  616. })
  617. console.log(this.filename)
  618. },
  619. handleRemove1(file, fileList) {
  620. console.log(file, fileList);
  621. this.filename1.forEach((item,index)=>{
  622. if(file.name==item.fileNameDisplay){
  623. this.filename1.splice(index,1)
  624. }
  625. })
  626. this.fileList1.forEach((item,index)=>{
  627. if(file.name==item.name){
  628. this.fileList1.splice(index,1)
  629. }
  630. })
  631. console.log(this.filename1)
  632. },
  633. handleExceed(files, fileList) {
  634. this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
  635. },
  636. handleExceed1(files, fileList) {
  637. this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
  638. },
  639. beforeRemove(file, fileList) {
  640. return this.$confirm(`确定移除 ${ file.name }?`);
  641. },
  642. beforeRemove1(file, fileList) {
  643. return this.$confirm(`确定移除 ${ file.name }?`);
  644. },
  645. getNowFormatDate () {
  646. let now = new Date();
  647. let year = now.getFullYear(); //获取完整的年份(4位,1970-????)
  648. let month = now.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  649. let today = now.getDate(); //获取当前日(1-31)
  650. let hour = now.getHours(); //获取当前小时数(0-23)
  651. let minute = now.getMinutes(); //获取当前分钟数(0-59)
  652. let second = now.getSeconds(); //获取当前秒数(0-59)
  653. let nowTime = ''
  654. nowTime = year + '-' + this.fillZero(month) + '-' + this.fillZero(today) + ' ' + this.fillZero(hour) + ':' +
  655. this.fillZero(minute) + ':' + this.fillZero(second)
  656. return nowTime
  657. },
  658. getNowFormatDate1 (value) {
  659. let now = new Date(value);
  660. let year = now.getFullYear(); //获取完整的年份(4位,1970-????)
  661. let month = now.getMonth() + 1; //获取当前月份(0-11,0代表1月)
  662. let today = now.getDate(); //获取当前日(1-31)
  663. let hour = now.getHours(); //获取当前小时数(0-23)
  664. let minute = now.getMinutes(); //获取当前分钟数(0-59)
  665. let second = now.getSeconds(); //获取当前秒数(0-59)
  666. let nowTime = ''
  667. nowTime = year + '-' + this.fillZero(month) + '-' + this.fillZero(today)
  668. return nowTime
  669. },
  670. fillZero (str) {
  671. var realNum;
  672. if (str < 10) {
  673. realNum = '0' + str;
  674. } else {
  675. realNum = str;
  676. }
  677. return realNum;
  678. },
  679. },
  680. };
  681. </script>
  682. <style scoped>
  683. ::v-deep .el-upload-list__item-name {
  684. color: #4790f7;
  685. text-decoration: underline;
  686. }
  687. /deep/ .el-upload-list__item {
  688. width: 299px;
  689. }
  690. .content_title{
  691. padding-left:316px;
  692. width: 1087px;
  693. height: 26px;
  694. font-family: 'PingFang SC';
  695. font-style: normal;
  696. font-weight: 500;
  697. font-size: 20px;
  698. line-height: 22px;
  699. /* or 110% */
  700. display: flex;
  701. align-items: center;
  702. text-align: center;
  703. text-indent: 30px;
  704. font-feature-settings: 'tnum' on, 'lnum' on;
  705. color: rgba(0, 0, 0, 0.85);
  706. }
  707. .content_content{
  708. width: 1018px;
  709. height: auto;
  710. font-family: 'PingFang SC';
  711. font-style: normal;
  712. font-weight: 400;
  713. font-size: 14px;
  714. line-height: 25px;
  715. /* or 179% */
  716. display: flex;
  717. align-items: center;
  718. text-indent: 30px;
  719. font-feature-settings: 'tnum' on, 'lnum' on;
  720. color: rgba(0, 0, 0, 0.65);
  721. }
  722. .neirong{
  723. margin-top:64px;
  724. height:26px;
  725. margin-left:-50px;
  726. font-family: 'PingFang SC';
  727. font-style: normal;
  728. font-weight: 400;
  729. font-size: 16px;
  730. line-height: 0px;
  731. /* or 0% */
  732. display: flex;
  733. align-items: center;
  734. text-indent: 30px;
  735. font-feature-settings: 'tnum' on, 'lnum' on;
  736. color: rgba(0, 0, 0, 0.95);
  737. }
  738. .submit{
  739. box-sizing: border-box;
  740. width: 120px;
  741. height: 40px;
  742. margin-left: 339px;
  743. background: #3A8EE6;
  744. border: 1px solid #3A8EE6;
  745. border-radius: 4px;
  746. /* Bold/Body */
  747. padding-left:44px;
  748. font-family: 'Noto Sans SC';
  749. font-style: normal;
  750. font-weight: 500;
  751. font-size: 14px;
  752. line-height: 22px;
  753. /* identical to box height, or 157% */
  754. display: flex;
  755. align-items: center;
  756. text-align: center;
  757. font-feature-settings: 'tnum' on, 'lnum' on;
  758. cursor:pointer;
  759. /* Neutral Color/White */
  760. color: #FFFFFF;
  761. }
  762. .cancel{
  763. box-sizing: border-box;
  764. width: 120px;
  765. height: 40px;
  766. margin-left: 30px;
  767. padding-left:44px;
  768. background: white;
  769. border: 1px solid #e9ebef;
  770. border-radius: 4px;
  771. cursor:pointer;
  772. font-family: 'Noto Sans SC';
  773. font-style: normal;
  774. font-weight: 500;
  775. font-size: 14px;
  776. line-height: 22px;
  777. /* identical to box height, or 157% */
  778. display: flex;
  779. align-items: center;
  780. text-align: center;
  781. font-feature-settings: 'tnum' on, 'lnum' on;
  782. color: rgba(17, 17, 17, 0.65);
  783. }
  784. /deep/ .applytype .el-select {
  785. width: 415px!important;
  786. }
  787. /* 利用穿透,设置input边框隐藏 */
  788. .inputDeep>>>.el-input__inner {
  789. border: 0;
  790. }
  791. /* 如果你的 el-input type 设置成textarea ,就要用这个了 */
  792. .inputDeep>>>.el-textarea__inner {
  793. border: 0;
  794. resize: none;/* 这个是去掉 textarea 下面拉伸的那个标志,如下图 */
  795. }
  796. .english{
  797. box-sizing: border-box;
  798. position: absolute;
  799. width: 80px;
  800. height: 40px;
  801. left: 69px;
  802. border: 1px solid rgba(0, 0, 0, 0.15);
  803. border-radius: 2px;
  804. font-family: 'Noto Sans SC';
  805. font-style: normal;
  806. font-weight: 400;
  807. font-size: 14px;
  808. line-height: 22px;
  809. /* identical to box height, or 157% */
  810. display: flex;
  811. align-items: center;
  812. font-feature-settings: 'tnum' on, 'lnum' on;
  813. color: rgba(0, 0, 0, 0.85);
  814. padding-left:13px;
  815. }
  816. .box1 {
  817. padding: 0 0 20px 0;
  818. position: absolute;
  819. }
  820. .center {
  821. display: flex;
  822. }
  823. .topImg img {
  824. display: inline-block;
  825. width: 1200px;
  826. height: 324px;
  827. }
  828. .centerLeft1 {
  829. border-radius: 0px;
  830. width: 1198px;
  831. height: 877px;
  832. left: 360px;
  833. top: 317px;
  834. background: #FFFFFF;
  835. }
  836. .left {
  837. position: relative;
  838. }
  839. .top .top1 {
  840. position: absolute;
  841. width: 5.5px;
  842. height: 10.5px;
  843. left: 20px;
  844. top: 35px;
  845. background: #376ac7;
  846. z-index: 1;
  847. }
  848. .top .top2 {
  849. position: absolute;
  850. width: 5.5px;
  851. height: 15px;
  852. left: 20px;
  853. top: 35px;
  854. background: #83bd50;
  855. }
  856. .top .allApplication {
  857. position: absolute;
  858. height: 22px;
  859. left: 34px;
  860. top: 31px;
  861. }
  862. .top .allApplication span {
  863. font-family: "PingFang SC";
  864. font-style: normal;
  865. font-weight: 600;
  866. font-size: 16px;
  867. line-height: 22px;
  868. color: #375586;
  869. }
  870. .top .notice {
  871. position: absolute;
  872. height: 22px;
  873. left: 160px;
  874. top: 32px;
  875. }
  876. .top .notice span {
  877. font-family: "PingFang SC";
  878. font-style: normal;
  879. font-weight: 600;
  880. font-size: 16px;
  881. line-height: 22px;
  882. color: rgba(10, 10, 10, 0.85);
  883. }
  884. .top .more {
  885. position: absolute;
  886. height: 16px;
  887. right: 21px;
  888. top: 31px;
  889. }
  890. .top .more span {
  891. font-family: "Roboto";
  892. font-style: normal;
  893. font-weight: 500;
  894. font-size: 14px;
  895. line-height: 16px;
  896. color: #4790f7;
  897. }
  898. .content .content1 {
  899. box-sizing: border-box;
  900. position: absolute;
  901. width: 100%;
  902. height: 70px;
  903. left: 0px;
  904. top: 78px;
  905. }
  906. .content .content2 {
  907. box-sizing: border-box;
  908. position: absolute;
  909. width: 100%;
  910. height: 976px;
  911. left: 0px;
  912. top: 50px;
  913. background: #FFFFFF;
  914. padding-left:125px;
  915. }
  916. .content .title {
  917. font-family: "PingFang SC";
  918. font-style: normal;
  919. font-weight: 600;
  920. font-size: 14px;
  921. line-height: 20px;
  922. color: rgba(0, 0, 0, 0.85);
  923. position: absolute;
  924. left: 16px;
  925. top: 16px;
  926. right: 14px;
  927. bottom: 113px;
  928. }
  929. .content .time {
  930. font-family: "Roboto";
  931. font-style: normal;
  932. font-weight: 400;
  933. font-size: 12px;
  934. line-height: 14px;
  935. color: rgba(0, 0, 0, 0.65);
  936. position: absolute;
  937. left: 16px;
  938. top: 61px;
  939. }
  940. .content .type {
  941. font-family: "PingFang SC";
  942. font-style: normal;
  943. font-weight: 400;
  944. font-size: 14px;
  945. line-height: 20px;
  946. color: rgba(0, 0, 0, 0.85);
  947. position: absolute;
  948. left: 16px;
  949. top: 89px;
  950. }
  951. .content .toView {
  952. margin-left: 100px;
  953. font-family: "Roboto";
  954. font-style: normal;
  955. font-weight: 400;
  956. font-size: 14px;
  957. line-height: 16px;
  958. color: #274e92;
  959. }
  960. .content .toProgress {
  961. font-family: "Roboto";
  962. font-style: normal;
  963. font-weight: 400;
  964. font-size: 14px;
  965. line-height: 16px;
  966. color: #274e92;
  967. }
  968. .centerLeft2 {
  969. position: relative;
  970. margin-top: 20px;
  971. height: 177px;
  972. width: 850px;
  973. border-radius: 0px;
  974. background: #fff;
  975. }
  976. .content .audit {
  977. position: absolute;
  978. right: 5%;
  979. }
  980. .area {
  981. position: absolute;
  982. top: 100px;
  983. }
  984. .pag {
  985. position: absolute;
  986. bottom: 0;
  987. right: 0;
  988. }
  989. .tableTr{
  990. height:40px;
  991. width: 98%;
  992. display: flex;
  993. align-items: center;
  994. color: #A0A4AA;
  995. }
  996. .tableTd20{
  997. box-sizing: border-box;
  998. display: flex;
  999. flex-direction: row;
  1000. justify-content: center;
  1001. align-items: center;
  1002. padding: 9px 20px;
  1003. gap: 4px;
  1004. width: 13%;
  1005. height: 40px;
  1006. background: #F5F7FA;
  1007. border: 1px solid #DCDFE6;
  1008. border-radius: 0px;
  1009. font-family: 'PingFang SC';
  1010. font-style: normal;
  1011. font-weight: 600;
  1012. font-size: 14px;
  1013. line-height: 22px;
  1014. /* identical to box height, or 157% */
  1015. display: flex;
  1016. align-items: center;
  1017. text-align: center;
  1018. font-feature-settings: 'tnum' on, 'lnum' on;
  1019. color: rgba(0, 0, 0, 0.85);
  1020. }
  1021. .tableTd30{
  1022. background: #FFFFFF;
  1023. border: 1px solid #DCDFE6;
  1024. mix-blend-mode: normal;
  1025. width:37%;
  1026. text-align: left;
  1027. height:40px;
  1028. font-family: 'Noto Sans SC';
  1029. font-style: normal;
  1030. font-weight: 400;
  1031. font-size: 14px;
  1032. line-height: 22px;
  1033. display: flex;
  1034. align-items: center;
  1035. font-feature-settings: 'tnum' on, 'lnum' on;
  1036. color: rgba(0, 0, 0, 0.45);
  1037. }
  1038. .tableTd120{
  1039. border: 1px solid #DCDFE6;
  1040. width:87%;
  1041. text-align: left;
  1042. height:40px;
  1043. font-family: 'Noto Sans SC';
  1044. font-style: normal;
  1045. font-weight: 400;
  1046. font-size: 14px;
  1047. line-height: 22px;
  1048. display: flex;
  1049. align-items: center;
  1050. font-feature-settings: 'tnum' on, 'lnum' on;
  1051. color: rgba(0, 0, 0, 0.45);
  1052. }
  1053. .tableTd50{
  1054. width:50%; height:40px;
  1055. text-align: center;
  1056. display: flex;
  1057. flex-wrap: nowrap;
  1058. justify-content: space-around;
  1059. }
  1060. </style>