合同小程序后台管理系统前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.5 KiB

  1. <template>
  2. <BasicForm @register="registerForm" name="AppOrderCarForm" class="basic-modal-form"/>
  3. </template>
  4. <script lang="ts">
  5. import {defineComponent} from 'vue';
  6. import {BasicForm, useForm} from '/@/components/Form/index';
  7. import {appOrderCarFormSchema} from '../AppOrder.data';
  8. import {defHttp} from '/@/utils/http/axios';
  9. import { VALIDATE_FAILED } from '/@/utils/common/vxeUtils'
  10. export default defineComponent({
  11. name:"AppOrderCarForm",
  12. components: {BasicForm},
  13. emits:['register'],
  14. props:{
  15. disabled: {
  16. type: Boolean,
  17. default: false
  18. }
  19. },
  20. setup(props,{emit}) {
  21. const [registerForm, { setProps, resetFields, setFieldsValue, getFieldsValue, validate, scrollToField }] = useForm({
  22. schemas: appOrderCarFormSchema,
  23. showActionButtonGroup: false,
  24. baseColProps: {span: 12}
  25. });
  26. /**
  27. *初始化加载数据
  28. */
  29. function initFormData(url,id){
  30. if(id){
  31. defHttp.get({url,params:{id}},{isTransformResponse:false}).then(res=>{
  32. res.success && setFieldsValue({...res.result[0]});
  33. })
  34. }
  35. setProps({disabled: props.disabled})
  36. }
  37. /**
  38. *获取表单数据
  39. */
  40. function getFormData(){
  41. let formData = getFieldsValue();
  42. Object.keys(formData).map(k=>{
  43. if(formData[k] instanceof Array){
  44. formData[k] = formData[k].join(',')
  45. }
  46. });
  47. return [formData];
  48. }
  49. /**
  50. *表单校验
  51. */
  52. function validateForm(index){
  53. return new Promise((resolve, reject) => {
  54. // 验证子表表单
  55. validate().then(()=>{
  56. return resolve()
  57. }).catch(({ errorFields }) => {
  58. return reject({ error: VALIDATE_FAILED, index, errorFields: errorFields, scrollToField: scrollToField });
  59. });
  60. })
  61. }
  62. return {
  63. registerForm,
  64. resetFields,
  65. initFormData,
  66. getFormData,
  67. validateForm
  68. }
  69. }
  70. })
  71. </script>
  72. <style lang="less" scoped>
  73. .basic-modal-form {
  74. overflow: auto;
  75. height: 340px;
  76. }
  77. </style>