makerActivityWordDetail.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. <template>
  2. <div id="makerActivityWordDetail" v-loading="loading">
  3. <div class="projectApplication1">
  4. <div class="vfpHeader">
  5. <div class="titleOne">活动详细</div>
  6. <el-button @click="back()" type="primary" size="mini">返回</el-button>
  7. </div>
  8. <hr>
  9. </div>
  10. <markeractivityWord v-if="wordData['type']==0 && wordData['state']==0" :wordData="wordData" :total="total"/>
  11. <NomMarkerWord v-if="wordData['type']==1 && wordData['state']==0" :wordData="wordData" :total="total"/>
  12. <markeractivityWordShow v-if="wordData['state']!=0" :wordData="wordData" :total="total"/>
  13. <div>
  14. <el-button type="primary" v-if="wordData['state']==0" @click="test">立即修改</el-button>
  15. <el-button type="primary" @click="getActivityWord">下载表单</el-button>
  16. </div>
  17. <el-dialog
  18. title="提示"
  19. :visible.sync="submitHint"
  20. width="600px"
  21. class="pageSubmitData">
  22. <div class="addDialogLogo">LOGO</div>
  23. <div class="deleteContent">确定修改“{{wordData['activityName']}}”活动?</div>
  24. <span slot="footer" class="dialog-footer">
  25. <el-button type="primary" @click="changeActivity" class="AllDialogBtn">确认提交</el-button>
  26. <el-button @click="submitHint=false" class="AllDialogBtn">取消</el-button>
  27. </span>
  28. </el-dialog>
  29. </div>
  30. </template>
  31. <script>
  32. import markeractivityWord from './components/markeractivityWord.vue'
  33. import NomMarkerWord from './components/NomMarkerWord.vue'
  34. import markeractivityWordShow from './components/markeractivityWordShow.vue'
  35. import {makerActivityWord} from '@/components/tool/getWord'
  36. export default {
  37. components:{markeractivityWord,NomMarkerWord,markeractivityWordShow},
  38. data() {
  39. return {
  40. loading:false,
  41. submitHint:false,
  42. wordData:{
  43. acId:"",//活动ID
  44. applicationDate:'',//申请日期
  45. associatedProjects:"",//关联项目
  46. ProjectName:"",//关联项目名称
  47. activityName:'',//活动名称
  48. pro_leader:"",//活动负责人
  49. college: '',//所在学院ID
  50. collegeName:"",//所在学院名称
  51. tel:'',//联系电话
  52. activityTime:"",//活动时间
  53. student:0,//参与学生人数
  54. member:[
  55. {name:"",collage:"",work:""},
  56. {name:"",collage:"",work:""},
  57. {name:"",collage:"",work:""},
  58. {name:"",collage:"",work:""},
  59. {name:"",collage:"",work:""},
  60. ],
  61. activityPlan:"",//活动计划
  62. expectations:"",//预期目标
  63. eventAudience:"",//活动受众面
  64. fundingPlan:"",//经费支出计划
  65. expenditureMothPlan:['','','','','','','','','','','',''],
  66. fund:{
  67. device:"",
  68. Material:"",
  69. processing:"",
  70. Collaboration:"",
  71. APPRAISAL:"",
  72. entery:"",
  73. activities:"",
  74. Transaction:"",
  75. },//预算经费
  76. type:0,//0 创客活动 1 个人创客
  77. state:1,//项目状态 0未审核 1待报销 2 已审核 3 已报销
  78. }
  79. }
  80. },
  81. methods:{
  82. back(){
  83. this.$router.push('/makerActvity')
  84. },
  85. getData(){
  86. this.loading = true;
  87. let pram = {
  88. uid:this.$store.state.userInfo.userid,
  89. acid:this.$route.query['Id']
  90. }
  91. this.ajax.get(this.$store.state.api+"/getActivityWordData",pram).then(result=>{
  92. let data = result['data'][0][0]
  93. this.wordData['applicationDate'] = data['applicationDate'];
  94. this.wordData['associatedProjects'] = data['pid'];
  95. this.wordData['activityName'] = data['title'];
  96. this.wordData['pro_leader'] = data['pro_leader'];
  97. this.wordData['college'] = data['classid'];
  98. this.wordData['tel'] = data['phone']
  99. this.wordData['activityTime'] = JSON.parse(data['begin_at']);
  100. this.wordData['student'] = data['students'];
  101. this.wordData['member'] = JSON.parse(data['course_teacher']);
  102. this.wordData['expenditureMothPlan'] = JSON.parse(data['MothPlan']);
  103. this.wordData['fund'] = JSON.parse(data['fund']);
  104. this.wordData['type'] = data['type'];
  105. this.wordData['ProjectName'] = data['PName'];
  106. this.wordData['collegeName'] = data['CName'];
  107. this.wordData['acId'] = data['acId']
  108. this.wordData['state'] = data['state']
  109. this.wordData = {...this.wordData,...JSON.parse(data['chapters'])}
  110. this.loading = false;
  111. }).catch(err=>{
  112. console.log(err)
  113. })
  114. },
  115. test(){
  116. const cEmpty = /^\s*$/g;
  117. const checkPhone = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/; //获取正则表达式 存放到verify变量中
  118. for(let i in this.wordData){
  119. switch(i){
  120. case "associatedProjects":
  121. if(cEmpty.test(this.wordData[i]) && this.wordData['type']==0){
  122. this.$message.error("请选择关联项目")
  123. document.querySelector('#one').scrollIntoView({ behavior: "smooth" });
  124. return false;
  125. }
  126. break;
  127. case "activityName":
  128. if(cEmpty.test(this.wordData[i])){
  129. this.$message.error("请输入活动名称")
  130. document.querySelector('#two').scrollIntoView({ behavior: "smooth" });
  131. return false;
  132. }
  133. break;
  134. case "pro_leader":
  135. if(cEmpty.test(this.wordData[i])){
  136. this.$message.error("请输入活动负责人")
  137. document.querySelector('#three').scrollIntoView({ behavior: "smooth" });
  138. return false;
  139. }
  140. break;
  141. case "college":
  142. if(cEmpty.test(this.wordData[i])){
  143. this.$message.error("请选择所在学院")
  144. document.querySelector('#three').scrollIntoView({ behavior: "smooth" });
  145. return false;;
  146. }
  147. break;
  148. case "tel":
  149. if(cEmpty.test(this.wordData[i])){
  150. this.$message.error("请输入联系电话")
  151. document.querySelector('#three').scrollIntoView({ behavior: "smooth" });
  152. return false;
  153. }else if(!checkPhone.test(this.wordData[i])){
  154. this.$message.error("请输入正确的手机号");
  155. document.querySelector('#three').scrollIntoView({ behavior: "smooth" });
  156. return false;
  157. }
  158. break;
  159. case "activityTime":
  160. if(cEmpty.test(this.wordData[i][0])){
  161. this.$message.error("请选择活动时间")
  162. document.querySelector('#four').scrollIntoView({ behavior: "smooth" });
  163. return false;;
  164. }
  165. break;
  166. case "member":
  167. let num = 0;
  168. this.wordData[i].forEach(item=>{
  169. for(let j in item){
  170. if(cEmpty.test(item[j])){
  171. num++;
  172. }
  173. }
  174. })
  175. if(num>0){
  176. this.$message.error("请填完指导老师信息");
  177. document.querySelector('#five').scrollIntoView({ behavior: "smooth" });
  178. return false;
  179. }
  180. break;
  181. case "activityPlan":
  182. if(cEmpty.test(this.wordData[i][0])){
  183. this.$message.error("请输入活动计划");
  184. document.querySelector('#six').scrollIntoView({ behavior: "smooth" });
  185. return false;
  186. }
  187. break;
  188. case "expectations":
  189. if(cEmpty.test(this.wordData[i][0])){
  190. this.$message.error("预期目标");
  191. document.querySelector('#seven').scrollIntoView({ behavior: "smooth" });
  192. return false;
  193. }
  194. break;
  195. case "eventAudience":
  196. if(cEmpty.test(this.wordData[i][0])){
  197. this.$message.error("活动受众面")
  198. document.querySelector('#nine').scrollIntoView({ behavior: "smooth" });
  199. return false;
  200. }
  201. break;
  202. case "fundingPlan":
  203. if(cEmpty.test(this.wordData[i][0])){
  204. this.$message.error("经费支出计划")
  205. document.querySelector('#ten').scrollIntoView({ behavior: "smooth" });
  206. return false;
  207. }
  208. break;
  209. }
  210. }
  211. this.submitHint = true;
  212. },
  213. changeActivity(){
  214. let pram = {
  215. uid:this.$store.state.userInfo.userid,//用户ID
  216. aid:this.wordData['acId'],
  217. tit:this.wordData['activityName'],//活动名称
  218. courseId:this.wordData['associatedProjects'],//关联项目ID
  219. pLeader:this.wordData['pro_leader'],//活动负责人
  220. mon:this.total,//预算经费
  221. st:this.wordData['student'],//参与学生人数
  222. ct:JSON.stringify(this.wordData['member']),//活动指导老师
  223. chp:JSON.stringify({
  224. activityPlan:this.wordData['activityPlan'],//活动计划
  225. expectations:this.wordData['expectations'],//预期目标
  226. eventAudience:this.wordData['eventAudience'],//活动受众面
  227. fundingPlan:this.wordData['fundingPlan'],//经费支出计划
  228. }),//活动信息
  229. cid:this.wordData['college'],//学院ID,
  230. ph:this.wordData['tel'],//联系电话
  231. beg:JSON.stringify(this.wordData['activityTime']),//活动时间
  232. f:JSON.stringify(this.wordData['fund']),//预算经费明细
  233. appltTime:this.wordData['applicationDate'],//申请日期
  234. mp:JSON.stringify(this.wordData['expenditureMothPlan']),//月支出计划
  235. }
  236. this.ajax.post(this.$store.state.api+"/UpdateActivityWordData",pram).then(result=>{
  237. if(result['data']==1){
  238. this.$message.success("活动修改成功");
  239. this.submitHint = false;
  240. }else{
  241. this.$message.error("活动修改失败")
  242. }
  243. this.getData();
  244. }).catch(err=>{
  245. console.log(err)
  246. })
  247. },
  248. getActivityWord(){
  249. // if(this.wordData['type']==0){
  250. // this.$message.info("正在下载创客活动表单");
  251. makerActivityWord(this.wordData,this.total)
  252. // }else if(this.wordData['type']==1){
  253. // this.$message.info("正在下载个人创客表单")
  254. // }
  255. }
  256. },
  257. computed:{
  258. total() {
  259. let num = 0;
  260. for(let i in this.wordData['fund'])num += Number(this.wordData['fund'][i]);
  261. return num;
  262. // return (this.wordData.fund.facility*1 + this.wordData.fund.materials*1+this.wordData.fund.process*1+ this.input*1+this.wordData.fund.authenticate*1+ this.wordData.fund.match*1+this.wordData.fund.activity*1+this.wordData.fund.affair*1)/10000
  263. }
  264. },
  265. mounted(){
  266. this.getData();
  267. }
  268. }
  269. </script>
  270. <style lang="less">
  271. #makerActivityWordDetail{
  272. width: 100%;
  273. display: flex;
  274. flex-direction: column;
  275. align-items: center;
  276. .projectApplication1{
  277. width: 100%;
  278. }
  279. }
  280. </style>