ProjectManagement.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877
  1. <template>
  2. <!-- 项目管理页面 -->
  3. <div class="ProjectManagement" v-loading="loading">
  4. <div class="pAHeader">
  5. <div class="pAHeader1">项目管理</div>
  6. </div>
  7. <hr>
  8. <!-- 搜索栏开始 -->
  9. <div class="selectInp">
  10. <div class="manageSelects">
  11. <div class="selectsBlock">
  12. <span class="selectLabel">项目筛选</span>
  13. <el-select v-model="selectInp.filter" @change="getData" placeholder="我的项目">
  14. <el-option label="所有项目" value=""></el-option>
  15. <el-option
  16. v-for="item in options.projectFilter"
  17. :key="item.courseId"
  18. :label="item.title"
  19. :value="item.courseId">
  20. </el-option>
  21. </el-select>
  22. </div>
  23. <div class="selectsBlock">
  24. <span class="selectLabel">部门</span>
  25. <el-select v-model="selectInp.department" @change="getData" placeholder="请选择">
  26. <el-option label="所有部门" value=""></el-option>
  27. <el-option
  28. v-for="item in options.department"
  29. :key="item.classid"
  30. :label="item.name"
  31. :value="item.classid">
  32. </el-option>
  33. </el-select>
  34. </div>
  35. <div class="selectsBlock">
  36. <span class="selectLabel">分类</span>
  37. <el-select v-model="selectInp.sort" @change="getData" placeholder="请选择">
  38. <el-option label="所有分类" value=""></el-option>
  39. <el-option
  40. v-for="item in options.sort"
  41. :key="item.typeid"
  42. :label="item.name"
  43. :value="item.typeid">
  44. </el-option>
  45. </el-select>
  46. </div>
  47. <div class="selectsBlock">
  48. <span class="selectLabel">结题状态</span>
  49. <el-select v-model="selectInp.state" @change="getData" placeholder="请选择">
  50. <el-option
  51. v-for="item in options.state"
  52. :key="item.value"
  53. :label="item.label"
  54. :value="item.value">
  55. </el-option>
  56. </el-select>
  57. </div>
  58. <div class="selectsBlock">
  59. <span class="selectLabel">负责人</span>
  60. <el-select v-model="selectInp.leader" @change="getData" placeholder="请选择">
  61. <el-option label="所有负责人" value=""></el-option>
  62. <el-option
  63. v-for="(item,index) in options.person"
  64. :key="index"
  65. :label="item.pro_leader"
  66. :value="item.pro_leader">
  67. </el-option>
  68. </el-select>
  69. </div>
  70. <div class="selectsBlock">
  71. <span class="selectLabel">年份</span>
  72. <el-select v-model="selectInp.year" @change="getData" placeholder="请选择">
  73. <el-option label="所有年份" value=""></el-option>
  74. <el-option
  75. v-for="(item,index) in options.yearData"
  76. :key="index"
  77. :label="item.time+'年'"
  78. :value="item.time">
  79. </el-option>
  80. </el-select>
  81. </div>
  82. </div>
  83. <div class="ProjectManagementQuery">
  84. <el-input v-model="selectText" placeholder="请输入项目名称/编号"></el-input>
  85. <el-button type="primary" class="btn" size="mini" @click="getData">查询</el-button>
  86. </div>
  87. </div>
  88. <!-- 搜索栏结束 -->
  89. <!-- 表格开始 -->
  90. <div>
  91. <el-table
  92. ref="multipleTable"
  93. :data="items"
  94. tooltip-effect="dark"
  95. stripe
  96. class="fontSize"
  97. :header-cell-style="{ background: '#f2f2f2',color:'#000' }">
  98. <el-table-column
  99. prop="ProjectNo"
  100. label="项目编号"
  101. align="center"
  102. min-width="9%">
  103. </el-table-column>
  104. <el-table-column
  105. prop="title"
  106. label="项目名称"
  107. align="center"
  108. min-width="10%">
  109. </el-table-column>
  110. <el-table-column
  111. prop="pro_leader"
  112. align="center"
  113. label="项目负责人"
  114. min-width="9%">
  115. </el-table-column>
  116. <el-table-column
  117. prop="dName"
  118. align="center"
  119. label="所在部门"
  120. min-width="10%">
  121. </el-table-column>
  122. <el-table-column
  123. prop="tName"
  124. align="center"
  125. label="分类"
  126. min-width="10%">
  127. </el-table-column>
  128. <el-table-column
  129. prop="fund"
  130. label="预算(万)"
  131. align="center"
  132. min-width="8%">
  133. <template #default="scope">
  134. <div>
  135. {{ scope.row.fund/10000 }}
  136. </div>
  137. </template>
  138. </el-table-column>
  139. <el-table-column
  140. prop="startTime"
  141. align="center"
  142. label="开始时间"
  143. min-width="9%">
  144. <template #default="scope">
  145. <div>
  146. {{ scope.row.startTime.split(' ')[0] }}
  147. </div>
  148. </template>
  149. </el-table-column>
  150. <el-table-column
  151. prop="phone"
  152. align="center"
  153. label="联系电话"
  154. min-width="10%">
  155. <template #default="scope">
  156. <div>
  157. {{ scope.row.phone!=null||scope.row.phone==''?scope.row.phone:"-" }}
  158. </div>
  159. </template>
  160. </el-table-column>
  161. <el-table-column
  162. prop="state"
  163. label="状态"
  164. align="center"
  165. min-width="6%">
  166. <template #default="scope">
  167. <div>
  168. <!-- {{scope.row.name + (scope.row.status==0?"":"(已屏蔽)")}} -->
  169. <!-- {{ (scope.row.isupload==0?"未审核": scope.row.data==1?"正在审核":"已审核") }} -->
  170. <span v-if="scope.row.isupload==0">未审核</span>
  171. <span v-if="scope.row.isupload==1">审核中</span>
  172. <span v-if="scope.row.isupload==2">进行中</span>
  173. <span v-if="scope.row.isupload==3">待结项</span>
  174. <span v-if="scope.row.isupload==4">已结项</span>
  175. </div>
  176. </template>
  177. </el-table-column>
  178. <el-table-column
  179. prop="operation"
  180. width="300"
  181. align="center"
  182. label="操作"
  183. >
  184. <template #default="scope">
  185. <div class="operations">
  186. <el-button type="primary" @click="scheduleDetail(scope.row.courseId,scope.row.typeid)" size="mini" >进度详细</el-button>
  187. <el-button type="primary" @click="fundStatus(scope.row.courseId)" size="mini" >资金情况</el-button>
  188. <el-button type="primary" v-show="scope.row.isupload==2" @click="finish(scope.row)" size="mini">提交结项</el-button>
  189. <el-button type="primary" v-show="scope.row.isupload==3" @click="amendFinish(scope.row)" size="mini">修改结项</el-button>
  190. <el-button type="primary" v-show="scope.row.isupload==4" disabled class="disa" size="mini">已结项</el-button>
  191. </div>
  192. </template>
  193. </el-table-column>
  194. </el-table>
  195. </div>
  196. <!-- 表格结束 -->
  197. <!-- 提示哪些活动没有完成开始 -->
  198. <el-dialog
  199. title="提示"
  200. :visible.sync="NoReportActivity"
  201. width="600px"
  202. class="endDialog"
  203. >
  204. <div class="deleteContent">"{{ tit }}"项目</div>
  205. <div class="download checkActivity" v-show="checkActivityFinishData.length>0">
  206. <span style="color: black;">未完结活动:</span><span v-for="(item,index) in checkActivityFinishData" :key="index">{{ item.title }}</span>
  207. </div>
  208. <div class="download checkActivity" v-show="checkFundFinishData.length>0">
  209. <span style="color: black;">未完结资金:</span>
  210. <span style="cursor: pointer;" @click="fundDetail(item.id,item.title,item.pid)" v-for="(item,index) in checkFundFinishData" :key="index" >{{ item.title }}/{{ item.applyfund - item.actualuse }}(元)</span>
  211. </div>
  212. <div slot="footer" class="dialog-footer" style="display: flex;justify-content: center;">
  213. <!-- <el-button type="primary" @click="init" class="AllDialogBtn">确认</el-button> -->
  214. <el-button @click="NoReportActivity=false" class="AllDialogBtn">取消</el-button>
  215. </div>
  216. </el-dialog>
  217. <!-- 提示哪些活动没有完成结束 -->
  218. <!-- 结项书开始 -->
  219. <el-dialog
  220. title="结项书"
  221. :visible.sync="endDialog"
  222. class="endDialogBlock"
  223. >
  224. <!-- <div class="deleteContent">"{{ tit }}"项目,是否确定完结?</div>
  225. <div class="download checkActivity" v-show="checkFundEndData.length>0">
  226. <span style="color: black;">剩余资金:</span>
  227. </div>
  228. <div class="deleteContent1">活动完结报告</div>
  229. <div class="download" v-for="item in file" :key="item.fid">
  230. <span>{{ item.fileName }}</span>
  231. <div class="downloadBtn">
  232. <el-button type="primary" @click="checkDelFile(item.url)" size="mini">删除文件</el-button>
  233. </div>
  234. </div>
  235. <el-progress v-show="progress.show" :percentage="progress.value" :format="ProgressFormat"></el-progress>
  236. <div class="addMoneyBtn" style="margin-left: 0;">
  237. <div class="jia">+</div>添加
  238. <div id="upFile">
  239. <beUpload @getFile="getFile" :navName="'上传文件'" :accept="accept" :progress="progress"> </beUpload>
  240. </div>
  241. </div> -->
  242. <Closingstatement :myArrayProp="myArrayProp"></Closingstatement>
  243. <div slot="footer" class="dialog-footer" style="display: flex;justify-content: center;">
  244. <el-button type="primary" @click="ending" class="AllDialogBtn">确认</el-button>
  245. <el-button @click="endDialog=false" class="AllDialogBtn">取消</el-button>
  246. </div>
  247. </el-dialog>
  248. <!-- 结项书结束 -->
  249. <!-- 分页 -->
  250. <el-pagination
  251. @current-change="handleCurrentChange"
  252. :current-page="table.currentPage"
  253. :page-size="table.packageSize"
  254. layout=" prev, pager, next"
  255. background
  256. class="paginations"
  257. :total="table.total">
  258. </el-pagination>
  259. <!-- 分页结束 -->
  260. </div>
  261. </template>
  262. <script>
  263. import beUpload from '../../components/tool/beUpload'
  264. import Closingstatement from './components/Closingstatement.vue'
  265. export default {
  266. components:{beUpload,Closingstatement},
  267. data() {
  268. return {
  269. accept:"*",
  270. iid:'',
  271. selectText:'', //文字搜素框数据
  272. endDialog:false,
  273. DelFileDialog:false,
  274. NoReportActivity:false,
  275. loading:false,
  276. tit:'', //完结框项目名称
  277. items:[], //项目列表数据
  278. table:{ // 分页数据
  279. total:0,
  280. packageSize:5,
  281. currentPage:1
  282. },
  283. progress:{ //进度条
  284. value:0,
  285. show:false
  286. },
  287. DelFileData:{
  288. fid:"",
  289. fileName:"",
  290. },
  291. options:{ //头部搜索框下拉框数据
  292. projectFilter:[],//项目筛选
  293. department:[],//部门
  294. sort:[],//分类
  295. person:[],//负责人
  296. state:[//状态
  297. {
  298. value:'',
  299. label:'全部'
  300. },
  301. {
  302. value:2,
  303. label:'进行中'
  304. },
  305. {
  306. value:3,
  307. label:'待结题'
  308. },
  309. {
  310. value:4,
  311. label:"已结题"
  312. },
  313. ],
  314. yearData:[],
  315. },
  316. selectInp:{ //select选定所显示的值
  317. filter:'', //不要带引号,select框是根据id来选择下面数据的
  318. department:'',
  319. sort:'',
  320. state:'',
  321. leader:'',
  322. year:new Date().getFullYear().toString(),
  323. },
  324. file:[],
  325. checkActivityFinishData:[], //未完成活动
  326. checkFundFinishData:[], //未完成资金
  327. // checkFundEndData:[],
  328. submitData:{ //结项书要填写的数据
  329. brief:'',
  330. plan:'',
  331. technology:'',
  332. business:'',
  333. innovate:'',
  334. resultAccessory:[],
  335. firmAccessory:[],
  336. competitionAccessory:[],
  337. exchangeAccessory:[],
  338. conversionAccessory:[],
  339. talentsAccessory:[],
  340. targetPlan:'',
  341. realityResult:'',
  342. socialValue:'',
  343. taskAccessory:[]
  344. },
  345. myArrayProp:[], //结项书-后端获取的数据
  346. // amendFinishArrayProp:[] //结项书-后端获取的修改结项数据
  347. }
  348. },
  349. methods:{
  350. fundDetail(val,tit,pid){ //跳转到未完结资金那里去
  351. // console.log(val);
  352. // window.open(`/#/makerfundDetails?Id=${val}`)
  353. this.$router.push(`/makerfundDetails?Id=${val}&tit=${tit}&paid=${pid}`);
  354. },
  355. ProgressFormat(value){ //进度条
  356. return value ==100?'100%':`${value}%`
  357. },
  358. checkDelFile(url){ //删除文件
  359. this.file = this.file.filter(item=>item.url!=url);
  360. },
  361. getFile(val) {//上传文件
  362. this.file.push(val);
  363. // console.log(this.file);
  364. this.progress.show = false;
  365. },
  366. ending(){ //结项书提交
  367. // return console.log(this.myArrayProp[0]);
  368. this.ajax.post(this.$store.state.api+"/updateClosingstatementData",{
  369. uid:this.$store.state.userInfo.userid,
  370. cid:this.iid,
  371. submitData:JSON.stringify(this.myArrayProp[0]['ClosingstatementData']),
  372. state:3
  373. }).then(res=>{
  374. console.log(res);
  375. if(res.data==1){
  376. this.$message.success("提交成功");
  377. this.endDialog = false;
  378. this.progress.show = false;
  379. }else{
  380. this.$message.error("提交失败")
  381. }
  382. this.getData();
  383. },err=>{
  384. console.log(err);
  385. })
  386. this.endDialog=false;
  387. },
  388. scheduleDetail(val,tid){//进度详情
  389. this.$router.push(`/ProjectManagementMain?Id=${tid}&pid=${val}`)
  390. },
  391. fundStatus(Id){//资金情况
  392. // localStorage.setItem('pid',JSON.stringify(Id))
  393. this.$router.push(`/ProjectManagementFundDetail?pid=${Id}`)
  394. },
  395. finish(val){ //结项对话框显示
  396. this.iid=val.courseId; // 提交结项时候的用
  397. this.checkActivityFinishData = []; //未完成项目
  398. this.checkFundFinishData=[]; //未完成资金
  399. // this.checkFundEndData=[];
  400. this.ajax.get(this.$store.state.api+"/GetActivityNoReportByPId",{
  401. uid:this.$store.state.userInfo.userid,
  402. pid:val.courseId
  403. }).then(res=>{
  404. if(res.data[0].length>0 || res.data[1].length>0){
  405. this.checkActivityFinishData = res.data[0];
  406. if (res.data[1].length>0) {
  407. let acsum=0
  408. let apsum=0
  409. res.data[1].forEach(e=>{
  410. e.applyfund=JSON.parse(e.applyfund)
  411. for(let k in e.applyfund){
  412. acsum+=e.applyfund[k]*1
  413. }
  414. e.applyfund=acsum
  415. })
  416. res.data[1].forEach(e=>{
  417. if (e.actualuse!=null) {
  418. e.actualuse=JSON.parse(e.actualuse)
  419. for(let k in e.actualuse){
  420. apsum+=e.actualuse[k]*1
  421. }
  422. e.actualuse=apsum
  423. }
  424. })
  425. }
  426. this.checkFundFinishData = res.data[1];
  427. this.tit = val.title;
  428. this.NoReportActivity = true;
  429. }else{
  430. // this.myArrayProp=[]
  431. this.iid=val.courseId;
  432. //提交结项书版本
  433. this.ajax.get(this.$store.state.api+"/getClosingstatementData",{
  434. uid:this.$store.state.userInfo.userid,
  435. pid:val.courseId,
  436. }).then(res=>{
  437. let num=0
  438. res.data[1].forEach(i=>{ //计算出已经使用过的金钱
  439. // console.log(i);
  440. i['actualuse']=JSON.parse(i['actualuse'])
  441. for(let key in i['actualuse']){
  442. if (i['actualuse'][key]) {
  443. num = i['actualuse'][key]*1 + num
  444. }
  445. }
  446. })
  447. console.log(num);
  448. let data=res.data[0]
  449. data[0].course_student=JSON.parse(data[0].course_student)
  450. data[0].course_teacher=JSON.parse(data[0].course_teacher)
  451. if (data[0].multiSelectProject!=null) {
  452. data[0].multiSelectProject=JSON.parse(data[0].multiSelectProject)
  453. }
  454. data[0].money=JSON.parse(data[0].money)
  455. this.myArrayProp=data
  456. this.myArrayProp[0].actualuse=num //添加已经使用过的经费
  457. this.myArrayProp[0].ClosingstatementData=this.submitData
  458. console.log(this.myArrayProp);
  459. this.endDialog=true;
  460. }).catch(err=>{
  461. console.log(err)
  462. })
  463. }
  464. }).catch(err=>{
  465. console.log(err)
  466. })
  467. },
  468. amendFinish(val){ //修改结项按钮(获取结项时提交的文件)
  469. //#region 上传文件版本结项
  470. // this.checkFundEndData=[];
  471. // this.ajax.post(this.$store.state.api+"/UpdateAmendFinish",{
  472. // uid:this.$store.state.userInfo.userid,
  473. // pid:val
  474. // }).then(res=>{
  475. // console.log(res);
  476. // console.log(res.data);
  477. // if (res.data[0].length>0) {
  478. // let data=JSON.parse(res.data[0][0].endFile)
  479. // this.file=data;
  480. // }
  481. // // let data=JSON.parse(res.data[0][0].endFile)
  482. // this.tit=tit;
  483. // this.endDialog=true;
  484. // this.ClosingstatementData=val
  485. // // console.log(this.file);
  486. // }).catch(err=>{
  487. // console.log(err)
  488. // })
  489. //#endregion
  490. this.submitData={
  491. brief:'',
  492. plan:'',
  493. technology:'',
  494. business:'',
  495. innovate:'',
  496. resultAccessory:[],
  497. firmAccessory:[],
  498. competitionAccessory:[],
  499. exchangeAccessory:[],
  500. conversionAccessory:[],
  501. talentsAccessory:[],
  502. targetPlan:'',
  503. realityResult:'',
  504. socialValue:'',
  505. taskAccessory:[]
  506. };
  507. this.iid=val.courseId;
  508. //
  509. this.ajax.get(this.$store.state.api+"/selectAmendFinish",{
  510. uid:this.$store.state.userInfo.userid,
  511. pid:val.courseId,
  512. }).then(res=>{
  513. // return console.log(res);
  514. let num=0
  515. res.data[1].forEach(i=>{ //计算出已经使用过的金钱
  516. // console.log(i);
  517. i['actualuse']=JSON.parse(i['actualuse'])
  518. for(let key in i['actualuse']){
  519. if (i['actualuse'][key]) {
  520. num = i['actualuse'][key]*1 + num
  521. }
  522. }
  523. })
  524. console.log(num);
  525. let data=res.data[0]
  526. data[0].course_student=JSON.parse(data[0].course_student)
  527. data[0].course_teacher=JSON.parse(data[0].course_teacher)
  528. data[0].multiSelectProject=JSON.parse(data[0].multiSelectProject)
  529. data[0].ClosingstatementData=JSON.parse(data[0].ClosingstatementData)
  530. data[0].money=JSON.parse(data[0].money)
  531. // data[0].multiSelectProject=JSON.parse(data[0].multiSelectProject)
  532. this.myArrayProp=data
  533. this.myArrayProp[0].actualuse=num //添加已经使用过的经费
  534. console.log(this.myArrayProp);
  535. this.endDialog=true;
  536. }).catch(err=>{
  537. console.log(err)
  538. })
  539. },
  540. handleCurrentChange(val) { //当页数发生改变的时候调用获取列表数据请求
  541. // console.log(`当前页: ${val}`);
  542. this.table.currentPage=val
  543. this.getData()
  544. },
  545. getData(){ //获取渲染数据
  546. this.loading = true;
  547. let param={
  548. uid:this.$store.state.userInfo.userid, //当前账号id
  549. pid:this.selectInp.filter, //筛选
  550. did:this.selectInp.department, //部门
  551. tid:this.selectInp.sort, //分类
  552. leader:this.selectInp.leader, //负责人
  553. endState:this.selectInp.state,
  554. year:this.selectInp.year, //年份
  555. textInp:this.selectText,
  556. page:this.table.currentPage, //当前页
  557. lim:this.table.packageSize, //限制获取几条数据
  558. }
  559. // console.log(param);
  560. this.ajax
  561. .get(this.$store.state.api+'/SelectAllProjectManagement',param)
  562. .then(res=>{
  563. let data=res.data;
  564. // console.log(data)
  565. if (data[0].length==0 && data[5][0]['total'] != 0&&this.table.currentPage!=1) {
  566. this.table.currentPage=1
  567. return this.getData()
  568. }
  569. let a=this.options;
  570. this.items=data[0];
  571. a.projectFilter=data[1];
  572. a.department=data[2];
  573. a.sort=data[3];
  574. a.person=data[4];
  575. a.yearData = data[6]
  576. if(a.yearData.filter(item=>item['time']==new Date().getFullYear().toString()).length==0){
  577. a.yearData.push({time:new Date().getFullYear().toString()})
  578. }
  579. this.table.total=data[5][0].total
  580. this.loading = false;
  581. },err=>{
  582. console.log(err);
  583. })
  584. }
  585. },
  586. mounted(){
  587. this.getData() //页面加载完成后自动获取渲染数据
  588. }
  589. }
  590. </script>
  591. <style lang="less">
  592. .ProjectManagement{
  593. // .pagination{
  594. // float: right;
  595. // margin: 0px 85px 10px;
  596. // }
  597. // .projectBlock{ //循环列表大框
  598. // width: 100%;
  599. // // height: 560px;
  600. // display: flex;
  601. // flex-wrap: wrap;
  602. // overflow:auto;
  603. // .classBlock{ //每个独立小框
  604. // flex-shrink: 0;
  605. // overflow: hidden;
  606. // position: relative;
  607. // margin-right: 20px;
  608. // margin-bottom: 5px;
  609. // width: 250px;
  610. // height: 300px;
  611. // background-color: rgb(255, 255, 255);
  612. // // box-shadow: 1px 2px 3px #ccc;
  613. // border: 1px solid #ccc;
  614. // border-radius: 5px;
  615. // display: flex;
  616. // flex-direction: column;
  617. // .projectBlockPosition{ //完成状态
  618. // border-radius: 30px;
  619. // position: absolute;
  620. // top: 5px;
  621. // left: 5px;
  622. // width: 80px;
  623. // height: 30px;
  624. // display: flex;
  625. // justify-content: center;
  626. // align-items: center;
  627. // background: #000;
  628. // opacity: 0.7;
  629. // font-size: 16px;
  630. // color:#fff;
  631. // // font-size: 14px;
  632. // }
  633. // img{
  634. // width: 100%;
  635. // height: 140px;
  636. // object-fit: cover;
  637. // }
  638. // .classBlock1{ //中间栏
  639. // margin-bottom: 10px;
  640. // margin-top: 0px;
  641. // box-sizing: border-box;
  642. // padding: 0 5px;
  643. // flex: 1;
  644. // display: flex;
  645. // flex-direction: column;
  646. // justify-content: space-around;
  647. // .classBlock2{ //项目名称
  648. // margin-left: 5px;
  649. // margin-bottom: 4px;
  650. // margin-top: 4px;
  651. // text-align: left;
  652. // font-size: 16px;
  653. // }
  654. // .classBlock3{ //学校、姓名
  655. // box-sizing: border-box;
  656. // padding: 0 5px;
  657. // font-size: 14px;
  658. // width: 100%;
  659. // // margin-top: 10px;
  660. // display: flex;
  661. // flex-wrap: wrap;
  662. // color: #adacac;
  663. // margin: 10px 0 0;
  664. // }
  665. // .classBlock4{ //博客、编号
  666. // margin-top: 4px;
  667. // }
  668. // }
  669. // .classBlockBtn{ //按钮栏
  670. // box-sizing: border-box;
  671. // padding:0 6px;
  672. // display: flex;
  673. // flex: 1;
  674. // width: 100%;
  675. // max-height: 40px;
  676. // justify-content: space-around;
  677. // align-items: center;
  678. // background-color:#F5F4F4 ;
  679. // span{
  680. // font-size: 14px;
  681. // color: black;
  682. // transition: .1s;
  683. // cursor: pointer;
  684. // &:hover{
  685. // color: #79a2ff;
  686. // }
  687. // }
  688. // .bt1{
  689. // width: 100px;
  690. // height: 35px;
  691. // font-size: 14px;
  692. // }
  693. // }
  694. // }
  695. // }
  696. .endDialog{ //结项对话框的
  697. .el-dialog__header{
  698. display: flex;
  699. justify-content: center;
  700. box-sizing: border-box;
  701. background: #32455b;
  702. }
  703. .el-dialog__title{
  704. color:rgb(246, 247, 246);
  705. display: flex;
  706. font-size: 18px;
  707. position: relative;
  708. top: -2px;
  709. justify-content: center;
  710. }
  711. .el-dialog{
  712. width: 600px;
  713. border-radius: 5px;
  714. overflow: hidden;
  715. }
  716. .el-dialog__body{
  717. box-sizing: border-box;
  718. padding: 30px 20px 0 20px;
  719. }
  720. .deleteContent{
  721. width: 100%;
  722. font-size: 22px;
  723. color: #000;
  724. box-sizing: border-box;
  725. // padding: 0 20px;
  726. display: flex;
  727. justify-content: center;
  728. }
  729. .deleteContent1{
  730. width: 100%;
  731. text-align: left;
  732. font-size: 18px;
  733. font-weight: bold;
  734. color: #000;
  735. margin-top: 30px;
  736. }
  737. .download{
  738. margin: 10px 0 20px;
  739. width: 100%;
  740. text-align: left;
  741. font-size: 16px;
  742. font-weight: bold;
  743. color: #5391fd;
  744. display: flex;
  745. justify-content: space-between;
  746. flex-wrap: wrap;
  747. // background: #ccc;
  748. }
  749. .addDialogLogo{
  750. width: 60px;
  751. height: 30px;
  752. display: flex;
  753. justify-content: center;
  754. line-height: 30px;
  755. border-radius: 5px;
  756. background: #f2f2f2;
  757. position: absolute;
  758. left: 20px; top: 15px;
  759. }
  760. }
  761. .endDialogBlock{ //结项书弹框样式
  762. .el-dialog__header{
  763. display: flex;
  764. justify-content: center;
  765. box-sizing: border-box;
  766. background: #32455b;
  767. }
  768. .el-dialog__title{
  769. color:rgb(246, 247, 246);
  770. display: flex;
  771. font-size: 18px;
  772. position: relative;
  773. top: -2px;
  774. justify-content: center;
  775. }
  776. .el-dialog{
  777. width: 1300px;
  778. border-radius: 5px;
  779. overflow: hidden;
  780. }
  781. .el-dialog__body{
  782. box-sizing: border-box;
  783. padding: 30px 20px 0 20px;
  784. }
  785. .addDialogLogo{
  786. width: 60px;
  787. height: 30px;
  788. display: flex;
  789. justify-content: center;
  790. line-height: 30px;
  791. border-radius: 5px;
  792. background: #f2f2f2;
  793. position: absolute;
  794. left: 20px; top: 15px;
  795. }
  796. }
  797. }
  798. .checkActivity{
  799. // float:left;
  800. display: flex;
  801. justify-content: flex-start !important;
  802. span{
  803. margin: 10px 20px;
  804. }
  805. }
  806. </style>