EditDrawer.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <script lang="ts" setup>
  2. /**
  3. * @Name: EditDrawer.vue
  4. * @Description: 店铺编辑
  5. * @Author: Cheney
  6. */
  7. import { ElMessage, FormInstance, FormRules } from 'element-plus';
  8. import { useResponse } from '/src/utils/useResponse';
  9. import * as api from '/src/views/shop-information/api';
  10. const loading = ref(false);
  11. const editOpen = defineModel({ default: false });
  12. const { rowData } = defineProps<{
  13. rowData: object;
  14. }>();
  15. const emit = defineEmits([ 'refresh' ]);
  16. onBeforeMount(() => {
  17. // replaceCol();
  18. });
  19. interface RuleForm {
  20. asin: any,
  21. sku: any,
  22. country: any
  23. shop: any
  24. group: any
  25. status: any
  26. frequency: any
  27. }
  28. const ruleFormRef = ref<FormInstance>();
  29. const ruleForm = reactive<RuleForm>({
  30. asin: '',
  31. sku: '',
  32. country: '',
  33. shop: '',
  34. group: '',
  35. status: '',
  36. frequency: '',
  37. });
  38. const rules = reactive<FormRules<RuleForm>>({
  39. asin: [ { required: true, message: '请输入ASIN', trigger: 'blur' } ],
  40. sku: [ { required: true, message: '请输入SKU', trigger: 'blur' } ],
  41. country: [ { required: true, message: '请选择国家', trigger: 'change' } ],
  42. shop: [ { required: true, message: '请输入店铺', trigger: 'blur' } ],
  43. group: [ { required: true, message: '请输入分组', trigger: 'blur' } ],
  44. status: [ { message: '请选择状态', trigger: 'blur' } ],
  45. frequency: [ { message: '请选择更新频率', trigger: 'blur' } ]
  46. });
  47. const submitForm = async (formEl: FormInstance | undefined) => {
  48. if (!formEl) return;
  49. await formEl.validate(async (valid, fields) => {
  50. if (valid) {
  51. // await useResponse({ id: gridOptions.data[0].id, partial: 1, formData: ruleForm }, api.updateShopDetail, loading);
  52. editOpen.value = false;
  53. ElMessage.success('编辑成功');
  54. emit('refresh');
  55. } else {
  56. console.log('error submit!', fields);
  57. }
  58. });
  59. };
  60. const resetForm = (formEl: FormInstance | undefined) => {
  61. if (!formEl) return;
  62. formEl.resetFields();
  63. };
  64. // function replaceCol() {
  65. // const result = Object.keys(ruleForm).reduce((acc, key) => {
  66. // if (key in gridOptions.data[0]) {
  67. // acc[key] = gridOptions.data[0][key];
  68. // }
  69. // return acc;
  70. // }, {} as { [key: string]: any });
  71. // Object.assign(ruleForm, result);
  72. // }
  73. </script>
  74. <template>
  75. <el-drawer v-model="editOpen"
  76. :close-on-click-modal="false"
  77. :close-on-press-escape="false"
  78. :title="`商品监控 - 编辑 `"
  79. size="25%">
  80. <el-form
  81. ref="ruleFormRef"
  82. :model="ruleForm"
  83. :rules="rules"
  84. class="mx-2.5 mt-2.5"
  85. label-width="auto"
  86. status-icon>
  87. <el-form-item label="ASIN" prop="asin">
  88. <el-input v-model="ruleForm.asin"/>
  89. </el-form-item>
  90. <el-form-item label="SKU" prop="sku">
  91. <el-input v-model="ruleForm.sku"/>
  92. </el-form-item>
  93. <el-form-item label="店 铺" prop="shop">
  94. <el-input v-model="ruleForm.shop"/>
  95. </el-form-item>
  96. <el-form-item label="分 组" prop="group">
  97. <el-input v-model="ruleForm.group"/>
  98. </el-form-item>
  99. <el-form-item label="状 态" prop="status">
  100. <el-select v-model="ruleForm.status"/>
  101. </el-form-item>
  102. <el-form-item label="国 家" prop="country">
  103. <el-select v-model="ruleForm.country" placeholder="请选择国家">
  104. <el-option
  105. v-for="item in rowData.country"
  106. :key="item"
  107. :label="item"
  108. :value="item">
  109. </el-option>
  110. </el-select>
  111. </el-form-item>
  112. <el-form-item label="更新频率" prop="frequency">
  113. <el-input-number v-model="ruleForm.frequency"/>
  114. </el-form-item>
  115. <el-form-item>
  116. <el-divider />
  117. <div class="flex flex-1 justify-end">
  118. <el-button :loading="loading" type="primary" @click="submitForm(ruleFormRef)">确 定</el-button>
  119. <el-button @click="resetForm(ruleFormRef)">重 置</el-button>
  120. </div>
  121. </el-form-item>
  122. </el-form>
  123. </el-drawer>
  124. </template>
  125. <style scoped>
  126. :deep(.el-drawer .el-drawer__header) {
  127. border: none !important;
  128. }
  129. </style>