Form.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <div>
  3. <common @asynCallBack="asynCallBack"></common>
  4. <top-header :pageTitle="pageTitle"></top-header>
  5. <div class="mui-content margin60">
  6. <div class="mui-content-padded vongi-qingjiadt vongi-editme">
  7. <form class="mui-input-group">
  8. <div class="mui-input-row">
  9. <label><i class="colorfe616c">*</i> 出差地点</label>
  10. <input type="text" v-model="subForm.destination" class="mui-input-clear" placeholder="请填写地点名称">
  11. </div>
  12. </form>
  13. </div>
  14. <div class="mui-content-padded vongi-qingjiadt vongi-editme">
  15. <form class="mui-input-group">
  16. <div class="mui-input-row">
  17. <label><i class="colorfe616c">*</i> 出差日期</label>
  18. <button @click="selectData" class="mui-btn mui-btn-block mui-navigate-right mui-ellipsis" type='button' style="width:65%">
  19. {{subForm.startTime}}
  20. </button>
  21. </div>
  22. <div class="mui-input-row vongi-dw">
  23. <label><i class="colorfe616c">*</i> 预估天数</label>
  24. <span><input type="number" v-model="subForm.estimatedTime" class="mui-input-clear" placeholder="请填写天数">天</span>
  25. </div>
  26. </form>
  27. </div>
  28. <div class="vongi-meform-pho mui-content-padded">
  29. <h4><i class="colorfe616c">*</i> 出差事由</h4>
  30. <div class="mui-input-row">
  31. <textarea v-model="subForm.content" rows="5" placeholder="请填写出差事由"></textarea>
  32. </div>
  33. </div>
  34. <div class="mui-content-padded vongi-qingjiadt vongi-editme">
  35. <form class="mui-input-group">
  36. <div class="mui-input-row">
  37. <label><i class="colorfe616c">*</i> 审批人</label>
  38. <button @click="selectPerson" class="mui-btn mui-btn-block mui-navigate-right mui-ellipsis" type='button' style="width:65%">
  39. {{approvalPersonName}}
  40. </button>
  41. </div>
  42. </form>
  43. </div>
  44. </div>
  45. <div class="fyy-footer">
  46. <div class="bindfyy-btn"><button @click="submit" type="submit" class="mui-btn mui-btn-primary ">保 存</button></div>
  47. </div>
  48. <loading :visible="isLoading"></loading>
  49. </div>
  50. </template>
  51. <script>
  52. require('$project/assets/js/mui.picker.min.js');
  53. import * as API_BusinessTravel from '@/apis/Master/business_travel'
  54. import Common from '$project/components/Common.vue'
  55. import Loading from '$project/components/Loading.vue'
  56. import TopHeader from '$project/components/TopHeader.vue'
  57. import {
  58. mapGetters,
  59. mapMutations
  60. } from 'vuex'
  61. import {
  62. currentTimeStamp,
  63. parseUnixTime
  64. } from '$project/utils'
  65. export default {
  66. name: 'MasterBusinessTravelForm',
  67. components: {
  68. Common,
  69. Loading,
  70. TopHeader,
  71. },
  72. data() {
  73. return {
  74. pageTitle: '出差申请单',
  75. isLoading: false,
  76. subForm: {
  77. type: '3',
  78. destination: '',
  79. startTime: '',
  80. estimatedTime: '',
  81. content: '',
  82. approvalPersonId: ''
  83. },
  84. approvalPersonList: [],
  85. //补卡1,外出2,出差3 ,请假4
  86. personForm: {
  87. type: '3'
  88. }
  89. }
  90. },
  91. created() {
  92. this.subForm.startTime = parseUnixTime(currentTimeStamp(), '{y}-{m}-{d} {h}:{i}');
  93. },
  94. methods: {
  95. //获取审核人列表
  96. getBusinessOutApprovalPerson() {
  97. this.isLoading = true;
  98. API_BusinessTravel.getBusinessOutApprovalPerson(this.personForm).then(response => {
  99. this.isLoading = false;
  100. var list = response.data;
  101. var approvalPersonList = [];
  102. for (var i = 0; i < list.length; i++) {
  103. approvalPersonList.push({
  104. value: list[i]['id'],
  105. text: list[i]['personName']
  106. })
  107. }
  108. if (approvalPersonList.length) {
  109. this.subForm.approvalPersonId = approvalPersonList[0]['value'];
  110. }
  111. this.approvalPersonList = approvalPersonList;
  112. }).catch(error => {
  113. this.isLoading = false;
  114. mui.toast(error);
  115. })
  116. },
  117. //选择审核人
  118. selectPerson() {
  119. var _this = this;
  120. var picker = new mui.PopPicker();
  121. picker.setData(_this.approvalPersonList);
  122. picker.pickers[0].setSelectedValue(this.subForm.approvalPersonId);
  123. picker.show(function(selectItems) {
  124. _this.subForm.approvalPersonId = selectItems[0].value;
  125. picker.dispose();
  126. })
  127. },
  128. //选择日期
  129. selectData() {
  130. var _this = this;
  131. var picker = new mui.DtPicker({
  132. "type": "datetime",
  133. "beginYear": 2020,
  134. "endYear": 2040,
  135. "beginDate": new Date(),
  136. "value": _this.subForm.startTime
  137. });
  138. picker.show(function(rs) {
  139. _this.subForm.startTime = rs.text;
  140. picker.dispose();
  141. });
  142. },
  143. //表单检测
  144. checkForm() {
  145. if (!this.subForm.destination) {
  146. mui.toast('请填写出差地点');
  147. return false;
  148. } else if (!this.subForm.estimatedTime) {
  149. mui.toast('请填写预估时长');
  150. return false;
  151. } else if (!this.subForm.content) {
  152. mui.toast('请填写申请理由');
  153. return false;
  154. } else if (!this.subForm.approvalPersonId) {
  155. mui.toast('请选择审批人');
  156. return false;
  157. } else {
  158. return true;
  159. }
  160. },
  161. //提交
  162. submit() {
  163. if (this.checkForm()) {
  164. this.isLoading = true;
  165. API_BusinessTravel.submitBusiness(this.subForm).then(response => {
  166. this.isLoading = false;
  167. mui.toast('提交成功');
  168. this.$router.push({
  169. name: 'MasterBusinessTravelInfo',
  170. query: {
  171. id: response.id
  172. }
  173. })
  174. }).catch(error => {
  175. this.isLoading = false;
  176. mui.toast(error);
  177. })
  178. }
  179. },
  180. asynCallBack() {
  181. },
  182. },
  183. mounted() {
  184. //获取审核人列表
  185. this.getBusinessOutApprovalPerson();
  186. },
  187. destroyed() {},
  188. computed: {
  189. approvalPersonName: {
  190. // getter
  191. get: function() {
  192. for (var i = 0; i < this.approvalPersonList.length; i++) {
  193. if (this.approvalPersonList[i]['value'] == this.subForm.approvalPersonId) {
  194. return this.approvalPersonList[i]['text'];
  195. }
  196. }
  197. return '请选择';
  198. },
  199. // setter
  200. set: function(newValue) {
  201. console.log(newValue)
  202. }
  203. },
  204. ...mapGetters({
  205. openId: 'wx_openid',
  206. token: 'token',
  207. })
  208. },
  209. }
  210. </script>
  211. <style scoped src="$project/assets/css/xpwyfyy.css"></style>
  212. <style src="$project/assets/css/iconfont.css"></style>
  213. <style src="$project/assets/css/mui.picker.min.css"></style>
  214. <style>
  215. </style>