makerfundDetails.vue 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. <template>
  2. <!-- 创客资金申请表单 -->
  3. <div>
  4. <div class="vfpHeader">
  5. <div class="titleOne">活动资金详细</div>
  6. <el-button @click="$router.push('/makerfund')" type="primary" size="mini">返回</el-button>
  7. </div>
  8. <hr>
  9. <!-- 项目名称、类型开始 -->
  10. <div class="Apply1">
  11. <div class="inpInterval">项目名称</div>
  12. <el-select disabled v-model="projectName" style="width: 30%;" placeholder="请选择">
  13. <el-option
  14. v-for="item in projectFilter"
  15. :key="item.id"
  16. :label="item.title"
  17. :value="item.id">
  18. </el-option>
  19. </el-select>
  20. </div>
  21. <div class="tabTit">
  22. <div>
  23. <p>经费支出类别(单位:元)</p>
  24. </div>
  25. </div>
  26. <hr>
  27. <table border="1" cellspacing="0" class="table">
  28. <tr>
  29. <td colspan="2">经济支出类别</td><td>预算</td><td>已支付</td><td>本次申请</td><td>实际使用</td><td>余额</td><td colspan="3">备注</td>
  30. </tr>
  31. <tr v-for="(item,index) in fundList" :key="index">
  32. <td colspan="2">{{ item.fundName }}</td>
  33. <td>
  34. {{item.budget}}
  35. </td>
  36. <td>
  37. {{item.havePaid}}
  38. </td>
  39. <td>
  40. {{ item.thisApply }}
  41. </td>
  42. <td v-if="!state" style="background-color: rgb(234, 252, 186);">
  43. <el-input
  44. type="number"
  45. autosize
  46. style="width: 100%;"
  47. resize="none"
  48. onkeypress="return (/[\d]/.test(String.fromCharCode(event.keyCode)))"
  49. placeholder="请输入金额"
  50. v-model="item.actualuse">
  51. </el-input>
  52. </td>
  53. <td v-if="state>0">
  54. {{ item.actualuse }}
  55. </td>
  56. <td>
  57. {{ item.budget-item.havePaid-item.actualuse }}
  58. </td>
  59. <td colspan="3" style="box-sizing: border-box;padding: 0 10px;">
  60. {{ item.remark }}
  61. </td>
  62. </tr>
  63. <tr>
  64. <td>事由</td>
  65. <td colspan="10" class="textLeft">
  66. <el-input
  67. type="textarea"
  68. :autosize="{ minRows: 6, maxRows: 20}"
  69. style="width: 100%;"
  70. resize="none"
  71. placeholder=""
  72. v-model="intro">
  73. </el-input>
  74. </td>
  75. </tr>
  76. <tr>
  77. <td v-for="(i,k) in 9" :key="k" style="border: none;"></td>
  78. </tr>
  79. </table>
  80. <div class="baseBtn">
  81. <div class="blockWidth">
  82. <el-button type="primary" @click="download">生成表单</el-button>
  83. <el-button type="primary" v-if="!state" @click="submitData">提交</el-button>
  84. <el-button type="primary" v-if="state>0" class="disa">提交</el-button>
  85. </div>
  86. </div>
  87. <!-- 下载文档开始 -->
  88. <el-dialog
  89. title="生成Excel"
  90. :visible.sync="downLoadExcelDig"
  91. width="600px"
  92. class="pageSubmitData"
  93. >
  94. <span class="deleteContent">确定生成Excel?</span>
  95. <span slot="footer" class="dialog-footer">
  96. <el-button type="primary" @click="downLoadExcel" class="AllDialogBtn">确认</el-button>
  97. <el-button @click="downLoadExcelDig = false" class="AllDialogBtn">取消</el-button>
  98. </span>
  99. </el-dialog>
  100. <!-- 下载文档结束-->
  101. <!-- 提交文档开始 -->
  102. <el-dialog
  103. title="提交"
  104. :visible.sync="submitDataDig"
  105. width="600px"
  106. class="pageSubmitData"
  107. >
  108. <span class="deleteContent">确定提交?</span>
  109. <span slot="footer" class="dialog-footer">
  110. <el-button type="primary" @click="submitAll" class="AllDialogBtn">确认</el-button>
  111. <el-button @click="submitDataDig = false" class="AllDialogBtn">取消</el-button>
  112. </span>
  113. </el-dialog>
  114. <!-- 提交文档结束-->
  115. </div>
  116. </template>
  117. <script>
  118. import getFundNo from '@/components/tool/getProjectNo';
  119. import BeUpload from "../../components/tool/beUpload.vue";
  120. // import getExcel from "@/components/tool/getExcel";
  121. import {getExcel2} from '@/components/tool/downloadExcel'
  122. export default {
  123. components: {
  124. BeUpload,
  125. },
  126. data() {
  127. return {
  128. projectFilter:[], //项目名称列表
  129. projectName:'', //所选名称
  130. downLoadExcelDig:false,//下载Excel对话框
  131. submitDataDig:false,//提交对话框
  132. allFund:'',//总经费
  133. fundList:[ //table遍历数据
  134. {fundName:'小型仪器设备费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'项目开展所需的小型专用仪器设备、工具、配件购置或租赁费用。'},
  135. {fundName:'材料费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'项目开展需消耗的各种原材料、辅助材料等低值易耗品的采购费用。'},
  136. {fundName:'测试化验加工费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'项目开展过程中支付给外单位的检验、测试、化验、计算、分析及加工费等费用。'},
  137. {fundName:'项目协作费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'按合同规定支付给协作单位的费用'},
  138. {fundName:'项目成功鉴定费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'学术会务费、评审费、鉴定费、成果集制作费等费用。'},
  139. {fundName:'参展参赛费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'参加创客展会、竞赛等所需的报名费、展位费、布展费、宣传推广费及差旅费等费用。'},
  140. {fundName:'创客交流活动费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'创客交流活动中支付给校外专家的指导费、咨询费、授课费等费用。'},
  141. {fundName:'知识产权事务费',budget:'',havePaid:0,thisApply:'',actualuse:'',remark:'论文版面费、专利及其他知识产权事务等费用。'},
  142. ],
  143. haveFund:'', //已支付经费
  144. intro:'', //事由
  145. tit:'',//活动名称
  146. ty:'',//活动类型
  147. state:0,
  148. }
  149. },
  150. methods:{
  151. // console.log(this.projectName);
  152. //total:总经费
  153. //小型仪器设备费:device
  154. //材料费:Material
  155. //测试化验加工费:processing
  156. //项目协作费:Collaboration
  157. //项目成果鉴定费:APPRAISAL
  158. //参展参赛费:entery
  159. //创客交流活动费:activities
  160. //知识产权事务费:Transaction
  161. getData(){ //获取活动经费的数据
  162. let param={
  163. uid:this.$store.state.userInfo.userid,
  164. fid:this.$route.query['Id'],
  165. aid:this.$route.query['aid'],
  166. }
  167. this.ajax
  168. .get(this.$store.state.api+'/selectActivityFundDetail',param)
  169. .then(res=>{
  170. console.log(res.data);
  171. let data=res.data[0][0]
  172. // console.log(data);
  173. let applyfund=JSON.parse(data['applyfund'])
  174. let fund=JSON.parse(data['fund'])
  175. let usedFund=JSON.parse(data['usedFund'])
  176. let actualuse=JSON.parse(data['actualuse'])
  177. this.tit=data.title;
  178. this.ty=data.type;
  179. let arr= res['data'][1].filter(e=>{
  180. return e.actualuse!=null
  181. })
  182. // console.log(arr);
  183. let isUse = arr;
  184. if (arr) {
  185. // console.log(111);
  186. isUse.forEach(item=>{
  187. let JP = JSON.parse(item['actualuse']);
  188. this.fundList[0]['havePaid']+=Number(JP['device']);
  189. this.fundList[1]['havePaid']+=Number(JP['Material']);
  190. this.fundList[2]['havePaid']+=Number(JP['processing']);
  191. this.fundList[3]['havePaid']+=Number(JP['Collaboration']);
  192. this.fundList[4]['havePaid']+=Number(JP['APPRAISAL']);
  193. this.fundList[5]['havePaid']+=Number(JP['entery']);
  194. this.fundList[6]['havePaid']+=Number(JP['activities']);
  195. this.fundList[7]['havePaid']+=Number(JP['Transaction']);
  196. })
  197. }
  198. // console.log(applyfund);
  199. this.fundList[0].budget=fund.device
  200. this.fundList[1].budget=fund.Material
  201. this.fundList[2].budget=fund.processing
  202. this.fundList[3].budget=fund.Collaboration
  203. this.fundList[4].budget=fund.APPRAISAL
  204. this.fundList[5].budget=fund.entery
  205. this.fundList[6].budget=fund.activities
  206. this.fundList[7].budget=fund.Transaction
  207. if (data['usedFund']!=null) {
  208. this.fundList[0].havePaid=usedFund.device
  209. this.fundList[1].havePaid=usedFund.Material
  210. this.fundList[2].havePaid=usedFund.processing
  211. this.fundList[3].havePaid=usedFund.Collaboration
  212. this.fundList[4].havePaid=usedFund.APPRAISAL
  213. this.fundList[5].havePaid=usedFund.entery
  214. this.fundList[6].havePaid=usedFund.activities
  215. this.fundList[7].havePaid=usedFund.Transaction
  216. }
  217. this.fundList[0].thisApply=applyfund.device
  218. this.fundList[1].thisApply=applyfund.Material
  219. this.fundList[2].thisApply=applyfund.processing
  220. this.fundList[3].thisApply=applyfund.Collaboration
  221. this.fundList[4].thisApply=applyfund.APPRAISAL
  222. this.fundList[5].thisApply=applyfund.entery
  223. this.fundList[6].thisApply=applyfund.activities
  224. this.fundList[7].thisApply=applyfund.Transaction
  225. if (data['actualuse']!=null) {
  226. this.fundList[0].actualuse=actualuse.device
  227. this.fundList[1].actualuse=actualuse.Material
  228. this.fundList[2].actualuse=actualuse.processing
  229. this.fundList[3].actualuse=actualuse.Collaboration
  230. this.fundList[4].actualuse=actualuse.APPRAISAL
  231. this.fundList[5].actualuse=actualuse.entery
  232. this.fundList[6].actualuse=actualuse.activities
  233. this.fundList[7].actualuse=actualuse.Transaction
  234. }
  235. this.intro=data.intro
  236. this.state=data.state
  237. this.allFund=data.money
  238. },err=>{
  239. console.log(err);
  240. })
  241. },
  242. download(){
  243. if(!this.projectName) return this.$message.error('请选择项目名称')
  244. this.downLoadExcelDig=true
  245. },
  246. downLoadExcel(){ //生成表单
  247. getExcel2(this.fundList,this.intro,this.tit,this.ty)
  248. this.downLoadExcelDig=false
  249. },
  250. submitData(){
  251. if(!this.projectName) return this.$message.error('请选择项目名称')
  252. let arr=[this.fundList[0].actualuse,this.fundList[1].actualuse,this.fundList[2].actualuse,this.fundList[3].actualuse,this.fundList[4].actualuse,this.fundList[5].actualuse,this.fundList[6].actualuse,this.fundList[7].actualuse]
  253. let arr2=[this.fundList[0].havePaid,this.fundList[1].havePaid,this.fundList[2].havePaid,this.fundList[3].havePaid,this.fundList[4].havePaid,this.fundList[5].havePaid,this.fundList[6].havePaid,this.fundList[7].havePaid]
  254. // console.log(arr);
  255. let fund=arr.reduce((prev,cur,index,arr) => {
  256. return prev + cur*1;
  257. },0);
  258. let fund2=arr2.reduce((prev,cur,index,arr) => {
  259. return prev + cur*1;
  260. },0);
  261. console.log(fund,fund2);
  262. if (fund+fund2>this.allFund) return this.$message.error('申请金额已大于预算')
  263. this.submitDataDig=true
  264. },
  265. submitAll(){ //提交创客资金申请
  266. // getFundNo("ZJ").then((result)=>{
  267. // let arr={
  268. // device:(this.fundList[0].actualuse+this.haveFund.device*1),
  269. // Material:this.fundList[1].actualuse+this.haveFund.Material*1,
  270. // processing:this.fundList[2].actualuse+this.haveFund.processing*1,
  271. // Collaboration:this.fundList[3].actualuse+this.haveFund.Collaboration*1,
  272. // APPRAISAL:this.fundList[4].actualuse+this.haveFund.APPRAISAL*1,
  273. // entery:this.fundList[5].actualuse+this.haveFund.entery*1,
  274. // activities:this.fundList[6].actualuse+this.haveFund.activities*1,
  275. // Transaction:this.fundList[7].actualuse+this.haveFund.Transaction*1,
  276. // }
  277. // console.log(arr);
  278. let param={
  279. uid:this.$store.state.userInfo.userid,
  280. // fNo:result, //项目编号
  281. fid:this.$route.query['Id'],
  282. intro:this.intro,
  283. f:JSON.stringify({
  284. device:this.fundList[0].actualuse,
  285. Material:this.fundList[1].actualuse,
  286. processing:this.fundList[2].actualuse,
  287. Collaboration:this.fundList[3].actualuse,
  288. APPRAISAL:this.fundList[4].actualuse,
  289. entery:this.fundList[5].actualuse,
  290. activities:this.fundList[6].actualuse,
  291. Transaction:this.fundList[7].actualuse,
  292. }),
  293. }
  294. // return console.log(param);
  295. this.ajax
  296. .post(this.$store.state.api+'/updateActivityFundDetail',param)
  297. .then(res=>{
  298. console.log(res);
  299. if(res.data==1){
  300. this.$message.success('提交成功')
  301. this.submitDataDig=false
  302. this.$router.push('/makerfund')
  303. }else{
  304. this.$message.error('提交失败')
  305. }
  306. },err=>{
  307. console.log(err);
  308. })
  309. // })
  310. },
  311. },
  312. mounted(){
  313. this.getData()
  314. this.projectName=this.$route.query['tit']
  315. // console.log(this.$route.query['aid']);
  316. // console.log(this.$route.query['tit']);
  317. }
  318. }
  319. </script>
  320. <style lang="less" scoped>
  321. .Apply1{ //顶部下拉框
  322. height: 45px;
  323. width: 50%;
  324. display: flex;
  325. justify-content: flex-start;
  326. margin-top: 20px;
  327. }
  328. .inpInterval{ //label
  329. min-width: 80px;
  330. display: inline-block;
  331. text-align: justify;
  332. text-justify:distribute-all-lines;
  333. text-align-last: justify;
  334. transform: translate(0,22%);
  335. padding-right: 15px;
  336. font-size: 16px;
  337. }
  338. .table{
  339. border: none;
  340. border-top: solid 1px black;
  341. // border-right: solid 1px black;
  342. width: 80%;
  343. margin: auto;
  344. margin-top: 30px;
  345. .textLeft{
  346. :deep(.el-textarea__inner){
  347. border: none ;
  348. border-radius: 0px;
  349. text-align: left !important;
  350. font-size: 16px;
  351. }
  352. }
  353. tr td{
  354. border: none;
  355. border-bottom: solid 1px black;
  356. border-right: solid 1px black;
  357. height: 50px;
  358. text-align: center;
  359. line-height: 30px;
  360. width: 9%;
  361. &:nth-child(1){
  362. border-left: solid 1px black;
  363. }
  364. p{
  365. font-weight: 600;
  366. }
  367. :deep(.el-select .el-input .el-select__caret){
  368. display: none;
  369. }
  370. :deep(.el-textarea__inner){
  371. // padding: 0;
  372. border: none ;
  373. border-radius: 0px;
  374. text-align: center;
  375. font-size: 16px;
  376. }
  377. :deep(.el-input__inner){
  378. border: none ;
  379. background: rgb(234, 252, 186);
  380. border-radius: 0px;
  381. text-align: center;
  382. font-size: 16px;
  383. //去除input number样式
  384. &::-webkit-outer-spin-button,
  385. &::-webkit-inner-spin-button {
  386. -webkit-appearance: none;
  387. }
  388. &[type="number"]{
  389. -moz-appearance: textfield;
  390. }
  391. }
  392. }
  393. }
  394. .textLeft{
  395. :deep(.el-textarea__inner){
  396. border: none ;
  397. border-radius: 0px;
  398. text-align: left !important;
  399. font-size: 16px;
  400. }
  401. }
  402. :depp(.el-input.is-disabled){
  403. color: black !important;
  404. }
  405. :deep(.el-select .el-input.is-disabled .el-input__inner){ //项目名称字体颜色
  406. color: #000;
  407. }
  408. </style>