newMarkerfundDetails.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  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>
  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>
  53. {{ item.budget-item.havePaid-item.actualuse }}
  54. </td>
  55. <td colspan="3" style="box-sizing: border-box;padding: 0 10px;">
  56. {{ item.remark }}
  57. </td>
  58. </tr>
  59. <tr>
  60. <td>事由</td>
  61. <td colspan="10" class="textLeft">
  62. <el-input
  63. type="textarea"
  64. :autosize="{ minRows: 6, maxRows: 20}"
  65. style="width: 100%;"
  66. resize="none"
  67. placeholder=""
  68. v-model="intro">
  69. </el-input>
  70. </td>
  71. </tr>
  72. <tr>
  73. <td v-for="(i,k) in 9" :key="k" style="border: none;"></td>
  74. </tr>
  75. </table>
  76. <div class="baseBtn">
  77. <div class="blockWidth">
  78. <el-button type="primary" @click="download">生成表单</el-button>
  79. <el-button type="primary" @click="submitData">提交</el-button>
  80. </div>
  81. </div>
  82. <!-- 下载文档开始 -->
  83. <el-dialog
  84. title="生成Excel"
  85. :visible.sync="downLoadExcelDig"
  86. width="600px"
  87. class="pageSubmitData"
  88. >
  89. <div class="addDialogLogo">LOGO</div>
  90. <span class="deleteContent">确定生成Excel?</span>
  91. <span slot="footer" class="dialog-footer">
  92. <el-button type="primary" @click="downLoadExcel" class="AllDialogBtn">确认</el-button>
  93. <el-button @click="downLoadExcelDig = false" class="AllDialogBtn">取消</el-button>
  94. </span>
  95. </el-dialog>
  96. <!-- 下载文档结束-->
  97. <!-- 提交文档开始 -->
  98. <el-dialog
  99. title="提交"
  100. :visible.sync="submitDataDig"
  101. width="600px"
  102. class="pageSubmitData"
  103. >
  104. <div class="addDialogLogo">LOGO</div>
  105. <span class="deleteContent">确定提交?</span>
  106. <span slot="footer" class="dialog-footer">
  107. <el-button type="primary" @click="submitAll" class="AllDialogBtn">确认</el-button>
  108. <el-button @click="submitDataDig = false" class="AllDialogBtn">取消</el-button>
  109. </span>
  110. </el-dialog>
  111. <!-- 提交文档结束-->
  112. </div>
  113. </template>
  114. <script>
  115. import getFundNo from '@/components/tool/getProjectNo';
  116. import BeUpload from "../../components/tool/beUpload.vue";
  117. // import getExcel from "@/components/tool/getExcel";
  118. import getExcel from '@/components/tool/downloadExcel'
  119. export default {
  120. components: {
  121. BeUpload,
  122. },
  123. data() {
  124. return {
  125. projectFilter:[], //项目名称列表
  126. projectName:'', //所选名称
  127. downLoadExcelDig:false,//下载Excel对话框
  128. submitDataDig:false,//提交对话框
  129. allFund:'',//总经费
  130. fundList:[ //table遍历数据
  131. {fundName:'小型仪器设备费',budget:'',havePaid:'0',thisApply:'',actualuse:'',remark:'项目开展所需的小型专用仪器设备、工具、配件购置或租赁费用。'},
  132. {fundName:'材料费',budget:'',havePaid:'0',thisApply:'',actualuse:'',remark:'项目开展需消耗的各种原材料、辅助材料等低值易耗品的采购费用。'},
  133. {fundName:'测试化验加工费',budget:'',havePaid:'0',thisApply:'',actualuse:'',remark:'项目开展过程中支付给外单位的检验、测试、化验、计算、分析及加工费等费用。'},
  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. ],
  140. haveFund:{}, //已支付经费
  141. intro:'', //事由
  142. }
  143. },
  144. methods:{
  145. // console.log(this.projectName);
  146. //total:总经费
  147. //小型仪器设备费:device
  148. //材料费:Material
  149. //测试化验加工费:processing
  150. //项目协作费:Collaboration
  151. //项目成果鉴定费:APPRAISAL
  152. //参展参赛费:entery
  153. //创客交流活动费:activities
  154. //知识产权事务费:Transaction
  155. getData(){ //获取活动经费的数据
  156. let param={
  157. uid:this.$store.state.userInfo.userid,
  158. fid:this.$route.query['Id'],
  159. }
  160. this.ajax
  161. .get(this.$store.state.api+'/selectActivityFundDetail',param)
  162. .then(res=>{
  163. let data=res.data[0][0]
  164. console.log(data);
  165. let applyfund=JSON.parse(data['applyfund'])
  166. let fund=JSON.parse(data['fund'])
  167. let actualuse=JSON.parse(data['actualuse'])
  168. let usedFund=JSON.parse(data['usedFund'])
  169. // console.log(applyfund);
  170. this.fundList[0].budget=fund.device
  171. this.fundList[1].budget=fund.Material
  172. this.fundList[2].budget=fund.processing
  173. this.fundList[3].budget=fund.Collaboration
  174. this.fundList[4].budget=fund.APPRAISAL
  175. this.fundList[5].budget=fund.entery
  176. this.fundList[6].budget=fund.activities
  177. this.fundList[7].budget=fund.Transaction
  178. this.fundList[0].havePaid=usedFund.device
  179. this.fundList[1].havePaid=usedFund.Material
  180. this.fundList[2].havePaid=usedFund.processing
  181. this.fundList[3].havePaid=usedFund.Collaboration
  182. this.fundList[4].havePaid=usedFund.APPRAISAL
  183. this.fundList[5].havePaid=usedFund.entery
  184. this.fundList[6].havePaid=usedFund.activities
  185. this.fundList[7].havePaid=usedFund.Transaction
  186. this.fundList[0].thisApply=applyfund.device
  187. this.fundList[1].thisApply=applyfund.Material
  188. this.fundList[2].thisApply=applyfund.processing
  189. this.fundList[3].thisApply=applyfund.Collaboration
  190. this.fundList[4].thisApply=applyfund.APPRAISAL
  191. this.fundList[5].thisApply=applyfund.entery
  192. this.fundList[6].thisApply=applyfund.activities
  193. this.fundList[7].thisApply=applyfund.Transaction
  194. this.fundList[0].actualuse=actualuse.device
  195. this.fundList[1].actualuse=actualuse.Material
  196. this.fundList[2].actualuse=actualuse.processing
  197. this.fundList[3].actualuse=actualuse.Collaboration
  198. this.fundList[4].actualuse=actualuse.APPRAISAL
  199. this.fundList[5].actualuse=actualuse.entery
  200. this.fundList[6].actualuse=actualuse.activities
  201. this.fundList[7].actualuse=actualuse.Transaction
  202. this.intro=data.intro
  203. this.allFund=data.money
  204. },err=>{
  205. console.log(err);
  206. })
  207. },
  208. download(){
  209. if(!this.projectName) return this.$message.error('请选择项目名称')
  210. this.downLoadExcelDig=true
  211. },
  212. downLoadExcel(){ //生成表单
  213. getExcel(this.fundList,this.intro)
  214. this.downLoadExcelDig=false
  215. },
  216. submitData(){
  217. if(!this.projectName) return this.$message.error('请选择项目名称')
  218. 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]
  219. 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]
  220. console.log(arr);
  221. let fund=arr.reduce((prev,cur,index,arr) => {
  222. return prev + cur*1;
  223. },0);
  224. let fund2=arr2.reduce((prev,cur,index,arr) => {
  225. return prev + cur*1;
  226. },0);
  227. console.log(fund,fund2);
  228. if (fund+fund2>this.allFund) return this.$message.error('申请金额已大于预算')
  229. this.submitDataDig=true
  230. },
  231. submitAll(){ //提交创客资金申请
  232. // getFundNo("ZJ").then((result)=>{
  233. let param={
  234. uid:this.$store.state.userInfo.userid,
  235. // fNo:result, //项目编号
  236. fid:this.$route.query['Id'],
  237. intro:this.intro,
  238. f:JSON.stringify({
  239. device:this.fundList[0].actualuse,
  240. Material:this.fundList[1].actualuse,
  241. processing:this.fundList[2].actualuse,
  242. Collaboration:this.fundList[3].actualuse,
  243. APPRAISAL:this.fundList[4].actualuse,
  244. entery:this.fundList[5].actualuse,
  245. activities:this.fundList[6].actualuse,
  246. Transaction:this.fundList[7].actualuse,
  247. }),
  248. uf:JSON.stringify({
  249. device:this.fundList[0].actualuse,
  250. Material:this.fundList[1].actualuse,
  251. processing:this.fundList[2].actualuse,
  252. Collaboration:this.fundList[3].actualuse,
  253. APPRAISAL:this.fundList[4].actualuse,
  254. entery:this.fundList[5].actualuse,
  255. activities:this.fundList[6].actualuse,
  256. Transaction:this.fundList[7].actualuse,
  257. }),
  258. }
  259. this.ajax
  260. .post(this.$store.state.api+'/updateActivityFundDetail',param)
  261. .then(res=>{
  262. console.log(res);
  263. if(res.data==1){
  264. this.$message.success('提交成功')
  265. this.submitDataDig=false
  266. }else{
  267. this.$message.error('提交失败')
  268. }
  269. },err=>{
  270. console.log(err);
  271. })
  272. // })
  273. },
  274. },
  275. mounted(){
  276. this.getData()
  277. this.projectName=this.$route.query['tit']
  278. // console.log(this.$route.query['Id']);
  279. // console.log(this.$route.query['tit']);
  280. }
  281. }
  282. </script>
  283. <style lang="less" scoped>
  284. .Apply1{ //顶部下拉框
  285. height: 45px;
  286. width: 50%;
  287. display: flex;
  288. justify-content: flex-start;
  289. margin-top: 20px;
  290. }
  291. .inpInterval{ //label
  292. min-width: 80px;
  293. display: inline-block;
  294. text-align: justify;
  295. text-justify:distribute-all-lines;
  296. text-align-last: justify;
  297. transform: translate(0,22%);
  298. padding-right: 15px;
  299. font-size: 16px;
  300. }
  301. .table{
  302. border: none;
  303. border-top: solid 1px black;
  304. // border-right: solid 1px black;
  305. width: 80%;
  306. margin: auto;
  307. margin-top: 30px;
  308. .textLeft{
  309. :deep(.el-textarea__inner){
  310. border: none ;
  311. border-radius: 0px;
  312. text-align: left !important;
  313. font-size: 16px;
  314. }
  315. }
  316. tr td{
  317. border: none;
  318. border-bottom: solid 1px black;
  319. border-right: solid 1px black;
  320. height: 50px;
  321. text-align: center;
  322. line-height: 30px;
  323. width: 9%;
  324. &:nth-child(1){
  325. border-left: solid 1px black;
  326. }
  327. p{
  328. font-weight: 600;
  329. }
  330. :deep(.el-select .el-input .el-select__caret){
  331. display: none;
  332. }
  333. :deep(.el-textarea__inner){
  334. // padding: 0;
  335. border: none ;
  336. border-radius: 0px;
  337. text-align: center;
  338. font-size: 16px;
  339. }
  340. :deep(.el-input__inner){
  341. border: none ;
  342. border-radius: 0px;
  343. text-align: center;
  344. font-size: 16px;
  345. //去除input number样式
  346. &::-webkit-outer-spin-button,
  347. &::-webkit-inner-spin-button {
  348. -webkit-appearance: none;
  349. }
  350. &[type="number"]{
  351. -moz-appearance: textfield;
  352. }
  353. }
  354. }
  355. }
  356. .textLeft{
  357. :deep(.el-textarea__inner){
  358. border: none ;
  359. border-radius: 0px;
  360. text-align: left !important;
  361. font-size: 16px;
  362. }
  363. }
  364. </style>