888
This commit is contained in:
parent
cf81f2265e
commit
271c9beb73
|
@ -0,0 +1,2 @@
|
|||
import request from '@axioshooks'
|
||||
|
|
@ -7,19 +7,11 @@ export function select_by_conditions(data) {
|
|||
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',
|
||||
url: `xy_openapi/commodity_info/edit_product/${data}`,
|
||||
method: 'get',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-06-15 15:51:08
|
||||
* @LastEditTime: 2021-06-15 16:28:45
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: \aiguo_erp_vue\src\api\configuration.js
|
||||
*/
|
||||
import request from '@axioshooks';
|
||||
// 配件分类列表
|
||||
export function cancel_draw_money(data) {
|
||||
return request({
|
||||
url: 'ag_server/cancel_draw_money',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 商户列表
|
||||
export function service_provider_list(data) {
|
||||
return request({
|
||||
url: 'ag_server/service_provider_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 编辑增加用户
|
||||
export function service_provider_edit(data) {
|
||||
return request({
|
||||
url: 'ag_server/service_provider_edit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取爱果服务费
|
||||
export function get_ag_service(data) {
|
||||
return request({
|
||||
url: 'ag_server/get_ag_service',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//搜索账号
|
||||
export function search_account(data) {
|
||||
return request({
|
||||
url: 'ag_server/search_account',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//批量开启免检
|
||||
export function batch_start_exemption(data) {
|
||||
return request({
|
||||
url: 'ag_server/batch_start_exemption',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//批量关闭免检
|
||||
export function batch_stop_exemption(data) {
|
||||
return request({
|
||||
url: 'ag_server/batch_stop_exemption',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//批量关闭免检
|
||||
export function get_search_company(data) {
|
||||
return request({
|
||||
url: 'payment/company_id_search',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
import request from '@axioshooks';
|
||||
|
||||
//站点运营数据统计
|
||||
export function site_operation_data_statistics(data) {
|
||||
return request({
|
||||
url: 'ag_server/site_operation_data_statistics',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//站点运营数据详情
|
||||
export function site_operation_data_details(data) {
|
||||
return request({
|
||||
url: 'ag_server/site_operation_data_details',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//闲鱼账号
|
||||
export function get_site_account(data) {
|
||||
return request({
|
||||
url: 'xy/get_site_account',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//服务商列表
|
||||
export function service_provider_list(data) {
|
||||
return request({
|
||||
url: 'ag_server/service_provider_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
import request from '@axioshooks'
|
||||
// 获取订单管理列表
|
||||
export function order_info(data) {
|
||||
return request({
|
||||
url: 'xy_openapi/api/order_info/select_by_conditions',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -1,611 +0,0 @@
|
|||
import request from '@axioshooks'
|
||||
/*客户数据*/
|
||||
export function Warehousing(data) {
|
||||
return request({
|
||||
url: 'customer/get_datas',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
/*业务员下拉框数据*/
|
||||
export function salesman(data) {
|
||||
return request({
|
||||
url: 'salesman/get_datas',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*机器列表品牌*/
|
||||
export function filter_brand_list(data) {
|
||||
return request({
|
||||
url: 'brand/filter_brand_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*品牌*/
|
||||
export function get_datas(data) {
|
||||
return request({
|
||||
url: 'brand/get_datas',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*品牌*/
|
||||
export function filter_all_brand_list(data) {
|
||||
return request({
|
||||
url: 'brand/filter_all_brand_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*适用品牌*/
|
||||
export function cate_brand_list_all(data) {
|
||||
return request({
|
||||
url: 'brand/cate_brand_list_all',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*手机品牌*/
|
||||
export function cate_brand_list_in_stock(data) {
|
||||
return request({
|
||||
url: 'brand/cate_brand_list_in_stock',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*型号*/
|
||||
export function model_brand(data) {
|
||||
return request({
|
||||
url: 'res/get_exist_model_brand',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*机器等级*/
|
||||
export function machine_grade(data) {
|
||||
return request({
|
||||
url: 'repair/get_repair_fault_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*选择库位*/
|
||||
export function location_list(data) {
|
||||
return request({
|
||||
url: 'location_id/location_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*机器入库*/
|
||||
export function save(data) {
|
||||
return request({
|
||||
url: 'instorage/new_save',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*new机器入库*/
|
||||
export function purchase(data) {
|
||||
return request({
|
||||
url: 'instorage/purchase',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*采购配件*/
|
||||
export function accessories_save(data) {
|
||||
return request({
|
||||
url: 'instorage/accessories_save',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*采购配件*/
|
||||
export function new_accessories_save(data) {
|
||||
return request({
|
||||
url: 'instorage/new_accessories_save',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*imei/sn图片识别*/
|
||||
export function identify_sn_imei(data) {
|
||||
return request({
|
||||
url: 'https://apiv1.aiguovip.comquery/identify_sn_imei',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/*上传xls文件*/
|
||||
export function excel_storage(data) {
|
||||
return request({
|
||||
url: 'instorage/excel_storage',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/*重置*/
|
||||
export function reset(token) {
|
||||
return request({
|
||||
url: 'res/reset',
|
||||
method: 'get',
|
||||
params: { token }
|
||||
})
|
||||
}
|
||||
/*打印*/
|
||||
export function pre_print() {
|
||||
return request({
|
||||
url: 'res/pre_print',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
/*配件分类*/
|
||||
export function get_accessories_cate_list(data) {
|
||||
return request({
|
||||
url: 'res/get_accessories_cate_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*操作员*/
|
||||
export function op_order_operater_list(data) {
|
||||
return request({
|
||||
url: 'order/op_order_operater_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*操作类型*/
|
||||
export function op_order_type_list(data) {
|
||||
return request({
|
||||
url: 'order/op_order_type_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*操作订单列表*/
|
||||
export function op_order_list(data) {
|
||||
return request({
|
||||
url: 'order/op_order_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*操作订单详情*/
|
||||
export function op_order_details(data) {
|
||||
return request({
|
||||
url: 'order/op_order_details',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*获取店铺名称*/
|
||||
export function get_shop(data) {
|
||||
return request({
|
||||
url: 'res/get_shop',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*智能识别1*/
|
||||
export function ai_model_v2(data) {
|
||||
return request({
|
||||
url: 'instorage/ai_model_v2',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*智能识别2*/
|
||||
export function ai_model_update_v2(data) {
|
||||
return request({
|
||||
url: 'instorage/ai_model_update_v2',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*编辑备注*/
|
||||
export function order_edit(data) {
|
||||
return request({
|
||||
url: 'order/order_edit',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*操作订单列表详情*/
|
||||
export function op_order_pay(data) {
|
||||
return request({
|
||||
url: 'order/op_order_pay',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*操作订单详情--整单打印*/
|
||||
export function whole_list_print(data) {
|
||||
return request({
|
||||
url: 'res/whole_list_print',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*批量回填价格列表*/
|
||||
export function zlj_sales_rollback(data) {
|
||||
return request({
|
||||
url: 'sales/zlj_sales_rollback',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*批量回填价格*/
|
||||
export function zlj_sales_complete(data) {
|
||||
return request({
|
||||
url: 'sales/zlj_sales_complete',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*回收端列表*/
|
||||
export function recycle_order_list(data) {
|
||||
return request({
|
||||
url: 'recycle/recycle_order_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*回收端应付款列表*/
|
||||
export function receivable_list(data) {
|
||||
return request({
|
||||
url: 'recycle/receivable_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*回收支付*/
|
||||
export function recycle_pay(data) {
|
||||
return request({
|
||||
url: 'recycle/recycle_pay',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*回收应付款支付*/
|
||||
export function charge_account_settlement(data) {
|
||||
return request({
|
||||
url: 'recycle/charge_account_settlement',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*回收端下的所有门店*/
|
||||
export function store_user_list(data) {
|
||||
return request({
|
||||
url: 'recycle/store_user_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*回收详情*/
|
||||
export function recycle_order_details(data) {
|
||||
return request({
|
||||
url: 'recycle/recycle_order_details',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*获取pjt物品信息*/
|
||||
export function third_party_no(data) {
|
||||
return request({
|
||||
url: 'instorage/third_party_no',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*获取回收端物品信息*/
|
||||
export function recycle_app(data) {
|
||||
return request({
|
||||
url: 'instorage/recycle_app',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*获取代卖列表*/
|
||||
export function instead_sales(data) {
|
||||
return request({
|
||||
url: 'order/instead_sales',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/*获取改价中心详情列表*/
|
||||
export function change_price_center(data) {
|
||||
return request({
|
||||
url: 'zlj/change_price_center',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 公司信息
|
||||
export function get_company(data) {
|
||||
return request({
|
||||
url: 'user/get_company',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 订单详情-分享🐴
|
||||
export function op_order_details_code(data) {
|
||||
return request({
|
||||
url: 'order/op_order_details_code',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 通过分享码读取详情
|
||||
export function get_op_order_details_by_code(data) {
|
||||
return request({
|
||||
url: 'public_api/get_op_order_details_by_code',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 解绑爱果账号
|
||||
export function unbundling_ag(data) {
|
||||
return request({
|
||||
url: 'user/unbundling_ag',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 绑定爱果账号
|
||||
export function binding_ag_account(data) {
|
||||
return request({
|
||||
url: 'user/binding_ag_account',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取爱果账号的余额
|
||||
export function get_ag_balance(data) {
|
||||
return request({
|
||||
url: 'user/get_ag_balance',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// aiguo接管登录
|
||||
export function ag_take_over_login(data) {
|
||||
return request({
|
||||
url: 'instorage/ag_take_over_login',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 修改采购客户
|
||||
export function edit_super_supplier(data) {
|
||||
return request({
|
||||
url: 'finance/edit_super_supplier',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 修改销售客户
|
||||
export function edit_sales_customer(data) {
|
||||
return request({
|
||||
url: 'finance/edit_sales_customer',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 修改业务员
|
||||
export function edit_salesman(data) {
|
||||
return request({
|
||||
url: 'finance/edit_salesman',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 查询发送
|
||||
export function auto_query_for_imei(data) {
|
||||
return request({
|
||||
url: 'instorage/auto_query_for_imei',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//老获取pjt
|
||||
export function third_party_no_v2(data) {
|
||||
return request({
|
||||
url: 'instorage/third_party_no_v2',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//草稿箱
|
||||
export function drafts_box_list(data) {
|
||||
return request({
|
||||
url: 'instorage/drafts_box_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---草稿保存
|
||||
export function save_drafts_box(data) {
|
||||
return request({
|
||||
url: 'instorage/save_drafts_box',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---草稿删除
|
||||
export function del_drafts_box(data) {
|
||||
return request({
|
||||
url: 'instorage/del_drafts_box',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---设置是否自动查询保修
|
||||
export function user_warranty_query(data) {
|
||||
return request({
|
||||
url: 'instorage/user_warranty_query',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---入库获取机器型号
|
||||
export function cate_brand_list(data) {
|
||||
return request({
|
||||
url: 'instorage/cate_brand_list_all',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---采购单编辑机器
|
||||
export function purchase_order_edit_phone(data) {
|
||||
return request({
|
||||
url: 'purchase_order/purchase_order_edit_phone',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---草稿箱编辑
|
||||
export function edit_drafts_box(data) {
|
||||
return request({
|
||||
url: 'instorage/edit_drafts_box',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---批量添加网页版---草稿箱
|
||||
export function batch_save_drafts_box(data) {
|
||||
return request({
|
||||
url: 'instorage/batch_save_drafts_box',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//---批量更新网页版---草稿箱
|
||||
export function batch_edit_drafts_box(data) {
|
||||
return request({
|
||||
url: 'instorage/batch_edit_drafts_box',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//小程序入库---获取草稿箱单条数据
|
||||
export function get_drafts_box(data) {
|
||||
return request({
|
||||
url: 'instorage/get_drafts_box',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//小程序入库---是否验证机器信息完整
|
||||
export function mp_is_validation(data) {
|
||||
return request({
|
||||
url: 'instorage/mp_is_validation',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//小程序---新建采购单
|
||||
export function mp_add_purchase(data) {
|
||||
return request({
|
||||
url: 'purchase_order/mp_add_purchase',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//小程序入库---立即入库
|
||||
export function mp_purchase(data) {
|
||||
return request({
|
||||
url: 'instorage/mp_purchase',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//关联单据---入库单关联的采购单
|
||||
export function associated(data) {
|
||||
return request({
|
||||
url: 'order/associated_order',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//草稿箱添加重复的机器
|
||||
export function drafts_box_add_repeat(data) {
|
||||
return request({
|
||||
url: 'instorage/drafts_box_add_repeat',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//将草稿箱中的采购单机器设为实物
|
||||
export function drafts_box_not_purchase(data) {
|
||||
return request({
|
||||
url: 'instorage/drafts_box_not_purchase',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//正在查询的机器可以取消
|
||||
export function purchase_storage_cancel_query(data) {
|
||||
return request({
|
||||
url: 'purchase_order/purchase_storage_cancel_query',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//入库的时候批量收货及取消退货并收货
|
||||
export function storage_purchase_confirm_goods(data) {
|
||||
return request({
|
||||
url: 'refunds/storage_purchase_confirm_goods',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//机器详情保修查完获取机器信息
|
||||
export function warranty_res_info(data) {
|
||||
return request({
|
||||
url: 'res/warranty_res_info',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//导出操作订单详情
|
||||
export function parts_export(data) {
|
||||
return request({
|
||||
url: 'order/parts_export',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//编辑报价师
|
||||
export function edit_quote_user(data) {
|
||||
return request({
|
||||
url: 'res/edit_quote_user',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//批量添加采购备注
|
||||
export function batch_remark(data) {
|
||||
return request({
|
||||
url: 'purchase_order/batch_remark',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//配件入库快速添加库位
|
||||
export function add_location(data) {
|
||||
return request({
|
||||
url: 'location/add_location',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -1,458 +0,0 @@
|
|||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2020-10-09 16:35:34
|
||||
* @LastEditTime: 2021-05-14 15:30:28
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: \aiguo_erp_vue\src\api\Income.js
|
||||
*/
|
||||
import request from '@axioshooks'
|
||||
// 多账号详情
|
||||
export function new_xy_product_details(data) {
|
||||
return request({
|
||||
url: 'xy/new_xy_product_details',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 多账号添加
|
||||
export function new_add_xy_product(data) {
|
||||
return request({
|
||||
url: 'xy/new_add_xy_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 多账号编辑
|
||||
export function new_edit_xy_product(data) {
|
||||
return request({
|
||||
url: 'xy/new_edit_xy_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 删除图片
|
||||
export function upload_image(data) {
|
||||
return request({
|
||||
url: 'xy/upload_img',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 保修回填
|
||||
export function res_warranty_backfill(data) {
|
||||
return request({
|
||||
url: 'xy/res_warranty_backfill',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 已售出快速重新发布
|
||||
export function edit_item(data) {
|
||||
return request({
|
||||
url: 'xy/edit_item',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 已售出快速重新发布
|
||||
export function sale_again_publish(data) {
|
||||
return request({
|
||||
url: 'xy/sale_again_publish',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 闲鱼服务商发布---获取在库机器
|
||||
export function xy_choose_model(data) {
|
||||
return request({
|
||||
url: 'xy/xy_choose_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 闲鱼服务商发布---获取分类
|
||||
export function xy_channel_cat(data) {
|
||||
return request({
|
||||
url: 'xy/xy_channel_cat',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 闲鱼服务商发布---根据分类获取属性
|
||||
export function xy_property(data) {
|
||||
return request({
|
||||
url: 'xy/xy_property',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 闲鱼服务商发布---获取质检项
|
||||
export function xy_qc_item(data) {
|
||||
return request({
|
||||
url: 'xy/xy_qc_item',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 闲鱼服务商发布---根据品牌获取型号
|
||||
export function xy_model(data) {
|
||||
return request({
|
||||
url: 'xy/xy_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 详情、质检报告
|
||||
export function xy_product_details(data) {
|
||||
return request({
|
||||
url: 'xy/xy_product_details',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 添加
|
||||
export function add_xy_product(data) {
|
||||
return request({
|
||||
url: 'xy/add_xy_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 编辑
|
||||
export function edit_xy_product(data) {
|
||||
return request({
|
||||
url: 'xy/edit_xy_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 发布
|
||||
export function xy_publish(data) {
|
||||
return request({
|
||||
url: 'xy/xy_publish',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取自己拍的图片,或闲鱼同城帮图片
|
||||
export function get_img(data) {
|
||||
return request({
|
||||
url: 'xy/get_img',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 商品列表
|
||||
export function xy_product_list(data) {
|
||||
return request({
|
||||
url: 'xy/xy_product_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 订单列表
|
||||
export function xy_order_list(data) {
|
||||
return request({
|
||||
url: 'xy/xy_order_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 修改订单收货地址
|
||||
export function up_order_delivery_address(data) {
|
||||
return request({
|
||||
url: 'xy/up_order_delivery_address',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 售后列表
|
||||
export function xy_sale_after_list(data) {
|
||||
return request({
|
||||
url: 'xy/xy_sale_after_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 下架
|
||||
export function batch_off_shelf(data) {
|
||||
return request({
|
||||
url: 'xy/batch_off_shelf',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 批量删除
|
||||
export function batch_product_del(data) {
|
||||
return request({
|
||||
url: 'api/xy/batch_product_del',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 订单发货
|
||||
export function order_delivery_idle(data) {
|
||||
return request({
|
||||
url: 'xy/order_delivery',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 售后退款 同意/拒绝
|
||||
export function refund_after_sale(data) {
|
||||
return request({
|
||||
url: 'xy/refund_after_sale',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 添加售后地址
|
||||
export function add_after_sale_address(data) {
|
||||
return request({
|
||||
url: 'xy/add_after_sale_address',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取售后地址
|
||||
export function get_after_sale_address(data) {
|
||||
return request({
|
||||
url: 'xy/get_after_sale_address',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取行政区划
|
||||
export function administrative_division(data) {
|
||||
return request({
|
||||
url: 'xy/administrative_division',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 编辑售后地址
|
||||
export function edit_after_sale_address(data) {
|
||||
return request({
|
||||
url: 'xy/edit_after_sale_address',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 删除售后地址
|
||||
export function del_after_sale_address(data) {
|
||||
return request({
|
||||
url: 'xy/del_after_sale_address',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 自动匹配
|
||||
export function auto_match(data) {
|
||||
return request({
|
||||
url: 'xy/auto_match',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 订单列表---换货发---根据imei获取对应机器
|
||||
export function get_keywords_order_model(data) {
|
||||
return request({
|
||||
url: 'xy/get_keywords_order_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 日志
|
||||
export function xy_log(data) {
|
||||
return request({
|
||||
url: 'xy/xy_log',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 删除商品
|
||||
export function xy_product_del(data) {
|
||||
return request({
|
||||
url: 'xy/xy_product_del',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 批量改价
|
||||
export function batch_change_price(data) {
|
||||
return request({
|
||||
url: 'xy/batch_change_price',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 批量翻库
|
||||
export function xy_republish(data) {
|
||||
return request({
|
||||
url: 'xy/xy_republish',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 批量改价---分类
|
||||
export function batch_change_price_group(data) {
|
||||
return request({
|
||||
url: 'xy/batch_change_price_group',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 自动调价
|
||||
export function auto_change_price(data) {
|
||||
return request({
|
||||
url: 'xy/auto_change_price',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取可使用的闲鱼账号
|
||||
export function get_site_account(data) {
|
||||
return request({
|
||||
url: 'xy/get_site_account',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取可使用的闲鱼账号
|
||||
export function real_time_preview(data) {
|
||||
return request({
|
||||
url: 'xy/real_time_preview',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 闲鱼列表批量发布
|
||||
export function batch_xy_publish(data) {
|
||||
return request({
|
||||
url: 'xy/batch_xy_publish',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 根据质检项选择版本类型
|
||||
export function match_version_type(data) {
|
||||
return request({
|
||||
url: 'xy/match_version_type',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 计算服务费
|
||||
export function compute_server_fee(data) {
|
||||
return request({
|
||||
url: 'xy/compute_server_fee',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//获取全部可用模版
|
||||
export function get_all_desc(data) {
|
||||
return request({
|
||||
url: 'xy/get_all_desc',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//获取默认模板
|
||||
export function get_default_desc(data) {
|
||||
return request({
|
||||
url: 'xy/get_default_desc',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//新增闲鱼内容模板
|
||||
export function add_xy_desc(data) {
|
||||
return request({
|
||||
url: 'xy/add_xy_desc',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//删除闲鱼内容模板
|
||||
export function del_xy_desc(data) {
|
||||
return request({
|
||||
url: 'xy/del_xy_desc',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//修改闲鱼内容模板
|
||||
export function up_xy_desc(data) {
|
||||
return request({
|
||||
url: 'xy/up_xy_desc',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//补订单
|
||||
export function make_up_for_order(data) {
|
||||
return request({
|
||||
url: 'xy/make_up_for_order',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//同步订单
|
||||
export function order_synchronous(data) {
|
||||
return request({
|
||||
url: 'xy/order_synchronous',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//立即发货校验
|
||||
export function check_order_after_sale(data) {
|
||||
return request({
|
||||
url: 'xy/check_order_after_sale',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 当前商户退货率
|
||||
export function merchant_return_rate(data) {
|
||||
return request({
|
||||
url: 'xy/merchant_return_rate',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 驳回原因
|
||||
export function get_reject_reason(data) {
|
||||
return request({
|
||||
url: 'ag_server/get_reject_reason',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//瑕疵拍照-获取瑕疵项
|
||||
export function get_defect_term(data) {
|
||||
return request({
|
||||
url: 'xy/get_defect_term',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//瑕疵拍照-保存瑕疵图
|
||||
export function save_defect_term_img(data) {
|
||||
return request({
|
||||
url: 'xy/save_defect_term_img',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
import request from '@axioshooks'
|
||||
|
||||
//获取质检项
|
||||
export function xy_qc_item(data) {
|
||||
return request({
|
||||
url: 'inspection_center/xy_qc_item',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -1,177 +0,0 @@
|
|||
import request from '@axioshooks'
|
||||
|
||||
// 质检中心
|
||||
|
||||
// 机器信息(系统识别)
|
||||
export function choose_model(data) {
|
||||
return request({
|
||||
url: 'inspection_center/choose_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function machine_info(data) {
|
||||
return request({
|
||||
url: 'trusteeship/machine_info',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 质检sku
|
||||
export function xy_channel_cat(data) {
|
||||
return request({
|
||||
url: 'inspection_center/xy_channel_cat',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取回填sku
|
||||
export function get_backfill_model(data) {
|
||||
return request({
|
||||
url: 'inspection_center/get_backfill_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//获取质检项
|
||||
export function xy_qc_item(data) {
|
||||
return request({
|
||||
url: 'inspection_center/xy_qc_item',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//获取自己拍的图片
|
||||
export function get_img(data) {
|
||||
return request({
|
||||
url: 'inspection_center/get_img',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// //上传照片
|
||||
// export function upload_img(data) {
|
||||
// return request({
|
||||
// url: 'inspection_center/upload_img',
|
||||
// method: 'post',
|
||||
// data
|
||||
// })
|
||||
// }
|
||||
//
|
||||
//添加保存质检报告
|
||||
export function add_product(data) {
|
||||
return request({
|
||||
url: 'inspection_center/add_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//打印质检报告
|
||||
export function inspection_report_print(data) {
|
||||
return request({
|
||||
url: 'inspection_center/inspection_report_print',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//质检报告详情
|
||||
export function product_details(data) {
|
||||
return request({
|
||||
url: 'inspection_center/product_details',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//质检报告列表
|
||||
export function inspection_report_list(data) {
|
||||
return request({
|
||||
url: 'inspection_center/inspection_report_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//编辑质检报告
|
||||
export function edit_product(data) {
|
||||
return request({
|
||||
url: 'inspection_center/edit_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//删除质检报告
|
||||
export function del_inspection_report(data) {
|
||||
return request({
|
||||
url: 'inspection_center/del_inspection_report',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 与实物一致
|
||||
export function consistent_with_actual(data) {
|
||||
return request({
|
||||
url: 'trusteeship/consistent_with_actual',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 保存质检结果
|
||||
export function quality_inspection(data) {
|
||||
return request({
|
||||
url: 'trusteeship/quality_inspection',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function receiving_goods(data) {
|
||||
return request({
|
||||
url: 'trusteeship/receiving_goods',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function quality_inspection_report(data) {
|
||||
return request({
|
||||
url: 'trusteeship/quality_inspection_report',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function judgment_responsibility(data) {
|
||||
return request({
|
||||
url: 'trusteeship/judgment_responsibility',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function batch_qc_code_print(data) {
|
||||
return request({
|
||||
url: 'trusteeship/print_quality_inspection_codes',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function get_oss_sign_aliyun(data) {
|
||||
return request({
|
||||
url: 'base_config/get_oss_sign_aliyun',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export function get_defect_term(data) {
|
||||
return request({
|
||||
url: 'xy/get_defect_term',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
|
@ -1,302 +0,0 @@
|
|||
import request from '@axioshooks'
|
||||
// 订单列表---换货发---根据imei获取对应机器
|
||||
export function add_chx_info(data) {
|
||||
return request({
|
||||
url: 'chx/add_chx_info',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 订单列表---换货发---根据imei获取对应机器
|
||||
export function get_keywords_order_model1(data) {
|
||||
return request({
|
||||
url: 'chx/get_keywords_order_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取转转、闲鱼定价、销售周期
|
||||
export function chx_take_picture(data) {
|
||||
return request({
|
||||
url: 'chx/chx_take_picture',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取转转、闲鱼定价、销售周期
|
||||
export function zz_xy_sale_info(data) {
|
||||
return request({
|
||||
url: 'chx/zz_xy_sale_info',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 手动啦取更新收货人信息
|
||||
export function get_consignee_info(data) {
|
||||
return request({
|
||||
url: 'chx/get_consignee_info',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取近7天的拍卖场次
|
||||
export function session_room(data) {
|
||||
return request({
|
||||
url: 'chx/session_room',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 场次查询
|
||||
export function chx_session_query(data) {
|
||||
return request({
|
||||
url: 'chx/chx_session_query',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 商品日志
|
||||
export function chx_product_log(data) {
|
||||
return request({
|
||||
url: 'chx/chx_product_log',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 一键询价
|
||||
export function batch_query_price(data) {
|
||||
return request({
|
||||
url: 'chx/batch_query_price',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 一键上拍(批量发布)
|
||||
export function batch_product_release(data) {
|
||||
return request({
|
||||
url: 'chx/batch_product_release',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 历史询价
|
||||
export function history_query_price(data) {
|
||||
return request({
|
||||
url: 'chx/history_query_price',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 打印条码
|
||||
export function back_print(data) {
|
||||
return request({
|
||||
url: 'chx/back_print',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取机器等级
|
||||
export function chx_match_grade(data) {
|
||||
return request({
|
||||
url: 'chx/chx_match_grade',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 批量下架
|
||||
export function batch_exit_auction(data) {
|
||||
return request({
|
||||
url: 'chx/batch_exit_auction',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取闲鱼图片上传到采货侠
|
||||
export function xy_img_upload(data) {
|
||||
return request({
|
||||
url: 'chx/xy_img_upload',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取转转图片上传到采货侠
|
||||
export function zz_img_upload(data) {
|
||||
return request({
|
||||
url: 'chx/zz_img_upload',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 订单发布
|
||||
export function order_delivery(data) {
|
||||
return request({
|
||||
url: 'chx/order_delivery',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 售后列表
|
||||
export function chx_after_sale_list(data) {
|
||||
return request({
|
||||
url: 'chx/chx_after_sale_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 订单列表
|
||||
export function chx_order_list(data) {
|
||||
return request({
|
||||
url: 'chx/chx_order_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 恢复
|
||||
export function chx_product_recover(data) {
|
||||
return request({
|
||||
url: 'chx/chx_product_recover',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 忽略
|
||||
export function chx_product_ignore(data) {
|
||||
return request({
|
||||
url: 'chx/chx_product_ignore',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//
|
||||
export function chx_product_list(data) {
|
||||
return request({
|
||||
url: 'chx/chx_product_list',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 重新质检、重新定价、重新拍照、重新发布
|
||||
export function copy_chx_product(data) {
|
||||
return request({
|
||||
url: 'chx/copy_chx_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 主动下架
|
||||
export function exit_auction(data) {
|
||||
return request({
|
||||
url: 'chx/exit_auction',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取手机型号
|
||||
export function chx_choose_model(data) {
|
||||
return request({
|
||||
url: 'chx/chx_choose_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取质检项
|
||||
export function get_qc_item(data) {
|
||||
return request({
|
||||
url: 'chx/get_qc_item',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 保存质检项
|
||||
export function save_qc_item(data) {
|
||||
return request({
|
||||
url: 'chx/save_qc_item',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 获取拍卖场次
|
||||
export function chx_auction_room(data) {
|
||||
return request({
|
||||
url: 'chx/chx_auction_room',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 添加商品
|
||||
export function chx_add_product(data) {
|
||||
return request({
|
||||
url: 'chx/chx_add_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 查询起拍价
|
||||
export function query_price(data) {
|
||||
return request({
|
||||
url: 'chx/query_price',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 查询维护起拍价
|
||||
export function chx_product_details(data) {
|
||||
return request({
|
||||
url: 'chx/chx_product_details',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 保存定价
|
||||
export function pricing(data) {
|
||||
return request({
|
||||
url: 'chx/pricing',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 立即发布
|
||||
export function product_release(data) {
|
||||
return request({
|
||||
url: 'chx/product_release',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//获取采货侠分类、品牌、型号
|
||||
export function chx_model(data) {
|
||||
return request({
|
||||
url: 'chx/chx_model',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//批量忽略
|
||||
export function batch_product_ignore(data) {
|
||||
return request({
|
||||
url: 'chx/batch_product_ignore',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
//批量删除
|
||||
export function del_chx_product(data) {
|
||||
return request({
|
||||
url: 'chx/del_chx_product',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//采货侠-上传图片
|
||||
export function upload_img(data) {
|
||||
return request({
|
||||
url: 'chx/upload_img',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -109,7 +109,7 @@ const onNavTo=(path)=>{
|
|||
align-items: center;
|
||||
}
|
||||
.breadcrumbitem{
|
||||
|
||||
font-size: 14px;
|
||||
border-top-left-radius: 6px;
|
||||
border-top-right-radius: 6px;
|
||||
padding: 0px 12px;
|
||||
|
|
|
@ -90,6 +90,7 @@ const data = reactive({
|
|||
});
|
||||
const params = ref([]); //显示图片
|
||||
const fileList = ref(props.imgList); //接口文件
|
||||
const new_fileList = ref([]);
|
||||
const uploadingPromises = ref([]);
|
||||
// 在文件添加到fileList之前调用
|
||||
const beforeUpload = (file) => {
|
||||
|
@ -173,9 +174,27 @@ const handleUpload = (file) => {
|
|||
// 所有文件上传完成后的回调
|
||||
const allFilesUploaded = () => {
|
||||
params.value = [];
|
||||
for (var i = 0; i < fileList.value.length; i++) {
|
||||
params.value.push(fileList.value[i].raw);
|
||||
let imglist = [];
|
||||
imglist = fileList.value.filter((e) => e.raw);
|
||||
if (!new_fileList.value.length) {
|
||||
for (var i = 0; i < imglist.length; i++) {
|
||||
params.value.push(imglist[i].raw);
|
||||
}
|
||||
} else {
|
||||
const new_name = [];
|
||||
new_fileList.value.map((item) => {
|
||||
if (item.raw) {
|
||||
new_name.push(item.uid);
|
||||
}
|
||||
});
|
||||
imglist = fileList.value.filter(
|
||||
(item) => !new_name.includes(item.uid) && item.name
|
||||
);
|
||||
for (var i = 0; i < imglist.length; i++) {
|
||||
params.value.push(imglist[i].raw);
|
||||
}
|
||||
}
|
||||
new_fileList.value = fileList.value;
|
||||
$emit("onSuccessFiles", params.value);
|
||||
};
|
||||
</script>
|
||||
|
@ -186,7 +205,7 @@ const allFilesUploaded = () => {
|
|||
.el-upload-list--picture-card .el-upload-list__item {
|
||||
width: 62px;
|
||||
height: 62px;
|
||||
line-height: 72px;
|
||||
line-height: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
|
|
@ -211,7 +211,7 @@ const scrollHeight = () => {
|
|||
|
||||
<style lang="scss" scoped>
|
||||
.table-box {
|
||||
height: calc(100vh - 250px);
|
||||
height: calc(100vh - 265px);
|
||||
}
|
||||
|
||||
ul,
|
||||
|
|
|
@ -1,17 +1,12 @@
|
|||
import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
|
||||
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';
|
||||
import NotFound from "./views/NotFound.vue";
|
||||
import Revicerecord from './views/reviceRecord/index.vue';
|
||||
import QualityRecord from "./views/qualityRecord/index.vue";
|
||||
import Qualityreport from "./views/qualityreport/index.vue";
|
||||
import XyShop from "./views/XyShop/index.vue";
|
||||
import ServiceProviderList from "./views/ServiceProviderList/index.vue";
|
||||
import OperationCenter from "./views/OperationCenter/index.vue";
|
||||
|
||||
import { markRaw } from 'vue';
|
||||
import Home from './views/Home.vue';
|
||||
import NotFound from "./views/NotFound.vue";
|
||||
import CommodityManagement from './views/CommodityManagement/index.vue';
|
||||
import OrderManagement from './views/OrderManagement/index.vue';
|
||||
import AfterSalesManagement from './views/AfterSalesManagement/index.vue';
|
||||
import NewlyBuiltGoods from './views/NewlyBuiltGoods/index.vue';
|
||||
import XyShop from "./views/XyShop/index.vue";
|
||||
|
||||
|
||||
import {
|
||||
|
@ -38,14 +33,6 @@ export const routes = [
|
|||
icon: markRaw(Location)
|
||||
},
|
||||
children: [
|
||||
{
|
||||
meta: {
|
||||
label: "商品管理",
|
||||
icon: markRaw(Location)
|
||||
},
|
||||
path: '/CommodityManagement',
|
||||
component: CommodityManagement,
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
label: "新建商品",
|
||||
|
@ -56,47 +43,31 @@ export const routes = [
|
|||
},
|
||||
{
|
||||
meta: {
|
||||
label: "收货记录",
|
||||
label: "商品管理",
|
||||
icon: markRaw(Location)
|
||||
},
|
||||
path: '/revicerecord',
|
||||
component: Revicerecord,
|
||||
path: '/CommodityManagement',
|
||||
component: CommodityManagement,
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
label: "质检报告",
|
||||
label: "订单管理",
|
||||
icon: markRaw(Location)
|
||||
},
|
||||
hidden: true,
|
||||
path: '/qualityreport',
|
||||
component: Qualityreport,
|
||||
}
|
||||
]
|
||||
path: '/OrderManagement',
|
||||
component: OrderManagement,
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
label: "开发平台",
|
||||
icon: markRaw(Setting)
|
||||
},
|
||||
children: [
|
||||
{
|
||||
meta: {
|
||||
label: "质检工作台",
|
||||
label: "售后管理",
|
||||
icon: markRaw(Location)
|
||||
},
|
||||
path: '/qualityWork',
|
||||
component: QualityWork,
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
label: "质检记录",
|
||||
icon: markRaw(Location)
|
||||
},
|
||||
path: '/qualityRecord',
|
||||
component: QualityRecord,
|
||||
path: '/AfterSalesManagement',
|
||||
component: AfterSalesManagement,
|
||||
},
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
meta: {
|
||||
label: "设置",
|
||||
|
@ -110,22 +81,8 @@ export const routes = [
|
|||
path: '/XyShop',
|
||||
component: XyShop,
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
label: "站点用户列表",
|
||||
icon: markRaw(Location)
|
||||
},
|
||||
path: '/serviceProviderList',
|
||||
component: ServiceProviderList,
|
||||
},
|
||||
{
|
||||
meta: {
|
||||
label: "运营中心",
|
||||
icon: markRaw(Location)
|
||||
},
|
||||
path: '/OperationCenter',
|
||||
component: OperationCenter,
|
||||
},
|
||||
|
||||
|
||||
]
|
||||
},
|
||||
{ path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
|
||||
|
|
|
@ -146,13 +146,13 @@ export default ({
|
|||
if (fileindex) {
|
||||
filekey = newdatas["filekey"];
|
||||
}
|
||||
console.log(newdatas,'newdatas',filekey);
|
||||
// console.log(newdatas,'newdatas',filekey);
|
||||
_Object.values(data).map((d, index) => {
|
||||
if (filekey != "" && Object.keys(data)[index] == filekey) {
|
||||
if (d && Array.isArray(d)) {
|
||||
console.log(d,'ddd');
|
||||
// console.log(d,'ddd');
|
||||
d.map((h, index) => {
|
||||
console.log(h,'file');
|
||||
// console.log(h,'file');
|
||||
params.append(filekey,h, h.name);
|
||||
})
|
||||
} else {
|
||||
|
|
|
@ -0,0 +1,420 @@
|
|||
<template>
|
||||
<div class="Special_offer_box">
|
||||
<div class="table_box_header">
|
||||
<el-tabs class="demo-tabs" v-model="activeName" @tab-change="TabChange">
|
||||
<el-tab-pane
|
||||
v-for="item in tabs"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:name="item.value"
|
||||
></el-tab-pane>
|
||||
</el-tabs>
|
||||
<SearchForm :inputs="Inputs" @onSearch="onSearch" @onRest="onRest" />
|
||||
</div>
|
||||
|
||||
<div class="table_box_center">
|
||||
<Table
|
||||
ref="TableRef"
|
||||
:key="TableKey"
|
||||
:TabLoading="TabLoading"
|
||||
:TableData="TableData"
|
||||
:TableLabel="TableLabel"
|
||||
>
|
||||
<template #OperateButton="{ row }">
|
||||
<OperateButton
|
||||
:ButtonList="row.ButtonGroup"
|
||||
:row="row"
|
||||
></OperateButton></template
|
||||
></Table>
|
||||
<PaginaTion
|
||||
:total="totalNumbel"
|
||||
v-model:current-page="commodityInfoDto.pageNo"
|
||||
v-model:page-size="commodityInfoDto.pageSize"
|
||||
@handleSizeChange="handleSizeChange"
|
||||
@handleCurrentChange="getDatas"
|
||||
></PaginaTion>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, unref, computed, reactive, onMounted } from "vue";
|
||||
import { router } from "@/router.js";
|
||||
import { Plus } from "@element-plus/icons-vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import SearchForm from "@components/searchForm/index.vue";
|
||||
import Table from "@components/table.vue";
|
||||
import OperateButton from "@/components/OperateButton.vue";
|
||||
import PaginaTion from "@components/Pagination.vue";
|
||||
import {
|
||||
select_by_conditions,
|
||||
edit_product,
|
||||
publish,
|
||||
pull_off,
|
||||
delete_one,
|
||||
} from "@/api/CommodityManagement";
|
||||
import { getshopInfo } from "@/api/newlybuiltgoods";
|
||||
const activeName = ref("");
|
||||
const tabs = ref([
|
||||
{ label: "全部", value: "", total: 0 },
|
||||
{ label: "草稿箱", value: "1", total: 0 },
|
||||
{ label: "待发布", value: "2", total: 0 },
|
||||
{ label: "发布成功", value: "-3", total: 0 },
|
||||
{ label: "发布失败", value: "-4", total: 0 },
|
||||
{ label: "手动下架", value: "-2", total: 0 },
|
||||
{ label: "已售出", value: "3", total: 0 },
|
||||
{ label: "其他", value: "99", total: 0 },
|
||||
]);
|
||||
const Inputs = ref([
|
||||
{
|
||||
type: "el-input",
|
||||
placeholder: "查询闲鱼商品ID",
|
||||
title: "闲鱼商品ID",
|
||||
name: "commodityId",
|
||||
value: "",
|
||||
popover: true,
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
placeholder: "请选择闲鱼店铺",
|
||||
title: "闲鱼店铺",
|
||||
name: "xyId",
|
||||
value: "",
|
||||
options: [],
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
placeholder: "请输入商品类型",
|
||||
title: "商品类型",
|
||||
name: "auctionType",
|
||||
value: "",
|
||||
options: [
|
||||
{ label: "一口价", value: "a" },
|
||||
{ label: "拍卖", value: "b" },
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
placeholder: "请选择分类",
|
||||
title: "商品分类",
|
||||
name: "itemBizType",
|
||||
value: "",
|
||||
options: [
|
||||
{ label: "普通商品", value: "2" },
|
||||
{ label: "特卖商品", value: "24" },
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "el-input",
|
||||
placeholder: "请输入商品名称",
|
||||
name: "title",
|
||||
value: "",
|
||||
title: "商品名称",
|
||||
},
|
||||
{
|
||||
type: "el-date-picker",
|
||||
title: "创建时间",
|
||||
placeholder: "",
|
||||
name: "createTime",
|
||||
value: [],
|
||||
width: "215px",
|
||||
},
|
||||
{
|
||||
type: "el-date-picker",
|
||||
title: "上架时间",
|
||||
placeholder: "",
|
||||
name: "shelfTime",
|
||||
value: [],
|
||||
width: "215px",
|
||||
},
|
||||
]);
|
||||
|
||||
const TableRef = ref(null);
|
||||
const TableKey = ref(new Date().getTime());
|
||||
const TabLoading = ref(false);
|
||||
const TableData = ref([]);
|
||||
const TableLabel = ref([
|
||||
{
|
||||
label: "闲鱼商品ID",
|
||||
param: "commodityId",
|
||||
align: "center",
|
||||
show: true,
|
||||
display: "top_left",
|
||||
},
|
||||
{
|
||||
label: "创建时间",
|
||||
param: "createTime",
|
||||
align: "center",
|
||||
show: true,
|
||||
display: "top_left",
|
||||
},
|
||||
{
|
||||
label: "上架时间",
|
||||
param: "createTime",
|
||||
align: "center",
|
||||
show: true,
|
||||
display: "top_left",
|
||||
},
|
||||
{
|
||||
label: "商品",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "210",
|
||||
},
|
||||
{
|
||||
label: "商品状态",
|
||||
param: "publishStatusName",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "商品类型",
|
||||
param: "itemBizType",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "分类",
|
||||
param: "auctionType",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "售价(元)",
|
||||
param: "retailPrice",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "库存(个)",
|
||||
param: "stock",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "销量",
|
||||
param: "salesVolume",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "闲鱼店铺",
|
||||
param: "xyName",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "操作",
|
||||
align: "center",
|
||||
show: true,
|
||||
fixed: "right",
|
||||
minwidth: "150",
|
||||
},
|
||||
]);
|
||||
const New_TableLabel = ref([]);
|
||||
const ButtonListGroup = ref([
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "编辑",
|
||||
show: false,
|
||||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {
|
||||
edit_product(row.id).then((res) => {
|
||||
if (res.code === "200") {
|
||||
router.push({
|
||||
path: "/NewlyBuiltGoods",
|
||||
query: {
|
||||
params: JSON.stringify(res.data),
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "复制",
|
||||
show: false,
|
||||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "上架",
|
||||
show: false,
|
||||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {
|
||||
publish(row.id).then((res) => {
|
||||
if (res.code === "200") {
|
||||
ElMessage.success(res.msg);
|
||||
getDatas();
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-popconfirm",
|
||||
name: "下架",
|
||||
title: "是否下架?",
|
||||
cancelText: "不用了",
|
||||
popconfirmIcon: "el-icon-info",
|
||||
iconColor: "red",
|
||||
type: "danger",
|
||||
show: false,
|
||||
confirm: (row) => {
|
||||
pull_off(row.id).then((res) => {
|
||||
if (res.code === "200") {
|
||||
ElMessage.success(res.msg);
|
||||
getDatas();
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-popconfirm",
|
||||
name: "删除",
|
||||
title: "是否删除?",
|
||||
cancelText: "不用了",
|
||||
popconfirmIcon: "el-icon-info",
|
||||
iconColor: "red",
|
||||
type: "danger",
|
||||
show: false,
|
||||
confirm: (row) => {
|
||||
delete_one(row.id).then((res) => {
|
||||
if (res.code === "200") {
|
||||
ElMessage.success(res.msg);
|
||||
getDatas();
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "日志",
|
||||
show: false,
|
||||
type: "warning",
|
||||
mode: "detail",
|
||||
confirm: (row) => {},
|
||||
},
|
||||
]);
|
||||
let commodityInfoDto = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
publishStatus: "",
|
||||
});
|
||||
const totalNumbel = ref(0);
|
||||
const getDatas = () => {
|
||||
TabLoading.value = true;
|
||||
select_by_conditions(commodityInfoDto)
|
||||
.then((res) => {
|
||||
TabLoading.value = false;
|
||||
if (res.code === "200") {
|
||||
const newData = Object.assign([], res.data.data);
|
||||
newData.map((item) => {
|
||||
item.ButtonGroup = ButtonListGroup.value.map((el) => {
|
||||
if (
|
||||
(el.name === "编辑" &&
|
||||
[1, -4, -2].includes(item.publishStatus)) ||
|
||||
(el.name === "下架" && [-3].includes(item.publishStatus)) ||
|
||||
(el.name === "复制" &&
|
||||
[1, -2, -3, -4, 3].includes(item.publishStatus)) ||
|
||||
(el.name === "上架" && [-2, -4].includes(item.publishStatus)) ||
|
||||
(el.name === "删除" && [1, -4, -2].includes(item.publishStatus))
|
||||
) {
|
||||
return { ...el, show: true };
|
||||
}
|
||||
return el;
|
||||
});
|
||||
});
|
||||
console.log(newData);
|
||||
TableData.value = newData;
|
||||
totalNumbel.value = res.data.totalCount;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
TabLoading.value = false;
|
||||
});
|
||||
};
|
||||
//查询
|
||||
const onSearch = (value) => {
|
||||
if (value.createTime) {
|
||||
value.startCreateTime = new Date(value.createTime[0]).getTime();
|
||||
value.endCreateTime = new Date(value.createTime[1]).getTime() + 86399999;
|
||||
} else if (value.shelfTime) {
|
||||
value.startShelfTime = new Date(value.shelfTime[0]).getTime();
|
||||
value.endShelfTime = new Date(value.shelfTime[1]).getTime() + 86399999;
|
||||
}
|
||||
commodityInfoDto = {
|
||||
...commodityInfoDto,
|
||||
...value,
|
||||
};
|
||||
getDatas();
|
||||
};
|
||||
// 重置
|
||||
const onRest = (value) => {
|
||||
commodityInfoDto = {
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
publishStatus: activeName.value,
|
||||
};
|
||||
getDatas();
|
||||
};
|
||||
const get_shopInfo = () => {
|
||||
getshopInfo().then((res) => {
|
||||
if (res.code === "200") {
|
||||
const storeList = [];
|
||||
res.data.forEach((item) => {
|
||||
storeList.push({ label: item.xyName, value: item.id });
|
||||
});
|
||||
Inputs.value.find((e) => e.title == "闲鱼店铺").options = storeList;
|
||||
}
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
TabChange();
|
||||
get_shopInfo();
|
||||
});
|
||||
const handleSizeChange = () => {
|
||||
commodityInfoDto.pageNo = 1;
|
||||
getDatas();
|
||||
};
|
||||
const TabChange = (val) => {
|
||||
commodityInfoDto.publishStatus = activeName.value;
|
||||
getDatas();
|
||||
TableLabel.value.forEach((e) => {
|
||||
e.show = !(
|
||||
e.hasOwnProperty("NumberType") && !e.NumberType.includes(Number(val))
|
||||
);
|
||||
});
|
||||
New_TableLabel.value = TableLabel.value;
|
||||
TableKey.value = new Date().getTime();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.Special_offer_box {
|
||||
height: calc(100vh - 38px);
|
||||
background: #f1f2f5;
|
||||
}
|
||||
.table_box_header {
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
box-sizing: border-box;
|
||||
background: #fff;
|
||||
}
|
||||
.table_box_center {
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
|
@ -48,10 +48,11 @@ import OperateButton from "@/components/OperateButton.vue";
|
|||
import PaginaTion from "@components/Pagination.vue";
|
||||
import {
|
||||
select_by_conditions,
|
||||
get_commodity_id,
|
||||
edit_product,
|
||||
publish,
|
||||
pull_off,
|
||||
delete_one,
|
||||
get_commodity
|
||||
} from "@/api/CommodityManagement";
|
||||
import { getshopInfo } from "@/api/newlybuiltgoods";
|
||||
const activeName = ref("");
|
||||
|
@ -228,7 +229,7 @@ const ButtonListGroup = ref([
|
|||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {
|
||||
get_commodity_id(row.id).then((res) => {
|
||||
edit_product(row.id).then((res) => {
|
||||
if (res.code === "200") {
|
||||
router.push({
|
||||
path: "/NewlyBuiltGoods",
|
||||
|
@ -246,7 +247,18 @@ const ButtonListGroup = ref([
|
|||
show: false,
|
||||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {},
|
||||
confirm: (row) => {
|
||||
get_commodity(row.id).then((res) => {
|
||||
if (res.code === "200") {
|
||||
router.push({
|
||||
path: "/NewlyBuiltGoods",
|
||||
query: {
|
||||
params: JSON.stringify(res.data),
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
|
@ -348,6 +360,7 @@ const getDatas = () => {
|
|||
};
|
||||
//查询
|
||||
const onSearch = (value) => {
|
||||
commodityInfoDto.pageNo=1;
|
||||
if (value.createTime) {
|
||||
value.startCreateTime = new Date(value.createTime[0]).getTime();
|
||||
value.endCreateTime = new Date(value.createTime[1]).getTime() + 86399999;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<script setup>
|
||||
import {useRouter} from "vue-router";
|
||||
const router=useRouter();
|
||||
router.push("/saleorder");
|
||||
router.push("/NewlyBuiltGoods");
|
||||
|
||||
</script>
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
<div>
|
||||
<el-button
|
||||
style="margin: 2px 5px 2px 0px"
|
||||
v-for="(el, ind) in item.valueGrop"
|
||||
v-for="(el, ind) in item.valueGroup"
|
||||
:key="ind"
|
||||
:type="el.type"
|
||||
round
|
||||
|
@ -186,7 +186,7 @@ const submit_specification = (formEl) => {
|
|||
valueName: "",
|
||||
placeholder: "请输入规格属性,按回车健确认",
|
||||
},
|
||||
valueGrop: [],
|
||||
valueGroup: [],
|
||||
});
|
||||
ruleForm.name = "";
|
||||
});
|
||||
|
@ -199,38 +199,38 @@ function operation(status, item, index) {
|
|||
}
|
||||
}
|
||||
function onDelValueItem(index, ind) {
|
||||
newDataList.value[index].valueGrop.splice(ind, 1);
|
||||
newDataList.value[index].valueGroup.splice(ind, 1);
|
||||
}
|
||||
function input_child_keydown(e, name, index) {
|
||||
if (e.key !== "Enter" || !name) return;
|
||||
if (
|
||||
newDataList.value[index].valueGrop.find(
|
||||
newDataList.value[index].valueGroup.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;
|
||||
if (newDataList.value[index].valueGroup.length >= 10) return;
|
||||
} else {
|
||||
if (
|
||||
newDataList.value[0].valueGrop.length *
|
||||
newDataList.value[1].valueGrop.length >=
|
||||
newDataList.value[0].valueGroup.length *
|
||||
newDataList.value[1].valueGroup.length >=
|
||||
100
|
||||
)
|
||||
return;
|
||||
}
|
||||
newDataList.value[index].valueGrop.push({
|
||||
newDataList.value[index].valueGroup.push({
|
||||
type: "danger",
|
||||
label: newDataList.value[index].inputGroup.valueName,
|
||||
});
|
||||
newDataList.value[index].num = newDataList.value[index].valueGrop.length;
|
||||
newDataList.value[index].num = newDataList.value[index].valueGroup.length;
|
||||
newDataList.value[index].inputGroup.valueName = "";
|
||||
}
|
||||
const submitForm = () => {
|
||||
console.log(newDataList.value, "newDataList.value", newDataList.value.length);
|
||||
if (!newDataList.value.length)
|
||||
return ElMessage.warning("没有添加任何规格属性!");
|
||||
if (!newDataList.value.every((item) => item.valueGrop.length))
|
||||
if (!newDataList.value.every((item) => item.valueGroup.length))
|
||||
return ElMessage.warning("添加规格后至少添加一个属性值!");
|
||||
console.log(newDataList.value, "newDataList.value");
|
||||
$emit("specificationSubmit", newDataList.value);
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
v-for="el in createGoods.radio_group_goods.options"
|
||||
:key="el.value"
|
||||
:value="el.value"
|
||||
@change="el.change"
|
||||
@change="changeGoodsType"
|
||||
>{{ el.label }}</el-radio
|
||||
>
|
||||
</el-radio-group>
|
||||
|
@ -30,7 +30,7 @@
|
|||
<el-form-item :label="createGoods.radio_group_select.label">
|
||||
<div style="margin-right: 10px">
|
||||
<el-radio-group
|
||||
@change="createGoods.radio_group_select.change"
|
||||
@change="changeClass"
|
||||
v-model="ruleForm[createGoods.radio_group_select.params]"
|
||||
>
|
||||
<el-radio-button
|
||||
|
@ -53,7 +53,7 @@
|
|||
v-model="
|
||||
ruleForm.flashSaleDO[createGoods.radio_group_sell.params]
|
||||
"
|
||||
@change="createGoods.radio_group_sell.change"
|
||||
@change="changeSellType"
|
||||
>
|
||||
<el-radio
|
||||
v-for="el in createGoods.radio_group_sell.options"
|
||||
|
@ -497,8 +497,8 @@ import {
|
|||
address_default,
|
||||
publish_shelve,
|
||||
} from "@/api/newlybuiltgoods";
|
||||
|
||||
let ruleForm = reactive({
|
||||
let routerParams = reactive({});
|
||||
let ruleForm = ref({
|
||||
bidDate: [],
|
||||
auctionType: "b", //商品类型
|
||||
itemBizType: 24, //商品业务类型 0 已验货不入仓,1 已验货入仓,2 普通商品 特卖固定24
|
||||
|
@ -516,7 +516,7 @@ let ruleForm = reactive({
|
|||
desc: "", //商品描述
|
||||
reservePrice: "", //商品售价
|
||||
originalPrice: "", //商品原价
|
||||
stuffStatus: "", // 商品成色
|
||||
stuffStatus: "", //商品成色
|
||||
divisionId: "", //发货地取最后一级
|
||||
categoryId: 0, //商品类目Id,手机: 50025386(long型,一般8~10位)
|
||||
bidDto: {
|
||||
|
@ -535,12 +535,13 @@ let ruleForm = reactive({
|
|||
],
|
||||
xyImages: [], //闲鱼图片集合
|
||||
aliImages: [], //阿里图片集合
|
||||
whiteBgImage: "", // 白底图(闲鱼)
|
||||
whiteBgImage: "", //白底图(闲鱼)
|
||||
whiteAliImage: "",
|
||||
flag: "1", //草稿箱-0 发布-1
|
||||
republishId: 0, //重新发布的商品id
|
||||
logistics: "1", //物流配置 1包邮 2统一运费 bidStep
|
||||
transportFee: "", // 物流配置选择2统一运费时传递
|
||||
templateId: 0, // 物流配置选择3运费模板时候传递
|
||||
logistics: 1, //物流配置 1包邮 2统一运费 bidStep
|
||||
transportFee: "", //物流配置选择2统一运费时传递
|
||||
templateId: "", //物流配置选择3运费模板时候传递
|
||||
});
|
||||
|
||||
const createGoods = reactive({
|
||||
|
@ -554,51 +555,78 @@ const createGoods = reactive({
|
|||
{
|
||||
label: "一口价",
|
||||
value: "b",
|
||||
change: () => {
|
||||
ruleFormRef.value.clearValidate();
|
||||
priceList.fixPrice = [
|
||||
{
|
||||
type: "add",
|
||||
label: "商品规格",
|
||||
add: () => {
|
||||
priceList.specificationDialogVisible = true;
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "el-input",
|
||||
label: "售价",
|
||||
prop: "reservePrice",
|
||||
params: "reservePrice",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
type: "el-input",
|
||||
label: "原价",
|
||||
params: "originalPrice",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
type: "el-input",
|
||||
label: "库存",
|
||||
prop: "quantity",
|
||||
params: "quantity",
|
||||
disabled: true,
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
label: "成色",
|
||||
prop: "stuffStatus",
|
||||
params: "stuffStatus",
|
||||
disabled: true,
|
||||
options: qualityData.value,
|
||||
},
|
||||
];
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "拍卖",
|
||||
value: "a",
|
||||
change: () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
radio_group_select: {
|
||||
type: "el-radio-group",
|
||||
params: "itemBizType",
|
||||
options: [
|
||||
{
|
||||
label: "闲鱼特卖",
|
||||
value: 24,
|
||||
},
|
||||
{
|
||||
label: "普通商品",
|
||||
value: 2,
|
||||
},
|
||||
],
|
||||
},
|
||||
radio_group_sell: {
|
||||
type: "el-radio-group",
|
||||
label: "特卖类型",
|
||||
params: "tag",
|
||||
prop: "tag",
|
||||
loading: false,
|
||||
options: [
|
||||
{
|
||||
label: "临期",
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
label: "孤品",
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
label: "断码",
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
label: "微瑕",
|
||||
value: 4,
|
||||
},
|
||||
{
|
||||
label: "尾货",
|
||||
value: 5,
|
||||
},
|
||||
{
|
||||
label: "官翻",
|
||||
value: 6,
|
||||
},
|
||||
{
|
||||
label: "全新",
|
||||
value: 7,
|
||||
},
|
||||
{
|
||||
label: "福袋",
|
||||
value: 8,
|
||||
},
|
||||
{
|
||||
label: "其他",
|
||||
value: 9,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
const changeGoodsType = (e) => {
|
||||
console.log(e, "eree");
|
||||
ruleFormRef.value.clearValidate();
|
||||
if (e == "a") {
|
||||
ruleFormRef.value.clearValidate();
|
||||
priceList.fixPrice = [
|
||||
{
|
||||
|
@ -647,9 +675,7 @@ const createGoods = reactive({
|
|||
}
|
||||
|
||||
// 检查结束时间是否在开始时间后的15天内
|
||||
const maxEndTime = new Date(
|
||||
now.getTime() + 15 * 24 * 60 * 60 * 1000
|
||||
); // 当前时间后的15天
|
||||
const maxEndTime = new Date(now.getTime() + 15 * 24 * 60 * 60 * 1000); // 当前时间后的15天
|
||||
if (
|
||||
endTime.getTime() <= startTime.getTime() ||
|
||||
endTime.getTime() > maxEndTime.getTime()
|
||||
|
@ -660,11 +686,11 @@ const createGoods = reactive({
|
|||
return false; // 或者抛出一个错误,或者根据你的需求处理
|
||||
}
|
||||
if (e) {
|
||||
ruleForm.bidDto.bidStartTime = new Date(e[0]).getTime();
|
||||
ruleForm.bidDto.bidEndTime = new Date(e[1]).getTime();
|
||||
ruleForm.value.bidDto.bidStartTime = new Date(e[0]).getTime();
|
||||
ruleForm.value.bidDto.bidEndTime = new Date(e[1]).getTime();
|
||||
} else {
|
||||
ruleForm.bidDto.bidStartTime = "";
|
||||
ruleForm.bidDto.bidEndTime = "";
|
||||
ruleForm.value.bidDto.bidStartTime = "";
|
||||
ruleForm.value.bidDto.bidEndTime = "";
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -685,87 +711,63 @@ const createGoods = reactive({
|
|||
options: qualityData.value,
|
||||
},
|
||||
];
|
||||
} else if (e == "b") {
|
||||
priceList.fixPrice = [
|
||||
{
|
||||
type: "add",
|
||||
label: "商品规格",
|
||||
add: () => {
|
||||
priceList.specificationDialogVisible = true;
|
||||
},
|
||||
},
|
||||
],
|
||||
{
|
||||
type: "el-input",
|
||||
label: "售价",
|
||||
prop: "reservePrice",
|
||||
params: "reservePrice",
|
||||
disabled: false,
|
||||
},
|
||||
radio_group_select: {
|
||||
type: "el-radio-group",
|
||||
params: "itemBizType",
|
||||
change: (e) => {
|
||||
if (!ruleForm.classValue.length) {
|
||||
ruleForm.spBizType = 99;
|
||||
{
|
||||
type: "el-input",
|
||||
label: "原价",
|
||||
params: "originalPrice",
|
||||
disabled: false,
|
||||
},
|
||||
{
|
||||
type: "el-input",
|
||||
label: "库存",
|
||||
prop: "quantity",
|
||||
params: "quantity",
|
||||
disabled: true,
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
label: "成色",
|
||||
prop: "stuffStatus",
|
||||
params: "stuffStatus",
|
||||
disabled: true,
|
||||
options: qualityData.value,
|
||||
},
|
||||
];
|
||||
}
|
||||
};
|
||||
const changeClass = (e) => {
|
||||
console.log(e);
|
||||
if (!ruleForm.value.classValue.length) {
|
||||
ruleForm.value.spBizType = 99;
|
||||
return;
|
||||
}
|
||||
e == "24"
|
||||
? (ruleForm.spBizType = "99")
|
||||
: (ruleForm.spBizType = ruleForm.classValue[0]);
|
||||
},
|
||||
options: [
|
||||
{
|
||||
label: "闲鱼特卖",
|
||||
value: "24",
|
||||
},
|
||||
{
|
||||
label: "普通商品",
|
||||
value: "2",
|
||||
},
|
||||
],
|
||||
},
|
||||
radio_group_sell: {
|
||||
type: "el-radio-group",
|
||||
label: "特卖类型",
|
||||
params: "tag",
|
||||
prop: "tag",
|
||||
loading: false,
|
||||
options: [
|
||||
{
|
||||
label: "临期",
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
label: "孤品",
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
label: "断码",
|
||||
value: 3,
|
||||
},
|
||||
{
|
||||
label: "微瑕",
|
||||
value: 4,
|
||||
},
|
||||
{
|
||||
label: "尾货",
|
||||
value: 5,
|
||||
},
|
||||
{
|
||||
label: "官翻",
|
||||
value: 6,
|
||||
},
|
||||
{
|
||||
label: "全新",
|
||||
value: 7,
|
||||
},
|
||||
{
|
||||
label: "福袋",
|
||||
value: 8,
|
||||
},
|
||||
{
|
||||
label: "其他",
|
||||
value: 9,
|
||||
},
|
||||
],
|
||||
change: () => {
|
||||
? (ruleForm.value.spBizType = "99")
|
||||
: (ruleForm.value.spBizType = ruleForm.value.classValue[0]);
|
||||
};
|
||||
const changeSellType = () => {
|
||||
getGoodsType().then((res) => {
|
||||
if (res.code === "200") {
|
||||
information.goods_class.options = res.data;
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
};
|
||||
const information = reactive({
|
||||
title: "基本信息",
|
||||
goods_class: {
|
||||
|
@ -778,28 +780,33 @@ const information = reactive({
|
|||
options: [],
|
||||
visibleChange: (isshow) => {
|
||||
if (isshow) return;
|
||||
ruleForm.itemBizType == "24"
|
||||
? (ruleForm.spBizType = "99")
|
||||
: (ruleForm.spBizType = ruleForm.classValue[0]);
|
||||
ruleForm.channelCatId = ruleForm.classValue[2];
|
||||
ruleForm.categoryId = ruleForm.classValue[1];
|
||||
ruleForm.value.itemBizType == 24
|
||||
? (ruleForm.value.spBizType = "99")
|
||||
: (ruleForm.value.spBizType = ruleForm.value.classValue[0]);
|
||||
ruleForm.value.channelCatId = ruleForm.value.classValue[2];
|
||||
ruleForm.value.categoryId = ruleForm.value.classValue[1];
|
||||
information.goods_class.loading = true;
|
||||
information.goods_class.show = true;
|
||||
setTimeout(() => {
|
||||
getGoodsInfo(`${ruleForm.classValue[2]}`)
|
||||
getGoodsInfo(`${ruleForm.value.classValue[2]}`)
|
||||
.then((res) => {
|
||||
information.goods_class.loading = false;
|
||||
if (res.code === "200") {
|
||||
let new_data = Object.assign([], res.data);
|
||||
ruleForm.pvListDtoList = [];
|
||||
routerParams
|
||||
? (ruleForm.value.pvListDtoList = routerParams.pvListDtoList)
|
||||
: (ruleForm.value.pvListDtoList = []);
|
||||
information.goods_attribute.group = [];
|
||||
new_data.map((item) => {
|
||||
ruleForm.pvListDtoList.push({
|
||||
if (!routerParams) {
|
||||
ruleForm.value.pvListDtoList.push({
|
||||
propertyId: "",
|
||||
propertyName: "",
|
||||
valueId: "",
|
||||
valueName: "",
|
||||
});
|
||||
}
|
||||
|
||||
item.child = item.child.map((e) => {
|
||||
return {
|
||||
value: e.property_name,
|
||||
|
@ -825,10 +832,8 @@ const information = reactive({
|
|||
}, 500 * Math.random());
|
||||
},
|
||||
handleSelect: (item, el, index) => {
|
||||
console.log(item, "itemtemtekte");
|
||||
|
||||
const pvlistdto = item.options.find((e) => e.link == el);
|
||||
ruleForm.pvListDtoList[index] = {
|
||||
ruleForm.value.pvListDtoList[index] = {
|
||||
propertyId: item.propertyId,
|
||||
propertyName: item.label,
|
||||
valueId: pvlistdto.link,
|
||||
|
@ -846,7 +851,6 @@ const information = reactive({
|
|||
information.goods_class.show = false;
|
||||
});
|
||||
}, 500);
|
||||
console.log(ruleForm, "ruleform");
|
||||
},
|
||||
},
|
||||
goods_attribute: {
|
||||
|
@ -880,27 +884,42 @@ const goodsInfo = reactive({
|
|||
onSuccessFiles: (filelist) => {
|
||||
uploadImage({
|
||||
filekey: "files",
|
||||
xyShopId: ruleForm.xyShopId,
|
||||
xyShopId: ruleForm.value.xyShopId,
|
||||
files: filelist,
|
||||
}).then((res) => {
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === "200") {
|
||||
ruleForm.xyImages = res.data.xy; //闲鱼图片集合
|
||||
ruleForm.aliImages = res.data.ali; //阿里图片集合
|
||||
if (!routerParams) {
|
||||
ruleForm.value.xyImages = res.data.xy; //闲鱼图片集合
|
||||
ruleForm.value.aliImages = res.data.ali; //阿里图片集合
|
||||
} else {
|
||||
ruleForm.value.xyImages = [
|
||||
...ruleForm.value.xyImages,
|
||||
...res.data.xy,
|
||||
];
|
||||
ruleForm.value.aliImages = [
|
||||
...ruleForm.value.aliImages,
|
||||
...res.data.ali,
|
||||
];
|
||||
}
|
||||
} else {
|
||||
ElMessage.warning(res.msg);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
ElMessage.error("上传失败");
|
||||
});
|
||||
},
|
||||
handleRemove: (filelist) => {
|
||||
if (!ruleForm.aliImages.length) return;
|
||||
if (!ruleForm.value.aliImages.length) return;
|
||||
const nameToFind = filelist[0].name;
|
||||
const index = ruleForm.aliImages.findIndex((url) => {
|
||||
const index = ruleForm.value.aliImages.findIndex((url) => {
|
||||
const urlParts = url.split("/");
|
||||
const filename = urlParts[urlParts.length - 1];
|
||||
return filename.includes(nameToFind);
|
||||
});
|
||||
ruleForm.aliImages.splice(index, 1);
|
||||
ruleForm.xyImages.splice(index, 1);
|
||||
ruleForm.value.aliImages.splice(index, 1);
|
||||
ruleForm.value.xyImages.splice(index, 1);
|
||||
},
|
||||
},
|
||||
White_src: {
|
||||
|
@ -914,16 +933,17 @@ const goodsInfo = reactive({
|
|||
onSuccessFiles: (filelist) => {
|
||||
uploadImage({
|
||||
filekey: "files",
|
||||
xyShopId: ruleForm.xyShopId,
|
||||
xyShopId: ruleForm.value.xyShopId,
|
||||
files: filelist,
|
||||
}).then((res) => {
|
||||
if (res.code === "200") {
|
||||
ruleForm.whiteBgImage = res.data.xy[0];
|
||||
ruleForm.value.whiteBgImage = res.data.xy[0];
|
||||
ruleForm.value.whiteAliImage = res.data.ali[0];
|
||||
}
|
||||
});
|
||||
},
|
||||
handleRemove: () => {
|
||||
ruleForm.whiteBgImage = "";
|
||||
ruleForm.value.whiteBgImage = "";
|
||||
},
|
||||
},
|
||||
Deliver_location: {
|
||||
|
@ -935,7 +955,8 @@ const goodsInfo = reactive({
|
|||
options: [],
|
||||
visibleChange: (e) => {
|
||||
if (e) return;
|
||||
ruleForm.divisionId = goodsInfo.Deliver_location.params.slice(-1)[0];
|
||||
ruleForm.value.divisionId =
|
||||
goodsInfo.Deliver_location.params.slice(-1)[0];
|
||||
},
|
||||
},
|
||||
});
|
||||
|
@ -993,29 +1014,29 @@ const logistics = reactive({
|
|||
options: [
|
||||
{
|
||||
label: "包邮",
|
||||
value: "1",
|
||||
value: 1,
|
||||
},
|
||||
{
|
||||
label: "统一运费",
|
||||
value: "2",
|
||||
value: 2,
|
||||
},
|
||||
{
|
||||
label: "运费模板",
|
||||
value: "3",
|
||||
value: 3,
|
||||
},
|
||||
],
|
||||
change: () => {},
|
||||
},
|
||||
});
|
||||
const bidStep = (rule, value, callback) => {
|
||||
if (ruleForm.bidDto.bidStep === "") {
|
||||
if (ruleForm.value.bidDto.bidStep === "") {
|
||||
callback(new Error("出价幅度,不能为空"));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
};
|
||||
const bidBail = (rule, value, callback) => {
|
||||
if (ruleForm.bidDto.bidBail === "") {
|
||||
if (ruleForm.value.bidDto.bidBail === "") {
|
||||
callback(new Error("保证金,不能为空"));
|
||||
} else {
|
||||
callback();
|
||||
|
@ -1067,7 +1088,7 @@ const add_xyShop = () => {
|
|||
};
|
||||
//选择店铺
|
||||
const select_store = (item) => {
|
||||
ruleForm.xyShopId = item.id;
|
||||
ruleForm.value.xyShopId = item.id;
|
||||
};
|
||||
|
||||
const newDataList = ref([]);
|
||||
|
@ -1078,7 +1099,6 @@ const specificationSubmit = (row) => {
|
|||
priceList.specification_arr = deepClone(row);
|
||||
const specification_list = [];
|
||||
const tabelList = [];
|
||||
|
||||
priceList.fixPrice = [
|
||||
{
|
||||
type: "edit",
|
||||
|
@ -1172,7 +1192,7 @@ const specificationSubmit = (row) => {
|
|||
params: "inventory",
|
||||
keydown: (e, data, el) => {
|
||||
if (e.key !== "Enter") return;
|
||||
if (data.tableData.every((item) => !item.price)) {
|
||||
if (data.tableData.every((item) => !item.inventory)) {
|
||||
data.tableData.forEach((item) => {
|
||||
item.inventory = el.search;
|
||||
});
|
||||
|
@ -1202,7 +1222,7 @@ const specificationSubmit = (row) => {
|
|||
},
|
||||
];
|
||||
row.forEach((item) => {
|
||||
specification_list.push({ key: item.label, value: item.valueGrop });
|
||||
specification_list.push({ key: item.label, value: item.valueGroup });
|
||||
|
||||
tabelList.push({
|
||||
label: item.label,
|
||||
|
@ -1257,6 +1277,7 @@ const specificationSubmit = (row) => {
|
|||
if (item.type === "edit") {
|
||||
item.specification_list = specification_list;
|
||||
} else if (item.type === "el-table") {
|
||||
console.log(item.tabelList, "fsdfdsfsd");
|
||||
item.tabelList = [...tabelList, ...item.tabelList];
|
||||
}
|
||||
});
|
||||
|
@ -1265,7 +1286,7 @@ const specificationSubmit = (row) => {
|
|||
|
||||
const get_filters = (arr) => {
|
||||
let filters = [];
|
||||
arr.valueGrop.map((e) => {
|
||||
arr.valueGroup.map((e) => {
|
||||
filters.push({ label: e.label, value: e.label });
|
||||
});
|
||||
return filters;
|
||||
|
@ -1280,7 +1301,7 @@ const generateCombinations = (attributeGroups) => {
|
|||
}
|
||||
// 遍历当前属性组的所有值
|
||||
const group = attributeGroups[index];
|
||||
group.valueGrop.forEach((value) => {
|
||||
group.valueGroup.forEach((value) => {
|
||||
// 递归调用,将当前值添加到当前组合中,并继续到下一个属性组
|
||||
generate(index + 1, {
|
||||
...current,
|
||||
|
@ -1311,7 +1332,7 @@ const get_shopInfo = () => {
|
|||
const get_region = () => {
|
||||
address_default(1).then((res) => {
|
||||
if (res.code === "200") {
|
||||
ruleForm.divisionId = res.data.district_id;
|
||||
ruleForm.value.divisionId = res.data.district_id;
|
||||
goodsInfo.Deliver_location.params = [
|
||||
res.data.province_id,
|
||||
res.data.city_id,
|
||||
|
@ -1337,6 +1358,7 @@ const get_region = () => {
|
|||
}
|
||||
});
|
||||
};
|
||||
|
||||
//获取机器成色
|
||||
const get_qualityList = () => {
|
||||
qualityList().then((res) => {
|
||||
|
@ -1366,9 +1388,11 @@ const publish = (formRef) => {
|
|||
dataList.tableData,
|
||||
dataList.tabelList
|
||||
);
|
||||
ruleForm.skuList = ruleFormSkuList;
|
||||
ruleForm.value.skuList = ruleFormSkuList;
|
||||
}
|
||||
publish_shelve(ruleForm).then((res) => {
|
||||
ruleForm.value.flag = "1";
|
||||
ruleform.value.republishId='';
|
||||
publish_shelve(ruleForm.value).then((res) => {
|
||||
if (res.code === "200") {
|
||||
ElMessage.success(res.msg);
|
||||
} else {
|
||||
|
@ -1386,9 +1410,7 @@ function generateSkuList(array1, array2) {
|
|||
property: [], // 初始化销售属性数组
|
||||
};
|
||||
array2.forEach((item) => {
|
||||
console.log(item, "item,");
|
||||
let value = skuVariant[item.params];
|
||||
console.log(value, "value", skuVariant, "skuVariant");
|
||||
sku.quantity = skuVariant.inventory;
|
||||
sku.price = skuVariant.price;
|
||||
if (
|
||||
|
@ -1404,59 +1426,85 @@ function generateSkuList(array1, array2) {
|
|||
|
||||
return skuList;
|
||||
}
|
||||
onMounted(() => {
|
||||
if (route.query.params) {
|
||||
let params = JSON.parse(route.query.params);
|
||||
// console.log(params,"praaafsdf");
|
||||
// ruleForm = {
|
||||
// bidDate: [],
|
||||
// auctionType: params.auctionType, //商品类型
|
||||
// itemBizType: params.itemBizType, //商品业务类型 0 已验货不入仓,1 已验货入仓,2 普通商品 特卖固定24
|
||||
// flashSaleDO: {
|
||||
// tag: params.flashSaleType,
|
||||
// foodProDate: "", //选择临期类型必传 - 食品生产日期
|
||||
// foodExpireDate: "", //选择临期类型必传 - 食品过期日期
|
||||
// }, //特卖类型
|
||||
// xyShopId: "",
|
||||
// channelCatId: "", //最后一层分类id
|
||||
// classValue: [],
|
||||
// spBizType: "99", //特卖固定99 已验货业务场景下(手机:1, 潮品:2, 家电:3, 乐器:8, 3C数码:9, 奢品:16, 母婴:17, 美妆:18, 文玩/珠宝:19, 潮玩:20, 家居:21)
|
||||
// pvListDtoList: [],
|
||||
// title: "", //商品标题
|
||||
// desc: "", //商品描述
|
||||
// reservePrice: "", //商品售价
|
||||
// originalPrice: "", //商品原价
|
||||
// stuffStatus: "", // 商品成色
|
||||
// divisionId: "", //发货地取最后一级
|
||||
// categoryId: 0, //商品类目Id,手机: 50025386(long型,一般8~10位)
|
||||
// bidDto: {
|
||||
// bidBail: "", //保证金金额,单位分
|
||||
// bidStep: "", //出价幅度,单位分
|
||||
// bidEndTime: "", //拍卖结束时间戳,单位毫秒
|
||||
// bidStartTime: "", // 拍卖起拍时间戳,单位毫秒
|
||||
// }, //拍卖
|
||||
// quantity: 1, //库存
|
||||
// skuList: [
|
||||
// {
|
||||
// quantity: 0, //库存
|
||||
// price: 0, //价格
|
||||
// property: [{ key: "", value: "" }], //销售属性
|
||||
// },
|
||||
// ],
|
||||
// xyImages: [], //闲鱼图片集合
|
||||
// aliImages: [], //阿里图片集合
|
||||
// whiteBgImage: "", // 白底图(闲鱼)
|
||||
// flag: "1", //草稿箱-0 发布-1
|
||||
// republishId: 0, //重新发布的商品id
|
||||
// logistics: "1", //物流配置 1包邮 2统一运费 bidStep
|
||||
// transportFee: "", // 物流配置选择2统一运费时传递
|
||||
// templateId: 0, // 物流配置选择3运费模板时候传递
|
||||
// };
|
||||
const transformSkuList = (skuList) => {
|
||||
// 创建一个对象来存储独特的属性及其值
|
||||
const uniqueProperties = {};
|
||||
|
||||
// 遍历 skuList,填充 uniqueProperties
|
||||
skuList.forEach((sku) => {
|
||||
sku.propertyList.forEach((prop) => {
|
||||
if (!uniqueProperties[prop.propertyText]) {
|
||||
uniqueProperties[prop.propertyText] = new Set();
|
||||
}
|
||||
uniqueProperties[prop.propertyText].add(prop.valueText);
|
||||
});
|
||||
});
|
||||
// 转换 uniqueProperties 为所需的输出格式
|
||||
let index = 1;
|
||||
const result = [];
|
||||
for (const [propertyText, values] of Object.entries(uniqueProperties)) {
|
||||
result.push({
|
||||
label: propertyText,
|
||||
num: values.size, // 使用 Set 的 size 属性来获取唯一值的数量
|
||||
index: index++, // 这里假设所有属性的 index 都是 1,或者你可以根据需要计算它
|
||||
disabled: false,
|
||||
buttonGroup: [
|
||||
{ type: "primary", label: "编辑" },
|
||||
{ type: "danger", label: "删除" },
|
||||
],
|
||||
inputGroup: {
|
||||
valueName: "",
|
||||
placeholder: "请输入规格属性,按回车健确认",
|
||||
},
|
||||
valueGroup: Array.from(values).map((valueText) => ({
|
||||
type: "danger",
|
||||
label: valueText,
|
||||
})),
|
||||
});
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
onMounted(() => {
|
||||
get_shopInfo();
|
||||
get_region();
|
||||
get_qualityList();
|
||||
createGoods.radio_group_sell.change();
|
||||
changeSellType();
|
||||
if (route.query.params) {
|
||||
try {
|
||||
routerParams = JSON.parse(route.query.params);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
console.log(routerParams, "params");
|
||||
if (routerParams.classValue && routerParams.classValue.length) {
|
||||
routerParams.classValue[0] = Number(routerParams.classValue[0]);
|
||||
routerParams.classValue[1] = Number(routerParams.classValue[1]);
|
||||
}
|
||||
routerParams.logistics = Number(routerParams.logistics);
|
||||
|
||||
routerParams.aliImages.map((e) => {
|
||||
goodsInfo.more_src.fileImgList.push({ url: e });
|
||||
});
|
||||
if (routerParams.whiteAliImage) {
|
||||
goodsInfo.White_src.fileImgList.push({ url: routerParams.whiteAliImage });
|
||||
}
|
||||
if (routerParams.skuList && routerParams.skuList.length) {
|
||||
let row = transformSkuList(routerParams.skuList);
|
||||
specificationSubmit(row);
|
||||
console.log(priceList.fixPrice.find((e) => e.label == "销售规格").tableData);
|
||||
priceList.fixPrice.find((e) => e.label == "销售规格").tableData.forEach((item,index)=>{
|
||||
item.price=routerParams.skuList[index].price
|
||||
item.inventory=routerParams.skuList[index].quantity
|
||||
})
|
||||
priceList.fixPrice.find((e) => e.label == "销售规格").new_tableData.forEach((item,index)=>{
|
||||
item.price=routerParams.skuList[index].price
|
||||
item.inventory=routerParams.skuList[index].quantity
|
||||
})
|
||||
}
|
||||
ruleForm.value = routerParams;
|
||||
information.goods_class.visibleChange(false);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
@ -1545,6 +1593,7 @@ onMounted(() => {
|
|||
display: inline-block;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
font-size: 14px;
|
||||
border-radius: 8px;
|
||||
margin: 5px 10px 5px 0;
|
||||
cursor: pointer;
|
||||
|
@ -1563,7 +1612,6 @@ onMounted(() => {
|
|||
}
|
||||
|
||||
.create_shop {
|
||||
width: 135px;
|
||||
display: flex;
|
||||
border: 1px dashed #409eff;
|
||||
color: #409eff;
|
||||
|
@ -1633,6 +1681,7 @@ onMounted(() => {
|
|||
line-height: 80px;
|
||||
text-align: right;
|
||||
padding: 0 40px;
|
||||
box-sizing: border-box;
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
|
@ -1648,3 +1697,14 @@ onMounted(() => {
|
|||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,803 +0,0 @@
|
|||
<template>
|
||||
<div class="box">
|
||||
<div style="padding:10px 20px">
|
||||
<div class="formContainer">
|
||||
<div >
|
||||
<h4 class="leftBox" style="margin-left: 10px;">运营数据</h4>
|
||||
</div>
|
||||
<div class="righrContainer">
|
||||
|
||||
<el-select size="small" v-model="data.form.region" :style="{width:'120px'}" placeholder="全部店铺" clearable @change="seleteChange">
|
||||
<el-option v-for="item in data.accountData" :key="item.account_config_id" :label="item.account" :value="item.account_config_id"></el-option>
|
||||
</el-select>
|
||||
<div class="rightBox">
|
||||
<el-radio-group v-model="data.radio1" size="small" @change="tableTimeChange">
|
||||
<el-radio-button label="今日"></el-radio-button>
|
||||
<el-radio-button label="本月"></el-radio-button>
|
||||
<el-radio-button label="自定义"></el-radio-button>
|
||||
</el-radio-group>
|
||||
<div class="righttime">
|
||||
<el-date-picker
|
||||
v-if="data.radio1 == '自定义'"
|
||||
v-model="data.transactionDataTime1"
|
||||
type="datetimerange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
size="small"
|
||||
@change="transactionchange1"
|
||||
:value-format="'X'"
|
||||
format="YYYY-MM-DD"
|
||||
:default-time="[
|
||||
new Date(0, 0, 0, 0, 0, 0),
|
||||
new Date(0, 0, 0, 23, 59, 59)
|
||||
]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header" v-loading="data.headerLoading">
|
||||
<div class="right">
|
||||
<div class="top">
|
||||
<div class="one">
|
||||
<p>运营收入 (元)</p>
|
||||
<p style="color:red;font-size:18px;margin:10px 0">{{data.operateData.operating_income}}</p>
|
||||
</div>
|
||||
<div class="one" >
|
||||
<div>新增上架数量</div>
|
||||
<div style="font-size:18px;margin:10px 0">{{data.operateData.today_shelf_num}}</div>
|
||||
<!-- <div v-if="data.radio1 != '自定义'">{{data.radio1 == "今日" ? "昨日" : data.radio1 == "本月" ? "上月" : ''}} {{data.operateYesterData.today_shelf_num}}</div> -->
|
||||
</div>
|
||||
<div class="one">
|
||||
<div>待审核数量</div>
|
||||
<div style="font-size:18px;margin:10px 0">{{data.operateData.wait_examine_num}}</div>
|
||||
</div>
|
||||
<div class="one">
|
||||
<div>在架数量</div>
|
||||
<div style="font-size:18px;margin:10px 0">{{data.operateData.on_shelf_num}}</div>
|
||||
</div>
|
||||
<div class="one">
|
||||
<div>待发货</div>
|
||||
<div style="font-size:18px;margin:10px 0">{{data.operateData.wait_deliver_goods_num}}</div>
|
||||
</div>
|
||||
<div class="one">
|
||||
<div>待售后</div>
|
||||
<div style="font-size:18px;margin:10px 0">{{data.operateData.wait_sale_after_num}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="two salesNum" style="display:flex;padding:10px 10px">
|
||||
<div style="margin-right:105px">
|
||||
<div>销售数量</div>
|
||||
<div style="font-size:18px;margin:9px 0">{{data.salesInfo.sales_num}}</div>
|
||||
<div v-if="data.radio1 != '自定义'">{{data.radio1 == "今日" ? "昨日" : data.radio1 == "本月" ? "上月" : ''}} {{data.yrsterSalesInfo.sales_num}}</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>销售金额 (元)</p>
|
||||
<p style="color:red;font-size:18px">{{ isNaN(Number(data.salesInfo.payment)) ? 0 : Number(data.salesInfo.payment)}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="two refundsNum" style="display:flex;padding:10px 10px" >
|
||||
<div style="margin-right:105px">
|
||||
<div>退货数量</div>
|
||||
<div style="font-size:18px;margin:9px 0">{{data.refundsInfo.refunds_num}}</div>
|
||||
<div v-if="data.radio1 != '自定义'">{{data.radio1 == "今日" ? "昨日" : data.radio1 == "本月" ? "上月" : ''}} {{data.yrsterSalesInfo.sales_num}}</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>退货率</p>
|
||||
<p style="color:red;font-size:18px">
|
||||
{{
|
||||
isNaN(Number(data.salesInfo.sales_num)) || isNaN(Number(data.refundsInfo.refunds_num))
|
||||
? 0
|
||||
: Number(data.salesInfo.sales_num) === 0 || Number(data.refundsInfo.refunds_num) === 0
|
||||
? '0'
|
||||
: (Number(data.refundsInfo.refunds_num) / Number(data.salesInfo.sales_num) * 100).toFixed(2) + '%'
|
||||
}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="two payment" style="padding:10px 10px">
|
||||
<div>客单价 (元)</div>
|
||||
<div style="font-size:18px;margin:10px 0">{{ isNaN(Number(data.salesInfo.payment) / Number(data.salesInfo.sales_num)) ? 0 : (Number(data.salesInfo.payment) / Number(data.salesInfo.sales_num)).toFixed(2) }}</div>
|
||||
<div v-if="data.radio1 != '自定义'">{{data.radio1 == "今日" ? "昨日" :data.radio1 == "本月" ? "上月" : ''}} {{ isNaN( Number(data.yrsterSalesInfo.payment) / Number(data.yrsterSalesInfo.sales_num)) ? 0 : (Number(data.yrsterSalesInfo.payment) / Number(data.yrsterSalesInfo.sales_num)).toFixed(2) }}</div>
|
||||
</div>
|
||||
<div class="two turnover" style="padding:10px 10px" >
|
||||
<div>动销率</div>
|
||||
<div style="font-size:18px;margin:10px 0">
|
||||
{{ isNaN(Number(data.salesInfo.sales_num) / Number(data.operateData.on_shelf_num)) ? 0 : (Number(data.salesInfo.sales_num) / Number(data.operateData.on_shelf_num) * 100).toFixed(2) + '%'
|
||||
}}
|
||||
</div>
|
||||
|
||||
<div v-if="data.radio1 != '自定义'">{{data.radio1 == "今日" ? "昨日" : data.radio1 == "本月" ? "上月" : ''}} {{ isNaN(Number(data.yrsterSalesInfo.sales_num) / Number(data.operateYesterData.on_shelf_num)) ? 0 : (Number(data.yrsterSalesInfo.sales_num) / Number(data.operateYesterData.on_shelf_num ) * 100).toFixed(2) + '%'}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 表格 -->
|
||||
<div class="bottomContainer">
|
||||
<div class="center" style="display:flex;justify-content: space-between;margin: 20px 0">
|
||||
<div class="left" style="font-size:16px;font-weight:600">
|
||||
<span style="margin-right:5px">本页数据:</span>
|
||||
<span style="margin-right:5px">共{{data.numberAll}}家</span>
|
||||
<span style="margin-right:5px">今日上架{{data.operateData.on_shelf_num}}台</span>
|
||||
<span style="margin-right:5px">今日售出{{data.operateData.wait_deliver_goods_num}}台</span>
|
||||
<span style="margin-right:5px">销售金额{{ salesPayment }}元 客单价 {{ isNaN(Number(data.salesInfo.payment) / Number(data.salesInfo.sales_num)) ? 0 : (Number(data.salesInfo.payment) / Number(data.salesInfo.sales_num)).toFixed(2) }} 元</span>
|
||||
</div>
|
||||
<div class="right" style="margin-left:20px">
|
||||
<el-button
|
||||
class="custom-button"
|
||||
@click="refreshhandler"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
<i class="el-icon-refresh" style="font-size: 20px"></i>
|
||||
</el-button>
|
||||
<el-button
|
||||
class="custom-button"
|
||||
type="text"
|
||||
size="small"
|
||||
>
|
||||
<i class="el-icon-upload2" style="font-size: 20px"></i>
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottomBox">
|
||||
<div class="footer" style="display:flex;justify-content: space-between;margin-top:10px">
|
||||
<div class="zhandian">
|
||||
<el-form ref="formRef" :model="data.form" style="display:flex">
|
||||
<el-form-item>
|
||||
<el-select size="small" v-model="data.form.region1" style="margin-left:10px;min-width:120px" placeholder="全部用户" clearable @change="seleteChange2">
|
||||
<el-option v-for="item in data.serviceList" :key="item.p_user_id" :label="item.username" :value="item.p_user_id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select size="small" v-model="data.form.region2" style="margin-left:10px;min-width:120px" clearable placeholder="全部店铺" @change="seleteChange3">
|
||||
<el-option v-for="item in data.accountData" :key="item.account_config_id" :label="item.account" :value="item.account_config_id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item style="margin-left:10px">
|
||||
<el-button size="small" type="primary" @click="search">查询</el-button>
|
||||
<el-button size="small" type="danger" @click="resetData">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="time">
|
||||
<div class="rightBottomBox">
|
||||
<el-radio-group v-model="data.radio2" size="small" @change="tableTimeChange2">
|
||||
<el-radio-button label="今日"></el-radio-button>
|
||||
<el-radio-button label="本月"></el-radio-button>
|
||||
<el-radio-button label="自定义"></el-radio-button>
|
||||
</el-radio-group>
|
||||
<div style="margin-left:10px">
|
||||
<el-date-picker
|
||||
v-if="data.radio2 == '自定义'"
|
||||
v-model="data.transactionDataTime2"
|
||||
type="datetimerange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
size="small"
|
||||
@change="transactionchange2"
|
||||
:value-format="'X'"
|
||||
format="YYYY-MM-DD"
|
||||
:default-time="[
|
||||
new Date(0, 0, 0, 0, 0, 0),
|
||||
new Date(0, 0, 0, 23, 59, 59)
|
||||
]"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<vxe-table
|
||||
ref="xTable"
|
||||
:data="newtableData"
|
||||
border
|
||||
:span-method="colspanMethod"
|
||||
:row-config="{ isHover: true }"
|
||||
:loading="data.loading"
|
||||
:fixed="true"
|
||||
:height="height"
|
||||
:header-cell-style="{
|
||||
height: '70px',
|
||||
color: '#606266',
|
||||
'text-align': 'center',
|
||||
}"
|
||||
>
|
||||
<vxe-column
|
||||
v-for="(item,index) in data.tableLabel"
|
||||
:key="index"
|
||||
:title="item.label"
|
||||
:field="item.param"
|
||||
:width="item.width"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span v-if="row.render" class="topSpan">
|
||||
<span style="margin-left:15px;letter-spacing:0px;">
|
||||
0{{row.index}}
|
||||
</span>
|
||||
<span v-if="row.truename" style="margin-left:50px"><a class="aIcon"><i class="el-icon-user" style="font-size:20px"></i></a>用户名称:{{row.truename}}</span>
|
||||
<span v-if="row.company">公司名称:{{row.company}}</span>
|
||||
<span v-if="row.account" style="margin-left:52px"><a class="aIcon"><i class="el-icon-takeaway-box" style="font-size:20px"></i></a>商户拥有店铺:{{row.account}}</span>
|
||||
</span>
|
||||
<span v-else-if="!row.render">
|
||||
<span v-if="item.label == '销售金额'" class="spanBottom">
|
||||
{{ Number(row.sales_amount) ? Number(row.sales_amount).toFixed(2): 0}}
|
||||
</span>
|
||||
<span v-else-if="item.label == '客单价'" class="spanBottom">
|
||||
{{isNaN(Number(row.sales_amount) / Number(row.sales_num)) ? 0 : (Number(row.sales_amount) / Number(row.sales_num)).toFixed(2)}}
|
||||
</span>
|
||||
<span v-else-if="item.label == '动销率'" class="spanBottom" >{{
|
||||
isNaN(Number(row.sales_num)) || isNaN(Number(row.on_shelf_num))
|
||||
? 0
|
||||
: row.sales_num === 0 || row.on_shelf_num == 0
|
||||
? '0'
|
||||
: (Number(row.sales_num) / Number(row.on_shelf_num) * 100).toFixed(2) + '%'
|
||||
}}</span>
|
||||
|
||||
<span v-else-if="item.label == '退货率'" class="spanBottom">
|
||||
{{
|
||||
isNaN(Number(row.refunds_num)) || isNaN(Number(row.sales_num))
|
||||
? 0
|
||||
: Number(row.refunds_num) === 0 || Number(row.sales_num) === 0
|
||||
? '0'
|
||||
: (Number(row.refunds_num) / Number(row.sales_num) * 100).toFixed(2) + '%'
|
||||
}}
|
||||
</span>
|
||||
<span v-else class="spanBottom">{{ row[item.param] }}</span>
|
||||
</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ElMessage } from "element-plus";
|
||||
import {site_operation_data_statistics,site_operation_data_details,get_site_account,service_provider_list} from "@/api/OperationCenter"
|
||||
import { getToday, getCurrMonthDays, getYesterday ,getLastMonthDays} from '@/utils/timeData';
|
||||
import { computed, reactive,ref,onMounted } from 'vue';
|
||||
|
||||
|
||||
const formRef=ref(null);
|
||||
const data=reactive({
|
||||
radio1: '今日',
|
||||
radio2:'今日',
|
||||
form:{},
|
||||
region:'' ,
|
||||
region1:'',
|
||||
region2:'',
|
||||
formLabelAlign:{},
|
||||
formLabelAlign2:{},
|
||||
operateData:{},
|
||||
transactionDataTime1:[],
|
||||
transactionDataTime2:[],
|
||||
ReconciliationCenterList:[],
|
||||
accountData:[],
|
||||
serviceList:[],
|
||||
tableDate:[],
|
||||
refundsInfo:[],
|
||||
salesInfo:[],
|
||||
yrsterSalesInfo:[],
|
||||
yesterRefundsInfo:[],
|
||||
yesterTime:{},
|
||||
operateYesterData:[],
|
||||
numberAll:0,
|
||||
loading:false,
|
||||
headerLoading:false,
|
||||
tableLabel:[
|
||||
{ label: "新增上架数量", id: 1,param:"today_shelf_num",show:true,align: "center",width: "120",},
|
||||
{ label: "待审核数量", id: 2,param:"wait_examine_num",show:true,align: "center", },
|
||||
{ label: "在架数量", id: 3,param:"on_shelf_num",show:true,align: "center",},
|
||||
{ label: "销售数量", id: 4 ,param:"sales_num",show:true,align: "center",},
|
||||
{ label: "销售金额", id: 5, param:"sales_amount",show:true,align: "center",},
|
||||
{ label: "退货数量", id: 6, param:"refunds_num",show:true,align: "center",},
|
||||
{ label: "退货率", id: 7, param:"refunds_amount",show:true,align: "center",},
|
||||
{ label: "客单价", id: 8, param:"",show:true,align: "center",},
|
||||
{ label: "动销率", id: 9, param:"",show:true,align: "center",},
|
||||
{ label: "待发货", id: 10, param:"wait_deliver_goods_num",show:true,align: "center",},
|
||||
{ label: "待售后", id: 11, param:"wait_sale_after_num",show:true,align: "center",},
|
||||
// { label: "软件服务费", id:12, param:"",show:true,align: "center",},
|
||||
{ label: "运营收入", id:13, param:"operating_income",show:true,align: "center",},
|
||||
// { label: "累计收益", id:14, param:"operating_income",show:true,align: "center",},
|
||||
],
|
||||
});
|
||||
|
||||
const newtableData=computed(()=>{
|
||||
if (data.tableDate.length == 0) return;
|
||||
let result = [];
|
||||
let truncatedAccount = ''
|
||||
// const arr = this._.cloneDeep(data.tableDate);
|
||||
const arr = JSON.parse(JSON.stringify(data.tableDate));
|
||||
arr.sort((a, b) => b.sales_num - a.sales_num);
|
||||
result = arr.map((item) => [{ ...item }, { ...item }]).flat();
|
||||
result.map((e, i) => {
|
||||
if (e && e.account && e.account.length > 11) {
|
||||
truncatedAccount = e.account.substring(0, 11) + '...';
|
||||
} else {
|
||||
truncatedAccount = e.account;
|
||||
}
|
||||
e.index=i/2 + 1;
|
||||
// this.$set(e, "index", i/2 + 1);
|
||||
if (i % 2 === 0) {
|
||||
e.account=truncatedAccount;
|
||||
e.render=true;
|
||||
e.checked=false;
|
||||
} else {
|
||||
e.render=false;
|
||||
}
|
||||
});
|
||||
console.log('--------000',result);
|
||||
return result;
|
||||
});
|
||||
|
||||
const tablelabelLen=computed(()=>{
|
||||
let num = 0;
|
||||
data.tableLabel.forEach((item) => {
|
||||
if (item.show) {
|
||||
num++;
|
||||
}
|
||||
});
|
||||
return num;
|
||||
});
|
||||
const height=computed(()=>{
|
||||
let height = "";
|
||||
height = document.documentElement.clientHeight - 180;
|
||||
return height;
|
||||
});
|
||||
const salesPayment = computed(() => {
|
||||
let num = 0;
|
||||
data.tableDate.forEach((item) => {
|
||||
if (item.sales_amount !== undefined && item.sales_amount !== null) {
|
||||
num += Number(item.sales_amount);
|
||||
}
|
||||
});
|
||||
return num;
|
||||
});
|
||||
const colspanMethod = ({ _rowIndex, _columnIndex }) => {
|
||||
if (_rowIndex % 2 === 0) {
|
||||
if (_columnIndex === 0) {
|
||||
return { rowspan: 0, colspan: 1 };
|
||||
} else if (_columnIndex === 1) {
|
||||
return { rowspan: 1, colspan: tablelabelLen.value };
|
||||
} else {
|
||||
return { rowspan: 0, colspan: 0 };
|
||||
}
|
||||
}
|
||||
};
|
||||
//获取站点运营数据统计
|
||||
const getSiteOperation=()=>{
|
||||
data.headerLoading = true;
|
||||
const obj = {
|
||||
...data.formLabelAlign
|
||||
}
|
||||
site_operation_data_statistics({start_time:obj.start_time,end_time:obj.end_time,account_config_id:obj.account_config_id}).then((res)=>{
|
||||
if(res.errcode==0){
|
||||
data.operateData = res.datas;
|
||||
if(res.datas.refunds_info){
|
||||
data.refundsInfo = res.datas.refunds_info[0]
|
||||
data.salesInfo = res.datas.sales_info[0]
|
||||
}
|
||||
data.headerLoading = false;
|
||||
}
|
||||
});
|
||||
}
|
||||
//获取昨日昨月站点运营数据统计
|
||||
const getYesterOperation=()=>{
|
||||
// this.loading = true;
|
||||
const obj = {
|
||||
...data.yesterTime
|
||||
}
|
||||
site_operation_data_statistics({start_time:obj.start_time,end_time:obj.end_time,account_config_id:obj.account_config_id}).then((res)=>{
|
||||
if(res.errcode==0){
|
||||
data.operateYesterData = res.datas;
|
||||
if(res.datas.refunds_info){
|
||||
data.yesterRefundsInfo = res.datas.refunds_info[0];
|
||||
data.yrsterSalesInfo = res.datas.sales_info[0];
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
//时间变化
|
||||
const tableTimeChange=(e)=>{
|
||||
// console.log('-----------------333',e,this.radio1);
|
||||
if (e == '今日' || data.radio1 == '今日') {
|
||||
//获取当天
|
||||
let todaytime = getToday();
|
||||
data.formLabelAlign.start_time = new Date(todaytime.starttime).getTime();
|
||||
data.formLabelAlign.end_time = new Date(todaytime.endtime).getTime();
|
||||
getSiteOperation()
|
||||
yesterTimeChange(e)
|
||||
data.transactionDataTime1 = ''
|
||||
} else if (e == '本月') {
|
||||
let currMonth = getCurrMonthDays();
|
||||
data.formLabelAlign.start_time = new Date(currMonth.starttime).getTime();
|
||||
data.formLabelAlign.end_time = new Date(currMonth.endtime).getTime();
|
||||
getSiteOperation()
|
||||
yesterTimeChange(e)
|
||||
data.transactionDataTime1 = ''
|
||||
} else {
|
||||
data.headerLoading = true;
|
||||
setTimeout(()=>{
|
||||
data.headerLoading = false;
|
||||
},300)
|
||||
};
|
||||
}
|
||||
//获取当日时间
|
||||
const currentTime=()=>{
|
||||
let todaytime = getToday();
|
||||
data.formLabelAlign.start_time = new Date(todaytime.starttime).getTime();
|
||||
data.formLabelAlign.end_time = new Date(todaytime.endtime).getTime();
|
||||
}
|
||||
|
||||
//获取昨天时间
|
||||
const yesterdayTime=()=>{
|
||||
let todaytime = getYesterday();
|
||||
data.yesterTime.start_time = new Date(todaytime.starttime).getTime();
|
||||
data.yesterTime.end_time = new Date(todaytime.endtime).getTime();
|
||||
}
|
||||
|
||||
const yesterTimeChange=(e)=>{
|
||||
if (e == '今日' || data.radio1 == '今日') {
|
||||
//获取当天
|
||||
let todaytime = getYesterday();
|
||||
data.yesterTime.start_time = new Date(todaytime.starttime).getTime();
|
||||
data.yesterTime.end_time = new Date(todaytime.endtime).getTime();
|
||||
getYesterOperation();
|
||||
} else if (e == '本月') {
|
||||
let lastMonth = getLastMonthDays();
|
||||
data.yesterTime.start_time = new Date(lastMonth.starttime).getTime();
|
||||
data.yesterTime.end_time = new Date(lastMonth.endtime).getTime();
|
||||
// console.log('--------66',this.yesterTime);
|
||||
getYesterOperation()
|
||||
} else {
|
||||
};
|
||||
}
|
||||
|
||||
//交易数据表格自定义时间change
|
||||
const transactionchange1=(e)=>{
|
||||
console.log(e,"111");
|
||||
data.formLabelAlign.start_time = e[0];
|
||||
data.formLabelAlign.end_time = e[1];
|
||||
getSiteOperation();
|
||||
}
|
||||
//获取闲鱼店铺
|
||||
const getSiteAccount=()=>{
|
||||
get_site_account().then(res=>{
|
||||
data.accountData = res.datas
|
||||
// console.log('----------222',this.accountData);
|
||||
})
|
||||
}
|
||||
const serviceProvide=()=>{
|
||||
service_provider_list().then(res=>{
|
||||
if(res.errcode==0){
|
||||
data.serviceList = res.datas;
|
||||
}else{
|
||||
ElMessage(res.msg)
|
||||
}
|
||||
});
|
||||
}
|
||||
const seleteChange=(val)=>{
|
||||
data.formLabelAlign.account_config_id = val
|
||||
data.yesterTime.account_config_id = val
|
||||
getSiteOperation()
|
||||
getYesterOperation()
|
||||
}
|
||||
|
||||
const siteOperationDetails=()=>{
|
||||
data.loading = true;
|
||||
const obj = {
|
||||
...data.formLabelAlign2
|
||||
}
|
||||
site_operation_data_details({start_time:obj.start_time,end_time:obj.end_time,account_config_id:obj.account_config_id,p_user_id:obj.p_user_id}).then(res=>{
|
||||
if(res.errcode==0){
|
||||
console.log(res.datas);
|
||||
data.tableDate = res.datas
|
||||
data.numberAll = res.datas.length
|
||||
// console.log('------------333',this.tableDate);
|
||||
data.loading = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const search=()=>{
|
||||
siteOperationDetails()
|
||||
}
|
||||
|
||||
//时间变化
|
||||
const tableTimeChange2=(e)=>{
|
||||
// console.log('-----------------333',e,this.radio1);
|
||||
if (e == '今日' || data.radio2 == '今日') {
|
||||
//获取当天
|
||||
let todaytime = getToday();
|
||||
data.formLabelAlign2.start_time = new Date(todaytime.starttime).getTime();
|
||||
data.formLabelAlign2.end_time = new Date(todaytime.endtime).getTime();
|
||||
siteOperationDetails()
|
||||
data.transactionDataTime2 = '';
|
||||
} else if (e == '本月') {
|
||||
let currMonth = getCurrMonthDays();
|
||||
data.formLabelAlign2.start_time = new Date(currMonth.starttime).getTime();
|
||||
data.formLabelAlign2.end_time = new Date(currMonth.endtime).getTime();
|
||||
siteOperationDetails()
|
||||
data.transactionDataTime2 = '';
|
||||
} else {
|
||||
};
|
||||
}
|
||||
//获取当日时间
|
||||
const currentTime2=()=>{
|
||||
let todaytime = getToday();
|
||||
data.formLabelAlign2.start_time = new Date(todaytime.starttime).getTime();
|
||||
data.formLabelAlign2.end_time = new Date(todaytime.endtime).getTime();
|
||||
}
|
||||
//交易数据表格自定义时间change
|
||||
const transactionchange2=(e)=>{
|
||||
data.formLabelAlign2.start_time = e[0];
|
||||
data.formLabelAlign2.end_time = e[1];
|
||||
siteOperationDetails();
|
||||
}
|
||||
const seleteChange2=(val)=>{
|
||||
data.formLabelAlign2.p_user_id = val
|
||||
}
|
||||
const seleteChange3=(val)=>{
|
||||
data.formLabelAlign2.account_config_id = val
|
||||
}
|
||||
const resetData=()=>{
|
||||
data.formLabelAlign2 = {},
|
||||
data.form.region1 = ''
|
||||
data.form.region2 = ''
|
||||
data.radio2 = '今日'
|
||||
currentTime2()
|
||||
siteOperationDetails()
|
||||
}
|
||||
//点击刷新数据
|
||||
const refreshhandler=()=>{
|
||||
resetData()
|
||||
}
|
||||
|
||||
currentTime()
|
||||
currentTime2()
|
||||
getSiteOperation()
|
||||
getSiteAccount()
|
||||
serviceProvide()
|
||||
siteOperationDetails()
|
||||
yesterdayTime()
|
||||
getYesterOperation()
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.iconjingshi div {
|
||||
display: none; /*默认隐藏*/
|
||||
}
|
||||
|
||||
.iconjingshi:hover div {
|
||||
display: initial; /*当鼠标hover时展示*/
|
||||
}
|
||||
.formContainer{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom:15px;
|
||||
.leftBox{
|
||||
font-weight: 800;
|
||||
}
|
||||
.righrContainer{
|
||||
display: flex;
|
||||
align-items:center;
|
||||
}
|
||||
.rightBox{
|
||||
display: flex;
|
||||
margin-top: 3px;
|
||||
margin-left: 10px;
|
||||
// align-items: center;
|
||||
.righttime{
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.header{
|
||||
display: flex;
|
||||
// .left{
|
||||
// height: 100px;
|
||||
// width: 200px;
|
||||
// background-color: #f7f8f9;
|
||||
// margin-right: 10px;
|
||||
// .serve{
|
||||
// width: 175px;
|
||||
// height: 50%;
|
||||
// padding: 10px 10px;
|
||||
// }
|
||||
// }
|
||||
.right{
|
||||
width: 100%;
|
||||
height: 210px;
|
||||
.top{
|
||||
display: flex;
|
||||
height: 100px;
|
||||
margin-bottom: 10px;
|
||||
.one{
|
||||
width: 16.66%;
|
||||
height: 100%;
|
||||
// background-color: orange;
|
||||
background-color: #f7f8f9;
|
||||
margin-left: 10px ;
|
||||
padding: 10px 10px;
|
||||
}
|
||||
}
|
||||
.bottom{
|
||||
display: flex;
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
// background-color: skyblue;
|
||||
.one{
|
||||
height: 100%;
|
||||
// width: 375px;
|
||||
background-color: #f7f8f9;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.two{
|
||||
height: 100%;
|
||||
// width: 246px;
|
||||
background-color: #f7f8f9;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.salesNum{
|
||||
width: calc((100% - 50px)*(2 / 6) + 10px) ;
|
||||
}
|
||||
.refundsNum{
|
||||
width: calc((100% - 50px)*(2 / 6) + 10px) ;
|
||||
}
|
||||
.payment{
|
||||
width: calc((100% - 50px)*(1 / 6)) ;
|
||||
}
|
||||
.turnover{
|
||||
width: calc((100% - 50px)*(1 / 6)) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// @media screen and (max-width: 1600px) {
|
||||
// .header{
|
||||
// .left{
|
||||
// width: 200px;
|
||||
// .serve{
|
||||
// width: 175px;
|
||||
// }
|
||||
// }
|
||||
// .right{
|
||||
// // width: 1244px;
|
||||
// width: calc(1280px * 80%);
|
||||
// .top{
|
||||
// width: calc(1280px * 80%);
|
||||
// .one{
|
||||
// width: 20%;
|
||||
// }
|
||||
// }
|
||||
// .bottom{
|
||||
// width: 100%;
|
||||
// .one{
|
||||
// width: 350px;
|
||||
// }
|
||||
// .two{
|
||||
// width: 200px;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// @media screen and (min-width: 1800px) {
|
||||
// .header{
|
||||
// .left{
|
||||
// width: 200px;
|
||||
// .serve{
|
||||
// width: 175px;
|
||||
// }
|
||||
// }
|
||||
// .right{
|
||||
// // width: 1244px;
|
||||
// width: calc(1280px * 120%);
|
||||
// .top{
|
||||
// width: calc(1280px * 120%);
|
||||
// .one{
|
||||
// width: 20%;
|
||||
// }
|
||||
// }
|
||||
// .bottom{
|
||||
// width: 100%;
|
||||
// .one{
|
||||
// // width: 412px;
|
||||
// width:450px;
|
||||
// }
|
||||
// .two{
|
||||
// // width: 270px;
|
||||
// width:295px;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
.rightBottomBox{
|
||||
display: flex;
|
||||
}
|
||||
.tableGap{
|
||||
display: flex;
|
||||
row-gap: 10px;
|
||||
}
|
||||
.topSpan{
|
||||
span{
|
||||
font-size: 14px;
|
||||
color: #3D3D3D;
|
||||
letter-spacing: 1px;
|
||||
font-weight: normal;
|
||||
margin-left: 30px;
|
||||
}
|
||||
}
|
||||
::v-deep{
|
||||
.vxe-table--header{
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.spanBottom{
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
}
|
||||
.aIcon{
|
||||
position: relative;
|
||||
margin: 0px 8px 0 0 ;
|
||||
.el-icon-takeaway-box{
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
top: 1px
|
||||
}
|
||||
.el-icon-user{
|
||||
position: absolute;
|
||||
left: -20px;
|
||||
top: -1px
|
||||
}
|
||||
}
|
||||
.bottomContainer{
|
||||
background: #EEEEEE;
|
||||
padding: 10px 20px 20px 25px;
|
||||
.bottomBox{
|
||||
background-color: #FFFFFF;
|
||||
padding: 10px 20px 20px 20px;
|
||||
}
|
||||
}
|
||||
// ::v-deep {
|
||||
// .vxe-table--body .col--seq:nth-child(odd) :after {
|
||||
// content: "";
|
||||
// position: absolute;
|
||||
// top: 0px;
|
||||
// right: -5px;
|
||||
// display: inline-block;
|
||||
// width: 20px;
|
||||
// height: calc(100% - 1px);
|
||||
// background-color: #ffffff;
|
||||
// }
|
||||
// .vxe-body--row.row--hover {
|
||||
// .col--seq:nth-child(odd) :after {
|
||||
// background-color: #f5f7fa;
|
||||
// }
|
||||
// }
|
||||
// /*调整表格 单元格背景颜色*/
|
||||
// .vxe-table .vxe-table--body-wrapper,
|
||||
// .vxe-table .vxe-table--footer-wrapper {
|
||||
// border: none;
|
||||
// background-color: rgba(255, 255, 255);
|
||||
// }
|
||||
// .col--seq:nth-child(odd) {
|
||||
// display: flex;
|
||||
// align-items: center;
|
||||
// justify-content: center;
|
||||
// }
|
||||
// .vxe-body--row:nth-child(even) {
|
||||
// background-color: rgb(248 248 249);
|
||||
// }
|
||||
// }
|
||||
|
||||
</style>
|
|
@ -0,0 +1,434 @@
|
|||
<template>
|
||||
<div class="Special_offer_box">
|
||||
<div class="table_box_header">
|
||||
<el-tabs class="demo-tabs" v-model="activeName" @tab-change="TabChange">
|
||||
<el-tab-pane
|
||||
v-for="item in tabs"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:name="item.value"
|
||||
></el-tab-pane>
|
||||
</el-tabs>
|
||||
<SearchForm :inputs="Inputs" @onSearch="onSearch" @onRest="onRest" />
|
||||
</div>
|
||||
|
||||
<div class="table_box_center">
|
||||
<Table
|
||||
ref="TableRef"
|
||||
:key="TableKey"
|
||||
:TabLoading="TabLoading"
|
||||
:TableData="TableData"
|
||||
:TableLabel="TableLabel"
|
||||
>
|
||||
<template #OperateButton="{ row }">
|
||||
<OperateButton
|
||||
:ButtonList="row.ButtonGroup"
|
||||
:row="row"
|
||||
></OperateButton></template
|
||||
></Table>
|
||||
<PaginaTion
|
||||
:total="totalNumbel"
|
||||
v-model:current-page="orderInfoDto.pageNo"
|
||||
v-model:page-size="orderInfoDto.pageSize"
|
||||
@handleSizeChange="handleSizeChange"
|
||||
@handleCurrentChange="getDatas"
|
||||
></PaginaTion>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, unref, computed, reactive, onMounted } from "vue";
|
||||
import { router } from "@/router.js";
|
||||
import { Plus } from "@element-plus/icons-vue";
|
||||
import { ElMessage } from "element-plus";
|
||||
import SearchForm from "@components/searchForm/index.vue";
|
||||
import Table from "@components/table.vue";
|
||||
import OperateButton from "@/components/OperateButton.vue";
|
||||
import PaginaTion from "@components/Pagination.vue";
|
||||
import {
|
||||
order_info,
|
||||
// get_commodity_id,
|
||||
// publish,
|
||||
// pull_off,
|
||||
// delete_one,
|
||||
} from "@/api/OrderManagement";
|
||||
import { getshopInfo } from "@/api/newlybuiltgoods";
|
||||
const activeName = ref("");
|
||||
const tabs = ref([
|
||||
{ label: "全部", value: "", total: 0 },
|
||||
{ label: "订单已创建", value: "1", total: 0 },
|
||||
{ label: "待发货", value: "2", total: 0 },
|
||||
{ label: "已发货", value: "3", total: 0 },
|
||||
{ label: "交易成功", value: "4", total: 0 },
|
||||
{ label: "已退款", value: "5", total: 0 },
|
||||
{ label: "交易关闭", value: "6", total: 0 },
|
||||
{ label: "待处理", value: "0", total: 0 },
|
||||
]);
|
||||
const Inputs = ref([
|
||||
{
|
||||
type: "el-input",
|
||||
placeholder: "查询订单编号",
|
||||
title: "订单编号",
|
||||
name: "commodityId",
|
||||
value: "",
|
||||
popover: true,
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
placeholder: "请选择闲鱼店铺",
|
||||
title: "闲鱼店铺",
|
||||
name: "xyId",
|
||||
value: "",
|
||||
options: [],
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
placeholder: "请选择订单状态",
|
||||
title: "订单状态",
|
||||
name: "",
|
||||
value: "",
|
||||
options: [
|
||||
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "el-select",
|
||||
placeholder: "请选择订单类型",
|
||||
title: "订单类型",
|
||||
name: "",
|
||||
value: "",
|
||||
options: [
|
||||
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "el-input",
|
||||
placeholder: "请输入买家电话",
|
||||
name: "",
|
||||
value: "",
|
||||
title: "买家电话",
|
||||
},
|
||||
{
|
||||
type: "el-date-picker",
|
||||
title: "创建时间",
|
||||
placeholder: "",
|
||||
name: "createTime",
|
||||
value: [],
|
||||
width: "215px",
|
||||
},
|
||||
{
|
||||
type: "el-date-picker",
|
||||
title: "付款时间",
|
||||
placeholder: "",
|
||||
name: "",
|
||||
value: [],
|
||||
width: "215px",
|
||||
},
|
||||
{
|
||||
type: "el-date-picker",
|
||||
title: "发货时间",
|
||||
placeholder: "",
|
||||
name: "",
|
||||
value: [],
|
||||
width: "215px",
|
||||
},
|
||||
{
|
||||
type: "el-date-picker",
|
||||
title: "交易成功时间",
|
||||
placeholder: "",
|
||||
name: "",
|
||||
value: [],
|
||||
width: "215px",
|
||||
},
|
||||
]);
|
||||
|
||||
const TableRef = ref(null);
|
||||
const TableKey = ref(new Date().getTime());
|
||||
const TabLoading = ref(false);
|
||||
const TableData = ref([]);
|
||||
const TableLabel = ref([
|
||||
{
|
||||
label: "订单编号",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
display: "top_left",
|
||||
},
|
||||
{
|
||||
label: "创建时间",
|
||||
param: "createTime",
|
||||
align: "center",
|
||||
show: true,
|
||||
display: "top_left",
|
||||
},
|
||||
{
|
||||
label: "付款时间",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
display: "top_left",
|
||||
},
|
||||
{
|
||||
label: "发货时间",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
display: "top_left",
|
||||
},
|
||||
{
|
||||
label: "商品",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "210",
|
||||
},
|
||||
{
|
||||
label: "订单状态",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "规格",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "商品总价(元)",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "订单类型",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "买家信息",
|
||||
param: "",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "闲鱼店铺",
|
||||
param: "xyName",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "150",
|
||||
},
|
||||
{
|
||||
label: "操作",
|
||||
align: "center",
|
||||
show: true,
|
||||
fixed: "right",
|
||||
minwidth: "150",
|
||||
},
|
||||
]);
|
||||
const New_TableLabel = ref([]);
|
||||
const ButtonListGroup = ref([
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "编辑",
|
||||
show: false,
|
||||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {
|
||||
// get_commodity_id(row.id).then((res) => {
|
||||
// if (res.code === "200") {
|
||||
// router.push({
|
||||
// path: "/NewlyBuiltGoods",
|
||||
// query: {
|
||||
// params: JSON.stringify(res.data),
|
||||
// },
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "复制",
|
||||
show: false,
|
||||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "上架",
|
||||
show: false,
|
||||
type: "primary",
|
||||
mode: "detail",
|
||||
confirm: (row) => {
|
||||
// publish(row.id).then((res) => {
|
||||
// if (res.code === "200") {
|
||||
// ElMessage.success(res.msg);
|
||||
// getDatas();
|
||||
// }
|
||||
// });
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-popconfirm",
|
||||
name: "下架",
|
||||
title: "是否下架?",
|
||||
cancelText: "不用了",
|
||||
popconfirmIcon: "el-icon-info",
|
||||
iconColor: "red",
|
||||
type: "danger",
|
||||
show: false,
|
||||
confirm: (row) => {
|
||||
// pull_off(row.id).then((res) => {
|
||||
// if (res.code === "200") {
|
||||
// ElMessage.success(res.msg);
|
||||
// getDatas();
|
||||
// }
|
||||
// });
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-popconfirm",
|
||||
name: "删除",
|
||||
title: "是否删除?",
|
||||
cancelText: "不用了",
|
||||
popconfirmIcon: "el-icon-info",
|
||||
iconColor: "red",
|
||||
type: "danger",
|
||||
show: false,
|
||||
confirm: (row) => {
|
||||
delete_one(row.id).then((res) => {
|
||||
if (res.code === "200") {
|
||||
ElMessage.success(res.msg);
|
||||
getDatas();
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
{
|
||||
AssemblyName: "el-link",
|
||||
name: "日志",
|
||||
show: false,
|
||||
type: "warning",
|
||||
mode: "detail",
|
||||
confirm: (row) => {},
|
||||
},
|
||||
]);
|
||||
let orderInfoDto = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
publishStatus: "",
|
||||
});
|
||||
const totalNumbel = ref(0);
|
||||
const getDatas = () => {
|
||||
TabLoading.value = true;
|
||||
order_info(orderInfoDto)
|
||||
.then((res) => {
|
||||
TabLoading.value = false;
|
||||
if (res.code === "200") {
|
||||
const newData = Object.assign([], res.data.data);
|
||||
newData.map((item) => {
|
||||
item.ButtonGroup = ButtonListGroup.value.map((el) => {
|
||||
if (
|
||||
(el.name === "编辑" &&
|
||||
[1, -4, -2].includes(item.publishStatus)) ||
|
||||
(el.name === "下架" && [-3].includes(item.publishStatus)) ||
|
||||
(el.name === "复制" &&
|
||||
[1, -2, -3, -4, 3].includes(item.publishStatus)) ||
|
||||
(el.name === "上架" && [-2, -4].includes(item.publishStatus)) ||
|
||||
(el.name === "删除" && [1, -4, -2].includes(item.publishStatus))
|
||||
) {
|
||||
return { ...el, show: true };
|
||||
}
|
||||
return el;
|
||||
});
|
||||
});
|
||||
console.log(newData);
|
||||
TableData.value = newData;
|
||||
totalNumbel.value = res.data.totalCount;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
TabLoading.value = false;
|
||||
});
|
||||
};
|
||||
//查询
|
||||
const onSearch = (value) => {
|
||||
if (value.createTime) {
|
||||
value.startCreateTime = new Date(value.createTime[0]).getTime();
|
||||
value.endCreateTime = new Date(value.createTime[1]).getTime() + 86399999;
|
||||
} else if (value.shelfTime) {
|
||||
value.startShelfTime = new Date(value.shelfTime[0]).getTime();
|
||||
value.endShelfTime = new Date(value.shelfTime[1]).getTime() + 86399999;
|
||||
}
|
||||
orderInfoDto = {
|
||||
...orderInfoDto,
|
||||
...value,
|
||||
};
|
||||
getDatas();
|
||||
};
|
||||
// 重置
|
||||
const onRest = (value) => {
|
||||
orderInfoDto = {
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
publishStatus: activeName.value,
|
||||
};
|
||||
getDatas();
|
||||
};
|
||||
const get_shopInfo = () => {
|
||||
getshopInfo().then((res) => {
|
||||
if (res.code === "200") {
|
||||
const storeList = [];
|
||||
res.data.forEach((item) => {
|
||||
storeList.push({ label: item.xyName, value: item.id });
|
||||
});
|
||||
Inputs.value.find((e) => e.title == "闲鱼店铺").options = storeList;
|
||||
}
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
TabChange();
|
||||
get_shopInfo();
|
||||
});
|
||||
const handleSizeChange = () => {
|
||||
orderInfoDto.pageNo = 1;
|
||||
getDatas();
|
||||
};
|
||||
const TabChange = (val) => {
|
||||
orderInfoDto.publishStatus = activeName.value;
|
||||
getDatas();
|
||||
TableLabel.value.forEach((e) => {
|
||||
e.show = !(
|
||||
e.hasOwnProperty("NumberType") && !e.NumberType.includes(Number(val))
|
||||
);
|
||||
});
|
||||
New_TableLabel.value = TableLabel.value;
|
||||
TableKey.value = new Date().getTime();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.Special_offer_box {
|
||||
height: calc(100vh - 38px);
|
||||
background: #f1f2f5;
|
||||
}
|
||||
.table_box_header {
|
||||
width: 100%;
|
||||
padding: 0 20px;
|
||||
box-sizing: border-box;
|
||||
background: #fff;
|
||||
}
|
||||
.table_box_center {
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
</style>
|
|
@ -1,404 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="w">
|
||||
<el-row>
|
||||
<el-col style="margin-top: 7px">
|
||||
<el-card>
|
||||
<el-button type="primary" size="small" @click="search"
|
||||
>刷新</el-button
|
||||
>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col style="margin-top: 15px">
|
||||
<el-table :data="data.tableData" style="width: 100%" height="250" v-loading="data.loading">
|
||||
<el-table-column :fixed="item.fixed" :prop="item.param" :label="item.label" width="150" v-for="(item,index) in data.tableLabel" :key="String(index)">
|
||||
<template #default="scope">
|
||||
<span v-if="item.label=='状态'">{{scope.row[item.param]=='0'?"正常":"异常"}}</span>
|
||||
<el-button size="small" type="primary" @click="editUserDate('edit', scope.row)" v-if="item.label=='操作'">
|
||||
编辑
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
v-model="data.addEditUser"
|
||||
:width="700"
|
||||
:title="data.title"
|
||||
>
|
||||
<el-row>
|
||||
<el-form
|
||||
ref="ruleFormRef"
|
||||
:model="ruleForm"
|
||||
:rules="data.rules"
|
||||
:width="120"
|
||||
:label-width="120"
|
||||
>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="name" label="用户名称">
|
||||
<el-input
|
||||
v-model="ruleForm.name"
|
||||
placeholder="请输入用户名称"
|
||||
size="small"
|
||||
:disabled="true"
|
||||
style="width: 200px"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="company_unique_id" label="公司ID">
|
||||
<el-input
|
||||
:disabled="true"
|
||||
v-model="ruleForm.company_unique_id"
|
||||
placeholder="请输入公司账号ID"
|
||||
size="small"
|
||||
style="width: 200px"
|
||||
@change="namechange"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="status" label="状态">
|
||||
<el-select v-model="ruleForm.status" size="small" style="width: 200px">
|
||||
<el-option label="正常" value="0" />
|
||||
<el-option label="失效" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item prop="account_config_id" label="授权店铺">
|
||||
<el-select
|
||||
v-model="ruleForm.account_config_id"
|
||||
size="small"
|
||||
multiple
|
||||
clearable
|
||||
style="width: 200px"
|
||||
filterable
|
||||
collapse-tags
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.accountList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="收费内容" >
|
||||
<el-select
|
||||
v-model="ruleForm.ag_server_fee_id"
|
||||
multiple
|
||||
size="small"
|
||||
:disabled="true"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 200px"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col style="text-align: right">
|
||||
<el-button size="small" @click="data.addEditUser = false"
|
||||
>取消</el-button
|
||||
>
|
||||
<el-button size="small" type="primary" @click="submit(ruleFormRef)"
|
||||
>确定</el-button
|
||||
>
|
||||
</el-col>
|
||||
</el-form>
|
||||
</el-row>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import CoatPriceTable from "@components/newtable/index.vue";
|
||||
import Pagination from "@components/pagination/pagination.vue";
|
||||
import {
|
||||
get_ag_service,
|
||||
service_provider_edit,
|
||||
service_provider_list,
|
||||
search_account,
|
||||
get_search_company,
|
||||
batch_start_exemption,
|
||||
batch_stop_exemption,
|
||||
} from "@/api/FundDetails";
|
||||
import { account_config_list } from "@/api/user";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { computed, reactive,ref,onMounted } from 'vue';
|
||||
import {debunce} from "@services/commont";
|
||||
|
||||
const ruleFormRef=ref(null);
|
||||
|
||||
const ruleForm=ref({
|
||||
name: "",
|
||||
company_unique_id: "",
|
||||
status: "",
|
||||
account_config_id: "",
|
||||
});
|
||||
const data=reactive({
|
||||
addEditUser: false,
|
||||
loading: false,
|
||||
title: "",
|
||||
p_user_id: "",
|
||||
accountList: [],
|
||||
tableData: [],
|
||||
value2: [],
|
||||
value3: "",
|
||||
options: [],
|
||||
rules: {
|
||||
company_unique_id: [
|
||||
{ required: true, message: "请输入公司ID", trigger: "blur" },
|
||||
],
|
||||
name: [{ required: true, message: "请输入用户名称", trigger: "blur" }],
|
||||
status: [{ required: true, message: "请选择状态", trigger: "change" }],
|
||||
desc: [{ required: true, message: "请填写公司名称", trigger: "blur" }],
|
||||
account_config_id: [
|
||||
{ required: true, message: "请选择授权店铺", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
page: {
|
||||
total: 0, // 分页总条数
|
||||
pageSize: 100, // 每页显示条数
|
||||
pageNum: 1, // 当前页
|
||||
pagesizes: [100, 200, 500, 1000, 2000],
|
||||
},
|
||||
inputDate: [{ label: "账号", prop: "accout" }],
|
||||
tableLabel: [
|
||||
{ label: "商户名称", param: "name", align: "center", show: true },
|
||||
// { label: '账号', param: 'account_num', align: 'center', show: true },
|
||||
{ label: "公司名称", param: "truename", align: "center", show: true },
|
||||
{ label: "公司账号", param: "company_unique_id", align: "center", show: true },
|
||||
{ label: "授权店铺", param: "dianpu", align: "center", show: true },
|
||||
{ label: "状态", param: "status", align: "center", show: true },
|
||||
{
|
||||
label: "操作",
|
||||
param: "serviceProviderList",
|
||||
align: "center",
|
||||
fixed:'right',
|
||||
show: true,
|
||||
},
|
||||
],
|
||||
selectdateList: [],
|
||||
});
|
||||
|
||||
// 获取搜索账号
|
||||
const get_search_account=(e)=>{
|
||||
get_search_company({company_id:e}).then((res)=>{
|
||||
if (res.errcode == 0) {
|
||||
ruleForm.value.p_user_id = res.datas.p_user_id;
|
||||
if (res.datas.p_user_id == null) {
|
||||
ElMessage("没有找到此账号!");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 获取列表
|
||||
const getList=()=>{
|
||||
data.loading = true;
|
||||
service_provider_list({ type: ["2"]}).then((res)=>{
|
||||
if(res.errcode==0){
|
||||
data.tableData = res.datas;
|
||||
data.tableData.forEach((item) => {
|
||||
item.is_exemption
|
||||
? (item.is_exemption = true)
|
||||
: (item.is_exemption = false);
|
||||
if (item.account.length > 0) {
|
||||
item.account_num = item.account[0].account;
|
||||
item.dianpu = item.account[0].contact_name;
|
||||
}
|
||||
});
|
||||
data.loading = false;
|
||||
}
|
||||
});
|
||||
|
||||
// this.page.total = res.datas.total
|
||||
}
|
||||
|
||||
const getCompanyId=debunce(get_search_account,500);
|
||||
const getListApi=debunce(getList,1000);
|
||||
|
||||
const search=()=>{
|
||||
getListApi();
|
||||
}
|
||||
|
||||
const submit=(formName)=>{
|
||||
formName.validate(async (valid) => {
|
||||
if (valid) {
|
||||
const obj = { ...ruleForm.value};
|
||||
if(obj.is_exemption){
|
||||
obj.is_exemption = 1
|
||||
}else{
|
||||
obj.is_exemption = 0
|
||||
}
|
||||
service_provider_edit(obj).then((res)=>{
|
||||
if(res.errcode==0){
|
||||
getListApi();
|
||||
data.addEditUser = false;
|
||||
}else{
|
||||
ElMessage(res.msg);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
console.log("error submit!!");
|
||||
ElMessage("表单内容有误");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
// 获取数据
|
||||
const getService_provider_list=()=>{
|
||||
data.loading=true;
|
||||
get_ag_service().then((res1)=>{
|
||||
if(res1.errcode==0){
|
||||
|
||||
if (res1.datas.length !== 0) {
|
||||
data.options = res1.datas.map((item) => {
|
||||
return {
|
||||
label: item.name,
|
||||
value: item.ag_server_fee_id,
|
||||
};
|
||||
});
|
||||
}
|
||||
data.loading=false;
|
||||
}else{
|
||||
data.loading=false;
|
||||
}
|
||||
});
|
||||
account_config_list({
|
||||
is_config_data: 1,
|
||||
status: [1],
|
||||
jstatus: 1,
|
||||
class_id: "17",
|
||||
}).then((res2)=>{
|
||||
if(res2.errcode==0){
|
||||
data.accountList = res2.datas.datas_list.map((item) => {
|
||||
return {
|
||||
label: item.account,
|
||||
value: item.account_config_id,
|
||||
};
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 新增编辑
|
||||
const editUserDate=(str, row)=>{
|
||||
|
||||
data.addEditUser = true;
|
||||
if (str === "add") {
|
||||
data.title = "新增用户";
|
||||
ruleForm.value= {};
|
||||
} else {
|
||||
data.title = "编辑用户";
|
||||
ruleForm.value = row;
|
||||
row.is_exemption == 1
|
||||
? ( ruleForm.value.is_exemption = true)
|
||||
: ( ruleForm.value.is_exemption = false);
|
||||
row.ag_server_fee_id == 0
|
||||
? ( ruleForm.value.ag_server_fee_id = "")
|
||||
: ( ruleForm.value.ag_server_fee_id = row.ag_server_fee_id);
|
||||
ruleForm.value .status = ruleForm.value.status.toString();
|
||||
ruleForm.value .ag_server_fee_id = ruleForm.value.server_fee_map;
|
||||
}
|
||||
}
|
||||
// 分页页码
|
||||
const handleCurrentChange=(data)=>{
|
||||
data.loading = true;
|
||||
Object.assign(data.formLabelAlign, data);
|
||||
gettableDate();
|
||||
}
|
||||
// 分页条数
|
||||
const handleSizeChange=(data)=>{
|
||||
data.loading = true;
|
||||
Object.assign(data.formLabelAlign, data);
|
||||
gettableDate();
|
||||
}
|
||||
// 账号change
|
||||
const namechange=(e)=>{
|
||||
if (e != "") {
|
||||
|
||||
getCompanyId(e);
|
||||
|
||||
}
|
||||
}
|
||||
const SelectionChange=(val)=>{
|
||||
data.selectdateList = val;
|
||||
}
|
||||
const changeInspection=(row)=>{
|
||||
const params = [row.id];
|
||||
if (row.is_exemption) {
|
||||
batch_start_exemption({ ids: params }).then((res) => {
|
||||
if (res.errcode === 0) {
|
||||
data.selectdateList = [];
|
||||
getList();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
batch_stop_exemption({ ids: params }).then((res) => {
|
||||
if (res.errcode === 0) {
|
||||
data.selectdateList = [];
|
||||
getList();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
const openInspection=()=>{
|
||||
if (!this.selectdateList.length) {
|
||||
ElMessage("请先勾选机器");
|
||||
return;
|
||||
}
|
||||
const params = [];
|
||||
data.selectdateList.forEach((item) => {
|
||||
params.push(item.id);
|
||||
});
|
||||
batch_start_exemption({ ids: params }).then((res) => {
|
||||
if (res.errcode === 0) {
|
||||
data.selectdateList = [];
|
||||
getList();
|
||||
}
|
||||
});
|
||||
}
|
||||
const offInspection=()=>{
|
||||
if (!data.selectdateList.length) {
|
||||
ElMessage("请先勾选机器");
|
||||
return;
|
||||
}
|
||||
const params = [];
|
||||
data.selectdateList.forEach((item) => {
|
||||
params.push(item.id);
|
||||
});
|
||||
batch_stop_exemption({ ids: params }).then((res) => {
|
||||
if (res.errcode === 0) {
|
||||
data.selectdateList = [];
|
||||
this.getList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getService_provider_list();
|
||||
getList();
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.w {
|
||||
margin: 0 15px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,420 +0,0 @@
|
|||
<template>
|
||||
<div class="salecontainer">
|
||||
<div class="saletopbox">
|
||||
<!-- <el-tabs v-model="activeName" class="demo-tabs" @tab-click="onTabChange">
|
||||
<el-tab-pane v-for="item in tabsdatas" :key="item.value" :label="renderlaebl(item)"
|
||||
:name="item.value"></el-tab-pane>
|
||||
</el-tabs> -->
|
||||
<div class="searchbox">
|
||||
<el-input v-model="imeivalue" size="large" class="topinput" placeholder="查询IMEI/SN/机器编号">
|
||||
<!-- <template #suffix>
|
||||
<i class="iconfont icon-icon-piliangcaozuo imeiicondefault"
|
||||
:class="imeipopover ? 'imeiiconActive' : 'imeiicon'" style="font-size: 12px;"
|
||||
@click.prevent="imeiiconClick"></i>
|
||||
</template> -->
|
||||
</el-input>
|
||||
<el-input v-model="imeivalue" size="large" class="topinput" placeholder="查询质检码">
|
||||
<!-- <template #suffix>
|
||||
<i class="iconfont icon-icon-piliangcaozuo imeiicondefault"
|
||||
:class="imeipopover ? 'imeiiconActive' : 'imeiicon'" style="font-size: 12px;"
|
||||
@click.prevent="imeiiconClick"></i>
|
||||
</template> -->
|
||||
</el-input>
|
||||
<el-button type="primary">查询</el-button>
|
||||
<el-button>重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<Table :data="list" @looksLogs="looksLogs" @delivery="doDelivery" :columns="newcolumns" :loading="loading"
|
||||
:pageSize="pageSize" :page="page" :total="total" :handleSizeChange="handleSizeChange"
|
||||
:handleCurrentChange="handleCurrentChange" @quality="onQuality" @processing="onProcessing"
|
||||
@judgment="onJudgment" />
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, unref, computed, reactive } from 'vue';
|
||||
import Table from "@components/qcTable.vue";
|
||||
import axioshooks from "@axioshooks";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { formatDate } from "@services/commont";
|
||||
import DriverForm from "@components/driverForm/index.vue"
|
||||
import { useRouter } from 'vue-router';
|
||||
import { Plus } from "@element-plus/icons-vue";
|
||||
import { initOss } from '@services/commont';
|
||||
const router = useRouter();
|
||||
const activeName = ref('0');
|
||||
|
||||
const imeipopover = ref(false);
|
||||
const imeivalue = ref('');
|
||||
const pageSize = ref(10);
|
||||
const page = ref(1);
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
const logsList = ref(false);
|
||||
const logsState = ref(false);
|
||||
const logsloading = ref(false);
|
||||
const draveState = ref(false);
|
||||
const refund_status = ref('');
|
||||
const DeliveryInfoList = ref({});
|
||||
const processState = ref(false);
|
||||
const processData = ref({ xy_sale_after_additional_id: '' });
|
||||
const processValue = ref(1);
|
||||
const judgState = ref(false);
|
||||
const judgData = ref({ xy_sale_after_additional_id: '' });
|
||||
const judgValue = ref({ mode: "1", info: "", imageUrl: "" });
|
||||
|
||||
|
||||
const imeiiconClick = () => {
|
||||
|
||||
}
|
||||
|
||||
const renderlaebl = (item) => {
|
||||
if (item.total > 0) {
|
||||
return `${item.label} ${item.total}`
|
||||
}
|
||||
return item.label
|
||||
}
|
||||
|
||||
|
||||
const list = ref([]);
|
||||
const columns = [
|
||||
{
|
||||
dataKey: `machine_name`,
|
||||
label: "机器信息",
|
||||
width: 300,
|
||||
show: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `title`,
|
||||
label: "商品标题",
|
||||
show: true,
|
||||
width: 100,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `merchant_name`,
|
||||
label: "闲鱼账号",
|
||||
width: 100,
|
||||
align: "center",
|
||||
}, {
|
||||
dataKey: `price`,
|
||||
label: "订单价格",
|
||||
width: 100,
|
||||
align: "center",
|
||||
}, {
|
||||
dataKey: `buy_info`,
|
||||
label: "买家信息",
|
||||
width: 150,
|
||||
align: "center",
|
||||
show: true,
|
||||
}, {
|
||||
dataKey: `buyer_apply_reason`,
|
||||
label: "售后原因",
|
||||
show: true,
|
||||
align: "center",
|
||||
width: 100,
|
||||
align: "center",
|
||||
}, {
|
||||
dataKey: `inspect_report`,
|
||||
label: "售前质检报告",
|
||||
width: 150,
|
||||
show: true,
|
||||
align: "center",
|
||||
}, {
|
||||
key: `买家退货物流`,
|
||||
dataKey: `refund_post_no`,
|
||||
label: "买家退货物流",
|
||||
width: 150,
|
||||
show: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
key: `收货人`,
|
||||
dataKey: ``,
|
||||
label: "收货人",
|
||||
width: 150,
|
||||
show: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
key: `质检员`,
|
||||
dataKey: ``,
|
||||
label: "质检员",
|
||||
width: 150,
|
||||
show: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
key: `操作`,
|
||||
dataKey: `opction`,
|
||||
label: "操作",
|
||||
width: 120,
|
||||
show: true,
|
||||
align: "center",
|
||||
status: []
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
const newcolumns = computed(() => {
|
||||
let cludata = Object.assign([], columns);
|
||||
|
||||
return cludata;
|
||||
});
|
||||
|
||||
|
||||
const getDatas = (p) => {
|
||||
page.value = p ? p : 1;
|
||||
loading.value = true;
|
||||
total.value = 0;
|
||||
axioshooks({
|
||||
data: { sale_after_additional_status: Number(activeName.value) < 9 ? activeName.value : "0", list_row: pageSize.value, page: page.value, refund_status: refund_status.value },
|
||||
url: "trusteeship/after_sales_list",
|
||||
customHandler: (err, e) => {
|
||||
if (!err && e) {
|
||||
if (e.errcode == 0) {
|
||||
list.value = e.datas.datas_list;
|
||||
total.value = e.datas.total;
|
||||
loading.value = false;
|
||||
} else {
|
||||
ElMessage(e.msg);
|
||||
loading.value = false;
|
||||
}
|
||||
} else if (err) {
|
||||
ElMessage(err);
|
||||
loading.value = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getDatas(1);
|
||||
|
||||
const handleSizeChange = (v) => {
|
||||
pageSize.value = v;
|
||||
getDatas(1);
|
||||
}
|
||||
|
||||
const looksLogs = (data) => {
|
||||
logsloading.value = true;
|
||||
logsState.value = true;
|
||||
axioshooks({
|
||||
data: { refund_id: data.after_sales_order_number },
|
||||
url: "xy/sale_after_log",
|
||||
customHandler: (err, e) => {
|
||||
if (!err && e) {
|
||||
if (e.errcode == 0) {
|
||||
logsList.value = e.datas;
|
||||
logsloading.value = false;
|
||||
} else {
|
||||
ElMessage(e.msg);
|
||||
logsloading.value = false;
|
||||
}
|
||||
} else if (err) {
|
||||
ElMessage(err);
|
||||
logsloading.value = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const doDelivery = (data) => {
|
||||
draveState.value = true;
|
||||
logsloading.value = true;
|
||||
axioshooks({
|
||||
data: { xy_sale_after_additional_id: data.xy_sale_after_additional_id },
|
||||
url: "trusteeship/shipping_info",
|
||||
customHandler: (err, e) => {
|
||||
if (!err && e) {
|
||||
if (e.errcode == 0) {
|
||||
DeliveryInfoList.value = Object.assign({}, data, e.datas);
|
||||
logsloading.value = false;
|
||||
} else {
|
||||
ElMessage(e.msg);
|
||||
logsloading.value = false;
|
||||
}
|
||||
} else if (err) {
|
||||
ElMessage(err);
|
||||
logsloading.value = false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const handleCurrentChange = (v) => {
|
||||
getDatas(v);
|
||||
}
|
||||
|
||||
const DeliveryCancel = () => {
|
||||
draveState.value = false;
|
||||
}
|
||||
const DeliveryConfirm = () => {
|
||||
draveState.value = false;
|
||||
getDatas(page.value);
|
||||
}
|
||||
|
||||
const onProcessing = (data) => {
|
||||
processData.value = data;
|
||||
processState.value = true;
|
||||
}
|
||||
|
||||
const onJudgment = (data) => {
|
||||
judgState.value = data;
|
||||
judgData.value = true;
|
||||
}
|
||||
|
||||
const onQuality = (data) => {
|
||||
router.push({ path: 'qualityWork', query: { xy_sale_after_additional_id: data.xy_sale_after_additional_id } });
|
||||
}
|
||||
|
||||
const doProcess = (data) => {
|
||||
if (!processValue.value) {
|
||||
ElMessage('请选择处理结果');
|
||||
return false;
|
||||
}
|
||||
if (!data.xy_sale_after_additional_id) {
|
||||
ElMessage('非法点击');
|
||||
return false;
|
||||
}
|
||||
axioshooks({
|
||||
url: 'trusteeship/exception_handling',
|
||||
data: { address_accord_with: processValue.value, xy_sale_after_additional_id: data?.xy_sale_after_additional_id },
|
||||
customHandler: (err, e) => {
|
||||
if (!err && e) {
|
||||
if (e.errcode == 0) {
|
||||
ElMessage("操作成功");
|
||||
processData.value = {};
|
||||
processValue.value = 1;
|
||||
processState.value = false;
|
||||
getDatas(page.value);
|
||||
} else {
|
||||
ElMessage(e.msg);
|
||||
}
|
||||
} else if (err) {
|
||||
ElMessage(err);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const doJudg = (data) => {
|
||||
if (!judgValue.value.mode) {
|
||||
ElMessage('请选择处理结果');
|
||||
return false;
|
||||
}
|
||||
// if(!data.xy_sale_after_additional_id){
|
||||
// ElMessage('非法点击');
|
||||
// return false;
|
||||
// }
|
||||
axioshooks({
|
||||
url: 'trusteeship/judgment_responsibility',
|
||||
data: { responsibility_type: judgValue.value.mode, xy_sale_after_additional_id: data?.xy_sale_after_additional_id, responsibility_explanation: judgValue.value.info, responsibility_img: judgValue.value.imageUrl },
|
||||
customHandler: (err, e) => {
|
||||
if (!err && e) {
|
||||
if (e.errcode == 0) {
|
||||
ElMessage("操作成功");
|
||||
processData.value = {};
|
||||
processValue.value = 1;
|
||||
processState.value = false;
|
||||
getDatas(page.value);
|
||||
} else {
|
||||
ElMessage(e.msg);
|
||||
}
|
||||
} else if (err) {
|
||||
ElMessage(err);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const beforeAvatarUpload = (rawFile) => {
|
||||
let types=["image/jpeg","image/png","image/gif","image/bmp","image/jpg"];
|
||||
if(!types.includes(rawFile.type)){
|
||||
ElMessage.error('图片格式有误!')
|
||||
return false
|
||||
}
|
||||
if (rawFile.size / 1024 / 1024 > 2) {
|
||||
ElMessage.error('Avatar picture size can not exceed 2MB!')
|
||||
return false
|
||||
}
|
||||
initOss(rawFile).then((link)=>{
|
||||
judgValue.value.imageUrl = link;
|
||||
}).catch((err) => {
|
||||
ElMessage(err.message);
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.avatar-uploader .avatar {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.salecontainer {
|
||||
background: #F1F2F5;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.saletopbox {
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.searchbox {
|
||||
margin-top: 5px;
|
||||
display: grid;
|
||||
align-items: center;
|
||||
grid-gap: 10px;
|
||||
grid-template-columns: 3fr 3fr 1fr 1fr 4fr;
|
||||
}
|
||||
|
||||
.receivingWorkbenchbox {
|
||||
padding: 10px;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.topinput {
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
.imeiicondefault {
|
||||
height: 26px;
|
||||
width: 26px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 4px;
|
||||
background: #f0f2f5;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.avatar-uploader .el-upload {
|
||||
border: 1px dashed var(--el-border-color);
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: var(--el-transition-duration-fast);
|
||||
}
|
||||
|
||||
.avatar-uploader .el-upload:hover {
|
||||
border-color: var(--el-color-primary);
|
||||
}
|
||||
|
||||
.el-icon.avatar-uploader-icon {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
text-align: center;
|
||||
background: #f1f1f1;
|
||||
}
|
||||
</style>
|
|
@ -1,752 +0,0 @@
|
|||
<template>
|
||||
<div class="salecontainer">
|
||||
<SearchForm :inputs="Inputs" @onSearch="onSearch" @onRest="onRest"/>
|
||||
|
||||
<Table :data="list" @looksLogs="looksLogs" :select="false" :spanMethod="true" @onSelect="onSelect" @delivery="doDelivery" :columns="newcolumns" :loading="loading" :pageSize="pageSize" :page="page" :total="total" :handleSizeChange="handleSizeChange" :handleCurrentChange="handleCurrentChange" @quality="onQuality" @processing="onProcessing" @judgment="onJudgment" @ConfirmReceipt="onConfirmReceipt"/>
|
||||
<el-dialog v-model="logsState" :before-close="()=>logsState=false" title="售后日志">
|
||||
<el-table
|
||||
:data="logsList"
|
||||
border
|
||||
height="260px"
|
||||
style="width: 100%"
|
||||
v-loading="logsloading"
|
||||
element-loading-text="加载中"
|
||||
element-loading-spinner="el-icon-loading"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="60" />
|
||||
<el-table-column prop="content" label="内容" min-width="180">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.content">
|
||||
{{ scope.row.content }}
|
||||
</span>
|
||||
<span v-else-if="scope.row.log_content">
|
||||
{{ scope.row.log_content }}
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ scope.row.content }}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column prop="truename" label="操作人">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.truename">
|
||||
{{ scope.row.truename }}({{ scope.row.username }})
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ scope.row.username }}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="add_time" label="操作时间" min-width="180" />
|
||||
</el-table>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button size="small" @click="()=>logsState=false">关 闭</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="draveState" :before-close="()=>draveState=false" title="发货" :width="900">
|
||||
<DriverForm :DeliveryInfoList="DeliveryInfoList" @deliveryConfirm="DeliveryConfirm" @deliveryCancel="DeliveryCancel"/>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="processState" :before-close="()=>processState=false" title="人工处理" :width="600">
|
||||
<el-radio-group v-model="processValue">
|
||||
<el-radio :value="1">已核实地址符合情况--售后单状态改为待售后收货</el-radio>
|
||||
<el-radio :value="2">忽略本次异常--状态改为已处理</el-radio>
|
||||
</el-radio-group>
|
||||
<div class="btnbox">
|
||||
<el-button text class="btn" @click="()=>processState=false"
|
||||
>取消<i
|
||||
class="el-icon-circle-close"
|
||||
style="margin-left: 5px"
|
||||
/></el-button>
|
||||
<el-button
|
||||
text
|
||||
type="primary"
|
||||
class="btn"
|
||||
@click="doProcess(processData)"
|
||||
>确定</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="judgState" :before-close="()=>judgState=false" title="判责情况" :width="600">
|
||||
<h4>判责</h4>
|
||||
<el-radio-group v-model="judgValue.mode">
|
||||
<el-radio :value="1">卖家责任</el-radio>
|
||||
<el-radio :value="2">买家责任</el-radio>
|
||||
</el-radio-group>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<h4>说明</h4>
|
||||
<el-input placeholder="请输入说明" type="textarea" v-model="judgValue.info"></el-input>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<h4>图片</h4>
|
||||
<el-upload
|
||||
class="avatar-uploader"
|
||||
:show-file-list="false"
|
||||
:before-upload="beforeAvatarUpload"
|
||||
>
|
||||
<img v-if="judgValue.imageUrl" :src="judgValue.imageUrl" class="avatar" />
|
||||
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
|
||||
</el-upload>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
|
||||
<div class="btnbox">
|
||||
<el-button text class="btn" @click="()=>judgState=false"
|
||||
>取消<i
|
||||
class="el-icon-circle-close"
|
||||
style="margin-left: 5px"
|
||||
/></el-button>
|
||||
<el-button
|
||||
text
|
||||
type="primary"
|
||||
class="btn"
|
||||
@click="doJudg(judgData)"
|
||||
>确定</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="receState.state" :before-close="()=>judgState=false" title="手动收货" :width="600">
|
||||
<h4>快递单号/说明</h4>
|
||||
<el-input placeholder="请输入快递单号/说明" type="textarea" v-model="receState.value"></el-input>
|
||||
<div class="btnbox" style="margin-top:15px">
|
||||
<el-button text class="btn" @click="()=>receState.state=false"
|
||||
>取消<i
|
||||
class="el-icon-circle-close"
|
||||
style="margin-left: 5px"
|
||||
/></el-button>
|
||||
<el-button
|
||||
text
|
||||
type="primary"
|
||||
class="btn"
|
||||
@click="doRecive(receState.data)"
|
||||
>确定</el-button
|
||||
>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref,unref,computed,reactive,onMounted} from 'vue';
|
||||
import Table from "@components/table.vue";
|
||||
import axioshooks from "@axioshooks";
|
||||
import {ElMessage} from "element-plus";
|
||||
import {formatDate} from "@services/commont";
|
||||
import DriverForm from "@components/driverForm/index.vue"
|
||||
import { useRouter } from 'vue-router';
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
import SearchForm from "@components/searchForm/index.vue";
|
||||
import { initOss } from '@services/commont';
|
||||
const router=useRouter();
|
||||
const activeName=ref('0');
|
||||
|
||||
|
||||
const murecedata=reactive({
|
||||
data:[],
|
||||
state:false
|
||||
});
|
||||
const receState=reactive({
|
||||
state:false,data:[],value:""
|
||||
});
|
||||
const imeipopover=ref(false);
|
||||
const imeivalue=reactive({
|
||||
imei:"",
|
||||
inspect:""
|
||||
});
|
||||
|
||||
const searchparams=reactive({
|
||||
imei:"",
|
||||
inspect:""
|
||||
});
|
||||
const pageSize=ref(10);
|
||||
const page=ref(1);
|
||||
const total=ref(0);
|
||||
const loading=ref(false);
|
||||
const logsList=ref(false);
|
||||
const logsState=ref(false);
|
||||
const logsloading=ref(false);
|
||||
const draveState=ref(false);
|
||||
const refund_status=ref('');
|
||||
const DeliveryInfoList=ref({});
|
||||
const processState=ref(false);
|
||||
const processData=ref({xy_sale_after_additional_id:''});
|
||||
const processValue=ref(1);
|
||||
const judgState=ref(false);
|
||||
const judgData=ref({xy_sale_after_additional_id:''});
|
||||
const judgValue=ref({mode:"1",info:"",imageUrl:""});
|
||||
const list=ref([]);
|
||||
|
||||
const select=computed(()=>{
|
||||
if(activeName.value=="2"){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
const onTabChange=(e)=>{
|
||||
if(activeName.value!=e.props.name){
|
||||
activeName.value=e.props.name;
|
||||
if(e.props.name=="9"){
|
||||
refund_status.value="1";
|
||||
}else if(e.props.name=="10"){
|
||||
refund_status.value="6";
|
||||
}else{
|
||||
refund_status.value="";
|
||||
}
|
||||
getDatas(1);
|
||||
}
|
||||
}
|
||||
|
||||
const params=ref({});
|
||||
|
||||
const onSearch=(values)=>{
|
||||
values = {
|
||||
...values,
|
||||
quality_inspection_time_start:values.quality_inspection_time[0],
|
||||
quality_inspection_time_end:values.quality_inspection_time[1]
|
||||
}
|
||||
params.value=values;
|
||||
getDatas(1);
|
||||
}
|
||||
const onRest=()=>{
|
||||
params.value={};
|
||||
getDatas(1);
|
||||
}
|
||||
|
||||
const renderlaebl=(item)=>{
|
||||
if(item.total>0){
|
||||
return `${item.label} ${item.total}`
|
||||
}
|
||||
return item.label
|
||||
}
|
||||
|
||||
const mutrevice=()=>{
|
||||
if(!murecedata.data){
|
||||
ElMessage("请选择要收货的订单");
|
||||
return false;
|
||||
}
|
||||
murecedata.state=true;
|
||||
}
|
||||
|
||||
const onSelect=(values)=>{
|
||||
murecedata.data=values;
|
||||
}
|
||||
|
||||
const Inputs=ref([
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"查询IMEI/SN/机器编号",
|
||||
value:"",
|
||||
title:"IMEI/SN/机器编号",
|
||||
name:"imei",
|
||||
popover:true
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"查询质检码",
|
||||
name:"quality_inspection_code",
|
||||
value:"",
|
||||
popover:true,
|
||||
title:"查询质检码",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入销售单号",
|
||||
name:"sales_order_number",
|
||||
value:"",
|
||||
title:"销售单号",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入售后订单号",
|
||||
name:"after_sales_order_number",
|
||||
value:"",
|
||||
title:"售后订单号",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入商品名称",
|
||||
name:"title",
|
||||
value:"",
|
||||
title:"商品名称",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入买家姓名",
|
||||
name:"consignee_name",
|
||||
value:"",
|
||||
title:"买家姓名",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入买家手机号",
|
||||
name:"consignee_phone",
|
||||
value:"",
|
||||
title:"买家手机号",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入买家地址",
|
||||
name:"consignee_address",
|
||||
value:"",
|
||||
title:"收货人",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入快递单号",
|
||||
name:"refund_post_no",
|
||||
value:"",
|
||||
title:"快递单号",
|
||||
},
|
||||
{
|
||||
type:"el-date-picker",
|
||||
placeholder:"",
|
||||
name:"quality_inspection_time",
|
||||
value:"",
|
||||
title:"质检时间",
|
||||
width:"215px"
|
||||
},
|
||||
]);
|
||||
|
||||
|
||||
const columns=[
|
||||
{
|
||||
dataKey: `machine_name`,
|
||||
title:"机器信息",
|
||||
width:300,
|
||||
show:true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `title`,
|
||||
title:"商品标题",
|
||||
show:true,
|
||||
width:100,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `merchant_name`,
|
||||
title:"闲鱼账号",
|
||||
width:100,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `price`,
|
||||
title:"订单价格",
|
||||
width:100,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `buy_info`,
|
||||
title:"买家信息",
|
||||
width:150,
|
||||
align: "center",
|
||||
show:true,
|
||||
},{
|
||||
dataKey: `buyer_apply_reason`,
|
||||
title:"售后原因",
|
||||
show:true,
|
||||
align: "center",
|
||||
width:100,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `inspect_report`,
|
||||
title:"质检员/售后质检报告",
|
||||
width:170,
|
||||
show:true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `quality_inspection_code`,
|
||||
title:"售后质检码",
|
||||
width:150,
|
||||
show:true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `responsibility_type`,
|
||||
title:"判责情况",
|
||||
width:150,
|
||||
show:true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `quality_inspection_time`,
|
||||
title:"质检时间",
|
||||
width:150,
|
||||
show:true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `return_tracking_number`,
|
||||
title:"寄回物流信息",
|
||||
width:150,
|
||||
show:true,
|
||||
align: "center",
|
||||
},
|
||||
|
||||
{
|
||||
key: `买家退货物流`,
|
||||
dataKey: `refund_post_no`,
|
||||
title:"买家退货物流",
|
||||
width:150,
|
||||
show:true,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `receiver`,
|
||||
title:"收货人/收货时间",
|
||||
width:140,
|
||||
show:true,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `sale_after_additional_status`,
|
||||
title:"售后状态",
|
||||
width:100,
|
||||
show:true,
|
||||
align: "center",
|
||||
},{
|
||||
key: `操作`,
|
||||
dataKey: `opction`,
|
||||
title:"操作",
|
||||
width:100,
|
||||
show:true,
|
||||
fixed:'right',
|
||||
align: "center",
|
||||
status:['Logs']
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
const newcolumns=computed(()=>{
|
||||
let cludata=Object.assign([],columns);
|
||||
if(activeName.value=='10'){
|
||||
cludata.splice(columns.length-2,0,{
|
||||
dataKey: `seller_refuse_reason`,
|
||||
label:"卖家拒绝原因",
|
||||
show:true,
|
||||
align: "center",
|
||||
width:150,
|
||||
align: "center",
|
||||
});
|
||||
|
||||
}
|
||||
// else if(activeName.value=='8'){
|
||||
// cludata.splice(columns.length-2,0,{
|
||||
// dataKey: `address_accord_with`,
|
||||
// label:"处理结果",
|
||||
// show:true,
|
||||
// align: "center",
|
||||
// width:100,
|
||||
// align: "center",
|
||||
// });
|
||||
// }
|
||||
return cludata;
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
const getDatas=(p)=>{
|
||||
page.value=p?p:1;
|
||||
loading.value=true;
|
||||
total.value=0;
|
||||
axioshooks({
|
||||
data:{sale_after_additional_status:'9',list_row:pageSize.value,page:page.value,refund_status:refund_status.value,...params.value},
|
||||
url:"trusteeship/after_sales_list",
|
||||
customHandler:(err,e)=>{
|
||||
if(!err&&e){
|
||||
if(e.errcode==0){
|
||||
list.value=e.datas.datas_list;
|
||||
total.value=e.datas.total;
|
||||
loading.value=false;
|
||||
list.value.forEach(item=>{
|
||||
item.responsibility = true
|
||||
})
|
||||
}else{
|
||||
ElMessage(e.msg);
|
||||
loading.value=false;
|
||||
}
|
||||
}else if(err){
|
||||
ElMessage(err);
|
||||
loading.value=false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onMounted(()=>{
|
||||
getDatas(1);
|
||||
});
|
||||
|
||||
|
||||
const handleSizeChange=(v)=>{
|
||||
if(pageSize.value!=v){
|
||||
pageSize.value=v;
|
||||
getDatas(1);
|
||||
}
|
||||
}
|
||||
|
||||
const looksLogs=(data)=>{
|
||||
logsloading.value=true;
|
||||
logsState.value=true;
|
||||
axioshooks({
|
||||
data:{refund_id:data.xy_sale_after_additional_id},
|
||||
url:"xy/sale_after_log",
|
||||
customHandler:(err,e)=>{
|
||||
if(!err&&e){
|
||||
if(e.errcode==0){
|
||||
logsList.value=e.datas;
|
||||
logsloading.value=false;
|
||||
}else{
|
||||
ElMessage(e.msg);
|
||||
logsloading.value=false;
|
||||
}
|
||||
}else if(err){
|
||||
ElMessage(err);
|
||||
logsloading.value=false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const doDelivery=(data)=>{
|
||||
draveState.value=true;
|
||||
logsloading.value=true;
|
||||
axioshooks({
|
||||
data:{xy_sale_after_additional_id:data.xy_sale_after_additional_id},
|
||||
url:"trusteeship/shipping_info",
|
||||
customHandler:(err,e)=>{
|
||||
if(!err&&e){
|
||||
if(e.errcode==0){
|
||||
DeliveryInfoList.value=Object.assign({},data,e.datas);
|
||||
logsloading.value=false;
|
||||
}else{
|
||||
ElMessage(e.msg);
|
||||
logsloading.value=false;
|
||||
}
|
||||
}else if(err){
|
||||
ElMessage(err);
|
||||
logsloading.value=false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const handleCurrentChange=(v)=>{
|
||||
if(page.value!=v){
|
||||
getDatas(v);
|
||||
}
|
||||
}
|
||||
|
||||
const DeliveryCancel=()=>{
|
||||
draveState.value=false;
|
||||
}
|
||||
const DeliveryConfirm=()=>{
|
||||
draveState.value=false;
|
||||
getDatas(page.value);
|
||||
}
|
||||
|
||||
const onProcessing=(data)=>{
|
||||
processData.value=data;
|
||||
processState.value=true;
|
||||
}
|
||||
|
||||
const onJudgment=(data)=>{
|
||||
judgState.value=data;
|
||||
judgData.value=true;
|
||||
}
|
||||
|
||||
const onQuality=(data)=>{
|
||||
let imei=data.imei1?data.imei1:data.imei2||data.sn;
|
||||
router.push({path:'qualityWork',query:{imei:imei}});
|
||||
}
|
||||
|
||||
const doProcess=(data)=>{
|
||||
if(!processValue.value){
|
||||
ElMessage('请选择处理结果');
|
||||
return false;
|
||||
}
|
||||
if(!data.xy_sale_after_additional_id){
|
||||
ElMessage('非法点击');
|
||||
return false;
|
||||
}
|
||||
axioshooks({
|
||||
url:'trusteeship/exception_handling',
|
||||
data:{address_accord_with:processValue.value,xy_sale_after_additional_id:data?.xy_sale_after_additional_id},
|
||||
customHandler:(err,e)=>{
|
||||
if(!err&&e){
|
||||
if(e.errcode==0){
|
||||
ElMessage("操作成功");
|
||||
processData.value={};
|
||||
processValue.value=1;
|
||||
processState.value=false;
|
||||
getDatas(page.value);
|
||||
}else{
|
||||
ElMessage(e.msg);
|
||||
}
|
||||
}else if(err){
|
||||
ElMessage(err);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const doJudg=(data)=>{
|
||||
if(!judgValue.value.mode){
|
||||
ElMessage('请选择处理结果');
|
||||
return false;
|
||||
}
|
||||
if(!data.xy_sale_after_additional_id){
|
||||
ElMessage('非法点击');
|
||||
return false;
|
||||
}
|
||||
axioshooks({
|
||||
url:'trusteeship/judgment_responsibility',
|
||||
data:{responsibility_type:judgValue.value.mode,xy_sale_after_additional_id:data?.xy_sale_after_additional_id,responsibility_explanation:judgValue.value.info,responsibility_img:judgValue.value.imageUrl},
|
||||
customHandler:(err,e)=>{
|
||||
if(!err&&e){
|
||||
if(e.errcode==0){
|
||||
ElMessage("操作成功");
|
||||
processData.value={};
|
||||
processValue.value=1;
|
||||
processState.value=false;
|
||||
getDatas(page.value);
|
||||
}else{
|
||||
ElMessage(e.msg);
|
||||
}
|
||||
}else if(err){
|
||||
ElMessage(err);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const beforeAvatarUpload=(rawFile)=>{
|
||||
let types=["image/jpeg","image/png","image/gif","image/bmp","image/jpg"];
|
||||
if(!types.includes(rawFile.type)){
|
||||
ElMessage.error('图片格式有误!')
|
||||
return false
|
||||
}
|
||||
if (rawFile.size / 1024 / 1024 > 2) {
|
||||
ElMessage.error('图片超过 2MB 大小!')
|
||||
return false
|
||||
}
|
||||
initOss(rawFile).then((link)=>{
|
||||
judgValue.value.imageUrl=link;
|
||||
}).catch((err) => {
|
||||
ElMessage(err.message);
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
const onConfirmReceipt=(data)=>{
|
||||
receState.data=data;
|
||||
receState.state=true;
|
||||
}
|
||||
|
||||
const doRecive=(data)=>{
|
||||
if(!receState.value){
|
||||
ElMessage("请输入快递单号或说明");
|
||||
return false;
|
||||
}
|
||||
if(!data.xy_sale_after_additional_id){
|
||||
ElMessage('非法点击');
|
||||
return false;
|
||||
}
|
||||
axioshooks({
|
||||
url:'trusteeship/receiving_goods',
|
||||
data:{xy_sale_after_additional_id:data.xy_sale_after_additional_id||1,tracking_number:receState.value},
|
||||
customHandler:(err,e)=>{
|
||||
if(!err&&e){
|
||||
if(e.errcode==0){
|
||||
ElMessage("操作成功");
|
||||
receState.value="";
|
||||
receState.data={};
|
||||
receState.state=false;
|
||||
getDatas(page.value);
|
||||
}else{
|
||||
ElMessage(e.msg);
|
||||
}
|
||||
}else if(err){
|
||||
ElMessage(err);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.avatar-uploader .avatar {
|
||||
width:80px;
|
||||
height:80px;
|
||||
display: block;
|
||||
}
|
||||
.salecontainer{
|
||||
background:#F1F2F5;
|
||||
flex:1;
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
}
|
||||
.saleordertopbox{
|
||||
background: #fff;
|
||||
padding:20px 20px 0;
|
||||
}
|
||||
.searchbox{
|
||||
margin-top:5px;
|
||||
display:grid;
|
||||
align-items:center;
|
||||
grid-gap: 10px;
|
||||
grid-template-columns:3fr 3fr 1fr 1fr 4fr;
|
||||
}
|
||||
|
||||
.receivingWorkbenchbox {
|
||||
padding: 10px;
|
||||
flex:1;
|
||||
}
|
||||
.topinput{
|
||||
height:36px;
|
||||
}
|
||||
|
||||
.imeiicondefault{
|
||||
height:26px;
|
||||
width:26px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 4px;
|
||||
background: #f0f2f5;
|
||||
cursor: pointer;
|
||||
}
|
||||
.avatar-uploader .el-upload {
|
||||
border: 1px dashed var(--el-border-color);
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: var(--el-transition-duration-fast);
|
||||
}
|
||||
|
||||
.avatar-uploader .el-upload:hover {
|
||||
border-color: var(--el-color-primary);
|
||||
}
|
||||
.toolbox{
|
||||
display:flex;
|
||||
align-items:center;
|
||||
justify-content: space-between;
|
||||
padding:20px 20px 0;
|
||||
}
|
||||
|
||||
.el-icon.avatar-uploader-icon {
|
||||
font-size: 28px;
|
||||
color: #8c939d;
|
||||
width: 80px;
|
||||
height:80px;
|
||||
text-align: center;
|
||||
background: #f1f1f1;
|
||||
}
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,286 +0,0 @@
|
|||
<template>
|
||||
<div class="l-footer">
|
||||
<div class="title" style="margin-bottom: 0">
|
||||
<div class="text">商品图片</div>
|
||||
</div>
|
||||
<div class="img-box">
|
||||
<div class="img-title">
|
||||
<div class="l-t">
|
||||
图片来源于拍照app
|
||||
<i class="iconfont icon-shuaxin" @click="Refresh"></i>
|
||||
</div>
|
||||
<span @click="lookcode">查看手机条码</span>
|
||||
</div>
|
||||
<div class="imglist">
|
||||
<draggable
|
||||
v-model="srcListAccount"
|
||||
style="display: inline-block"
|
||||
v-if="srcListAccount.length"
|
||||
@end="end"
|
||||
>
|
||||
<!-- 图片展示 -->
|
||||
<transition-group>
|
||||
<div
|
||||
v-for="(item, ind) in srcListAccount"
|
||||
:key="ind"
|
||||
class="image-container"
|
||||
>
|
||||
<el-image
|
||||
style="width: 100px; height: 100px; margin-right: 7px"
|
||||
fit="cover"
|
||||
:src="item"
|
||||
:preview-src-list="srcListAccount"
|
||||
/>
|
||||
<el-button
|
||||
icon="el-icon-delete"
|
||||
class="delete-button"
|
||||
style="z-index: 5"
|
||||
@click="deleteImage(ind, $event)"
|
||||
/>
|
||||
</div>
|
||||
</transition-group>
|
||||
</draggable>
|
||||
<!-- 没有图片显示 -->
|
||||
<div class="nothing" v-else>
|
||||
<el-empty
|
||||
:image-size="90"
|
||||
description="暂无图片,可点击查看手机条码扫码获取照片"
|
||||
/>
|
||||
</div>
|
||||
<!-- 图片上传样式 -->
|
||||
|
||||
<div
|
||||
class="image-upload"
|
||||
v-loading="dialogVisible"
|
||||
element-loading-spinner="el-icon-loading"
|
||||
element-loading-background="rgba(0, 0, 0, 0.0)"
|
||||
>
|
||||
<el-upload
|
||||
multiple
|
||||
action=""
|
||||
:show-file-list="false"
|
||||
:http-request="handleUpload"
|
||||
:before-upload="beforeAvatarUpload"
|
||||
>
|
||||
<el-button class="btn-upload" style="border: 2px #ccc dashed">
|
||||
<i style="font-size: 31px" :class="dialogVisible?'':'el-icon-picture-outline'" />
|
||||
</el-button>
|
||||
</el-upload>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog
|
||||
width="390px"
|
||||
title="条码"
|
||||
:visible="printDate"
|
||||
@opened="generateBarcode"
|
||||
>
|
||||
<div style="text-align: center">
|
||||
<img id="barcode" width="333px" height="190px" alt="" src="" />
|
||||
</div>
|
||||
<div style="text-align: center">
|
||||
<el-button round @click="printcode">打印条码</el-button>
|
||||
<el-button round @click="barcode">刷新条码</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import draggable from "vuedraggable";
|
||||
import { back_print } from "@/api/shoppingman";
|
||||
// import { upload_img } from "@/api/qualityInspectioncenter";
|
||||
import { ElMessage } from 'element-plus';
|
||||
// import * as imageConversion from "image-conversion";
|
||||
export default {
|
||||
props: ["dateOne", "srcList"],
|
||||
data() {
|
||||
return {
|
||||
printDate: false,
|
||||
imgStatus: "",
|
||||
srcListAccount: this.srcList,
|
||||
dialogVisible: false,
|
||||
};
|
||||
},
|
||||
components: {
|
||||
// draggable,
|
||||
},
|
||||
watch: {
|
||||
srcList: {
|
||||
handler(old) {
|
||||
this.srcListAccount = old;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
//查看手机条码
|
||||
lookcode() {
|
||||
this.printDate = true;
|
||||
},
|
||||
generateBarcode() {
|
||||
this.$nextTick(() => {
|
||||
JsBarcode("#barcode", this.dateOne.serial_number, {
|
||||
displayValue: true,
|
||||
});
|
||||
});
|
||||
},
|
||||
// 获取条形码
|
||||
barcode() {
|
||||
this.generateBarcode();
|
||||
this.$message.success("刷新成功");
|
||||
},
|
||||
// 打印条码
|
||||
printcode() {
|
||||
back_print({ res_id: this.dateOne.res_id }).then((res) => {
|
||||
if (res.errcode == 0) {
|
||||
this.$message.success("打印成功");
|
||||
}
|
||||
});
|
||||
},
|
||||
//移动图片交换图片顺序
|
||||
end() {
|
||||
this.$emit("moveimglist", this.srcListAccount);
|
||||
},
|
||||
|
||||
// 上传之前
|
||||
beforeAvatarUpload(file) {
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt2M)
|
||||
return new Promise((resolve) => {
|
||||
// 小于2M 不压缩
|
||||
imageConversion.compressAccurately(file, 700).then((res) => {
|
||||
resolve(res);
|
||||
});
|
||||
});
|
||||
},
|
||||
// 照片上传
|
||||
handleUpload(fileimg) {
|
||||
this.dialogVisible = true;
|
||||
|
||||
if (this.srcListAccount) {
|
||||
console.log(this.srcListAccount.length);
|
||||
if (this.srcListAccount.length >= 9) {
|
||||
this.$message.warning("上传图片数量不能超过九张");
|
||||
return;
|
||||
}
|
||||
}
|
||||
initOss(fileimg.file).then((url)=>{
|
||||
this.srcListAccount.push(url);
|
||||
this.dialogVisible = false;
|
||||
ElMessage("上传成功");
|
||||
}).catch((err)=>{
|
||||
ElMessage(err.message);
|
||||
});
|
||||
},
|
||||
// 删除照片
|
||||
deleteImage(ind, event) {
|
||||
event.target.blur();
|
||||
if (event.target.nodeName == "SPAN" || event.target.nodeName == "I") {
|
||||
event.target.parentNode.blur();
|
||||
}
|
||||
this.srcListAccount.splice(ind, 1);
|
||||
this.$message.warning("删除成功");
|
||||
// this.uploadimg(1);
|
||||
},
|
||||
//刷新图片
|
||||
Refresh() {
|
||||
this.$emit("getimglist", 1);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang='scss'>
|
||||
.l-footer {
|
||||
border-radius: 6px;
|
||||
background-color: #fff;
|
||||
margin-top: 20px;
|
||||
.img-box {
|
||||
display: inline-block;
|
||||
max-width: 635px;
|
||||
margin-left: 20px;
|
||||
padding-bottom: 15px;
|
||||
.img-title {
|
||||
min-width: 635px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
.l-t {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
.icon-shuaxin {
|
||||
color: #4091ff;
|
||||
font-size: 18px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
span {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #4091ff;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.imglist {
|
||||
display: flex;
|
||||
// align-items: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.image-container {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
// display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
image-container:hover {
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.image-upload {
|
||||
height: 100px;
|
||||
display: inline-block;
|
||||
}
|
||||
.image-upload ::v-deep .el-button {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.nothing {
|
||||
margin-right: 20px;
|
||||
}
|
||||
.delete-button {
|
||||
width: 20px;
|
||||
// height: 100px;
|
||||
padding: 10px 30px 10px 10px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 10px;
|
||||
border: 1px solid transparent;
|
||||
font-size: 18px;
|
||||
color: white;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
//opacity: 0; /* 初始时隐藏删除图标 */
|
||||
transition: opacity 0.3s ease; /* 添加过渡效果 */
|
||||
}
|
||||
::v-deep .delete-button:hover {
|
||||
//opacity: 1; /* 鼠标悬停时显示删除图标 */
|
||||
//border-color: red;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
font-size: 19px;
|
||||
border: 1px solid transparent;
|
||||
background: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.delete-button:active {
|
||||
// color: white;
|
||||
border: 1px solid transparent;
|
||||
background-color: transparent;
|
||||
}
|
||||
//上传图片加载图标
|
||||
::v-deep .el-icon-loading {
|
||||
font-size: 48px;
|
||||
color:#ccc ;
|
||||
}
|
||||
</style>
|
|
@ -1,41 +0,0 @@
|
|||
<template>
|
||||
<div class="qcinputbox">
|
||||
<el-button :type="type" round @click="onSelect" :disabled="disabled">
|
||||
<slot></slot>
|
||||
</el-button>
|
||||
<el-date-picker type="date" :placeholder="placeholder" :disabled="disabled" style="min-width:150px" v-model.lazy="inputvalue" v-if="type=='primary'" @change="onInputChange"/>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script setup>
|
||||
import {ref,reactive,watch,onMounted} from 'vue';
|
||||
const props=defineProps(['value','placeholder','type','disabled']);
|
||||
const $emit=defineEmits(['click','change']);
|
||||
|
||||
const inputvalue=ref("");
|
||||
|
||||
const {value,placeholder,type}=props;
|
||||
|
||||
onMounted(()=>{
|
||||
if(value){
|
||||
inputvalue.value=value;
|
||||
}
|
||||
});
|
||||
|
||||
const onInputChange=(val)=>{
|
||||
$emit('change',new Date(newval).getTime());
|
||||
}
|
||||
|
||||
const onSelect=()=>{
|
||||
$emit('click');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.qcinputbox{
|
||||
display:flex;
|
||||
align-items: stretch;
|
||||
margin-right:10px;
|
||||
}
|
||||
</style>
|
|
@ -1,42 +0,0 @@
|
|||
<template>
|
||||
<div class="qcinputbox">
|
||||
<el-button :type="type" round @click="onSelect" size="small" :disabled="disabled">
|
||||
<slot></slot>
|
||||
</el-button>
|
||||
<el-input :placeholder="placeholder" size="small" style="width:150px" :disabled="disabled" v-model.lazy="inputvalue" v-if="type=='primary'" @change="onInputChange"/>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ref,reactive,watch,onMounted} from 'vue';
|
||||
const {value,placeholder,type}=defineProps(['value','placeholder','type','disabled']);
|
||||
const $emit=defineEmits(['click','change']);
|
||||
|
||||
|
||||
const inputvalue=ref("");
|
||||
|
||||
onMounted(()=>{
|
||||
if(value){
|
||||
inputvalue.value=value;
|
||||
}
|
||||
});
|
||||
|
||||
const onInputChange=(val)=>{
|
||||
$emit('change',new Date(newval).getTime());
|
||||
}
|
||||
|
||||
const onSelect=()=>{
|
||||
$emit('click');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss">
|
||||
.qcinputbox{
|
||||
display:flex;
|
||||
align-items: stretch;
|
||||
margin-right:10px;
|
||||
}
|
||||
</style>
|
|
@ -1,265 +0,0 @@
|
|||
<template>
|
||||
<div class="comparisonbox">
|
||||
<div class="comparisontop">
|
||||
<h4 class="comparisonitemtitle"> 售前质检报告</h4>
|
||||
<h4 class="comparisonitemtitle"> 售后质检报告</h4>
|
||||
</div>
|
||||
<div class="comparisonitem">
|
||||
<div class="comparisonitemmain">
|
||||
<div v-for="im,i in data.new" :key="String(i)" class="comparisonitemmainitem">
|
||||
<div class="comparisonitemmaintitle">{{im.qc_item}}({{im.oldnoabnormal}}项全部正常{{im.oldabnormal>0?','+im.oldabnormal+'项需注意':null}})</div>
|
||||
<div v-for="citem,indexs in im.child" :key="String(indexs)" class="comparisonitemmainitemcontainer" >
|
||||
<div class="comparisonitemmainitemtitle">{{citem.qc_item}}</div>
|
||||
<div v-for="cim,cis in citem.child" :key="String(cis)" class="comparisonitemmainitemmain" :style="cim?.about==1?{background:'#fbf1ef',border:'1px dashed red'}:null" >
|
||||
<div class="comparisonitemmainitemattrname">{{cim.qc_item}}</div>
|
||||
<div class="comparisonitemmainitemattrline"/>
|
||||
<div class="comparisonitemmainitemattrvalue">{{cim.oldvalue}}{{cim.oldinputStatus&&cim.oldinputDate!=''?cim.oldinputDate:null}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comparisonitemmain">
|
||||
<div v-for="im,i in data.new" :key="String(i)" class="comparisonitemmainitem">
|
||||
<div class="comparisonitemmaintitle">{{im.qc_item}}({{im.noabnormalnum}}项全部正常{{im.abnormalnum>0?','+im.abnormalnum+'项需注意':null}})</div>
|
||||
<div v-for="citem,indexs in im.child" :key="String(indexs)" class="comparisonitemmainitemcontainer" >
|
||||
<div class="comparisonitemmainitemtitle">{{citem.qc_item}}</div>
|
||||
<div v-for="cim,cis in citem.child" :key="String(cis)" class="comparisonitemmainitemmain" :style="cim?.about==1?{background:'#fbf1ef',border:'1px dashed red'}:null">
|
||||
<div class="comparisonitemmainitemattrname">{{cim.qc_item}}</div>
|
||||
<div class="comparisonitemmainitemattrline"/>
|
||||
<div class="comparisonitemmainitemattrvalue">{{cim.value}}{{cim.inputStatus&&cim.inputDate!=''?cim.inputDate:null}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comparisonfooter">
|
||||
<div v-if="data.totalabount>0" class="comparisonfooterdesc">比对结果:有{{data.totalabount}}项不一致</div>
|
||||
<div v-if="props.responsibility_type!='1'" class="comparisonfooterbtnbox">
|
||||
<el-button @click="onXiachi">瑕疵图</el-button>
|
||||
<el-button @click="onNoPanze">暂不判责</el-button>
|
||||
<el-button type="primary" @click="onDoPanzePrint">判责并打印质检码</el-button>
|
||||
</div>
|
||||
<div v-else class="comparisonfooterbtnbox">
|
||||
<el-button @click="onNoPanze">关闭</el-button>
|
||||
<el-button @click="onXiachi">瑕疵图</el-button>
|
||||
<el-button type="primary" @click="print">打印质检码</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {ref,reactive,onMounted,computed,watch} from 'vue';
|
||||
const props=defineProps(["comparisondata","responsibility_type"]);
|
||||
const $emit=defineEmits(["print","onNoPanze","onDoPanzePrint",'onXiachi']);
|
||||
|
||||
|
||||
const data=reactive({
|
||||
old:[],
|
||||
new:[]
|
||||
});
|
||||
|
||||
watch(props,(newval)=>{
|
||||
formatdatas(newval.comparisondata);
|
||||
},{deep:true})
|
||||
|
||||
onMounted(()=>{
|
||||
formatdatas(props.comparisondata);
|
||||
});
|
||||
|
||||
const onXiachi=()=>{
|
||||
$emit("onXiachi")
|
||||
}
|
||||
|
||||
const formatdatas=(datas)=>{
|
||||
|
||||
let newdatas=[];
|
||||
datas.new.xy_qc_item.map((h,)=>{
|
||||
let child=[];
|
||||
let noabnormal=0;
|
||||
let abnormal=0;
|
||||
h.child.map((c)=>{
|
||||
let tchild=[];
|
||||
c.child.map((t)=>{
|
||||
let dchild=[];
|
||||
t.qc_item_value.map((d)=>{
|
||||
t.abnormal=d.abnormal;
|
||||
t.inputDate=d.inputDate;
|
||||
t.inputStatus=d.inputStatus;
|
||||
if(d.qc_item_value.indexOf('手填')>-1){
|
||||
dchild.push(datas.new.battery_cycle>-1);
|
||||
}else if(d.qc_item_value.indexOf('到20XX')>-1){
|
||||
dchild.push(datas.new.warranty_end_time);
|
||||
}else{
|
||||
dchild.push(d.qc_item_value);
|
||||
}
|
||||
});
|
||||
if(t.abnormal==1){
|
||||
abnormal++;
|
||||
}else{
|
||||
noabnormal++;
|
||||
}
|
||||
tchild.push({qc_item:t.qc_item,value:dchild.join(',')});
|
||||
});
|
||||
child.push({qc_item:c.qc_item ,child:tchild});
|
||||
});
|
||||
newdatas.push({qc_item:h.qc_item ,child:child,abnormalnum:abnormal,noabnormalnum:noabnormal});
|
||||
});
|
||||
|
||||
let totalabount=0;
|
||||
newdatas.map((h,i)=>{
|
||||
h.oldabnormal=0;
|
||||
h.oldnoabnormal=0;
|
||||
const oldh=datas.old.xy_qc_item.find((f)=>f.qc_item==h.qc_item);
|
||||
h.child.map((c,ii)=>{
|
||||
const oldc=oldh.child.find((f)=>f.qc_item==c.qc_item);
|
||||
c.child.map((t)=>{
|
||||
const oldt=oldc.child.find((f)=>f.qc_item==t.qc_item);
|
||||
let oldvalues=[];
|
||||
oldt.qc_item_value.map((d)=>{
|
||||
t.oldabnormal=d.abnormal;
|
||||
t.oldinputDate=d.oldinputDate;
|
||||
t.oldinputStatus=d.oldinputStatus;
|
||||
if(d.qc_item_value.indexOf('手填')>-1){
|
||||
oldvalues.push(datas.old.battery_cycle||"暂无");
|
||||
}else if(d.qc_item_value.indexOf('到20XX')>-1){
|
||||
oldvalues.push(datas.old.warranty_end_time||"暂无");
|
||||
}else{
|
||||
oldvalues.push(d.qc_item_value);
|
||||
}
|
||||
|
||||
});
|
||||
if(t.oldabnormal==1){
|
||||
h.oldabnormal++;
|
||||
}else{
|
||||
h.oldnoabnormal++;
|
||||
}
|
||||
t.oldvalue=oldvalues.join(",");
|
||||
if(t.value!=t.oldvalue){
|
||||
t.about=1;
|
||||
totalabount+=1;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
data.new=newdatas;
|
||||
data.totalabount=totalabount;
|
||||
}
|
||||
|
||||
const onDoPanzePrint=()=>{
|
||||
$emit("onDoPanzePrint");
|
||||
}
|
||||
|
||||
const onNoPanze=()=>{
|
||||
$emit("onNoPanze");
|
||||
}
|
||||
|
||||
const print=()=>{
|
||||
$emit("print");
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.comparisonbox{
|
||||
display:flex;
|
||||
align-items:stretch;
|
||||
flex:1;
|
||||
flex-direction:column;
|
||||
max-height:520px;
|
||||
.comparisontop{
|
||||
display:flex;
|
||||
align-items:stretch;
|
||||
flex:1;
|
||||
&:first-child{
|
||||
margin-right:5px;
|
||||
}
|
||||
&:nth-child(2){
|
||||
margin-left:5px;
|
||||
}
|
||||
.comparisonitemtitle{
|
||||
flex:1;
|
||||
color:#101010;
|
||||
font-weight:bold;
|
||||
font-size:15px;
|
||||
margin:0 0 12px;
|
||||
}
|
||||
}
|
||||
.comparisonitem{
|
||||
position: relative;
|
||||
flex:1;
|
||||
display:flex;
|
||||
align-items:stretch;
|
||||
flex:1;
|
||||
overflow-y:scroll;
|
||||
min-height:300px;
|
||||
max-height:520px;
|
||||
&::-webkit-scrollbar{
|
||||
display:none;
|
||||
}
|
||||
.comparisonitemmain{
|
||||
height: 100%;
|
||||
padding:12px;
|
||||
background:#fafafa;
|
||||
flex:1;
|
||||
|
||||
&:first-child{
|
||||
margin-right:5px;
|
||||
}
|
||||
&:nth-child(2){
|
||||
margin-left:5px;
|
||||
}
|
||||
|
||||
.comparisonitemmaintitle{
|
||||
font-size:15px;
|
||||
color:#101010;
|
||||
}
|
||||
.comparisonitemmainitemtitle{
|
||||
font-size:14px;
|
||||
color:#333;
|
||||
}
|
||||
.comparisonitemmainitemmain{
|
||||
display:flex;
|
||||
justify-content: space-between;
|
||||
align-items:center;
|
||||
padding:5px 12px;
|
||||
margin:5px 0;
|
||||
border-radius:6px;
|
||||
}
|
||||
.comparisonitemmainitemcontainer{
|
||||
padding:5px 12px;
|
||||
}
|
||||
.comparisonitemmainitemattrname{
|
||||
font-size:14px;
|
||||
color:#666;
|
||||
}
|
||||
.comparisonitemmainitemabout{
|
||||
position: absolute;
|
||||
background:#fbf1ef;
|
||||
border:1px dashed red;
|
||||
height:36px;
|
||||
left:0;
|
||||
right:0;
|
||||
z-index:-1;
|
||||
}
|
||||
.comparisonitemmainitemattrline{
|
||||
|
||||
flex:1;
|
||||
border-top:1px dashed #e5e5e5;
|
||||
margin:0 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.comparisonfooterdesc{
|
||||
font-size:16px;
|
||||
color:red;
|
||||
font-weight:bold;
|
||||
margin:20px 0;
|
||||
}
|
||||
|
||||
.comparisonfooterbtnbox{
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
|
@ -1,281 +0,0 @@
|
|||
<template>
|
||||
<div class="qcTablebox">
|
||||
<div v-for="(it, ix) in tableData" :key="ix" class="qctableitem">
|
||||
<div class="qctableitemtitle">{{it.qc_item}}</div>
|
||||
<div class="qctableitemmain">
|
||||
<div class="qctableitemoneitem" v-for="ict,ici in it.child" :key="ici">
|
||||
<div class="qctableitemonemainonetitle">
|
||||
{{ict.qc_item }}
|
||||
</div>
|
||||
<div class="qctableitemonemainonemain">
|
||||
<div v-for="item,icis in ict.child" :key="icis" class="qctableitemonemainonemainitem">
|
||||
<div class="qctableitemonemainonemaintitle">
|
||||
{{item.qc_item}}
|
||||
</div>
|
||||
<div class="qctableitemonemaintwoitemmain">
|
||||
<div v-for="iv,ind in item.qc_item_value" :label="iv.qc_item_value_id" :key="ind" >
|
||||
<QcInput placeholder="请输入" :disabled="disabled" :value="getValue(item,iv)" :battery_cycle="battery_cycle" :type="getType(item,iv)" v-if="iv.qc_item_value && iv.qc_item_value.indexOf('手填')>-1" @change="onInputChange(item,iv,$event)" @click="onSelect(item,iv)">
|
||||
{{ iv.qc_item_value }}
|
||||
</QcInput>
|
||||
<QcDate placeholder="请选择" :disabled="disabled" style="width:150px" :type="getType(item,iv)" :warranty_end_time="warranty_end_time" :value="getValue(item,iv)" v-else-if="iv.qc_item_value.indexOf('到20XX年')>-1" @click="onSelect(item,iv)" @change="onInputChange(item,iv,$event)">
|
||||
{{ iv.qc_item_value }}
|
||||
</QcDate>
|
||||
<el-button :disabled="disabled" :type="getType(item,iv)" @click="onSelect(item,iv)" size="small" round v-else >
|
||||
{{ iv.qc_item_value }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {reactive,watch,onMounted,onUpdated,ref,computed,watchEffect} from 'vue';
|
||||
import QcInput from "./qcInput.vue";
|
||||
import QcDate from "./qcDate.vue";
|
||||
import {ElMessage} from "element-plus";
|
||||
const props=defineProps({'is_easy':String,'xyQcItem':Array,'disabled':Boolean,'battery_cycle':String,'warranty_end_time':String});
|
||||
const $emit=defineEmits(['change']);
|
||||
|
||||
const {is_easy,xyQcItem,disabled,warranty_end_time,battery_cycle}=props;
|
||||
|
||||
const tableData=ref([]);
|
||||
const tablevalue=ref([]);
|
||||
// 使用watch
|
||||
watch(() =>props.xyQcItem, (newCount, oldCount) => {
|
||||
let newxyQcItem=Object.assign([],newCount);
|
||||
if(newxyQcItem.length>0){
|
||||
tablevalue.value=[];
|
||||
formatdatas(newxyQcItem);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
watch(tableData,async (newval,oldval)=>{
|
||||
$emit('change',{datas:newval,value:tablevalue.value});
|
||||
});
|
||||
|
||||
onMounted(()=>{
|
||||
let newxyQcItem=Object.assign([],xyQcItem);
|
||||
if(newxyQcItem.length>0){
|
||||
tablevalue.value=[];
|
||||
formatdatas(newxyQcItem);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const onInputChange=(item,iv,e)=>{
|
||||
let newvalue=e;
|
||||
if(!isNaN(e)){
|
||||
if(iv.qc_item_value.indexOf('手填')>-1||iv.qc_item_value.indexOf('到20XX')>-1){
|
||||
if(tablevalue.value[item.qc_item_id]){
|
||||
const find= tablevalue.value[item.qc_item_id].find((f)=>f.id==iv.qc_item_value_id);
|
||||
if(find){
|
||||
find.key = iv.qc_item_value
|
||||
find.value=newvalue;
|
||||
}
|
||||
}
|
||||
}
|
||||
formatdatas(props.xyQcItem);
|
||||
}
|
||||
}
|
||||
|
||||
const formatdatas=(datas)=>{
|
||||
let newxyQcItem=Object.assign([],datas);
|
||||
newxyQcItem.map((h)=>{
|
||||
if(h.child){
|
||||
h.child.map((c)=>{
|
||||
if(c.child){
|
||||
c.child.map((t)=>{
|
||||
if(t.qc_item_value){
|
||||
const find=tablevalue.value[t.qc_item_id];
|
||||
if(find){
|
||||
t.value=find;
|
||||
}else{
|
||||
if(c.qc_item.indexOf("多选")>-1){
|
||||
let defaultdata=[];
|
||||
t.qc_item_value.map((d)=>{
|
||||
if(d.default==1){
|
||||
defaultdata.push({id:d.qc_item_value_id});
|
||||
}
|
||||
});
|
||||
if(defaultdata.length>0){
|
||||
t.value=defaultdata;
|
||||
}else{
|
||||
// console.log(t,888);
|
||||
t.value=[t.qc_item_value[0].qc_item_value_id];
|
||||
}
|
||||
tablevalue.value[t.qc_item_id]=t.value;
|
||||
}else{
|
||||
let defaultdata=t.qc_item_value.find((f)=>f.default==1);
|
||||
let itemdata=defaultdata;
|
||||
if(defaultdata){
|
||||
itemdata=defaultdata;
|
||||
}else{
|
||||
// console.log(t,9090);
|
||||
itemdata=t.qc_item_value[0].qc_item_value_id;
|
||||
}
|
||||
t.value=[{id:itemdata.qc_item_value_id}];
|
||||
t.abnormal=itemdata.abnormal;
|
||||
tablevalue.value[t.qc_item_id]=t.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
tableData.value=newxyQcItem;
|
||||
}
|
||||
|
||||
const onSelect=(item,iv)=>{
|
||||
if(item.qc_item.indexOf("多选")>-1){
|
||||
if(tablevalue.value[item.qc_item_id]){
|
||||
const find= tablevalue.value[item.qc_item_id].find((f)=>f.id==iv.qc_item_value_id);
|
||||
if(find){
|
||||
if(tablevalue.value[item.qc_item_id].length>1){
|
||||
tablevalue.value[item.qc_item_id]=tablevalue.value[item.qc_item_id].filter((f)=>f.id!=iv.qc_item_value_id);
|
||||
}else{
|
||||
ElMessage("至少留一个");
|
||||
return false;
|
||||
}
|
||||
}else{
|
||||
if(iv.qc_item_value=="正常"){
|
||||
tablevalue.value[item.qc_item_id]=[{id:iv.qc_item_value_id}];
|
||||
}else{
|
||||
const findzc=item.qc_item_value.find((f)=>f.qc_item_value=="正常");
|
||||
const nozcs=tablevalue.value[item.qc_item_id].filter((f)=>f.id!=findzc.qc_item_value_id);
|
||||
nozcs.push({id:iv.qc_item_value_id});
|
||||
tablevalue.value[item.qc_item_id]=nozcs;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
tablevalue.value[item.qc_item_id]=[{id:iv.qc_item_value_id}];
|
||||
}
|
||||
}else{
|
||||
tablevalue.value[item.qc_item_id]=[{id:iv.qc_item_value_id}];
|
||||
}
|
||||
|
||||
formatdatas(props.xyQcItem);
|
||||
|
||||
}
|
||||
const getType= (item,iv)=>{
|
||||
if(tablevalue.value[item.qc_item_id]){
|
||||
const find=tablevalue.value[item.qc_item_id].find((f)=>f.id==iv.qc_item_value_id);
|
||||
return find?'primary':null
|
||||
}
|
||||
return null;
|
||||
};
|
||||
// 质检项点击
|
||||
const getValue=(item,iv)=>{
|
||||
if(tablevalue.value[item.qc_item_id]){
|
||||
const find=tablevalue.value[item.qc_item_id].find((f)=>f.id==iv.qc_item_value_id);
|
||||
if(find){
|
||||
if(find.value){
|
||||
return find.value;
|
||||
}else{
|
||||
if(iv.qc_item_value.indexOf("手填")>-1){
|
||||
return battery_cycle;
|
||||
}else if(iv.qc_item_value.indexOf("到20XX")>-1){
|
||||
return props.warranty_end_time
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(iv.qc_item_value.indexOf("手填")>-1){
|
||||
return battery_cycle;
|
||||
}else if(iv.qc_item_value.indexOf("到20XX")>-1){
|
||||
return props.warranty_end_time;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(iv.qc_item_value.indexOf("手填")>-1){
|
||||
return battery_cycle;
|
||||
}else if(iv.qc_item_value.indexOf("到20XX")>-1){
|
||||
return props.warranty_end_time;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
.qcTablebox{
|
||||
min-height:200px;
|
||||
}
|
||||
.qctableitem{
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
border:1px solid #e5e5e5;
|
||||
.qctableitemtitle{
|
||||
padding:12px 20px;
|
||||
background:#F1F2F5;
|
||||
font-size:18px;
|
||||
color:#101010;
|
||||
border-bottom:1px solid #e5e5e5;
|
||||
|
||||
}
|
||||
.qctableitemmain{
|
||||
.qctableitemoneitem{
|
||||
display:flex;
|
||||
align-items: stretch;
|
||||
}
|
||||
.qctableitemonemainonetitle{
|
||||
font-size:14px;
|
||||
color:#101010;
|
||||
min-height:60px;
|
||||
display:flex;
|
||||
align-items:center;
|
||||
padding:12px;
|
||||
justify-content: center;
|
||||
flex:1.5;
|
||||
border-right:1px solid #e5e5e5;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
.qctableitemonemainonemain{
|
||||
flex:8;
|
||||
align-items: stretch;
|
||||
display:flex;
|
||||
flex-direction: column;
|
||||
.qctableitemonemainonemainitem{
|
||||
align-items: stretch;
|
||||
display:flex;
|
||||
}
|
||||
.qctableitemonemainonemaintitle{
|
||||
font-size:14px;
|
||||
color:#101010;
|
||||
min-height:60px;
|
||||
display:flex;
|
||||
padding:12px;
|
||||
box-sizing: border-box;
|
||||
align-items:center;
|
||||
justify-content: center;
|
||||
flex:1.5;
|
||||
border-right:1px solid #e5e5e5;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
.qctableitemonemaintwoitemmain{
|
||||
flex:7;
|
||||
display:flex;
|
||||
flex-wrap:wrap;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-start;
|
||||
gap:10px;
|
||||
padding:12px;
|
||||
box-sizing: border-box;
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,159 +0,0 @@
|
|||
<template>
|
||||
<div class="qcreport">
|
||||
<div class="qcHead">
|
||||
<div style="font-size: 16px;font-weight: bold">{{props.title}}</div>
|
||||
<div v-if="quilyDate.stuff_status">
|
||||
<span>
|
||||
<span style="font-size: 30px;font-weight: 700" :style="statusTextStyle" >{{props.quilyDate.stuff_status}}</span><span v-show="props.quilyDate.stuff_status !=='不合格'">新·</span>{{
|
||||
props.quilyDate.use_trace }}</span>
|
||||
</div>
|
||||
<div v-if="data.abnormalnum > 0"
|
||||
style="font-size: 16px;margin-top: 16px;color: #CC2E2E">异常质检项 <span v-if="data.abnormalnum>0">·
|
||||
{{ data.abnormalnum}}</span></div>
|
||||
<div v-for="(item, index) in data.product_details_date_list" :key="index + 'e'">
|
||||
<div v-for="(item1, index1) in item.exception_item" v-if="item.exception_item.length > 0"
|
||||
:key="index1 + 'f'">
|
||||
<div v-if="item1.msg">
|
||||
<div style="font-size: 13px;color: #CC2E2E;margin-top: 10px">
|
||||
<span
|
||||
style="background-color: #CC2E2E;margin-right: 3px;border-radius: 50%;font-size: 12px">11</span>
|
||||
<span>{{ item1.label }}</span>
|
||||
</div>
|
||||
<div style="padding-left: 10px;font-size: 12px;margin-top: 12px">{{ item1.msg }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="font-size: 16px;margin-top: 16px" v-if="props.quilyDate.stuff_status">全部质检项 · {{ data.quailyLength }}</div>
|
||||
<div v-for="(item, index) in data.product_details_date_list" :key="index + 'g'"
|
||||
style="margin-top: 5px" v-if="props.quilyDate.stuff_status" >
|
||||
<div style="display: flex;justify-content: space-between">
|
||||
<span><span
|
||||
style="background-color: black;font-size: 12px;color: black;border-radius: 50%">11</span>
|
||||
<span>{{ item.label }}</span></span>
|
||||
<span v-if="item.exception_item.length > 0" style="color: #CC2E2E">{{ item.exception_item.length
|
||||
}} 项需注意</span>
|
||||
<span v-if="item.normal_item.length > 0" style="color: #55CCBC">{{ item.normal_item.length }}
|
||||
项正常</span>
|
||||
</div>
|
||||
<div v-for="(item1, index1) in item.exception_item" :key="index1 + 'h'"
|
||||
style="padding-left: 7px;color: #CC2E2E;font-size: 12px;margin-top: 8px">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<span style="z-index: 20;background-color: #FFFEF3;padding-right: 3px">{{ item1.label
|
||||
}}</span>
|
||||
<span style="z-index: 20;background-color: #FFFEF3;padding-left: 3px">{{ item1.value
|
||||
}}</span>
|
||||
</div>
|
||||
<div class="dashed-link" style="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="qcFooter" v-if="quilyDate.stuff_status">
|
||||
<span style="">
|
||||
{{data.versiondata}}
|
||||
</span>
|
||||
</div>
|
||||
<div v-else class="qcemptybox">
|
||||
暂无质检
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive,ref,watch,onMounted,computed,watchEffect} from 'vue';
|
||||
const props=defineProps({quilyDate:Object,title:String});
|
||||
|
||||
const data=reactive({
|
||||
quailyLength:0,
|
||||
abnormalnum:0,
|
||||
product_details_date_list:[],
|
||||
versiondata:"国行"
|
||||
});
|
||||
|
||||
onMounted(()=>{
|
||||
formatdatas(props.quilyDate);
|
||||
});
|
||||
|
||||
watch(props,(newval,oldval)=>{
|
||||
formatdatas(newval.quilyDate);
|
||||
},{deep:true});
|
||||
|
||||
const statusTextStyle = computed(() => {
|
||||
return {
|
||||
color: props.quilyDate.stuff_status == '不合格' ? '#CC2E2E' : '#000'
|
||||
};
|
||||
});
|
||||
|
||||
const formatdatas=(datas)=>{
|
||||
data.quailyLength=0;
|
||||
data.abnormalnum=0;
|
||||
data.product_details_date_list=[];
|
||||
data.versiondata="国行";
|
||||
console.log(datas,555);
|
||||
|
||||
let list=[];
|
||||
let total=0;
|
||||
let abnormal=0;
|
||||
let versiondata="国行";
|
||||
if( datas&&datas.xy_qc_item){
|
||||
datas.xy_qc_item.map((h,index)=>{
|
||||
let listitem={label:h.qc_item,exception_item:[],total:0,normal_item:[]};
|
||||
if(h.child){
|
||||
h.child.map((t)=>{
|
||||
if(t.child){
|
||||
t.child.map((d)=>{
|
||||
if(d.qc_item_value){
|
||||
d.qc_item_value.map((v)=>{
|
||||
if(v.abnormal==1){
|
||||
abnormal+=1;
|
||||
listitem.exception_item.push({label:d.qc_item,value:v.qc_item_value,msg:v.fault_desc});
|
||||
}else{
|
||||
listitem.normal_item.push({label:d.qc_item,value:v.qc_item_value});
|
||||
}
|
||||
total+=1;
|
||||
if(d.qc_item=="版本/来源"){
|
||||
versiondata=v.qc_item_value;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
list.push(listitem);
|
||||
});
|
||||
data.versiondata=versiondata;
|
||||
data.product_details_date_list=list;
|
||||
data.quailyLength=total;
|
||||
data.abnormalnum=abnormal;
|
||||
console.log(list,"list",abnormal,total);
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.qcreport {
|
||||
.qcHead {
|
||||
padding: 10px 15px;
|
||||
}
|
||||
|
||||
.qcFooter {
|
||||
border-radius: 0 0 5px 5px;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
padding-top: 8px;
|
||||
padding-bottom: 8px;
|
||||
margin-top: 15px;
|
||||
background: #4091FF;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
.qcemptybox{
|
||||
display:flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding:30px 0;
|
||||
}
|
||||
</style>
|
|
@ -1,249 +0,0 @@
|
|||
<template>
|
||||
<div>
|
||||
<!-- <div> {{ arrDta }} </div> -->
|
||||
<!-- <div>{{ tableLabellisttes }}</div> -->
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-table :data="show == '1'
|
||||
? arrDta.filter((el) => {
|
||||
return el.is_easy == 1;
|
||||
})
|
||||
: arrDta
|
||||
" style="width: 100%" :span-method="mergeRowMethod2" border>
|
||||
<el-table-column v-for="(item, index) in tableLabellisttes" :key="index" :prop="item.param"
|
||||
:label="item.label" :align="item.align" :width="item.width" :min-width="item.width2">
|
||||
<template v-slot:default="{ row }">
|
||||
<div v-if="row.title === '版本'" ref="rowBanben" />
|
||||
<span v-if="item.param == 'value' && row['child']&&row['child'].length >= 1">
|
||||
<span v-for="(e, i) in row['child']" :key="i" class="btnclass" style="margin: 10px 10px 5px 12px">
|
||||
<el-button v-if="row['attr_name'].indexOf('多选') != -1" class="buttonDiv" plain round
|
||||
:type="row['value'].includes(e.attr_name) ? 'primary' : ''" style="margin: 6px 0 6px 0"
|
||||
@click="disabled?null:brandclick($event, e, row['attr_name'], row)">{{ e.attr_name }}
|
||||
</el-button>
|
||||
<el-button v-else-if="row['attr_name'].indexOf('多选') == -1" class="buttonDiv" plain round
|
||||
:type="row['value'] == e['option_name'] ? 'primary' : ''"
|
||||
style="margin: 6px 0 6px 0;display: inline-block"
|
||||
@click="brandclick($event, e, row['attr_name'], row)">{{ e.attr_name }}</el-button>
|
||||
<span v-if="row['value'] === '苹果(手填)' || row['value'] === '到20XX年-XX-XX' || row['value'] === '在保(手填)'
|
||||
|| row['value'] === '手填'
|
||||
|| row['value'] == '运行内存(手填)'
|
||||
|| row['value'] == '硬盘容量(手填)'
|
||||
|| row['value'] == '容量(手填)'
|
||||
|| row['value'] == 'CPU型号(手填)'
|
||||
|| row['value'] == '分辨率(手填)'
|
||||
|| row['value'] == '显卡型号(手填)'
|
||||
|| row['value'] == '屏幕尺寸(手填)'
|
||||
|| row['value'] == '尺寸(手填)'
|
||||
|| row['value'] == '刷新率(手填)'
|
||||
">
|
||||
<span v-if="e.qc_item_value === '苹果(手填)' || e.qc_item_value === '到20XX年-XX-XX' || e.qc_item_value === '在保(手填)' || e.qc_item_value == '手填'
|
||||
|| e.qc_item_value == '运行内存(手填)'
|
||||
|| e.qc_item_value == '硬盘容量(手填)'
|
||||
|| e.qc_item_value == '容量(手填)'
|
||||
|| e.qc_item_value == 'CPU型号(手填)'
|
||||
|| e.qc_item_value == '分辨率(手填)'
|
||||
|| e.qc_item_value == '显卡型号(手填)'
|
||||
|| e.qc_item_value == '屏幕尺寸(手填)'
|
||||
|| e.qc_item_value == '尺寸(手填)'
|
||||
|| e.qc_item_value == '刷新率(手填)'
|
||||
">
|
||||
<el-input v-if="e.inputStatus
|
||||
|| row['value'] === '苹果(手填)'
|
||||
|| row['value'] === '到20XX年-XX-XX'
|
||||
|| row['value'] === '在保(手填)'
|
||||
|| row['value'] === '手填'
|
||||
|| row['value'] == '运行内存(手填)'
|
||||
|| row['value'] == '硬盘容量(手填)'
|
||||
|| row['value'] == '容量(手填)'
|
||||
|| row['value'] == 'CPU型号(手填)'
|
||||
|| row['value'] == '分辨率(手填)'
|
||||
|| row['value'] == '显卡型号(手填)'
|
||||
|| row['value'] == '屏幕尺寸(手填)'
|
||||
|| row['value'] == '尺寸(手填)'
|
||||
|| row['value'] == '刷新率(手填)'
|
||||
" v-model="e.inputDate" size="small" style="width: 120px;margin-left: 5px"
|
||||
@blur="inpuStatus(e)" />
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
<span v-else>
|
||||
{{ row[item.param] ? row[item.param] : '/' }}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { defineProps, ref, watch, reactive, defineEmits } from 'vue';
|
||||
|
||||
const { arrDta, high, show ,disabled} = defineProps(['arrDta', 'high', 'show','disabled'])
|
||||
const emit = defineEmits(['inpuStatus', 'get_match_version_type', 'brandclick'])
|
||||
console.log(arrDta, 'data==========', show)
|
||||
const tableLabellisttes = ref([
|
||||
{ label: "", param: "title", align: "center", width: 100, show: false },
|
||||
{
|
||||
label: "",
|
||||
param: "attr_name",
|
||||
align: "center",
|
||||
width: 130,
|
||||
show: true,
|
||||
},
|
||||
{ label: "", param: "value", align: "left", width2: 580, show: true },
|
||||
],
|
||||
)
|
||||
// 可以直接侦听一个 ref
|
||||
watch('arrDta', async (newval) => {
|
||||
console.log(newval, 'newval--------------');
|
||||
})
|
||||
|
||||
const inpuStatus = (e) => {
|
||||
emit("inpuStatus", e);
|
||||
}
|
||||
const brandclick = (e, v, name, r) => {
|
||||
if(disabled){
|
||||
return false;
|
||||
}
|
||||
if (v.attr_id === "版本/来源") {
|
||||
emit("get_match_version_type", v.qc_item_value);
|
||||
}
|
||||
if (
|
||||
v.qc_item_value === "苹果(手填)" ||
|
||||
v.qc_item_value === "在保(手填)" ||
|
||||
v.qc_item_value === "到20XX年-XX-XX"
|
||||
) {
|
||||
// this.$set(v, "inputStatus", true);
|
||||
v.inputStatus = true;
|
||||
} else {
|
||||
// this.$set(v, "inputStatus", false);
|
||||
v.inputStatus = false
|
||||
}
|
||||
if (name.indexOf("多选") !== -1) {
|
||||
if (
|
||||
v.qc_item_value === "正常" ||
|
||||
v.qc_item_value === "无" ||
|
||||
v.qc_item_value === "无拆修浸液" ||
|
||||
v.qc_item_value === "无异常"
|
||||
) {
|
||||
r.value = [v.qc_item_value];
|
||||
} else {
|
||||
if (
|
||||
r.value.includes("无") ||
|
||||
r.value.includes("正常") ||
|
||||
r.value.includes("无拆修浸液") ||
|
||||
r.value.includes("无异常")
|
||||
) {
|
||||
r.value = [];
|
||||
r.value.push(v.qc_item_value);
|
||||
} else {
|
||||
if (r.value.includes(v.qc_item_value)) {
|
||||
const index = r.value.findIndex((item) =>
|
||||
item.includes(v.qc_item_value)
|
||||
);
|
||||
if (index !== -1) {
|
||||
r.value.splice(index, 1);
|
||||
}
|
||||
} else {
|
||||
r.value.push(v.qc_item_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// this.$set(r, "value", v.attr_name);
|
||||
r.value = v.qc_item_value
|
||||
}
|
||||
// let target = e.target;
|
||||
// if (target.nodeName === "SPAN") {
|
||||
// target = e.target.parentNode;
|
||||
// }
|
||||
// target.blur();
|
||||
emit("brandclick", "quality");
|
||||
}
|
||||
|
||||
// 通用行合并函数(将相同多列数据合并为一行)
|
||||
const mergeRowMethod2 = ({ row, _rowIndex, column, visibleData }) => {
|
||||
const fields = ['title']
|
||||
const cellValue = row[column.field]
|
||||
if (cellValue && fields.includes(column.field)) {
|
||||
const prevRow = visibleData[_rowIndex - 1]
|
||||
let nextRow = visibleData[_rowIndex + 1]
|
||||
if (prevRow && prevRow[column.field] === cellValue) {
|
||||
return { rowspan: 0, colspan: 0 }
|
||||
} else {
|
||||
let countRowspan = 1
|
||||
while (nextRow && nextRow[column.field] === cellValue) {
|
||||
nextRow = visibleData[++countRowspan + _rowIndex]
|
||||
}
|
||||
if (countRowspan > 1) {
|
||||
return { rowspan: countRowspan, colspan: 1 }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .mytable-scrollbar ::-webkit-scrollbar {
|
||||
//width: 10px;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 0 20px 20px 20px;
|
||||
}
|
||||
|
||||
.btnclass ::v-deep .classButton:hover {
|
||||
border-radius: 20px;
|
||||
color: #f56c6c;
|
||||
background: #faeaeb;
|
||||
border-color: #edaeae;
|
||||
}
|
||||
|
||||
.btnclass ::v-deep .buttonDiv:hover {
|
||||
border-radius: 20px;
|
||||
color: #2794f8;
|
||||
background: #d2e6fc;
|
||||
border-color: #b3d8ff;
|
||||
}
|
||||
|
||||
.btnclass ::v-deep .el-button--primary:hover {
|
||||
border-radius: 20px;
|
||||
color: #2794f8;
|
||||
background: #d2e6fc;
|
||||
border-color: #b3d8ff;
|
||||
}
|
||||
|
||||
.btnclass ::v-deep .el-button--danger:hover {
|
||||
border-radius: 20px;
|
||||
color: #f56c6c;
|
||||
background: #faeaeb;
|
||||
border-color: #edaeae;
|
||||
}
|
||||
|
||||
.btnclass ::v-deep .el-button:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.btnclass ::v-deep .el-button {
|
||||
font-size: 12px;
|
||||
padding: 8px;
|
||||
min-width: 78px;
|
||||
}
|
||||
|
||||
.dianji {
|
||||
background-color: #ecf5ff;
|
||||
color: #409eff;
|
||||
border-color: #409eff;
|
||||
}
|
||||
|
||||
.dianji:hover {
|
||||
background-color: #ecf5ff;
|
||||
color: #409eff;
|
||||
border-color: #409eff;
|
||||
}
|
||||
</style>
|
|
@ -1,104 +0,0 @@
|
|||
<template>
|
||||
<div class="container">
|
||||
<div class="topbox">
|
||||
<el-input v-model="trackingValue" class="input" placeholder="扫描快递单号收货" @change="onRevice" />
|
||||
<el-button type="primary" class="searchbtn" @click="startQc">开始质检</el-button>
|
||||
</div>
|
||||
<el-scrollbar wrap-class="scrollbarWrapper" style="flex:1" v-if="Object.keys(detail).length > 0">
|
||||
dfdf
|
||||
</el-scrollbar>
|
||||
<div class="bottombox" v-if="Object.keys(detail).length > 0">
|
||||
<el-input v-model="trackingValue" class="input2" placeholder="输入密封袋编码" @change="onRevice" />
|
||||
<el-button type="primary" class="searchbtn2">质检完成</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { xy_qc_item } from '@/api/qc.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
detail: {},
|
||||
trackingValue: '',
|
||||
reviceList: []
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
methods: {
|
||||
handleClick(e) {
|
||||
console.log(e);
|
||||
},
|
||||
onRevice(e) {
|
||||
console.log(e, "eee");
|
||||
|
||||
if (/^[A-Za-z0-9]{4,35}$/.test(e)) {
|
||||
|
||||
}
|
||||
},
|
||||
startQc() {
|
||||
xy_qc_item().then(res => {
|
||||
console.log(res);
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container {
|
||||
min-height: calc(100vh - 100px);
|
||||
background: #F1F2F5;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.topbox {
|
||||
background: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 18px;
|
||||
}
|
||||
|
||||
.input {
|
||||
height: 64px;
|
||||
max-width: 680px;
|
||||
box-sizing: border-box;
|
||||
margin: 0 15px;
|
||||
}
|
||||
|
||||
.searchbtn {
|
||||
height: 64px;
|
||||
width: 150px;
|
||||
box-sizing: border-box;
|
||||
margin: 0 15px;
|
||||
}
|
||||
|
||||
.scrollbarWrapper {
|
||||
flex: 1;
|
||||
padding: 12px 0;
|
||||
}
|
||||
|
||||
.input2 {
|
||||
height: 40px;
|
||||
width: 227px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.bottombox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #fff;
|
||||
height: 83px;
|
||||
padding: 18px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.searchbtn2 {
|
||||
height: 40px;
|
||||
width: 120px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,218 +0,0 @@
|
|||
<template>
|
||||
<div class="salecontainer">
|
||||
<SearchForm :inputs="Inputs" @onSearch="onSearch" @onRest="onRest"/>
|
||||
<div class="reciverecordtabox">
|
||||
<el-table
|
||||
:data="list"
|
||||
row-key="tracking_number"
|
||||
v-loading="loading"
|
||||
border
|
||||
default-expand-all
|
||||
>
|
||||
<el-table-column :prop="item.dataKey" :label="item.label" :sortable="item.sortable" v-for="item,index in columns" :key="String(index)">
|
||||
<template #default="scope">
|
||||
<span v-if="item.render" >
|
||||
<span :style="{color:item.render(scope.row,item.dataKey).type=='error'?'red':'#101010'}">
|
||||
{{item.render(scope.row,item.dataKey).text}}
|
||||
</span>
|
||||
</span>
|
||||
<span v-else-if="item.label == '销售单号'">
|
||||
{{ scope.row.sale_after_info.biz_order_id }}
|
||||
</span>
|
||||
<span v-else class="firstspan">
|
||||
{{scope.row[item.dataKey]}}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="paginationbox">
|
||||
<el-pagination
|
||||
v-model:current-page="page"
|
||||
v-model:page-size="pageSize"
|
||||
:page-sizes="[10,50,100, 200, 400, 800]"
|
||||
:disabled="loading"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total||list.length"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref,unref,computed,reactive,onMounted} from 'vue';
|
||||
import Table from "@components/table.vue";
|
||||
import axioshooks from "@axioshooks";
|
||||
import {ElMessage} from "element-plus";
|
||||
import { useRouter } from 'vue-router';
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
import SearchForm from "@components/searchForm/index.vue";
|
||||
|
||||
const imeipopover=ref(false);
|
||||
const imeivalue=ref('');
|
||||
const pageSize=ref(10);
|
||||
const page=ref(1);
|
||||
const total=ref(0);
|
||||
const loading=ref(false);
|
||||
const list=ref([]);
|
||||
const params=ref({});
|
||||
|
||||
const Inputs=ref([
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入快递单号",
|
||||
value:"",
|
||||
popover:true,
|
||||
title:"快递单号",
|
||||
name:"tracking_number"
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入销售单号",
|
||||
name:"biz_order_id",
|
||||
value:"",
|
||||
popover:true,
|
||||
title:"销售单号",
|
||||
},
|
||||
{
|
||||
type:"el-input",
|
||||
placeholder:"请输入收货人",
|
||||
name:"truename",
|
||||
value:"",
|
||||
title:"收货人",
|
||||
}
|
||||
]);
|
||||
|
||||
const columns=[
|
||||
{
|
||||
dataKey: `tracking_number`,
|
||||
label:"快递单号",
|
||||
width:200,
|
||||
show:true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `biz_order_id`,
|
||||
label:"销售单号",
|
||||
show:true,
|
||||
width:200,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
dataKey: `truename`,
|
||||
label:"收货人",
|
||||
width:200,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `receive_time`,
|
||||
label:"收货时间",
|
||||
width:200,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `remark`,
|
||||
label:"说明",
|
||||
width:200,
|
||||
align: "center",
|
||||
},{
|
||||
dataKey: `receive_result`,
|
||||
label:"结果",
|
||||
width:150,
|
||||
align: "center",
|
||||
show:true,
|
||||
render:(item,key)=>{
|
||||
let data=item[key]?tem[key]:item.children.receive_result;
|
||||
if(data=="1"){
|
||||
return {text:'收货成功' ,type:'success'};
|
||||
}else if(data=="2"){
|
||||
return {text:'无法匹配,请人工处理',type:'error'};
|
||||
}else{
|
||||
return {text:'未收到' ,type:'success'};
|
||||
}
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
const onSearch=(values)=>{
|
||||
params.value=values;
|
||||
page.value=1;
|
||||
getDatas();
|
||||
}
|
||||
|
||||
|
||||
|
||||
const getDatas=()=>{
|
||||
loading.value=true;
|
||||
list.value=[];
|
||||
axioshooks({
|
||||
data:{list_row:pageSize.value,page:page.value,...params.value},
|
||||
url:"trusteeship/receiving_records",
|
||||
customHandler:(err,e)=>{
|
||||
if(!err&&e){
|
||||
if(e.errcode==0){
|
||||
// list.value=e.datas;
|
||||
list.value=e.datas.datas_list.map((h)=>{
|
||||
h.children=h.sale_after_info;
|
||||
return h;
|
||||
});
|
||||
console.log(list.value,'list')
|
||||
total.value=e.datas.total;
|
||||
loading.value=false;
|
||||
}else{
|
||||
ElMessage(e.msg);
|
||||
loading.value=false;
|
||||
}
|
||||
}else if(err){
|
||||
ElMessage(err);
|
||||
loading.value=false;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
onMounted(()=>{
|
||||
page.value=1;
|
||||
getDatas();
|
||||
});
|
||||
|
||||
const onRest=()=>{
|
||||
params.value={};
|
||||
page.value=1;
|
||||
getDatas();
|
||||
}
|
||||
|
||||
const handleSizeChange=(v)=>{
|
||||
console.log(pageSize,v,"ss");
|
||||
pageSize.value=v;
|
||||
page.value=1;
|
||||
getDatas();
|
||||
}
|
||||
|
||||
const handleCurrentChange=(v)=>{
|
||||
console.log(page,v,"handleCurrentChange");
|
||||
page.value=v;
|
||||
getDatas();
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.salecontainer{
|
||||
background:#F1F2F5;
|
||||
flex:1;
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
}
|
||||
.reciverecordtabox{
|
||||
margin:20px;
|
||||
}
|
||||
.paginationbox{
|
||||
padding:20px;
|
||||
background: #fff;
|
||||
display:flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
</style>
|
|
@ -1,429 +0,0 @@
|
|||
<template>
|
||||
<div class="container">
|
||||
<div>
|
||||
<erp-options ref="OptionsRef" :data="input" :model="formLabelAlign" @change="change" @imeichange="imeichange"
|
||||
@cleartext="cleartext" @resetfrom="resetfrom" @search="inquire" @machineclear="machineclear"
|
||||
:morepopoverFlag="morepopoverFlag">
|
||||
</erp-options>
|
||||
</div>
|
||||
<div class="AG-table-center tablebox" >
|
||||
<erp-configuration
|
||||
:buttonlist="buttonlist"
|
||||
:exploading="exploading"
|
||||
:columnconfigvisible="columnconfigvisible"
|
||||
:columnOptions="columnOptions"
|
||||
:tableLabel="tableLabel"
|
||||
@exceldown="exceldown"
|
||||
@columnConfigClose="columnConfigClose"
|
||||
@columnCfgRest="columnCfgRest"
|
||||
@columnConfigSubmit="columnConfigSubmit"
|
||||
@columnCfgCheck="columnCfgCheck"
|
||||
@columnCfgAllchange="columnCfgAllchange"
|
||||
@columnconfigClick="columnconfigClick"
|
||||
></erp-configuration>
|
||||
<erp-xy-table :tableDate="reviceList" :tabbar="true" :tablelabel="tableLabel" ref="xTables" >
|
||||
</erp-xy-table>
|
||||
<div style="background:#fff;padding-top:10px;height:48px;">
|
||||
<erp-table-pagination :page="page" @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange"
|
||||
style="padding:0;" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import moment from "moment/moment";
|
||||
|
||||
function getToday(type = 'YYYY-MM-DD HH:mm:ss') {
|
||||
const obj = {
|
||||
starttime: "",
|
||||
endtime: "",
|
||||
};
|
||||
obj.starttime = moment(moment().startOf("day").valueOf()).format(
|
||||
type
|
||||
);
|
||||
obj.endtime = moment(moment().valueOf()).format(type);
|
||||
return obj;
|
||||
}
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
tableData:[
|
||||
{label:"全部",value:"all"},
|
||||
{label:"等待寄出",value:"wait"},
|
||||
{label:"待发货",value:"waitsend"},
|
||||
{label:"等待质检",value:"waitcheck"},
|
||||
{label:"质检完成",value:"checkfinish"},
|
||||
{label:"等待寄回",value:"waitback"},
|
||||
{label:"已寄回待收货",value:"waitrevice"}
|
||||
],
|
||||
activeTab:'all',
|
||||
morepopoverFlag: false,
|
||||
page: {
|
||||
total: 0, // 分页总条数
|
||||
list_row: 100, // 每页显示条数
|
||||
page: 1, // 当前页
|
||||
pagesizes: [100, 200, 500, 1000, 2000, 5000, 10000],
|
||||
},
|
||||
loading:false,
|
||||
formLabelAlign: {
|
||||
imei: "",
|
||||
time: [],
|
||||
enName:"df",
|
||||
},
|
||||
buttonlist: [
|
||||
|
||||
],
|
||||
input:[
|
||||
{
|
||||
lable: "imei/机器编号",
|
||||
type: "el-input",
|
||||
enName: "imei",
|
||||
clearable: true,
|
||||
placeholder: "请输入imei",
|
||||
filterable: true,
|
||||
ispopover: true,
|
||||
display: false,
|
||||
size: "small",
|
||||
focus: () => { },
|
||||
blur: () => { },
|
||||
handleChange: () => { },
|
||||
},
|
||||
{
|
||||
lable: "查询质检码",
|
||||
type: "el-input",
|
||||
enName: "check_code",
|
||||
clearable: true,
|
||||
placeholder: "请输入质检码",
|
||||
filterable: true,
|
||||
ispopover: true,
|
||||
display: false,
|
||||
size: "small",
|
||||
focus: () => { },
|
||||
blur: () => { },
|
||||
handleChange: () => { },
|
||||
},
|
||||
],
|
||||
tableLabel: [
|
||||
{
|
||||
label: "机器信息",
|
||||
param: "model_info",
|
||||
show: true,
|
||||
link: true,
|
||||
minwidth: "280",
|
||||
},
|
||||
{
|
||||
label: "商品标题",
|
||||
param: "goods_title",
|
||||
align: "center",
|
||||
minwidth: "90",
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
label: "物流单号",
|
||||
param: "repair_cost",
|
||||
align: "center",
|
||||
minwidth: "90",
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
label: "质检完成时间",
|
||||
param: "sale_cost",
|
||||
align: "center",
|
||||
minwidth: "90",
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
label: "实物与订单是否一致",
|
||||
param: "adjustment_cost",
|
||||
align: "center",
|
||||
minwidth: "150",
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
label: "质检报告",
|
||||
param: "cost_type",
|
||||
align: "center",
|
||||
minwidth: "90",
|
||||
show: true,
|
||||
},
|
||||
{
|
||||
label: "密封袋编码",
|
||||
param: "receipt_time",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "80",
|
||||
},
|
||||
{
|
||||
label: "操作",
|
||||
param: "orderManagement",
|
||||
align: "center",
|
||||
show: true,
|
||||
minwidth: "135",
|
||||
fixed: "right",
|
||||
status: ["Logs"],
|
||||
},
|
||||
],
|
||||
reviceList:[
|
||||
|
||||
],
|
||||
exploading:false,
|
||||
columnconfigvisible: false, //列配置
|
||||
columnOptions: [
|
||||
{ label: "机器信息", id: 1, disabled: true },
|
||||
// { label: "商品标题", id: 2, disabled: false },
|
||||
{ label: "质检员", id: 3, disabled: false },
|
||||
{ label: "机器状态", id: 4, disabled: false },
|
||||
{ label: "商品状态", id: 5, disabled: false },
|
||||
// { label: "定价", id: 6, disabled: false },
|
||||
// { label: "闲鱼账号", id: 7, disabled: false },
|
||||
{ label: "发布人", id: 8, disabled: false },
|
||||
{ label: "机器成本", id: 9, disabled: false },
|
||||
{ label: "保底价", id: 10, disabled: false },
|
||||
// { label: "预计结算价", id: 11, disabled: false },
|
||||
// { label: "预估利润", id: 12, disabled: false },
|
||||
// { label: "质检报告", id: 13, disabled: false },
|
||||
// { label: "深库存", id: 14, disabled: false },
|
||||
{ label: "首次发布时间", id: 15, disabled: false },
|
||||
// { label: "预估服务费", id: 16, disabled: false },
|
||||
{ label: "在库周期", id: 17, disabled: false },
|
||||
// { label: "在架周期", id: 18, disabled: false },
|
||||
{ label: "操作", id: 19, disabled: true },
|
||||
], //列配置所有列
|
||||
}
|
||||
},
|
||||
components:{},
|
||||
created:{
|
||||
|
||||
},
|
||||
computed: {
|
||||
height() {
|
||||
return document.documentElement.clientHeight - 230
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
gettbdata(){
|
||||
this.$nextTick(() => {
|
||||
this.$refs.xTables.scrollTo(0, 0);
|
||||
})
|
||||
this.loading = true;
|
||||
const obj = {
|
||||
...this.formLabelAlign,
|
||||
};
|
||||
|
||||
},
|
||||
onTabClick(e){
|
||||
console.log(e);
|
||||
this.activeTab=e.name;
|
||||
},
|
||||
change(e){
|
||||
console.log(e,"eee");
|
||||
},
|
||||
imeichange(type, text) {
|
||||
if (type === "imei") {
|
||||
this.formLabelAlign.imei = text;
|
||||
this.$set(this.formLabelAlign, "business_id", "");
|
||||
} else {
|
||||
this.formLabelAlign.imei = "";
|
||||
this.$set(this.formLabelAlign, "business_id", text);
|
||||
}
|
||||
},
|
||||
inquire() {
|
||||
this.page.page = 1;
|
||||
this.gettbdata();
|
||||
},
|
||||
cleartext() {
|
||||
this.formLabelAlign.imei = "";
|
||||
this.formLabelAlign.business_id = "";
|
||||
},
|
||||
// 重置表单
|
||||
resetfrom() {
|
||||
this.formLabelAlign = {
|
||||
|
||||
};
|
||||
if(getToday()){
|
||||
this.formLabelAlign.start_time = dateToTimestamp(getToday().starttime); //开始时间
|
||||
this.formLabelAlign.end_time = dateToTimestamp(getToday().endtime) //结束时间
|
||||
this.$refs["OptionsRef"].datevalue = [this.formLabelAlign.start_time, this.formLabelAlign.end_time];
|
||||
}
|
||||
},
|
||||
getdate(e, date) {
|
||||
if (e == "time") {
|
||||
this.formLabelAlign.start_time = e === "time" && date ? date[0] : "";
|
||||
this.formLabelAlign.end_time = e === "time" && date ? date[1] : "";
|
||||
}
|
||||
},
|
||||
machineclear() {
|
||||
this.formLabelAlign = {
|
||||
...this.formLabelAlign,
|
||||
};
|
||||
},
|
||||
// 表格导出
|
||||
|
||||
// 分页条数
|
||||
handleSizeChange(data) {
|
||||
Object.assign(this.formLabelAlign, data)
|
||||
this.gettbdata()
|
||||
},
|
||||
// 分页页码
|
||||
handleCurrentChange(data) {
|
||||
if(page.value!=data){
|
||||
Object.assign(this.formLabelAlign, data)
|
||||
this.gettbdata()
|
||||
}
|
||||
},
|
||||
|
||||
exceldown() {
|
||||
this.exploading = true;
|
||||
product_list({ ...this.formLabelAlign, is_excel: 1 }).then((res) => {
|
||||
this.exploading = false;
|
||||
// console.log(res);
|
||||
// 创建隐藏的可下载链接
|
||||
var eleLink = document.createElement("a");
|
||||
eleLink.download = "订单数据.html";
|
||||
eleLink.style.display = "none";
|
||||
eleLink.target = "_blank";
|
||||
eleLink.href = res.datas.datas;
|
||||
// 触发点击
|
||||
document.body.appendChild(eleLink);
|
||||
eleLink.click();
|
||||
// 然后移除
|
||||
document.body.removeChild(eleLink);
|
||||
console.log(res);
|
||||
});
|
||||
},
|
||||
//列配置关闭
|
||||
columnConfigClose(e) {
|
||||
this.columnconfigvisible = false;
|
||||
},
|
||||
//列配置
|
||||
columnconfigClick() {
|
||||
this.columnconfigvisible = true;
|
||||
},
|
||||
//多选表格
|
||||
selectAllEvent(val) {
|
||||
this.selectdateList = val;
|
||||
},
|
||||
// 单选表格
|
||||
selectEvent(val) {
|
||||
this.selectdateList = val;
|
||||
},
|
||||
|
||||
//下架
|
||||
OffShelf(data) {
|
||||
const xy_product_id = [data.id];
|
||||
this.$confirm("确定下架选中机器吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message({
|
||||
type: "info",
|
||||
message: "已取消下架",
|
||||
});
|
||||
});
|
||||
},
|
||||
//重新发布
|
||||
Republish(data) {
|
||||
this.$router.push({
|
||||
name: "idleFishIssue",
|
||||
query: { xy_product_id: data.id },
|
||||
});
|
||||
},
|
||||
//列配置单选
|
||||
columnCfgCheck(e) {
|
||||
this.checkedColumns = e;
|
||||
},
|
||||
//列配置全选
|
||||
columnCfgAllchange(e) {
|
||||
this.checkedColumns = e;
|
||||
},
|
||||
|
||||
//列配置重置
|
||||
columnCfgRest() {
|
||||
//恢复到默认
|
||||
this.checkedColumns = [
|
||||
{ label: "机器信息", id: 1, disabled: true },
|
||||
// { label: "商品标题", id: 2, disabled: false },
|
||||
{ label: "质检员", id: 3, disabled: false },
|
||||
{ label: "机器状态", id: 4, disabled: false },
|
||||
{ label: "商品状态", id: 5, disabled: false },
|
||||
// { label: "定价", id: 6, disabled: false },
|
||||
// { label: "闲鱼账号", id: 7, disabled: false },
|
||||
{ label: "发布人", id: 8, disabled: false },
|
||||
{ label: "机器成本", id: 9, disabled: false },
|
||||
{ label: "保底价", id: 10, disabled: false },
|
||||
// { label: "预计结算价", id: 11, disabled: false },
|
||||
// { label: "预估利润", id: 12, disabled: false },
|
||||
// { label: "质检报告", id: 13, disabled: false },
|
||||
// { label: "深库存", id: 14, disabled: false },
|
||||
{ label: "首次发布时间", id: 15, disabled: false },
|
||||
// { label: "预估服务费", id: 16, disabled: false },
|
||||
{ label: "在库周期", id: 17, disabled: false },
|
||||
// { label: "在架周期", id: 18, disabled: false },
|
||||
{ label: "操作", id: 19, disabled: true },
|
||||
];
|
||||
},
|
||||
//列配置更新
|
||||
columnConfigSubmit(e) {
|
||||
this.loading = true;
|
||||
this.dialogVisible = false;
|
||||
//更新表格展示列
|
||||
this.tableLabel.forEach((item) => {
|
||||
item.show = false;
|
||||
});
|
||||
this.checkedColumns.forEach((item) => {
|
||||
for (let i = 0; i < this.tableLabel.length; i++) {
|
||||
if (
|
||||
this.tableLabel[i].label == item.label &&
|
||||
item.label != "机器编号" &&
|
||||
item.label != "质检码"
|
||||
) {
|
||||
this.tableLabel[i].show = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
this.tableLabel1 = e;
|
||||
// this.tableLabel = e;
|
||||
this.dynamickey = new Date().getTime();
|
||||
this.loading = false;
|
||||
this.columnconfigvisible = false;
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container{
|
||||
background:#F1F2F5;
|
||||
|
||||
}
|
||||
.tabsbox{
|
||||
background: #fff;
|
||||
padding:20px;
|
||||
}
|
||||
.topdesc{
|
||||
color:#606060;
|
||||
font-size:16px;
|
||||
line-height: 24px;
|
||||
}
|
||||
.receivingWorkbenchbox {
|
||||
padding: 10px;
|
||||
flex:1;
|
||||
}
|
||||
.topinput{
|
||||
margin-top:12px;
|
||||
}
|
||||
.input{
|
||||
height:155px;
|
||||
}
|
||||
.mainbox{
|
||||
margin-top:40px;
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue