diff --git a/.env.development b/.env.development
index 84a632c..5bbd0a4 100644
--- a/.env.development
+++ b/.env.development
@@ -5,5 +5,5 @@ VITE_APP_TITLE = 运营云后台管理系统
VITE_APP_ENV = 'development'
# 开发环境
-VITE_APP_BASE_API = 'http://192.168.18.151:8080'
+VITE_APP_BASE_API = 'http://192.168.18.99:8080'
VITE_APP_PLATFORM = 'http://localhost:9000/platform'
\ No newline at end of file
diff --git a/src/api/common.js b/src/api/common.js
new file mode 100644
index 0000000..fc80f79
--- /dev/null
+++ b/src/api/common.js
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+//云南省所有区域信息
+export function getRegion(code) {
+ let codeVal = code ? code : '530000';
+ return request('/apis/system/area/region?areaCode=' + codeVal, {
+ method: 'GET',
+ });
+}
+
diff --git a/src/api/goods/info.js b/src/api/goods/info.js
index 861fc76..46bbe52 100644
--- a/src/api/goods/info.js
+++ b/src/api/goods/info.js
@@ -2,7 +2,6 @@ import request from '@/utils/request'
// 获取商品管理列表
export function getGoodManageInfo(query) {
- console.log(query)
return request({
url: '/goods/goodInfoManage/getGoodManage',
method: 'get',
@@ -12,7 +11,6 @@ export function getGoodManageInfo(query) {
// 获取商品分类列表
export function getGoodType(query) {
- console.log(query)
return request({
url: '/goods/goodInfoManage/goodType',
method: 'get',
@@ -20,44 +18,52 @@ export function getGoodType(query) {
})
}
-
-
-
-
-
-
-
-
-// 查询岗位详细
-export function getPost(postId) {
+// 新商品发布
+export function goodAdd(data) {
return request({
- url: '/system/post/' + postId,
- method: 'get'
+ url: '/goods/goodInfoManage/goodSave',
+ method: 'post',
+ data: data
})
}
-
-// 新增岗位
-export function addPost(data) {
+// 编辑商品发布
+export function goodEdit(data) {
return request({
- url: '/system/post',
+ url: '/goods/goodInfoManage/goodEdit',
+ method: 'put',
+ data: data
+ })
+}
+// 商品删除
+export function goodDelete(data) {
+ return request({
+ url: '/goods/business/category/remove',
method: 'post',
data: data
})
}
-// 修改岗位
-export function updatePost(data) {
+// 商品上下架
+export function goodUpAndDown(data) {
return request({
- url: '/system/post',
- method: 'put',
+ url: '/goods/goodInfoManage/goodEdit',
+ method: 'post',
data: data
})
}
-// 删除岗位
-export function delPost(postId) {
+// 获取商品信息(id)
+export function getGoodInfo(id) {
return request({
- url: '/system/post/' + postId,
- method: 'delete'
+ url: '/goods/goodInfoManage/getGoodInfo/' + id,
+ method: 'get'
})
}
+
+// 获取商品优惠信息配置项
+export function getActiveInfos() {
+ return request({
+ url: '/goods/goodInfoManage/getActiveInfos',
+ method: 'get'
+ })
+}
\ No newline at end of file
diff --git a/src/assets/styles/custom.scss b/src/assets/styles/custom.scss
index f466efa..6d508e8 100644
--- a/src/assets/styles/custom.scss
+++ b/src/assets/styles/custom.scss
@@ -266,6 +266,15 @@
.attr-input {
width: 120px;
}
+ .attr-clomn {
+ width: 160px;
+ }
+ .attr-clomn200 {
+ width: 160px;
+ }
+ .attr-clomn220 {
+ width: 220px;
+ }
.attr-box {
padding: 16px 16px 6px 16px;
border-radius: 6px;
@@ -273,3 +282,10 @@
}
}
// 新增商品页面-结束
+
+.flex-left-top {
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-start;
+ align-items: flex-start;
+}
diff --git a/src/components/myUploadImage.vue b/src/components/myUploadImage.vue
index 435908c..5501de9 100644
--- a/src/components/myUploadImage.vue
+++ b/src/components/myUploadImage.vue
@@ -62,7 +62,7 @@ const props = defineProps({
// 上传接口地址
action: {
type: String,
- default: "/uploadApis/file/upload"
+ default: "/uploadApis/upload"
},
// 上传携带的参数
data: {
diff --git a/src/components/myUploadVideo.vue b/src/components/myUploadVideo.vue
index 3ccac7d..37e4418 100644
--- a/src/components/myUploadVideo.vue
+++ b/src/components/myUploadVideo.vue
@@ -1,37 +1,24 @@
-
-
建议比例1:1,不超过60s,视频200MB以内
-
+
+ 建议比例1:1,不超过60s,视频{{ fileSize }}MB以内
+
-
-
- 上传视频
+
+
+ 上传视频
+ 格式为 {{ fileType.join("/") }}
+的文件
+ -->
@@ -55,7 +42,7 @@ const props = defineProps({
// 上传接口地址
action: {
type: String,
- default: "/uploadApis/file/upload"
+ default: "/uploadApis/upload"
},
// 上传携带的参数
data: {
@@ -64,12 +51,12 @@ const props = defineProps({
// 数量限制
limit: {
type: Number,
- default: 5
+ default: 1
},
// 大小限制(MB)
fileSize: {
type: Number,
- default: 5
+ default: 100
},
// 文件类型
fileType: {
@@ -122,7 +109,7 @@ watch(() => props.modelValue, val => {
fileList.value = []
return []
}
-},{ deep: true, immediate: true })
+}, { deep: true, immediate: true })
// 上传前校检格式和大小
function handleBeforeUpload(file) {
@@ -169,9 +156,9 @@ function handleUploadError(err) {
function handleUploadSuccess(res, file) {
if (res.code === 200) {
uploadList.value.push({ name: res.data.name, url: res.data.url })
- uploadList.value.forEach(item => {
- item.url = "http://gov-cloud.oss-cn-chengdu.aliyuncs.com/" + item.url;
- })
+ uploadList.value.forEach(item => {
+ item.url = "http://gov-cloud.oss-cn-chengdu.aliyuncs.com/" + item.url;
+ })
uploadedSuccessfully()
} else {
number.value--
@@ -239,13 +226,20 @@ onMounted(() => {
})
diff --git a/src/components/tableComponent.vue b/src/components/tableComponent.vue
index 6c640b8..585ac45 100644
--- a/src/components/tableComponent.vue
+++ b/src/components/tableComponent.vue
@@ -204,19 +204,10 @@ const computedCurrentPage = computed({
set: (val) => emit('update:currentPage', val)
});
-// 监听外部传入的pageSize变化
-// watch(
-// () => props.pageSize,
-// (newVal) => {
-// internalPageSize.value = newVal;
-// }
-// );
-
// 分页大小改变
const pageSizeChange = (val) => {
- console.log(`每页 ${val} 条`);
- internalPageSize.value = val;
- console.log(props.currentPage, internalPageSize.value);
+ // console.log(`每页 ${val} 条`);
+ // console.log(props.currentPage);
emit("update:pageSize", val);
emit("page-change", {
page: props.currentPage,
@@ -226,10 +217,10 @@ const pageSizeChange = (val) => {
// 当前页改变
const handleCurrentChange = (val) => {
- console.log(`当前页改变 ${val} 页`);
+ // console.log(`当前页改变 ${val} 页`);
emit("page-change", {
page: val,
- pageSize: internalPageSize.value,
+ pageSize: props.pageSize,
});
};
diff --git a/src/router/index.js b/src/router/index.js
index a06b99f..3125a5d 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -82,10 +82,16 @@ export const constantRoutes = [
redirect: 'noredirect',
children: [
{
- path: 'addGoods/:activeTab?',
- component: () => import('@/views/goods/addGoods'),
+ path: 'goodsManage/addGoods/:activeTab?',
+ component: () => import('@/views/goods/goodsManage/addGoods'),
name: 'addGoods',
meta: { title: '新增商品', icon: '' }
+ },
+ {
+ path: 'goodsManage/editGoods/:activeTab?',
+ component: () => import('@/views/goods/goodsManage/editGoods'),
+ name: 'editGoods',
+ meta: { title: '编辑商品', icon: '' }
}
]
},
@@ -159,7 +165,7 @@ export const constantRoutes = [
children: [
{
path: 'goods/goodsManage',
- component: () => import('@/views/goods/goodsManage'),
+ component: () => import('@/views/goods/goodsManage/index'),
name: 'goodsManage',
hidden: false,
meta: {
@@ -171,7 +177,7 @@ export const constantRoutes = [
},
{
path: 'goods/goodsCategory',
- component: () => import('@/views/goods/goodsCategory'),
+ component: () => import('@/views/goods/goodsCategory/index'),
name: 'goodsCategory',
hidden: false,
meta: {
diff --git a/src/views/goods/goodsCategory.vue b/src/views/goods/goodsCategory/index.vue
similarity index 100%
rename from src/views/goods/goodsCategory.vue
rename to src/views/goods/goodsCategory/index.vue
diff --git a/src/views/goods/addGoods.vue b/src/views/goods/goodsManage/addGoods.vue
similarity index 67%
rename from src/views/goods/addGoods.vue
rename to src/views/goods/goodsManage/addGoods.vue
index 9170802..0cf326f 100644
--- a/src/views/goods/addGoods.vue
+++ b/src/views/goods/goodsManage/addGoods.vue
@@ -4,7 +4,8 @@
-
+
@@ -54,19 +55,19 @@
-
- 元
+
+ 元
-
+
-
-
+
+
@@ -75,9 +76,46 @@
-多规格
+
+
+
+
+
+
+
+ 添加属性
+
+
+
+
+
+
商品规格
+
销售价格
+
库存数量
+
净含量
+
+
+
{{ item.goodSpecs }}
+
+
+ 元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -117,9 +155,9 @@
-
+
- {{ item.text }}
+
服务承诺:{{ item.text }}
@@ -127,14 +165,16 @@
- {{
- item.text }}
+
+ 优惠设置:{{
+ item.text }}
- {{
- item.text }}
+
+ 折扣设置:{{
+ item.text }}
@@ -152,21 +192,23 @@
-
确认新增
+
确认新增
-
diff --git a/src/views/goods/goodsManage/editGoods.vue b/src/views/goods/goodsManage/editGoods.vue
new file mode 100644
index 0000000..2922214
--- /dev/null
+++ b/src/views/goods/goodsManage/editGoods.vue
@@ -0,0 +1,699 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 单规格
+ 多规格
+
+
+
+
+
+
+ 元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加属性
+
+
+
+
+
+
商品规格
+
销售价格
+
库存数量
+
净含量
+
+
+
{{ item.goodSpecs }}
+
+
+ 元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加属性
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 服务承诺:{{
+ item.text }}
+
+
+
+
+
+
+
+
+ 优惠设置:{{
+ item.text }}
+
+
+
+
+
+ 折扣设置:{{
+ item.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
确认编辑
+
+
+
+
+
diff --git a/src/views/goods/goodsManage.vue b/src/views/goods/goodsManage/index.vue
similarity index 92%
rename from src/views/goods/goodsManage.vue
rename to src/views/goods/goodsManage/index.vue
index 5b5cf0b..acd2463 100644
--- a/src/views/goods/goodsManage.vue
+++ b/src/views/goods/goodsManage/index.vue
@@ -38,7 +38,7 @@
批量删除
-
+
新增商品
@@ -105,8 +105,11 @@
import { ref, reactive, computed, onMounted, onBeforeUnmount } from "vue";
import tableComponent from "@/components/tableComponent.vue";
import Mock from "mockjs";
-import { getGoodManageInfo, getGoodType } from "@/api/goods/info";
-import { ca } from "element-plus/es/locales.mjs";
+import { getGoodManageInfo, getGoodType, goodDelete } from "@/api/goods/info";
+import { id } from "element-plus/es/locales.mjs";
+import { ElMessage } from 'element-plus'
+const route = useRoute()
+const router = useRouter()
const formInline = reactive({
goodName: "",
@@ -152,7 +155,7 @@ const tabChange = (Event) => {
} else if (Event.index == "1") {
// 请求已上架
formInline.type = "2";
- } else if (Event.index == "2"){
+ } else if (Event.index == "2") {
// 请求已下架
formInline.type = "3";
}
@@ -211,6 +214,7 @@ const generateMockData = () => {
return Mock.mock({
"list|10": [
{
+ "id|+1": 10000,
"goodId|+1": 10000,
"sort|+1": 1,
goodUrl: " @image", //商品图片
@@ -220,7 +224,7 @@ const generateMockData = () => {
salesVolume: "@integer(1000, 20000)", //销量
pageView: Mock.mock("@id").toString().slice(0, 6), //浏览量
stock: "@integer(5000, 90000)", //库存
- isListed: '@pick(["上架", "下架"])', //状态
+ isListed: '@pick([0, 1, 2, 3, 4])', //状态
ordersNums: "@integer(10, 200)",
},
],
@@ -229,8 +233,11 @@ const generateMockData = () => {
// 加载数据
const loadData = async () => {
tableLoading.value = true;
+ // 测试
// tableData.value = generateMockData();
// tableTotal.value = tableData.value.length;
+ // console.log(tableData.value);
+
try {
let response = await getGoodManageInfo(formInline);
console.log(response);
@@ -277,6 +284,11 @@ const toDownload = () => {
const handleEdit = (row) => {
nowClickRow.value = row;
console.log("要编辑的行:", row);
+ // 跳转路由并携带参数,行数据,和query的值edit
+ router.push({
+ path: "/goods/goodsManage/editGoods",
+ query: { goodId: row.goodId }
+ })
};
// 删除操作
const handleDelete = (row) => {
@@ -284,8 +296,16 @@ const handleDelete = (row) => {
console.log("要删除的行:", row);
};
// 批量删除
-const batchDelete = () => {
- console.log("要删除的行:", selectedIds.value);
+const batchDelete = async() => {
+ console.log("要删除的行:", selectedIds.value.join(","));
+ ElMessage.success("删除成功");
+ // let res = await goodDelete({id: selectedIds.value});
+ // if (res.code == 200) {
+ // ElMessage.success("删除成功");
+ // loadData();
+ // } else {
+ // ElMessage.error("删除失败");
+ // }
};
const titleRef = ref(null);