index.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <script setup lang="tsx">
  2. import { NInput } from 'naive-ui';
  3. import { useTabStore } from '@/store/modules/tab';
  4. import { useForm } from '@/components/zt/Form/hooks/useForm';
  5. const tabStore = useTabStore();
  6. const [registerForm, { getFieldsValue, validate }] = useForm({
  7. schemas: [
  8. {
  9. field: 'name',
  10. component: 'NInput',
  11. label: '配送距离',
  12. required: true,
  13. render({ model, field }) {
  14. return (
  15. <NInput
  16. placeholder={'请输入配送距离'}
  17. value={model[field]}
  18. onUpdate:value={val => (model[field] = val)}
  19. v-slots={{ prefix: () => '大于', suffix: () => 'km' }}
  20. ></NInput>
  21. );
  22. }
  23. }
  24. ],
  25. labelWidth: 120,
  26. layout: 'horizontal',
  27. gridProps: {
  28. cols: '1 xl:4 s:1 l:3',
  29. itemResponsive: true
  30. },
  31. collapsedRows: 1,
  32. showActionButtonGroup: false
  33. });
  34. function close() {
  35. tabStore.removeTab(tabStore.activeTabId);
  36. }
  37. async function save() {
  38. await validate();
  39. const form = getFieldsValue();
  40. console.log(form);
  41. }
  42. </script>
  43. <template>
  44. <LayoutTable>
  45. <NCard
  46. title="分单配置(企业用户才有分单规则,C端用户只走配送,B端用户只走物流)"
  47. :bordered="false"
  48. size="small"
  49. segmented
  50. class="card-wrapper"
  51. >
  52. <BasicForm @register-form="registerForm"></BasicForm>
  53. <template #footer>
  54. <NSpace justify="end">
  55. <NButton size="small" @click="close">关闭</NButton>
  56. <NButton type="primary" size="small" @click="save">保存</NButton>
  57. </NSpace>
  58. </template>
  59. </NCard>
  60. </LayoutTable>
  61. </template>
  62. <style scoped></style>