|
@@ -0,0 +1,154 @@
|
|
|
+<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>
|