diff --git a/.env.development b/.env.development
index 2b116cb..40e7b02 100644
--- a/.env.development
+++ b/.env.development
@@ -1,6 +1,6 @@
VITE_MODE = 'development'
- VITE_APP_BASE_API = 'https://122.228.26.226:12025'
+ VITE_APP_BASE_API = 'http://192.168.2.5:9999'
# VITE_APP_BASE_API = 'https://pre-api.aiguoerp.com'
# VITE_APP_BASE_API = 'http://localhost:80'
diff --git a/src/api/CommodityManagement.js b/src/api/CommodityManagement.js
new file mode 100644
index 0000000..18ea6d3
--- /dev/null
+++ b/src/api/CommodityManagement.js
@@ -0,0 +1,57 @@
+import request from '@axioshooks';
+// 获取商品管理列表
+export function select_by_conditions(data) {
+ return request({
+ url: 'xy_openapi/commodity_info/select_by_conditions',
+ method: 'post',
+ data
+ })
+}
+// 编辑商品(查询)
+export function get_commodity_id(data) {
+ return request({
+ url: `xy_openapi/commodity_info/get_commodity_id/${data}`,
+ method: 'get',
+ data
+ })
+}
+// 编辑商品
+export function edit_product(data) {
+ return request({
+ url: `xy_openapi/commodity_info/edit_product`,
+ method: 'put',
+ data
+ })
+}
+// 复制商品
+export function get_commodity(data) {
+ return request({
+ url: `xy_openapi/commodity_info/get_commodity`,
+ method: 'get',
+ data
+ })
+}
+// 上架
+export function publish(data) {
+ return request({
+ url: `xy_openapi/commodity_info/publish/${data}`,
+ method: 'get',
+ data
+ })
+}
+// 下架
+export function pull_off(data) {
+ return request({
+ url: `xy_openapi/commodity_info/pull_off/${data}`,
+ method: 'get',
+ data
+ })
+}
+// 删除
+export function delete_one(data) {
+ return request({
+ url: `xy_openapi/commodity_info/delete_one/${data}`,
+ method: 'delete',
+ data
+ })
+}
\ No newline at end of file
diff --git a/src/api/newlybuiltgoods.js b/src/api/newlybuiltgoods.js
index 524c568..0352647 100644
--- a/src/api/newlybuiltgoods.js
+++ b/src/api/newlybuiltgoods.js
@@ -28,6 +28,9 @@ export function uploadImage(data) {
return request({
url: 'xy_openapi/publish/uploadImage',
method: 'file',
+ header: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
data
})
}
@@ -38,4 +41,28 @@ export function region(data) {
method: 'get',
data
})
+}
+//获取成色
+export function qualityList(data) {
+ return request({
+ url: 'xy_openapi/quality/list',
+ method: 'get',
+ data
+ })
+}
+//获取发布默认地址
+export function address_default(data) {
+ return request({
+ url: `xy_openapi/sender/default/${data}`,
+ method: 'get',
+ data
+ })
+}
+//商品发布
+export function publish_shelve(data) {
+ return request({
+ url: 'xy_openapi/publish/shelve',
+ method: 'post',
+ data
+ })
}
\ No newline at end of file
diff --git a/src/components/OperateButton.vue b/src/components/OperateButton.vue
new file mode 100644
index 0000000..343e2e7
--- /dev/null
+++ b/src/components/OperateButton.vue
@@ -0,0 +1,57 @@
+
+
+
+ {{ item.name }}
+
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Pagination.vue b/src/components/Pagination.vue
new file mode 100644
index 0000000..841f93c
--- /dev/null
+++ b/src/components/Pagination.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Upload/newfileupload copy 2.vue b/src/components/Upload/newfileupload copy 2.vue
new file mode 100644
index 0000000..cfee57f
--- /dev/null
+++ b/src/components/Upload/newfileupload copy 2.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Upload/newfileupload.vue b/src/components/Upload/newfileupload.vue
index cfee57f..4e6f898 100644
--- a/src/components/Upload/newfileupload.vue
+++ b/src/components/Upload/newfileupload.vue
@@ -1,32 +1,25 @@
-
+
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/components/searchForm/index.vue b/src/components/searchForm/index.vue
index 8236696..5ef0900 100644
--- a/src/components/searchForm/index.vue
+++ b/src/components/searchForm/index.vue
@@ -1,199 +1,245 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
查询
-
重置
-
-
- 更多选项
-
-
-
\ No newline at end of file
diff --git a/src/components/table.vue b/src/components/table.vue
index 7a9c622..3126b7b 100644
--- a/src/components/table.vue
+++ b/src/components/table.vue
@@ -1,707 +1,362 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 质检码:{{ scope.row.quality_inspection_code }}
-
- 销售单号:{{ scope.row.sales_order_number }}
- 售后订单号:{{ scope.row.after_sales_order_number }}
- 发布时间:{{
- scope.row.publish_time
- }}
- 最近翻库人:{{ scope.row.last_truename }}
- 最近翻库日期:{{
- scope.row.last_publish_time
- }}
- 买家昵称:{{ scope.row.buyer_nick }}
-
-
-
-
- {{ scope.row.brand_name }} {{ scope.row.model_name }} {{ scope.row.rom_name }}
- {{ scope.row.color_name }}
-
-
{{scope.row.machine_name}}
-
-
-
- -
-
- 机器编号:
- {{
- scope.row.serial_number }}
-
- 机器编号:{{ scope.row.serial_number }}
-
- - IMEI:{{ scope.row.imei1 }}
- - IMEI2:{{ scope.row.imei2 }}
- - SN:{{ scope.row.sn }}
-
-
-
-
- {{
- Number(scope.row.stuff_status) > 0
- ? scope.row.stuff_status + "新"
- : scope.row.stuff_status
- }}
-
-
- {{ scope.row[item.dataKey] || "/" }}
-
-
- {{ scope.row.payment / 100 }}
- {{
- (scope.row.payment / 100 - Number(scope.row.total_cost)).toFixed(2)
- }}
-
-
- 质检报告
- 商品详情
-
-
- {{
- Number((scope.row.price * 0.99) / 100).toFixed(2)
- }}
-
-
- {{
- Number(
- (scope.row.price * 0.99) / 100 - scope.row.total_cost - scope.row.ag_server_fee
- ).toFixed(2)
- }}
-
-
- {{scope.row.consignee_name||"-"}}
- {{scope.row.consignee_phone}}
- {{scope.row.consignee_address}}
-
-
- {{scope.row.receiver||"-"}}
- {{scope.row.receive_time}}
-
-
- {{ Number(scope.row[item.dataKey].replace(',','')).toFixed(2) }}
-
-
- {{ Number(scope.row[item.dataKey].replace(',','') / 100).toFixed(2) }}
-
- {{ scope.row[item.dataKey] }}
-
-
{{ scope.row.refund_post_company }}
-
{{ scope.row[item.dataKey] }}
-
-
- 质检报告
-
-
- {{ scope.row.quality_inspector_name }}
- 售后质检报告
- {{ scope.row.sale_after_quality_inspection_code }}
-
-
- {{ scope.row[item.dataKey]?scope.row[item.dataKey]=='2'?'买家责任':'卖家责任':null }}
- {{scope.row.responsibility_explanation }}
-
-
-
-
- {{scope.row.buyer_apply_reason||"-"}}
- {{scope.row.buyer_apply_sub_reason||'-'}}
-
-
- {{getStatus(scope.row)}}
-
-
- 质检报告
-
-
-
-
-
- 同意退货
- 同意退款
- 确认收货
- 拒绝收货
-
-
- 拒绝退款
-
-
-
-
- 同意
-
-
-
- 驳回
-
-
- 重新发布
-
-
- 手动收货
- 判责
-
- 人工处理
-
-
- 无实物质检
-
-
-
-
-
- 删除
-
-
- 下架
- 改价
- 补订单
- 关闭交易
- 立即发货
-
- 物流信息
- 快递拦截
- 打印面单
-
- 日志
- 审核
-
-
-
-
- {{ scope.row.remark }}
-
-
-
- {{ scope.row[item.dataKey] ? scope.row[item.dataKey] : "-" }}
-
-
-
-
-
-
-
-
- 复制链接
-
-
-
-
-
- 复制链接
-
-
-
-
-
-
-
+
+
+
+
+ - {{ row.commodityDes }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ row[item.param] ? row[item.param] : "-" }}
+
+
+
+
+
+
+
-
-
\ No newline at end of file
+ }
+
+ ::-webkit-scrollbar {
+ width: 10px;
+ height: 10px;
+ }
+
+ ::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ }
+
+ ::-webkit-scrollbar-thumb:hover {
+ background: #aaaaaa;
+ }
+
+ ::-webkit-scrollbar-track {
+ background: #f1f1f1;
+ border-radius: 10px;
+ }
+}
+
diff --git a/src/router.js b/src/router.js
index 563a76f..f8b8b1b 100644
--- a/src/router.js
+++ b/src/router.js
@@ -1,5 +1,5 @@
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
-import Saleorder from './views/saleorder/index.vue';
+import CommodityManagement from './views/CommodityManagement/index.vue';
import NewlyBuiltGoods from './views/NewlyBuiltGoods/index.vue';
import Home from './views/Home.vue';
import QualityWork from './views/qualityWork/index.vue';
@@ -40,11 +40,11 @@ export const routes = [
children: [
{
meta: {
- label: "新建商品",
+ label: "商品管理",
icon: markRaw(Location)
},
- path: '/saleorder',
- component: Saleorder,
+ path: '/CommodityManagement',
+ component: CommodityManagement,
},
{
meta: {
diff --git a/src/services/axioshooks.js b/src/services/axioshooks.js
index d954802..8a1ebb9 100644
--- a/src/services/axioshooks.js
+++ b/src/services/axioshooks.js
@@ -2,6 +2,7 @@
import axios, * as defaultAxios from 'axios';
import { getStorage, deloneStorage, jsonurldata } from "./commont";
import { ElMessage } from 'element-plus';
+import { deepClone } from '../services/commont'
@@ -51,7 +52,7 @@ export default ({
// const {promise, resolve, reject} =Promise.withResolvers();
return new Promise((resolve, reject) => {
const params = new FormData();
-
+ let newdatas = typeof (data) == "string" ? data : deepClone(data);
let outerTrigger = trigger;
try {
outerTrigger = JSON.stringify(trigger);
@@ -71,12 +72,12 @@ export default ({
var axiosfn = {
"delete": (url, paramdata, config) => {
let newurl = url
- let str = data && Object.keys(data).length > 0 ? "/" + jsonurldata(data) : ""
+ let str = newdatas && Object.keys(newdatas).length > 0 ? "/" + jsonurldata(newdatas) : ""
newurl = url + str
return axios.delete(newurl, config)
}, "post": axios.post, "get": (url, paramdata, config) => {
let newurl = url
- let str = data && Object.keys(data).length > 0 ? "/" + jsonurldata(data) : ""
+ let str = newdatas && Object.keys(newdatas).length > 0 ? "/" + jsonurldata(newdatas) : ""
newurl = url + str
return axios.get(newurl, config)
}, "put": axios.put
@@ -130,7 +131,6 @@ export default ({
}
axioshooks = axiosfn[method] ? axiosfn[method] : axios.post
// console.log(config,"config")
-
if (!url || !dispatchEffect()) return;
// ONLY trigger by query
if (outerTrigger && !innerTrigger) {
@@ -139,42 +139,49 @@ export default ({
let paramsdata = null;
- if (data) {
+ if (newdatas) {
if (method && method == 'file') {
+ let filekey = "";
+ const fileindex = _Object.keys(newdatas).find((f) => f == "filekey");
+ if (fileindex) {
+ filekey = newdatas["filekey"];
+ }
+ console.log(newdatas,'newdatas',filekey);
_Object.values(data).map((d, index) => {
- if ((d && d != '') || typeof d == 'number') {
- if (Object.keys(data)[index] == 'file') {
- d.map((h)=>{
- params.append('file', h, h.name);
+ if (filekey != "" && Object.keys(data)[index] == filekey) {
+ if (d && Array.isArray(d)) {
+ console.log(d,'ddd');
+ d.map((h, index) => {
+ console.log(h,'file');
+ params.append(filekey,h, h.name);
})
-
- } else if (Object.keys(data)[index] == 'filekey') {
- params.append(d, data[d]);
} else {
- params.append(Object.keys(data)[index], d);
+ params.append(filekey, d, d.name);
}
+ } else {
+ params.append(Object.keys(newdatas)[index], d);
}
});
paramsdata = params;
} else if (method && method == 'get') {
const getmethoddata = {};
- _Object.values(data).map((h, index) => {
+ _Object.values(newdatas).map((h, index) => {
if ((h && h != '') || typeof h == 'number') {
- getmethoddata[Object.keys(data)[index]] = h;
+ getmethoddata[Object.keys(newdatas)[index]] = h;
}
});
paramsdata = { params: getmethoddata };
} else {
- if (data && data != '' && parse_param) {
- data = parse_param(data);
+ if (newdatas && newdatas != '' && parse_param) {
+ newdatas = parse_param(newdatas);
}
- for (const p in data) {
- if (!data[p]) {
- data[p] = '';
+ for (const p in newdatas) {
+ if (!newdatas[p]) {
+ newdatas[p] = '';
}
- if (data[p]) {
- params.append(p, data[p]);
+ if (newdatas[p]) {
+ params.append(p, newdatas[p]);
}
}
diff --git a/src/views/CommodityManagement/index.vue b/src/views/CommodityManagement/index.vue
new file mode 100644
index 0000000..f68a6c8
--- /dev/null
+++ b/src/views/CommodityManagement/index.vue
@@ -0,0 +1,420 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Login.vue b/src/views/Login.vue
index 5e9d325..4c2af43 100644
--- a/src/views/Login.vue
+++ b/src/views/Login.vue
@@ -208,9 +208,11 @@ const onCheckImg = () => {
checkimages.value = false;
let token = e.datas.token;
+ console.log(token,"token")
if (e.datas.token) {
axioshooks({
url: "auth/login3rd",
+
headers: {
loginType: "erpLogin",
token: e.datas.token,
@@ -223,7 +225,7 @@ const onCheckImg = () => {
// addStorage("virtoken", e.data);
addStorage(
"virtoken",
- "9wEUErM0vX7OGuPq7byzZA0KdSMhROI8cCWvQAK5bH8TyOwHhekuHF0vwF9cMg5h92fVFtoZssQv9Oo36CYbZmXjrWa56NWWLNppUGRiTFEHYNzPhn7NYBP7SqvPPI6z"
+ "47ewUzuYl8Omr40VtNlOONmiqIgOe9gjWsl5BWrnwWHMHp1XB1Ac9ADtwxMDp2G4p5e6fG079cSsfEDOmGY2SAXe3611imSBKgmq2SzGOOfP1d2TPlKYmnuvWSNFNou0"
);
if (props.callback) {
props.callback();
diff --git a/src/views/NewlyBuiltGoods/components/specificationDialog.vue b/src/views/NewlyBuiltGoods/components/specificationDialog.vue
index c0f4ab0..fbf3632 100644
--- a/src/views/NewlyBuiltGoods/components/specificationDialog.vue
+++ b/src/views/NewlyBuiltGoods/components/specificationDialog.vue
@@ -66,7 +66,7 @@
:type="el.type"
text
size="small"
- @click="el.handler(item, index)"
+ @click="operation(el.label, item, index)"
>{{ el.label }}
@@ -150,8 +150,14 @@ let that = newDataList;
const submit_specification = (formEl) => {
formEl.validate((valid) => {
if (!valid || !ruleForm.name) return;
+ if (
+ newDataList.value.find(
+ (e) => e.label.replace(/\s+/g, "") === ruleForm.name.replace(/\s+/g, "")
+ )
+ )
+ return ElMessage.warning("商品规格不能重复!");
if (newDataList.value.length >= 2)
- return ElMessage.warning("超过输入限制!");
+ return ElMessage.warning("超过输入限制,商品规格最多添加两个!");
specification_list_index.value++;
newDataList.value.push({
label: ruleForm.name,
@@ -170,16 +176,10 @@ const submit_specification = (formEl) => {
{
type: "primary",
label: "编辑",
- handler: (item) => {
- item.disabled = true;
- },
},
{
type: "danger",
label: "删除",
- handler: (item, index) => {
- newDataList.value.splice(index, 1);
- },
},
],
inputGroup: {
@@ -191,16 +191,24 @@ const submit_specification = (formEl) => {
ruleForm.name = "";
});
};
-
+function operation(status, item, index) {
+ if (status == "编辑") {
+ item.disabled = true;
+ } else {
+ newDataList.value.splice(index, 1);
+ }
+}
function onDelValueItem(index, ind) {
- let newdatas = JSON.parse(JSON.stringify(newDataList.value[index].valueGrop));
- newdatas.splice(ind, 1);
- newDataList.value[index].valueGrop = newdatas;
- newDataList.value = Object.assign([], newDataList.value);
- console.log(newDataList.value, "newDataList.value111");
+ newDataList.value[index].valueGrop.splice(ind, 1);
}
function input_child_keydown(e, name, index) {
if (e.key !== "Enter" || !name) return;
+ if (
+ newDataList.value[index].valueGrop.find(
+ (e) => e.label.replace(/\s+/g, "") === name.replace(/\s+/g, "")
+ )
+ )
+ return ElMessage.warning("商品属性不能重复!");
if (newDataList.value.length <= 1) {
if (newDataList.value[index].valueGrop.length >= 10) return;
} else {
diff --git a/src/views/NewlyBuiltGoods/index.vue b/src/views/NewlyBuiltGoods/index.vue
index 06787b2..0bd2da6 100644
--- a/src/views/NewlyBuiltGoods/index.vue
+++ b/src/views/NewlyBuiltGoods/index.vue
@@ -7,7 +7,6 @@
label-width="auto"
class="demo-ruleForm"
:size="formSize"
- status-icon
>
{{ createGoods.title }}
@@ -44,7 +43,7 @@
@@ -52,7 +51,7 @@
v-loading="createGoods.radio_group_sell.loading"
element-loading-text="加载中..."
v-model="
- ruleForm.flash_sale_do[createGoods.radio_group_sell.params]
+ ruleForm.flashSaleDO[createGoods.radio_group_sell.params]
"
@change="createGoods.radio_group_sell.change"
>
@@ -165,6 +164,7 @@
:autoUpload="false"
:multiple="goodsInfo.more_src.multiple"
@onSuccessFiles="goodsInfo.more_src.onSuccessFiles"
+ @handleRemove="goodsInfo.more_src.handleRemove"
/>
@@ -174,8 +174,9 @@
:limit="goodsInfo.White_src.limit"
:imgList="goodsInfo.White_src.fileImgList"
:autoUpload="false"
+ :multiple="goodsInfo.White_src.multiple"
@onSuccessFiles="goodsInfo.White_src.onSuccessFiles"
- @handleSuccess="goodsInfo.more_src.handleSuccess"
+ @handleRemove="goodsInfo.White_src.handleRemove"
/>
@@ -275,6 +276,22 @@
+
+
+ {{ item.suffix }}
+
+
{{ item.suffix }}
@@ -305,7 +322,7 @@
:label="el.label"
align="center"
>
-
+
{{ logistics.title }}
-
+
-
-
+
+
@@ -460,6 +478,7 @@
\ No newline at end of file