newMarkerfundDetails.vue 17 KB

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