123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- <script lang="ts" setup>
- /**
- * @Name: EditDrawer.vue
- * @Description: 商品监控-行编辑
- * @Author: Cheney
- */
- import { ElMessage, FormInstance, FormRules } from 'element-plus';
- import { DictionaryStore } from '/@/stores/dictionary';
- import * as api from '../api';
- const shopOptions = <Ref>inject('shopOptions');
- const groupOptions = <Ref>inject('groupOptions');
- const { data: staticData } = DictionaryStore();
- const loading = ref(false);
- const createOpen = defineModel({ default: false });
- const emit = defineEmits(['refresh']);
- interface RuleForm {
- asin: any;
- sku: any;
- country: any;
- shop: any;
- group: any;
- // status: any;
- frequency: any;
- description: any;
- }
- const ruleFormRef = ref<FormInstance>();
- const ruleForm = reactive<RuleForm>({
- asin: '',
- sku: '',
- country: '',
- shop: '',
- group: '',
- // status: '',
- frequency: 6,
- description: '',
- });
- const rules = reactive<FormRules<RuleForm>>({
- asin: [{ required: true, message: '请输入ASIN', trigger: 'blur' }],
- sku: [{ required: true, message: '请输入SKU', trigger: 'blur' }],
- country: [{ required: true, message: '请选择国家', trigger: 'change' }],
- shop: [{ required: true, message: '请输入店铺', trigger: 'blur' }],
- group: [{ required: true, message: '请输入分组', trigger: 'blur' }],
- status: [{ message: '请选择状态', trigger: 'blur' }],
- // frequency: [ { message: '请选择更新频率', trigger: 'blur' } ]
- });
- const submitForm = async (formEl: FormInstance | undefined) => {
- if (!formEl) return;
- await formEl.validate(async (valid, fields) => {
- if (valid) {
- const body = {
- asin: ruleForm.asin,
- sku: ruleForm.sku,
- country_code: ruleForm.country,
- shop_id: ruleForm.shop,
- tag: ruleForm.group,
- goods: {
- sku: ruleForm.sku,
- tag: ruleForm.group,
- },
- freq: ruleForm.frequency,
- description: ruleForm.description,
- };
- const res = await useResponse(api.createProductMonitor, body, loading);
- if (res.code === 2000){
- ElMessage.success('创建成功');
- createOpen.value = false;
- emit('refresh');
- }
- } else {
- createOpen.value = false;
- ElMessage.error('创建失败,请检查表单');
- }
- });
- };
- const resetForm = (formEl: FormInstance | undefined) => {
- if (!formEl) return;
- formEl.resetFields();
- };
- </script>
- <template>
- <el-dialog v-model="createOpen" :close-on-click-modal="false" :close-on-press-escape="false" :title="`商品监控 - 创建 `" style="width: 40%">
- <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-position="top" label-width="auto" class="mx-2.5 mt-5" status-icon>
- <el-row :gutter="20">
- <el-col :span="24">
- <el-form-item class="font-medium" label="ASIN" prop="asin">
- <el-input v-model="ruleForm.asin" placeholder="不再支持批量创建(批量创建使用Excel导入),请填写单个asin" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item class="font-medium" label="SKU" prop="sku">
- <el-input v-model="ruleForm.sku" placeholder="请输入SKU" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item class="font-medium" label="店 铺" prop="shop">
- <el-select v-model="ruleForm.shop" placeholder="请选择店铺">
- <el-option v-for="item in shopOptions" :key="item.id" :label="item.name" :value="item.id" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item class="font-medium" label="分 组" prop="group">
- <el-select v-model="ruleForm.group" placeholder="请选择分组">
- <el-option v-for="item in groupOptions" :label="item.tag" :value="item.tag" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item class="font-medium" label="国 家" prop="country">
- <el-select v-model="ruleForm.country" placeholder="请选择国家">
- <el-option v-for="item in staticData.country_code" :key="item.value" :label="item.label" :value="item.value" />
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item class="font-medium" label="更新频率" prop="frequency">
- <el-input-number v-model="ruleForm.frequency" min="3" />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item class="font-medium" label="备注" prop="description">
- <el-input v-model="ruleForm.description" type="textarea" placeholder="请输入备注信息" maxlength="200" show-word-limit />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <el-button :loading="loading" type="primary" @click="submitForm(ruleFormRef)">确 定</el-button>
- <el-button @click="resetForm(ruleFormRef)">重 置</el-button>
- </template>
- </el-dialog>
- </template>
- <style scoped>
- :deep(.el-drawer .el-drawer__header) {
- border: none !important;
- }
- </style>
|