|
|
@@ -1,11 +1,12 @@
|
|
|
<script setup lang="ts">
|
|
|
import {useRouter} from "vue-router";
|
|
|
import {ref, computed} from "vue";
|
|
|
+import {Back, UploadFilled} from "@element-plus/icons-vue";
|
|
|
import {createProduct} from "../../api/product.ts";
|
|
|
import {uploadImage} from "../../api/tools.ts";
|
|
|
-import {Back, UploadFilled} from "@element-plus/icons-vue";
|
|
|
|
|
|
const router = useRouter();
|
|
|
+
|
|
|
const storeId = router.currentRoute.value.params.storeId;
|
|
|
const name = ref('')
|
|
|
const category = ref()
|
|
|
@@ -17,7 +18,7 @@ const imageFileList = ref([])
|
|
|
const hasNameInput = computed(() => name.value != '')
|
|
|
const hasCategoryInput = computed(() => category.value != null)
|
|
|
const hasPriceInput = computed(() => price.value != '')
|
|
|
-const hasImageFile = computed(() => imageFileList.value.length != 0)
|
|
|
+const hasImageFile = computed(() => imageFileList.value.length != 0)
|
|
|
|
|
|
const createProductDisabled = computed(() => {
|
|
|
return !(hasNameInput.value && hasCategoryInput.value && hasPriceInput.value && hasImageFile.value);
|
|
|
@@ -53,10 +54,6 @@ function handleCreateProduct() {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-function toBackPage() {
|
|
|
- router.push("/storeDetail/" + storeId)
|
|
|
-}
|
|
|
-
|
|
|
function handleChange(file, fileList) {
|
|
|
imageFileList.value = fileList
|
|
|
let formData = new FormData();
|
|
|
@@ -68,77 +65,86 @@ function handleChange(file, fileList) {
|
|
|
|
|
|
function uploadHttpRequest() {
|
|
|
}
|
|
|
+
|
|
|
+function toBackPage() {
|
|
|
+ router.push("/storeDetail/" + storeId)
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
+
|
|
|
<template>
|
|
|
- <el-main class="main-frame">
|
|
|
- <div>
|
|
|
- <el-button @click="toBackPage()"
|
|
|
- type="primary" circle plain>
|
|
|
- <el-icon><Back/></el-icon>
|
|
|
- </el-button>
|
|
|
-
|
|
|
- <h1>添加商品</h1>
|
|
|
-
|
|
|
- <el-form label-position="left" label-width="90px" size="large" class="create-store-form">
|
|
|
-
|
|
|
- <el-form-item label="商品名">
|
|
|
- <el-input id="name" v-model="name"
|
|
|
- required
|
|
|
- placeholder="请输入商品名"/>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="品类">
|
|
|
- <el-select id="category" v-model="category" placeholder="请选择">
|
|
|
- <el-option value="FOOD" label="食品" />
|
|
|
- <el-option value="CLOTHES" label="服饰" />
|
|
|
- <el-option value="FURNITURE" label="家具" />
|
|
|
- <el-option value="ELECTRONICS" label="电子产品" />
|
|
|
- <el-option value="ENTERTAINMENT" label="娱乐" />
|
|
|
- <el-option value="SPORTS" label="体育产品" />
|
|
|
- <el-option value="LUXURY" label="奢侈品" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="单价">
|
|
|
- <el-input id="price" v-model="price"
|
|
|
- required
|
|
|
- placeholder="请输入商品单价,单位(元)"/>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item label="商品照片">
|
|
|
- <el-upload
|
|
|
- v-model:file-list="imageFileList"
|
|
|
- :on-change="handleChange"
|
|
|
- :on-remove="handleChange"
|
|
|
- class="upload-demo"
|
|
|
- list-type="picture"
|
|
|
- :http-request="uploadHttpRequest"
|
|
|
- drag>
|
|
|
- <el-icon class="el-icon--upload">
|
|
|
- <upload-filled/>
|
|
|
- </el-icon>
|
|
|
- <div class="el-upload__text">
|
|
|
- 将文件拖到此处或单击此处上传。
|
|
|
- </div>
|
|
|
- </el-upload>
|
|
|
-
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item>
|
|
|
- <el-button @click.prevent="handleCreateProduct()" :disabled="createProductDisabled"
|
|
|
- type="primary" plain>
|
|
|
- 创建商品
|
|
|
- </el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
+ <el-main>
|
|
|
+ <el-button @click="toBackPage()"
|
|
|
+ type="primary" circle plain>
|
|
|
+ <el-icon>
|
|
|
+ <Back/>
|
|
|
+ </el-icon>
|
|
|
+ </el-button>
|
|
|
+
|
|
|
+ <h1 class="create-product-title">新建商品</h1>
|
|
|
+
|
|
|
+ <el-form label-position="left" label-width="90px" size="large" class="create-product-form">
|
|
|
+
|
|
|
+ <el-form-item label="商品名">
|
|
|
+ <el-input id="name" v-model="name"
|
|
|
+ required
|
|
|
+ placeholder="请输入商品名"/>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="品类">
|
|
|
+ <el-select id="category" v-model="category" placeholder="请选择">
|
|
|
+ <el-option value="FOOD" label="食品"/>
|
|
|
+ <el-option value="CLOTHES" label="服饰"/>
|
|
|
+ <el-option value="FURNITURE" label="家具"/>
|
|
|
+ <el-option value="ELECTRONICS" label="电子产品"/>
|
|
|
+ <el-option value="ENTERTAINMENT" label="娱乐"/>
|
|
|
+ <el-option value="SPORTS" label="体育产品"/>
|
|
|
+ <el-option value="LUXURY" label="奢侈品"/>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="单价">
|
|
|
+ <el-input id="price" v-model="price"
|
|
|
+ required
|
|
|
+ placeholder="请输入商品单价,单位(元)"/>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="商品照片">
|
|
|
+ <el-upload
|
|
|
+ v-model:file-list="imageFileList"
|
|
|
+ :on-change="handleChange"
|
|
|
+ :on-remove="handleChange"
|
|
|
+ class="upload-demo"
|
|
|
+ list-type="picture"
|
|
|
+ :http-request="uploadHttpRequest"
|
|
|
+ drag>
|
|
|
+ <el-icon class="el-icon--upload">
|
|
|
+ <upload-filled/>
|
|
|
+ </el-icon>
|
|
|
+ <div class="el-upload__text">
|
|
|
+ 将文件拖到此处或单击此处上传。
|
|
|
+ </div>
|
|
|
+ </el-upload>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item>
|
|
|
+ <el-button @click.prevent="handleCreateProduct()" :disabled="createProductDisabled"
|
|
|
+ type="primary" plain>
|
|
|
+ 创建商品
|
|
|
+ </el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
</el-main>
|
|
|
</template>
|
|
|
|
|
|
<style scoped>
|
|
|
-.create-store-form {
|
|
|
- margin-left: 30px;
|
|
|
+.create-product-title {
|
|
|
+ margin-left: 25%;
|
|
|
+}
|
|
|
+
|
|
|
+.create-product-form {
|
|
|
+ margin-left: 25%;
|
|
|
width: 50%;
|
|
|
}
|
|
|
</style>
|