CarModal.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  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. <a-input v-decorator="[ 'number', validatorRules.number]" placeholder="请输入车牌号"></a-input>
  14. </a-form-item>
  15. <a-form-item label="车辆类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
  16. <a-select placeholder="请选择车辆类型" v-decorator="[ 'carType', validatorRules.carType]" >
  17. <a-select-option value="中巴">中巴</a-select-option>
  18. <a-select-option value="轿车">轿车</a-select-option>
  19. <a-select-option value="大巴">大巴</a-select-option>
  20. </a-select>
  21. </a-form-item>
  22. <a-form-item label="能源类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
  23. <a-select placeholder="请选择能源类型" v-decorator="[ 'energyType', validatorRules.energyType]" >
  24. <a-select-option value="燃油">燃油</a-select-option>
  25. <a-select-option value="电能源">电能源</a-select-option>
  26. </a-select>
  27. </a-form-item>
  28. <a-form-item label="座位数量" :labelCol="labelCol" :wrapperCol="wrapperCol">
  29. <a-input v-decorator="[ 'seat', validatorRules.seat]" placeholder="请输入座位数量"></a-input>
  30. </a-form-item>
  31. <a-form-item label="购买价格" :labelCol="labelCol" :wrapperCol="wrapperCol">
  32. <a-input-number v-decorator="[ 'price', validatorRules.price]" placeholder="请输入购买价格" style="width: 100%"/>
  33. </a-form-item>
  34. <a-form-item label="购置日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
  35. <j-date placeholder="请选择购置日期" v-decorator="[ 'purchaseDate', validatorRules.purchaseDate]" :trigger-change="true" style="width: 100%"/>
  36. </a-form-item>
  37. <a-form-item label="发动机号码" :labelCol="labelCol" :wrapperCol="wrapperCol">
  38. <a-input v-decorator="[ 'engineNum', validatorRules.engineNum]" placeholder="请输入发动机号码"></a-input>
  39. </a-form-item>
  40. <a-form-item label="车架号" :labelCol="labelCol" :wrapperCol="wrapperCol">
  41. <a-input v-decorator="[ 'vin', validatorRules.vin]" placeholder="请输入车架号"></a-input>
  42. </a-form-item>
  43. </a-form>
  44. </a-spin>
  45. </a-modal>
  46. </template>
  47. <script>
  48. import { httpAction } from '@/api/manage'
  49. import pick from 'lodash.pick'
  50. import { validateDuplicateValue } from '@/utils/util'
  51. import JDate from '@/components/jeecg/JDate'
  52. export default {
  53. name: "CarModal",
  54. components: {
  55. JDate,
  56. },
  57. data () {
  58. return {
  59. form: this.$form.createForm(this),
  60. title:"操作",
  61. width:800,
  62. visible: false,
  63. model: {},
  64. labelCol: {
  65. xs: { span: 24 },
  66. sm: { span: 5 },
  67. },
  68. wrapperCol: {
  69. xs: { span: 24 },
  70. sm: { span: 16 },
  71. },
  72. confirmLoading: false,
  73. validatorRules: {
  74. number: {rules: [
  75. ]},
  76. carType: {rules: [
  77. ]},
  78. energyType: {rules: [
  79. ]},
  80. seat: {rules: [
  81. ]},
  82. price: {rules: [
  83. ]},
  84. purchaseDate: {rules: [
  85. ]},
  86. engineNum: {rules: [
  87. ]},
  88. vin: {rules: [
  89. ]},
  90. accesory: {rules: [
  91. ]},
  92. },
  93. url: {
  94. add: "/oa/car/add",
  95. edit: "/oa/car/edit",
  96. }
  97. }
  98. },
  99. created () {
  100. },
  101. methods: {
  102. add () {
  103. this.edit({});
  104. },
  105. edit (record) {
  106. this.form.resetFields();
  107. this.model = Object.assign({}, record);
  108. this.visible = true;
  109. this.$nextTick(() => {
  110. this.form.setFieldsValue(pick(this.model,'number','carType','energyType','seat','price','purchaseDate','engineNum','vin','accesory'))
  111. })
  112. },
  113. close () {
  114. this.$emit('close');
  115. this.visible = false;
  116. },
  117. handleOk () {
  118. const that = this;
  119. // 触发表单验证
  120. this.form.validateFields((err, values) => {
  121. if (!err) {
  122. that.confirmLoading = true;
  123. let httpurl = '';
  124. let method = '';
  125. if(!this.model.id){
  126. httpurl+=this.url.add;
  127. method = 'post';
  128. }else{
  129. httpurl+=this.url.edit;
  130. method = 'put';
  131. }
  132. let formData = Object.assign(this.model, values);
  133. console.log("表单提交数据",formData)
  134. httpAction(httpurl,formData,method).then((res)=>{
  135. if(res.success){
  136. that.$message.success(res.message);
  137. that.$emit('ok');
  138. }else{
  139. that.$message.warning(res.message);
  140. }
  141. }).finally(() => {
  142. that.confirmLoading = false;
  143. that.close();
  144. })
  145. }
  146. })
  147. },
  148. handleCancel () {
  149. this.close()
  150. },
  151. popupCallback(row){
  152. this.form.setFieldsValue(pick(row,'number','carType','energyType','seat','price','purchaseDate','engineNum','vin','accesory'))
  153. },
  154. }
  155. }
  156. </script>