TravelInformation.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <template>
  2. <div class="container-box">
  3. <div class="bread-crumb">
  4. <el-breadcrumb separator="/" style="float: left;margin:15px ">
  5. <el-breadcrumb-item :to="{ path: 'home' }">{{$i18n.locale=='en'? 'Home': '首页'}}</el-breadcrumb-item>
  6. <el-breadcrumb-item :to="{ path: 'ApplicationHistory'}">{{$i18n.locale=='en'? 'userCenter': '用户中心'}}</el-breadcrumb-item>
  7. <el-breadcrumb-item>{{$i18n.locale=='en'? 'Supplement': '信息补录'}}</el-breadcrumb-item>
  8. </el-breadcrumb>
  9. </div>
  10. <div class="content-box">
  11. <div class="content-item">
  12. <div class="category-body" v-if="$i18n.locale=='en'">
  13. <!-- <div class="category-reminder">
  14. <p>Dear guest: </p>
  15. <p>In order to further improve the service for you, you are required to fill in the itinerary truthfully so as to allocate volunteers for you. I wish you a happy meeting!</p>
  16. </div>
  17. <div class="conference-info">
  18. <p>{{formatDate(meetingStartDateMap[meetingData.meetingId])}} 9 a.m</p>
  19. <p>{{meetingPlaceMap[meetingData.meetingId]}}</p>
  20. </div> -->
  21. <el-form :model="meetingApply" :rules="rulesEn" ref="meetingApplyFormEn" label-width="150px" key="1">
  22. <el-form-item label="The time of arrival" prop="travelArrivalTime">
  23. <el-date-picker
  24. v-model="meetingApply.travelArrivalTime"
  25. type="date"
  26. placeholder="YYYY-MM-DD"
  27. style="width: 100%"
  28. ></el-date-picker>
  29. </el-form-item>
  30. <el-form-item label="Leave time" prop="travelLeaveTime">
  31. <el-date-picker
  32. v-model="meetingApply.travelLeaveTime"
  33. type="date"
  34. placeholder="YYYY-MM-DD"
  35. style="width: 100%"
  36. ></el-date-picker>
  37. </el-form-item>
  38. <el-form-item label="Travel Info" prop="travelInfo">
  39. <el-input v-model="meetingApply.travelInfo" placeholder="Please enter transportation information (e.g. round-trip train number , flight number)"></el-input>
  40. </el-form-item>
  41. <el-form-item label="Hotel">
  42. <el-input v-model="meetingApply.hotelName" placeholder=""></el-input>
  43. </el-form-item>
  44. <el-form-item label="Dietary taboos">
  45. <el-input v-model="meetingApply.dietaryTaboos" placeholder=""></el-input>
  46. </el-form-item>
  47. <el-form-item style="text-align: center">
  48. <el-button type="primary" @click="submitForm('meetingApplyFormEn')">Submit</el-button>
  49. </el-form-item>
  50. </el-form>
  51. </div>
  52. <div class="category-body" v-else>
  53. <!-- <div class="category-reminder">
  54. <p>亲爱的嘉宾:</p>
  55. <p>您好!为了进一步为您提升服务,需要您如实填报行程,方便为您分配志愿者,祝您本次会议愉快!</p>
  56. </div>
  57. <div class="conference-info">
  58. <p>{{formatDate(meetingStartDateMap[meetingData.meetingId])}} 上午9点</p>
  59. <p>{{meetingPlaceMap[meetingData.meetingId]}}</p>
  60. </div> -->
  61. <el-form :model="meetingApply" :rules="rulesZh" ref="meetingApplyFormZh" label-width="150px" key="2">
  62. <el-form-item label="抵达时间" prop="travelArrivalTime">
  63. <el-date-picker
  64. v-model="meetingApply.travelArrivalTime"
  65. type="date"
  66. placeholder="YYYY-MM-DD"
  67. style="width: 100%"
  68. ></el-date-picker>
  69. </el-form-item>
  70. <el-form-item label="离开时间" prop="travelLeaveTime">
  71. <el-date-picker
  72. v-model="meetingApply.travelLeaveTime"
  73. type="date"
  74. placeholder="YYYY-MM-DD"
  75. style="width: 100%"
  76. ></el-date-picker>
  77. </el-form-item>
  78. <el-form-item label="交通信息" prop="travelInfo">
  79. <el-input v-model="meetingApply.travelInfo" placeholder="请输入交通信息(如:往返车次 , 航班号)"></el-input>
  80. </el-form-item>
  81. <el-form-item label="入住酒店">
  82. <el-input v-model="meetingApply.hotelName" placeholder="请输入入住酒店"></el-input>
  83. </el-form-item>
  84. <el-form-item label="饮食禁忌">
  85. <el-input v-model="meetingApply.dietaryTaboos" placeholder="请输入饮食禁忌"></el-input>
  86. </el-form-item>
  87. <el-form-item style="text-align: center">
  88. <el-button type="primary" @click="submitForm('meetingApplyFormZh')">提交</el-button>
  89. </el-form-item>
  90. </el-form>
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. </template>
  96. <script>
  97. import Base from "@/views/base/Base";
  98. import { updateItineraryInfo, getMeetingInfo} from "@/api/meeting/meetingApply";
  99. import { getToken } from "@/utils/auth";
  100. export default {
  101. extends: Base,
  102. data(){
  103. return {
  104. meetingApply: {
  105. id: this.$route.params.key.id,
  106. travelLeaveTime: '',
  107. travelArrivalTime: '',
  108. travelInfo: '',
  109. hotelName: '',
  110. dietaryTaboos: ''
  111. },
  112. meetingData: {},
  113. meetingInfoArray: [],
  114. rulesEn: {
  115. travelArrivalTime: [
  116. { required: true, message: 'Please enter the time of arrival.', trigger: 'change' },
  117. ],
  118. travelLeaveTime: [
  119. { required: true, message: 'Please enter Leave time.', trigger: 'change' },
  120. ],
  121. travelInfo: [
  122. { required: true, message: 'Please enter Flight number.', trigger: 'blur' },
  123. ],
  124. },
  125. rulesZh: {
  126. travelArrivalTime: [
  127. { required: true, message: '请输入抵达时间', trigger: 'change' },
  128. ],
  129. travelLeaveTime: [
  130. { required: true, message: '请输入离开时间', trigger: 'change' },
  131. ],
  132. travelInfo: [
  133. { required: true, message: '请输入交通信息', trigger: 'blur' },
  134. ],
  135. },
  136. }
  137. },
  138. mounted(){
  139. this.meetingData = this.$route.params.key;
  140. getMeetingInfo().then(res =>{
  141. this.meetingInfoArray = res.data.meetingBasicInfos
  142. });
  143. },
  144. computed: {
  145. // meetingNameMap: function() {
  146. // if(this.lang == "en"){
  147. // return this.meetingInfoArray.array2Obj('id', 'meetingNameEn');
  148. // }else{
  149. // return this.meetingInfoArray.array2Obj('id', 'meetingName');
  150. // }
  151. // },
  152. meetingStartDateMap: function() {
  153. return this.meetingInfoArray.array2Obj('id', 'meetingStartDate');
  154. },
  155. meetingPlaceMap: function() {
  156. if(this.$i18n.locale == "en"){
  157. return this.meetingInfoArray.array2Obj('id', 'meetingPlaceEn');
  158. }else{
  159. return this.meetingInfoArray.array2Obj('id', 'meetingPlace');
  160. }
  161. },
  162. },
  163. methods:{
  164. formatDate(t) {
  165. if(!t){
  166. return ''
  167. }else{
  168. var original = new Date(t);
  169. var year=original.getFullYear();
  170. var month=original.getMonth()+1;
  171. var date=original.getDate();
  172. // var hour=original.getHours();
  173. // var minute=original.getMinutes();
  174. // var second=original.getSeconds();
  175. return year+"/"+month+"/"+date;
  176. }
  177. },
  178. submitForm(formName) {
  179. this.$refs[formName].validate((valid) => {
  180. if (!valid) {
  181. return false;
  182. }
  183. this.save();
  184. });
  185. },
  186. save: function(){
  187. this.submitHandler((token) => {
  188. updateItineraryInfo(JSON.stringify(this.meetingApply), token).then(result => {
  189. if(result.status == "200"){
  190. this.$message({
  191. message: this.$i18n.locale == "en"? 'Successfully' :'提交成功',
  192. type: 'success'
  193. });
  194. this.$router.go(-1);
  195. }
  196. // console.log('result',result)
  197. }).catch((error) => {
  198. this.resetToken();
  199. });
  200. });
  201. }
  202. }
  203. }
  204. </script>
  205. <style scoped>
  206. .container-box {
  207. width: 1200px;
  208. margin: 10px auto;
  209. min-height: calc( 100vh - 420px )
  210. }
  211. .bread-crumb{
  212. height: 40px;
  213. background: #fff;
  214. margin: 10px 0;
  215. }
  216. .content-box {
  217. width: 100%;
  218. }
  219. .content-box .content-item {
  220. padding-bottom: 20px;
  221. overflow: hidden;
  222. background: #fff;
  223. }
  224. .content-box .category-body {
  225. padding: 100px 150px 22px 150px;
  226. position: relative;
  227. }
  228. .category-reminder{
  229. font-size: 18px;
  230. font-weight: bold;
  231. padding: 30px 0;
  232. }
  233. .category-reminder p:last-child{
  234. text-indent: 2em;
  235. }
  236. .conference-info{
  237. position: absolute;
  238. top: 50px;
  239. right: 50px;
  240. text-align: right;
  241. }
  242. .content-box /deep/ .el-input__inner {
  243. height: 48px;
  244. line-height: 48px;
  245. }
  246. .submit-success{
  247. text-align: center;
  248. font-size: 22px;
  249. color: #999
  250. }
  251. .submit-success p{
  252. margin: 40px 0;
  253. }
  254. .submit-success span{
  255. margin: 0 20px;
  256. }
  257. </style>