CarfareDetailModal.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="width"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. @ok="handleOk"
  8. @cancel="handleCancel"
  9. cancelText="关闭">
  10. <a-spin :spinning="confirmLoading">
  11. <a-form :form="form">
  12. <a-form-item label="报销日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
  13. <j-date placeholder="请选择入库日期" v-decorator="[ 'reimbursementDate', validatorRules.reimbursementDate]" :trigger-change="true" style="width: 100%"/>
  14. </a-form-item>
  15. <a-form-item label="支付凭证编号" :labelCol="labelCol" :wrapperCol="wrapperCol">
  16. <a-input v-decorator="[ 'paymentNo', validatorRules.paymentNo]" placeholder="请输入支付凭证编号"></a-input>
  17. </a-form-item>
  18. <a-form-item label="车牌号" :labelCol="labelCol" :wrapperCol="wrapperCol">
  19. <a-input v-decorator="[ 'carNo', validatorRules.carNo]" placeholder="请输入车牌号"></a-input>
  20. </a-form-item>
  21. <a-form-item label="报销人" :labelCol="labelCol" :wrapperCol="wrapperCol">
  22. <j-popup
  23. v-decorator="['submitter', validatorRules.submitter]"
  24. placeholder="请选择报销人"
  25. :trigger-change="true"
  26. org-fields="realname,depart_name"
  27. dest-fields="submitter,dept"
  28. code="user_dept"
  29. @callback="popupCallback"/>
  30. </a-form-item>
  31. <a-form-item label="部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
  32. <a-input v-decorator="[ 'dept', validatorRules.dept]" placeholder="请输入部门" disabled></a-input>
  33. </a-form-item>
  34. <a-form-item label="报销内容" :labelCol="labelCol" :wrapperCol="wrapperCol">
  35. <a-input v-decorator="[ 'content', validatorRules.content]" placeholder="请输入报销内容"></a-input>
  36. </a-form-item>
  37. <a-form-item label="金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
  38. <a-input-number v-decorator="[ 'amount', validatorRules.amount]" placeholder="请输入金额" style="width: 100%"/>
  39. </a-form-item>
  40. <a-form-item label="附件" :labelCol="labelCol" :wrapperCol="wrapperCol">
  41. <j-upload v-decorator="['attachment', validatorRules.attachment]" :trigger-change="true"></j-upload>
  42. </a-form-item>
  43. <a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
  44. <a-input v-decorator="[ 'remark', validatorRules.remark]" placeholder="请输入备注"></a-input>
  45. </a-form-item>
  46. <a-form-item label="登记人" :labelCol="labelCol" :wrapperCol="wrapperCol">
  47. <a-input v-decorator="[ 'registrant', validatorRules.registrant]" placeholder="请输入登记人" disabled></a-input>
  48. </a-form-item>
  49. <a-form-item label="登记部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
  50. <a-input v-decorator="[ 'registrantDept', validatorRules.registrantDept]" placeholder="请输入登记部门" disabled></a-input>
  51. </a-form-item>
  52. <a-form-item label="财务经办人" :labelCol="labelCol" :wrapperCol="wrapperCol">
  53. <a-input v-decorator="[ 'financeOperator', validatorRules.financeOperator]" placeholder="请输入财务经办人" disabled></a-input>
  54. </a-form-item>
  55. <a-form-item label="财务经办部门" :labelCol="labelCol" :wrapperCol="wrapperCol">
  56. <a-input v-decorator="[ 'financeDept', validatorRules.financeDept]" placeholder="请输入财务经办部门" disabled></a-input>
  57. </a-form-item>
  58. <a-form-item label="财务负责人" :labelCol="labelCol" :wrapperCol="wrapperCol">
  59. <a-input v-decorator="[ 'financeHead', validatorRules.financeHead]" placeholder="请输入财务负责人" disabled></a-input>
  60. </a-form-item>
  61. </a-form>
  62. </a-spin>
  63. </a-modal>
  64. </template>
  65. <script>
  66. import { httpAction } from '@/api/manage'
  67. import pick from 'lodash.pick'
  68. import { validateDuplicateValue } from '@/utils/util'
  69. import JUpload from '@/components/jeecg/JUpload'
  70. import JDate from '@/components/jeecg/JDate'
  71. export default {
  72. name: "CarfareDetailModal",
  73. components: {
  74. JUpload,
  75. JDate
  76. },
  77. data () {
  78. return {
  79. form: this.$form.createForm(this),
  80. title:"操作",
  81. width:800,
  82. visible: false,
  83. model: {},
  84. labelCol: {
  85. xs: { span: 24 },
  86. sm: { span: 5 },
  87. },
  88. wrapperCol: {
  89. xs: { span: 24 },
  90. sm: { span: 16 },
  91. },
  92. confirmLoading: false,
  93. validatorRules: {
  94. reimbursementDate: {rules: [
  95. ]},
  96. paymentNo: {rules: [
  97. ]},
  98. carNo: {rules: [
  99. ]},
  100. submitter: {rules: [
  101. ]},
  102. dept: {rules: [
  103. ]},
  104. content: {rules: [
  105. ]},
  106. amount: {rules: [
  107. ]},
  108. attachment: {rules: [
  109. ]},
  110. remark: {rules: [
  111. ]},
  112. registrant: {rules: [
  113. ]},
  114. registrantDept: {rules: [
  115. ]},
  116. financeOperator: {rules: [
  117. ]},
  118. financeDept: {rules: [
  119. ]},
  120. financeHead: {rules: [
  121. ]},
  122. },
  123. url: {
  124. add: "/oa/carfareDetail/add",
  125. edit: "/oa/carfareDetail/edit",
  126. }
  127. }
  128. },
  129. created () {
  130. },
  131. methods: {
  132. add () {
  133. this.edit({});
  134. },
  135. edit (record) {
  136. this.form.resetFields();
  137. this.model = Object.assign({}, record);
  138. this.visible = true;
  139. this.$nextTick(() => {
  140. this.form.setFieldsValue(pick(this.model,'reimbursementDate','paymentNo','carNo','submitter','dept','content','amount','attachment','remark','registrant','registrantDept','financeOperator','financeDept','financeHead'))
  141. })
  142. },
  143. close () {
  144. this.$emit('close');
  145. this.visible = false;
  146. },
  147. handleOk () {
  148. const that = this;
  149. // 触发表单验证
  150. this.form.validateFields((err, values) => {
  151. if (!err) {
  152. that.confirmLoading = true;
  153. let httpurl = '';
  154. let method = '';
  155. if(!this.model.id){
  156. httpurl+=this.url.add;
  157. method = 'post';
  158. }else{
  159. httpurl+=this.url.edit;
  160. method = 'put';
  161. }
  162. let formData = Object.assign(this.model, values);
  163. console.log("表单提交数据",formData)
  164. httpAction(httpurl,formData,method).then((res)=>{
  165. if(res.success){
  166. that.$message.success(res.message);
  167. that.$emit('ok');
  168. }else{
  169. that.$message.warning(res.message);
  170. }
  171. }).finally(() => {
  172. that.confirmLoading = false;
  173. that.close();
  174. })
  175. }
  176. })
  177. },
  178. handleCancel () {
  179. this.close()
  180. },
  181. popupCallback(row){
  182. this.form.setFieldsValue(pick(row,'reimbursementDate','paymentNo','carNo','submitter','dept','content','amount','attachment','remark','registrant','registrantDept','financeOperator','financeDept','financeHead'))
  183. },
  184. }
  185. }
  186. </script>