This commit is contained in:
qiaopengfei 2024-07-18 10:36:22 +08:00
commit 8fca5e55b3
223 changed files with 43787 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

8
.env Normal file
View File

@ -0,0 +1,8 @@
VITE_MODE = 'development'
#VITE_APP_BASE_API = 'http://dev-erp-api.xtkj99.com:7890'
#VITE_APP_BASE_API = 'https://pre-api.aiguoerp.com'
VITE_APP_BASE_API = 'http://localhost:80'
VITE_APP_BASE_SITE = 'http://localhost:80'

4
.env.d1 Normal file
View File

@ -0,0 +1,4 @@
VITE_MODE = 'development'
# VITE_APP_BASE_API = 'http://dev-erp-api.xtkj99.com:7890'
VITE_APP_BASE_API = 'http://d1-api.erp.xtkj99.com:88'

4
.env.dev_7890 Normal file
View File

@ -0,0 +1,4 @@
VITE_MODE = 'development'
# VITE_APP_BASE_API = 'http://dev-erp-api.xtkj99.com:7890'
VITE_APP_BASE_API = 'http://dev-erp-api.xtkj99.com:7890'

10
.env.development Normal file
View File

@ -0,0 +1,10 @@
VITE_MODE = 'development'
VITE_APP_BASE_API = 'http://d1-api.erp.xtkj99.com:88'
# VITE_APP_BASE_API = 'https://pre-api.aiguoerp.com'
# VITE_APP_BASE_API = 'http://localhost:80'
VITE_APP_BASE_SITE = 'http://localhost:80'
VITE_APP_BASE_URL = 'http://192.168.2.5:9986'

10
.env.pre Normal file
View File

@ -0,0 +1,10 @@
# just a flag
VITE_MODE = 'production'
# base api
VITE_APP_BASE_API = 'https://pre-api.aiguoerp.com'
# VITE_APP_BASE_API = 'http://dev-erp-api.xtkj99.com:7890'
VITE_APP_BASE_SITE = 'https://pre-sps.aiguoerp.com'
# https://erpapi.aiguovip.com

8
.env.production Normal file
View File

@ -0,0 +1,8 @@
# just a flag
VITE_MODE = 'production'
# base api
VITE_APP_BASE_API = 'https://api.aiguoerp.com'
VITE_APP_BASE_SITE = 'https://sps.aiguoerp.com'
# https://erpapi.aiguovip.com

4
.env.t1 Normal file
View File

@ -0,0 +1,4 @@
VITE_MODE = 'development'
# VITE_APP_BASE_API = 'http://dev-erp-api.xtkj99.com:7890'
VITE_APP_BASE_API = 'http://t1-api.erp.xtkj99.com:88'

8
.env.xy Normal file
View File

@ -0,0 +1,8 @@
# just a flag
VITE_MODE = 'production'
# base api
VITE_APP_BASE_API = 'https://api.aiguoerp.com'
# https://erpapi.aiguovip.com

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
dist/
node_modules/
yarn-error.log
yarn.lock
README.md
node_modules/*

24
LICENSE Normal file
View File

@ -0,0 +1,24 @@
Software License for MTL
Copyright (c) 2007 The Trustees of Indiana University.
2008 Dresden University of Technology and the Trustees of Indiana University.
2010 SimuNova UG (haftungsbeschränkt), www.simunova.com.
All rights reserved.
Authors: Peter Gottschling and Andrew Lumsdaine
This file is part of the Matrix Template Library
Dresden University of Technology -- short TUD -- and Indiana University -- short IU -- have the exclusive rights to license this product under the following license.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. All redistributions of source code must retain the above copyright notice, the list of authors in the original source code, this list of conditions and the disclaimer listed in this license;
2. All redistributions in binary form must reproduce the above copyright notice, this list of conditions and the disclaimer listed in this license in the documentation and/or other materials provided with the distribution;
3. Any documentation included with all redistributions must include the following acknowledgement:
"This product includes software developed at the University of Notre Dame, the Pervasive Technology Labs at Indiana University, and Dresden University of Technology. For technical information contact Andrew Lumsdaine at the Pervasive Technology Labs at Indiana University. For administrative and license questions contact the Advanced Research and Technology Institute at 1100 Waterway Blvd. Indianapolis, Indiana 46202, phone 317-274-5905, fax 317-274-5902."
Alternatively, this acknowledgement may appear in the software itself, and wherever such third-party acknowledgments normally appear.
4. The name "MTL" shall not be used to endorse or promote products derived from this software without prior written permission from IU or TUD. For written permission, please contact Indiana University Advanced Research & Technology Institute.
5. Products derived from this software may not be called "MTL", nor may "MTL" appear in their name, without prior written permission of Indiana University Advanced Research & Technology Institute.
TUD and IU provide no reassurances that the source code provided does not infringe the patent or any other intellectual property rights of any other entity. TUD and IU disclaim any liability to any recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise.
LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. DRESDEN UNIVERSITY OF TECHNOLOGY AND INDIANA UNIVERSITY GIVE NO WARRANTIES AND MAKE NO REPRESENTATION THAT SOFTWARE IS FREE OF INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. DRESDEN UNIVERSITY OF TECHNOLOGY AND INDIANA UNIVERSITY MAKE NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE. LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION GENERATED USING SOFTWARE.

BIN
bun.lockb Normal file

Binary file not shown.

14
index.html Normal file
View File

@ -0,0 +1,14 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>闲鱼特卖开放平台</title>
<script type="text/javascript" href="./config.js"></script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

1
mt-setting.json Normal file
View File

@ -0,0 +1 @@
{"output":"dist","appId":"","screenType":"1"}

12806
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

53
package.json Normal file
View File

@ -0,0 +1,53 @@
{
"name": "xysale",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite",
"dev:pre": "vite --mode pre",
"build": "vite build",
"build:prod": "vite build",
"preview": "vite preview",
"dev:xy": "vite --mode xy",
"build:xy": "vite build --mode xy",
"build:d1": "vite build --mode d1",
"build:t1": "vite build --mode t1",
"build:pre": "vite build --mode pre",
"build:dev_7890": "vite build --mode dev_7890"
},
"dependencies": {
"@chenfengyuan/vue-qrcode": "2",
"@element-plus/icons-vue": "^2.3.1",
"@web-tracing/vue3": "^2.0.4",
"axios": "^1.6.8",
"element-plus": "^2.7.2",
"file-saver": "^2.0.5",
"moment": "^2.30.1",
"qrcode": "1",
"qrcode.vue": "^3.4.1",
"sortablejs": "^1.15.2",
"vant": "^4.9.0",
"vue": "3",
"vue-draggable-plus": "^0.4.1",
"vue-router": "^4.3.2",
"vxe-table": "^4.6.17"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.0.4",
"@vitejs/plugin-vue-jsx": "^3.1.0",
"@vxecli/import-unplugin-vue-components": "^1.0.3",
"babel-loader": "^9.1.3",
"cache-loader": "^4.1.0",
"css-minimizer-webpack-plugin": "^7.0.0",
"sass": "^1.77.0",
"sass-loader": "^14.2.1",
"script-ext-html-webpack-plugin": "^2.1.5",
"svg-sprite-loader": "^6.0.11",
"terser-webpack-plugin": "^5.3.10",
"unplugin-auto-import": "^0.17.5",
"unplugin-vue-components": "^0.27.0",
"vite": "^5.2.0",
"vite-plugin-lang-jsx": "^1.5.3"
}
}

5604
pnpm-lock.yaml Normal file

File diff suppressed because it is too large Load Diff

BIN
public/.DS_Store vendored Normal file

Binary file not shown.

65
public/ex.html Normal file
View File

@ -0,0 +1,65 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>免责声明</title>
</head>
<body>
<div id="recyclerview">
<div data-spm="7678148860" id="7678148860" mod-name="pmod-zebra-fish-xy-simplerichtext"
class="rax-view mui-zebra-module"
style="box-sizing: border-box; display: flex; position: relative; flex-direction: column; flex-shrink: 0; align-content: flex-start; border-width: 0vw; border-style: solid; border-color: black; margin: 0vw; padding: 0vw; min-width: 0vw;"
data-before-current-y="0" data-appeared="true" data-has-appeared="true">
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; padding-bottom: 5.3333vw; background-color: rgb(255, 255, 255);">
<a>
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: row; align-content: flex-start; flex-shrink: 0; margin-top: 13.3333vw; margin-left: 5.3333vw; margin-right: 5.3333vw; width: 89.3333vw; overflow: hidden;">
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; background-color: rgb(255, 218, 68); width: 1.0667vw; height: 5.8667vw;">
</div><span
style="border-width: 0px; border-style: solid; border-color: black; position: relative; box-sizing: border-box; display: block; flex-direction: column; align-content: flex-start; flex-shrink: 0; font-size: 4.8vw; white-space: pre-wrap; line-height: 5.8667vw; height: 5.8667vw; font-weight: bold; margin-left: 2.6667vw; color: rgb(34, 34, 34); ">一年质保服务说明</span>
</div>
</a><a>
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; margin-left: 5.3333vw; margin-right: 5.3333vw; margin-top: 6.4vw;">
<span
style="border-width: 0px; border-style: solid; border-color: black; position: relative; box-sizing: border-box; display: block; flex-direction: column; align-content: flex-start; flex-shrink: 0; font-size: 4.2667vw; white-space: pre-wrap; color: rgb(34, 34, 34); ">1、服务范围</span>
</div>
</a><a>
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; margin-left: 5.3333vw; margin-right: 5.3333vw; margin-top: 6.4vw;">
<span
style="border-width: 0px; border-style: solid; border-color: black; position: relative; box-sizing: border-box; display: block; flex-direction: column; align-content: flex-start; flex-shrink: 0; font-size: 4.2667vw; white-space: pre-wrap; color: rgb(34, 34, 34); ">非人为损坏导致的,且属于验货报告中确认功能正常的主机部件(包括基本参数鉴定、硬件检测、辅助功能检测中无异常项目以及维修后功能正常的项目)的性能故障属于支持质保范围。
</span></div>
</a><a>
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; margin-left: 5.3333vw; margin-right: 5.3333vw; margin-top: 6.4vw;">
<span
style="border-width: 0px; border-style: solid; border-color: black; position: relative; box-sizing: border-box; display: block; flex-direction: column; align-content: flex-start; flex-shrink: 0; font-size: 4.2667vw; white-space: pre-wrap; color: rgb(34, 34, 34); ">2、注意</span>
</div>
</a><a>
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; margin-left: 5.3333vw; margin-right: 5.3333vw; margin-top: 6.4vw;">
<span
style="border-width: 0px; border-style: solid; border-color: black; position: relative; box-sizing: border-box; display: block; flex-direction: column; align-content: flex-start; flex-shrink: 0; font-size: 4.2667vw; white-space: pre-wrap; color: rgb(34, 34, 34); ">1如买家通过质保审核并将设备寄往维修中心即视为默认同意维修中心拆机核实情况进行质保2维修中心无法提供质保订单维修视频。 </span></div>
</a><a>
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; margin-left: 5.3333vw; margin-right: 5.3333vw; margin-top: 6.4vw;">
<span
style="border-width: 0px; border-style: solid; border-color: black; position: relative; box-sizing: border-box; display: block; flex-direction: column; align-content: flex-start; flex-shrink: 0; font-size: 4.2667vw; white-space: pre-wrap; color: rgb(34, 34, 34); ">3、无法质保范围</span>
</div>
</a><a>
<div
style="border: 0px solid black; box-sizing: border-box; display: flex; flex-direction: column; align-content: flex-start; flex-shrink: 0; margin-left: 5.3333vw; margin-right: 5.3333vw; margin-top: 6.4vw;">
<span
style="border-width: 0px; border-style: solid; border-color: black; position: relative; box-sizing: border-box; display: block; flex-direction: column; align-content: flex-start; flex-shrink: 0; font-size: 4.2667vw; white-space: pre-wrap; color: rgb(34, 34, 34); ">1外部进水导致的设备故障2质保设备imei、sn等序列号信息的涂改或缺失或检测时无法正常开机导致序列号无法核对3属于验机评估报告中检测认证过的异常项以及异常项导致的进一步问题扩散包含商品更换非原装配件出现的与更换部位相关的功能异常问题4由于长期使用造成的机器自然老化或是不影响功能使用的外观磨损或损坏如屏幕发黄、电池效率下降等5设备外壳所有非操作性、装饰性部件油漆/颜料或机身表面抛光材料。6因不可抗力、交通事故、人为损坏等引起的设备变形或损坏7该质保设备的附加配件或者耗材诸如可拆卸电池、耳机、充电器、安装光盘、数据线、触笔、存储卡等亦不涵盖因商品故障而导致的任何信息或数据丢失。顾客应当负责对所有的储存数据保留备份。我们对任何间接损失或附带损失(包括但不限于,无法使用、业务损失、利润损失、数据损失、故障时间损失及误工费)不承担任何责任8非原厂或原厂授权维修网点进行拆机或维修过的或由非授权维修人员维修导致的损坏9自行刷机、强制升级其他固件和安装软件中毒等故障引起的商品功能故障。</span></div>
</a></div>
</div>
</div>
</body>
</html>

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

53
public/index.html Normal file
View File

@ -0,0 +1,53 @@
<!--
* @Author: your name
* @Date: 2020-09-08 18:06:28
* @LastEditTime: 2023-03-31 17:18:41
* @LastEditors: ckycjwds 1240973496@qq.com
* @Description: In User Settings Edit
* @FilePath: \aiguo_erp_vue\public\index.html
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!--移动端适配-->
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0">-->
<meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1">-->
<!--访问图片403问题-->
<meta name="referrer" content="no-referrer" />
<!--这meta的作用就是删除默认的苹果工具栏和菜单栏-->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<!-- 解决页面缓存 -->
<meta http-equiv="pragram" content="no-cache">
<meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate">
<!--默认值为default白色可以定为black黑色和black-translucent灰色半透明-->
<!--注意: 若值为“black-translucent”将会占据页面px位置浮在页面上方会覆盖页面20px高度iphone4和itouch4的Retina屏幕为40px-->
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<!-- 图片缓存 -->
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<link rel="preload" href="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vant%402.12/lib/index.min.css"/>
<link rel="stylesheet" href="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vant%402.12/lib/index.min.css">
<!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico"> -->
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<!-- <link rel="stylesheet" href="//at.alicdn.com/t/c/font_2070277_ldkubmlvpi.css"> -->
<!-- <link rel="stylesheet" href="//at.alicdn.com/t/c/font_2070277_gd5b6x6zfss.css"> -->
<link rel="preload" href="//at.alicdn.com/t/c/font_2070277_1ltl65aurxc.css"/>
<link rel="stylesheet" href="//at.alicdn.com/t/c/font_2070277_1ltl65aurxc.css"/>
<!-- <link rel="stylesheet" href="./iconfont.css"> -->
<title><%= webpackConfig.name %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= webpackConfig.name %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>

117
public/privacy.html Normal file
View File

@ -0,0 +1,117 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Legal notes</title>
<style type="text/css">
body {
font-family: Helvetica, Arial, sans-serif;
font-size: 11px;
margin: 0;
padding: 8px 16px;
line-height: 1.3em;
/*backgroundcolor*/
background-color: white;
/*backgroundcolor*/
}
h1 {
font-size: 16px;
line-height: 1.3em;
margin-bottom: 1em;
margin-top: 0;
/*fontcolor*/
color: black;
/*fontcolor*/
}
h2 {
font-size: 13px;
/*titlefontcolor*/
color: #555;
/*titlefontcolor*/
border-top: 1px solid #aaa;
padding-top: 0.5em;
margin-top: 1.5em;
}
h3 {
font-size: 13px;
/*titlefontcolor*/
color: #777;
/*titlefontcolor*/
border-top: 1px solid #aaa;
padding-top: 0.5em;
margin-top: 1.5em;
}
p,
ul,
li {
/*fontcolor*/
color: black;
/*fontcolor*/
}
a {
color: #0086C9;
}
.maincopyright {
font-size: 14px;
line-height: 1.3em;
}
</style>
</head>
<body data-extension-installed="2.2.0">
<p class="maincopyright">版权所有 © 2016-2024 爱果智能。</p>
<h2>隐私政策
</h2>
<p>2021 年 5 月 26 日</p>
<p>爱果智能 是在无懈可击的数据保护的前提下成立的。我们的主要目标是在尽可能短的时间内仅存储绝对最少的信息(“隐私设计”)。除了使用最先进的加密方法外,我们还采取一切必要的技术和组织措施来防止未经授权的数据访问和滥用。数据的处理和保护是根据适用的法律法规进行的。</p>
<p>谢谢你!</p>
<h2>1. 一般信息</h2>
<p>
爱果智能 网站可以完全匿名使用,并且没有广告和跟踪。<br></p>
<h3>2. 数据处理的目的</h3>
<p>爱果智能 仅处理数据以响应您的支持请求。</p>
<p>如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:</p>
<h3>3. 数据处理的范围和持续时间</h3>
<p>R技术支持请求包含您的电子邮件地址这是回答请求所必需的。支持请求和所有相关数据将在 6 个月不活动后被永久删除。</p>
<h3>4. 知情权、更正权、屏蔽权、删除权和反对权</h3>
<p>您有权随时接收有关 爱果智能 存储的您的个人数据的信息。同样,您有权更正、阻止或(除了出于商业目的法律要求的数据存储之外)删除您的个人数据。</p>
<h3>5. 责任机构</h3>
<p>如果您对 爱果智能 的数据保护有任何疑问可以直接联系我们。请发送电子邮件至aiguoerp@163.com。</p>
<h3>6. 隐私政策的修改</h3>
<p>我们保留不时更改本隐私政策的权利,以便遵守更改后的法律要求或反映应用程序的新功能。爱果智能 内部始终可以查阅最新的隐私政策。</p>
<h3>免责声明</h3>
<p>其他</p>
</body>
</html>

694
public/qc.html Normal file
View File

@ -0,0 +1,694 @@
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="format-detection" content="telephone=yes">
<meta name="viewport"
content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover">
<title>验货报告</title>
<!-- version: v8.222f3-->
<link href="./qc/main.css" rel="stylesheet">
<link href="./qc/app.css" rel="stylesheet">
<!-- 引入样式文件 -->
<link rel="stylesheet"
href="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vant%402.12/lib/index.min.css" />
<!-- 引入axios -->
<!-- <script src="https://unpkg.com/axios@1.5.0/dist/axios.min.js"></script> -->
<script
src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/axios%401.5.0/axios.min.js"></script>
<!-- 引入复制 -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js"></script> -->
<script
src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/clipboard%402.0.6/clipboard.min.js"></script>
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
<!-- <script src="https://unpkg.com/vue@2.7.14/dist/vue.js"></script> -->
<script
src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vue%402.7.14/vue.min.js"></script>
<!-- <script src="https://unpkg.com/vant@2.12.54/lib/vant.min.js"></script> -->
<script
src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vant%402.12/vant.min.js"></script>
</head>
<body>
<div id="app">
<div class="detection-report-wrapper">
<!-- <div class="detection-report-navigator">
<div class="navigator__back"><img src="./qc/f91120c59c495b475c73547633b800fd.png" class="navigator__back__img">
</div>
<h2 class="navigator__title">验货报告</h2>
<div class="navigator__box"></div>
</div> -->
<section class="detection-report-main" id="main">
<div class="main__wrapper">
<div class="main__bg">
<div class="main__top"><img :src="logo" class="top__title"><img
src="./qc/53cb52eca9214150a3774ad13cf547c8.png" class="top__fish"></div>
<div class="main__detail">
<div class="detail__top"
style="background-image: url(&quot;https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/xy_common/banner.png&quot;);">
<span class="top__codetext">质检编码:</span><span
class="top__codetext top__copymain">{{xy_qc_data.business_id}}</span><img
src="./qc/e3e938a675054afaaff31e8ae81a0c45.png" class="top__copy"
@click="copyLink($event,xy_qc_data.business_id)">
</div>
<div class="detail__wrapper">
<div class="prodinfo__phoneinfo"><img v-if="xy_qc_data" class="prodinfo__cover"
:src="xy_qc_data.img || res_img_url">
<div class="prodinfo__wrap">
<p class="prodinfo__name">{{xy_qc_data.sku}}</p>
<p class="prodinfo__imei">IMEI{{xy_qc_data.imei}}</p>
</div>
</div>
<div class="detail__qualityinfo">
<!-- <div class="qualityinfo__wrap"><span class="qualityinfo__score"
style="line-height: 0.7; margin-bottom: 0.03rem;">95</span>
<div class="qualityinfo__level"><span> 新· {{xy_qc_data.stuff_status}}</span></div>
</div> -->
<div class="qualityinfo__wrap"><span class="qualityinfo__score"
style="line-height: 0.7; margin-bottom: 0.03rem;">{{xynew}}</span>
<div class="qualityinfo__level"><span> 新· {{xytext}}</span></div>
</div>
</div>
<div class="detail__qualitymessage">{{xy_qc_data.use_desc || ''}}</div>
<div class="detail__appearance">
<p class="rowTitle">外观检测</p>
<div class="appearance__previews imgBox">
<div @click="imgClick(0)" class="previews__left previews__box">
<div class="ant-image"><img class="ant-image-img previews__img" v-if="res_img_url"
:src="res_img_url">
<!-- <div class="ant-image-mask">
<div class="ant-image-mask-info"><span role="img" aria-label="eye"
class="anticon anticon-eye">
</span>Preview</div>
</div> -->
</div>
</div>
<div class="previews__right previews__box">
<div v-for="(i,idx) in img_url1" :key="idx" @click="imgClick(idx + 1)"
class="previews__sitem previews__box false" :class="IsPC ? 'previews__sitem_my' : ''">
<div class="ant-image">
<img class="ant-image-img previews__img" v-if="i" :src="i">
<div class="ant-image-mask">
</div>
</div>
<div v-show="idx == 5 && img_url1.length > 6" class="previews__countplace">+{{img_url1.length -
6}}</div>
</div>
<!-- <div @click="imgClick(2)" class="previews__sitem previews__box false">
<div class="ant-image"><img class="ant-image-img previews__img"
src="./qc/44a8c100098e49868d6498f7c7882413.jpg">
</div>
<div v-show="images.length > 5" class="previews__countplace">+{{images.length}}</div>
</div> -->
</div>
</div>
</div>
<!-- 图片预览 -->
<van-image-preview v-model="show" :images="xy_qc_data.res_img_url" @change="onChange"
:start-position="position" ref="vanimgpre" :closeable="IsPC">
<template v-slot:cover v-if="IsPC" class="vancover">
<van-button @click="left" icon="arrow-left" class="btn" size="small"></van-button>
<van-button @click="right" icon="arrow" class="btn" size="small"></van-button>
</template>
</van-image-preview>
<!-- 图片预览 -->
<!-- 异常项 -->
<div class="list__wrap" v-show="xyyichangItem > 0">
<p class="rowTitle">异常检测项·{{xyyichangItem}}</p>
<div class="list__itemwrap" v-for="(item,index) in data" :key="index">
<p class="list__title" v-show="item.value.length > 0">{{item.qc_item}}</p>
<div class="list__item" v-for="(items,indexs) in item.value" :key="indexs">
<p class="list__content" v-show="items.fault_desc != ''"><span class="list__dot"></span><span
class="list__desc">{{items.fault_desc}}</span></p>
</div>
</div>
<div class="list__item1" v-if="xcimgs && xcimgs.length > 0">
<div class="mypreviews" v-for="(item,index) in xcimgs" :key="index" @click="imgClick1(index)">
<img class="ant-image-img previews__img"
:src="item">
</div>
</div>
</div>
<!-- <div class="list__wrap" v-if="defaultItem && defaultItem.length">
<p class="rowTitle">异常检测项·{{defaultItem.length}}</p>
<div class="list__itemwrap" v-for="(item,index) in defaultItem" :key="index">
<p class="list__title">{{item.p_qc_item}}</p>
<div class="list__item1">
<p class="list__content">
<span class="list__dot"></span>
<span class="list__desc">{{item.qc_item_value}}</span>
</p>
<div class="previews__sitem previews__box false">
<img class="ant-image-img previews__img"
:src="item.img">
</div>
</div>
</div>
</div> -->
</div>
<div class="detail__all">
<p class="rowTitle all__title">全部检测项·{{xy_qc_item_map_len}}</p>
<div class="detail__expands" v-for="(item,index) in data" :key="index">
<div class="expands__titlewrap expands__levelTitle ">
<p class="rowTitle">{{item.qc_item}}</p>
<div class="expands__right" @click="item0(index)">
<p class="tip-default" v-show="item.value.length == 0">
{{itemLen.normalarr[index]}}项全部正常</span>
</p>
<p class="tip-default" v-show="item.value.length > 0">
{{itemLen.normalarr[index]}}项正常</span>
</p>
<p class="tip-wran" v-show="item.value.length > 0">{{item.value.length}}项需注意</p>
<img src="./qc/e561d1a6d254416183b6ebc19e3a8c0f.png" class="expands__arrow"
:class="!item.flag?'item':''">
</div>
</div>
<div class="expands__cols" v-show="item.flag" v-for="(items,indexs) in item.child" :key="indexs">
<div>
<div class="expands__titlewrap expands__gutter">
<p class="rowTitle collspae-title">{{items.qc_item}}</p>
</div>
</div>
<div v-for="(item_,index_) in items.child">
<div class="expands__item" v-for="(item_1,index_1) in item_.qc_item_value">
<p class="expands__itemlabel "
:class="item_.qc_item_value.length > 0 && item_1.abnormal != 0 ?'expands__stroke':''">
{{item_.qc_item}}</p>
<div class="expands__itemdivider"></div>
<p class="expands__itemvalue "
:class="item_.qc_item_value.length > 0 && item_1.abnormal != 0 ?'expands__stroke':''">
{{item_1.qc_item_value}}</p>
</div>
</div>
</div>
<!-- <div class="expands__cols"></div> -->
<div class="expands__cols" v-show="!item.flag">
<div class="expands__item" v-for="(itemx,indx) in item.xcvalue" :key="indx">
<p class="expands__itemlabel expands__stroke">{{itemx.value}}</p>
<div class="expands__itemdivider"></div>
<p class="expands__itemvalue expands__stroke">{{itemx.text}}</p>
</div>
</div>
</div>
</div>
<p class="main__tipmsg">*商品的拆修情况目前仅针对第三方拆修进行检测,厂商官方的维修因技术原因无法判断,详见验机报告</p>
</div>
<div class="detection-report-footer">
<div class="footer__line"><img src="./qc/671751c6b1e24bb3b6d6098fd4cce9b3.png">
</div>
<div class="footer__content">
<div class="content__customer"><img :src="userinfodata.avatar || xy_qc_data.check_avatar"
class="footer__logo">
<div class="footer__appinfo">
<p class="appinfo__title">{{userinfodata.signature}}</p>
<!-- <p class="appinfo__title"><img :src="name"></p> -->
<p class="appinfo__desc">{{ userinfodata.position || '资深验货工程师'}}</p>
</div>
<!-- <a :href="check_phone" class="appinfo__button">联系客服</a> -->
</div>
<div class="content__disclaimer" @touchstart="goex"><img
src="./qc/8120650a4c8f4b448493e1e8f7918d6b.png">
</div>
</div>
</div>
<p class="main__report">本报告于{{ xy_qc_data.add_time | parseDateString}}出具</p>
</div>
</div>
</section>
</div>
<!-- 图片预览 -->
<van-image-preview v-model="show1" :images="xcimgs" @change="onChange1" :start-position="position1"
ref="vanimgpre1" :closeable="IsPC">
<template v-slot:cover v-if="IsPC" class="vancover">
<van-button @click="left1" icon="arrow-left" class="btn" size="small"></van-button>
<van-button @click="right1" icon="arrow" class="btn" size="small"></van-button>
</template>
</van-image-preview>
</div>
</body>
<!-- 引入toast -->
<script src="./qc/toast.js"></script>
<script>
const service = axios.create({
timeout: 1000 * 60 * 2 // 接口超时
})
// 请求拦截
service.interceptors.request.use(
config => {
config.headers['token'] = localStorage.getItem('token')
return config
},
error => {
return Promise.reject(error)
}
)
new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
show: false,
show1: false,
index: 0,
position: 0,
position1: 0,
flag0: false,
flag1: false,
flag2: false,
flag3: false,
id: '',
quality_report_id:'',
data: [],
xy_qc_data: '',
xy_qc_item_map: [],
res_img_url: '',
img_url1: '',
itemIndex: '',
index9: '',
check_phone: '',
logo: '',
name: './qc/name.jpg',
userinfodata: '',
defaultItem: [],
xcimgs:[],
},
created() {
// 获取URL地址
const url = window.location.href
// 获取参数部分
const params = url.split('?')[1]
// 将参数部分转换为对象
const paramsObj = {}
if (params) {
const paramsArr = params.split('&')
for (let i = 0; i < paramsArr.length; i++) {
const param = paramsArr[i].split('=')
paramsObj[param[0]] = param[1]
}
}
this.id = paramsObj.id;
this.quality_report_id=paramsObj.quality_report_id;
console.log(this.id, 'id---------------------', paramsObj);
},
filters: {
parseDateString(dateString) {
// 创建Date对象并解析日期字符串
let date = new Date(dateString);
// 获取年、月、日、时、分、秒
let year = date.getFullYear();
let month = date.getMonth() + 1; // 月份是从0开始的所以需要加1
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
// 补全数字例如如果月份、日期、小时、分钟或秒数为单数字则在其前面添加一个0
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
hour = hour < 10 ? '0' + hour : hour;
minute = minute < 10 ? '0' + minute : minute;
second = second < 10 ? '0' + second : second;
// 返回格式化的字符串
// return `${year}年${month}月${day}日 ${hour}时${minute}分${second}秒`;
return `${year}年${month}月${day}日`;
},
filterTimeYMD(time) {
var date = new Date(time)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
return y + '-' + m + '-' + d
}
},
computed: {
itemLen() {
const normalarr = []; //正常
const flawarr = []; //瑕疵
const len = this.data.length;
for (let i = 0; i < len; i++) {
normalarr[i] = 0;
flawarr[i] = 0;
}
this.data.forEach((item, index) => {
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
if (item2.qc_item_value) {
item2.qc_item_value.forEach((item3, index3) => {
if (item3.abnormal != 0) {
flawarr[index] += 1;
} else if (item3.abnormal == 0) {
normalarr[index] += 1;
}
})
}
})
});
});
return { normalarr, flawarr }
},
xyyichangItem() {
let len = 0;
this.data.forEach((item, index) => {
item.value.forEach((items, indexs) => {
if (items.fault_desc != '') {
len += 1;
}
})
})
return len;
},
xy_qc_item_map_len() {
let len = this.xy_qc_item_map.length;
return len;
},
xytext() {
// 99细微使用痕迹
// 95轻微使用痕迹
// 9轻度使用
// 8明显使用
let text = '';
if (this.xy_qc_data.stuff_status == 9) {
text = '轻度使用'
} else if (this.xy_qc_data.stuff_status == 8) {
text = '明显使用'
} else if (this.xy_qc_data.stuff_status == 95) {
text = '轻微使用痕迹'
} else if (this.xy_qc_data.stuff_status == 99) {
text = '细微使用痕迹'
}
return text;
},
//区分成色
xynew() {
let text = ''
if (this.xy_qc_data.stuff_status == 100) {
text = '全'
} else if (this.xy_qc_data.stuff_status == -1) {
text = '准'
} else {
text = this.xy_qc_data.stuff_status
}
return text
},
IsPC() {
if (/Mobi|Android|iPhone/i.test(navigator.userAgent)) {
// 当前设备是移动设备
return false;
} else {
return true;
}
},
},
mounted() {
service.post('https://api.aiguoerp.com/api/xy/xy_product_details', { xy_product_id: this.id }).then((res) => {
this.userinfodata = res.data.datas;
this.data = res.data.datas.xy_qc_item;
this.xy_qc_data = res.data.datas.datas;
// this.xy_qc_data.warranty_end_time = this.filterTimeYMD(this.xy_qc_data.warranty_end_time)
this.check_phone = `tel:${this.xy_qc_data.check_phone}`;
if (res.data.datas.logo == '' || res.data.datas.logo == null || res.data.datas.logo == undefined) {
this.logo = './qc/bg1.png'
} else {
this.logo = res.data.datas.logo;
}
if (this.xy_qc_data.check_avatar == '') {
this.xy_qc_data.check_avatar = './qc/avatar.png'
}
this.xy_qc_item_map = res.data.datas.xy_qc_item_map;
this.xy_qc_data.res_img_url = JSON.parse(this.xy_qc_data.res_img_url);
this.res_img_url = JSON.parse(JSON.stringify(this.xy_qc_data.res_img_url))[0];
this.img_url1 = JSON.parse(JSON.stringify(this.xy_qc_data.res_img_url));
this.img_url1.splice(0, 1);
console.log(this.res_img_url, '------------', this.img_url1);
console.log(this.xy_qc_data, '-------------8', this.xy_qc_item_map);
this.xyitem();
this.getXiaciitem();
})
},
methods: {
xyitem() {
this.data.forEach((item, index) => {
this.$set(item, 'value', []);
this.$set(item, 'xcvalue', []);
this.$set(item, 'flag', false);
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
if (item2.qc_item_value) {
item2.qc_item_value.forEach((items, indexs) => {
if (items.abnormal == 1 && items.fault_desc) {
item.value.push({ value: item2.qc_item, text: items.qc_item_value, fault_desc: items.fault_desc })
}
if (items.abnormal == 1) {
item.xcvalue.push({ value: item2.qc_item, text: items.qc_item_value, fault_desc: items.fault_desc })
}
if (items.qc_item_value_id == 53 || items.qc_item_value_id == 471 && this.xy_qc_data.battery_cycle != '') {
items.qc_item_value = this.xy_qc_data.battery_cycle ? this.xy_qc_data.battery_cycle : ''
}
if (items.qc_item_value_id == 44 || items.qc_item_value_id == 1007 || items.qc_item_value_id == 470) {
// items.qc_item_value = '到' + this.xy_qc_data.warranty_end_time
items.qc_item_value = this.xy_qc_data.warranty_end_time == '' ? '在保' : this.xy_qc_data.warranty_end_time
}
if (items.qc_item_value_id == 1009) {
items.qc_item_value = this.xy_qc_data.battery_health == '' ? '' : this.xy_qc_data.battery_health
}
if (items.qc_item_value == '运行内存(手填)') {
items.qc_item_value = this.xy_qc_data.move_rom || ''
}
if (items.qc_item_value == '硬盘容量(手填)' || items.qc_item_value == '容量(手填)') {
items.qc_item_value = this.xy_qc_data.rom || ''
}
if (items.qc_item_value == 'CPU型号(手填)') {
items.qc_item_value = this.xy_qc_data.cpu_model || ''
}
if (items.qc_item_value == '分辨率(手填)') {
items.qc_item_value = this.xy_qc_data.resolution_ratio || ''
}
if (items.qc_item_value == '显卡型号(手填)') {
items.qc_item_value = this.xy_qc_data.video_card || ''
}
if (items.qc_item_value == '屏幕尺寸(手填)' || items.qc_item_value == '尺寸(手填)') {
items.qc_item_value = this.xy_qc_data.screen_size || ''
}
if (items.qc_item_value == '刷新率(手填)') {
items.qc_item_value = this.xy_qc_data.refresh_rate || ''
}
})
}
})
})
})
},
getXiaciitem() {
service.post('https://api.aiguoerp.com/api/xy/get_defect_term', { xy_product_id: this.id }).then(res => {
let arr = res.data.datas.defect_term
this.xcimgs = arr.map(item=>{
if(item.img){
return item.img
}
}).filter(item=>item)
// this.defaultItem = res.data.datas.defect_term
console.log(res, '获取瑕疵图---------', this.xcimgs);
})
},
xyitem1() {
service.post('https://api.aiguoerp.com/api/xy/xy_qc_item').then((res) => {
console.log(res.data)
this.data = res.data.datas;
this.data.forEach((item, index) => {
this.$set(item, 'flag', false);
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
item2.qc_item_value = item2.qc_item_value.filter((item3) => {
if (this.xy_qc_item_map.some(i_ => i_.qc_item_value_id == item3.qc_item_value_id)) {
return item3;
}
})
})
})
});
this.data.forEach((item, index) => {
this.$set(item, 'value', []);
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
item2.qc_item_value.forEach((items, indexs) => {
if (items.abnormal == 1) {
item.value.push({ value: item2.qc_item, text: items.qc_item_value, fault_desc: items.fault_desc })
}
if (items.qc_item_value_id == 53 && this.xy_qc_data.battery_cycle != '') {
items.qc_item_value = this.xy_qc_data.battery_cycle + '次'
}
if (items.qc_item_value_id == 44 && this.xy_qc_data.warranty_end_time != '') {
items.qc_item_value = '到' + this.xy_qc_data.warranty_end_time
}
})
})
})
})
console.log(this.data, 'data-----------------------666');
})
},
imgClick(e) {
this.show = true;
this.position = e;
},
imgClick1(e){
this.show1 = true;
this.position1 = e;
},
onChange(index) {
this.index = index;
},
onChange1(index) {
this.index1 = index;
},
item0(e) {
// this['flag' + e] = !this['flag' + e];
this.itemIndex = e;
this.index9 = e;
this.data.forEach((item, index) => {
if (e == index) {
this.$set(item, 'flag', !item.flag);
}
});
},
left() {
this.index--;
this.$refs.vanimgpre.swipeTo(this.index);
},
right() {
this.index++;
this.$refs.vanimgpre.swipeTo(this.index);
},
left1() {
this.index1--;
this.$refs.vanimgpre1.swipeTo(this.index1);
},
right1() {
this.index1++;
this.$refs.vanimgpre1.swipeTo(this.index1);
},
copyLink(e, val) {
var yg = new Ygtoast();
const clipboard = new ClipboardJS(e.target, { text: () => val })
// 调用
clipboard.on('success', (e) => {
yg.toast("复制成功", 1500);
// 释放内存
clipboard.off('error')
clipboard.off('success')
clipboard.destroy()
})
clipboard.on('error', (e) => {
// 不支持复制
yg.toast("不支持自动复制", 1500);
// 释放内存
clipboard.off('error')
clipboard.off('success')
clipboard.destroy()
})
clipboard.onClick(e)
},
goex() {
window.location = 'ex.html'
},
closePreview() {
console.log(777);
},
filterTimeYMD(time) {
var date = new Date(time)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
return y + '-' + m + '-' + d
}
}
});
</script>
<style>
/* @font-face {
font-family: "DIN Alternate";
src: url("qc/font/PingFangHK-Semibold.otf") format("opentype"),
url("qc/font/Din\ Condensed.ttf") format(),
url("qc/font/PingFangSC-Medium.ttf"),
url("qc/font/PingFangSC-Regular.ttf");
} */
.detection-report-main {
padding: 0 .32rem .5rem;
}
.item {
transform: rotate(180deg);
}
.imgBox {
height: 2.32rem;
}
.yg-toast {
position: fixed;
background: rgba(0, 0, 0, .7);
border-radius: 4px;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 60%;
text-align: center;
transition: all .1s;
z-index: 90000000;
}
.yg-toast-text {
color: #fff;
padding: 4px 10px;
padding-bottom: 6px;
}
.van-image-preview__cover {
top: 10px;
left: 10px;
}
.previews__sitem_my {
width: 0.9rem !important;
height: 1rem !important;
}
.list__item1 {
display: flex;
flex-wrap: wrap;
}
.mypreviews {
flex-shrink: 0;
flex-grow: 0;
width: 1.12rem;
height: 1.12rem;
margin-right: .08rem;
margin-bottom: .08rem;
}
.mypreviews:nth-child(5n) {
margin-right: 0;
}
</style>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

422
public/qc/app.css Normal file
View File

@ -0,0 +1,422 @@
/*!
*
* antd v4.12.3
*
* Copyright 2015-present, Alipay, Inc.
* All rights reserved.
*
*/
[class*=ant-]::-ms-clear,
[class*=ant-] input::-ms-clear,
[class*=ant-] input::-ms-reveal,
[class^=ant-]::-ms-clear,
[class^=ant-] input::-ms-clear,
[class^=ant-] input::-ms-reveal {
display: none
}
[class*=ant-],
[class*=ant-] *,
[class*=ant-] :after,
[class*=ant-] :before,
[class^=ant-],
[class^=ant-] *,
[class^=ant-] :after,
[class^=ant-] :before {
-webkit-box-sizing: border-box;
box-sizing: border-box
}
body,
html {
width: 100%;
height: 100%
}
input::-ms-clear,
input::-ms-reveal {
display: none
}
*,
:after,
:before {
-webkit-box-sizing: border-box;
box-sizing: border-box
}
html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0)
}
@-ms-viewport {
width: device-width
}
body {
margin: 0;
color: rgba(0, 0, 0, .85);
font-size: 14px;
font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
font-variant: tabular-nums;
line-height: 1.5715;
background-color: #fff;
-webkit-font-feature-settings: "tnum";
font-feature-settings: "tnum"
}
[tabindex="-1"]:focus {
outline: none !important
}
hr {
-webkit-box-sizing: content-box;
box-sizing: content-box;
height: 0;
overflow: visible
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 0;
margin-bottom: .5em;
color: rgba(0, 0, 0, .85);
font-weight: 500
}
p {
margin-top: 0;
margin-bottom: 1em
}
abbr[data-original-title],
abbr[title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
border-bottom: 0;
cursor: help
}
address {
margin-bottom: 1em;
font-style: normal;
line-height: inherit
}
input[type=number],
input[type=password],
input[type=text],
textarea {
-webkit-appearance: none
}
dl,
ol,
ul {
margin-top: 0;
margin-bottom: 1em
}
ol ol,
ol ul,
ul ol,
ul ul {
margin-bottom: 0
}
dt {
font-weight: 500
}
dd {
margin-bottom: .5em;
margin-left: 0
}
blockquote {
margin: 0 0 1em
}
dfn {
font-style: italic
}
b,
strong {
font-weight: bolder
}
small {
font-size: 80%
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline
}
sub {
bottom: -.25em
}
sup {
top: -.5em
}
a {
color: #1890ff;
text-decoration: none;
background-color: transparent;
outline: none;
cursor: pointer;
-webkit-transition: color .3s;
transition: color .3s;
-webkit-text-decoration-skip: objects
}
a:hover {
color: #40a9ff
}
a:active {
color: #096dd9
}
a:active,
a:focus,
a:hover {
text-decoration: none;
outline: 0
}
a[disabled] {
color: rgba(0, 0, 0, .25);
cursor: not-allowed;
pointer-events: none
}
code,
kbd,
pre,
samp {
font-size: 1em;
font-family: SFMono-Regular, Consolas, Liberation Mono, Menlo, Courier, monospace
}
pre {
margin-top: 0;
margin-bottom: 1em;
overflow: auto
}
figure {
margin: 0 0 1em
}
img {
vertical-align: middle;
border-style: none
}
svg:not(:root) {
overflow: hidden
}
[role=button],
a,
area,
button,
input:not([type=range]),
label,
select,
summary,
textarea {
-ms-touch-action: manipulation;
touch-action: manipulation
}
table {
border-collapse: collapse
}
caption {
padding-top: .75em;
padding-bottom: .3em;
color: rgba(0, 0, 0, .45);
text-align: left;
caption-side: bottom
}
th {
text-align: inherit
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
color: inherit;
font-size: inherit;
font-family: inherit;
line-height: inherit
}
button,
input {
overflow: visible
}
button,
select {
text-transform: none
}
[type=reset],
[type=submit],
button,
html [type=button] {
-webkit-appearance: button
}
[type=button]::-moz-focus-inner,
[type=reset]::-moz-focus-inner,
[type=submit]::-moz-focus-inner,
button::-moz-focus-inner {
padding: 0;
border-style: none
}
input[type=checkbox],
input[type=radio] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0
}
input[type=date],
input[type=datetime-local],
input[type=month],
input[type=time] {
-webkit-appearance: listbox
}
textarea {
overflow: auto;
resize: vertical
}
fieldset {
min-width: 0;
margin: 0;
padding: 0;
border: 0
}
legend {
display: block;
width: 100%;
max-width: 100%;
margin-bottom: .5em;
padding: 0;
color: inherit;
font-size: 1.5em;
line-height: inherit;
white-space: normal
}
progress {
vertical-align: baseline
}
[type=number]::-webkit-inner-spin-button,
[type=number]::-webkit-outer-spin-button {
height: auto
}
[type=search] {
outline-offset: -2px;
-webkit-appearance: none
}
[type=search]::-webkit-search-cancel-button,
[type=search]::-webkit-search-decoration {
-webkit-appearance: none
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button
}
output {
display: inline-block
}
summary {
display: list-item
}
template {
display: none
}
[hidden] {
display: none !important
}
mark {
padding: .2em;
background-color: #feffe6
}
::-moz-selection {
color: #fff;
background: #1890ff
}
::selection {
color: #fff;
background: #1890ff
}
.clearfix:after,
.clearfix:before {
display: table;
content: ""
}
.clearfix:after {
clear: both
}
.anticon {
display: inline-block;
color: inherit;
font-style: normal;
line-height: 0;
text-align: center;
text-transform: none;
vertical-align: -.125em;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale
}

BIN
public/qc/avatar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

BIN
public/qc/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
public/qc/bg1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

1140
public/qc/main.css Normal file

File diff suppressed because it is too large Load Diff

BIN
public/qc/name.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

44
public/qc/toast.js Normal file
View File

@ -0,0 +1,44 @@
//立即执行函数
(function (window, undefined) {
var Ygtoast = function () {
//构造函数大驼峰命名法
};
Ygtoast.prototype = {
//prototype 属性使您有能力向对象添加属性和方法。
create: function (str, duration) {
let self = this;
var toastHtml = "";
var toastText = '<div class="yg-toast-text">' + str + "</div>";
toastHtml = '<div class="yg-toast">' + toastText + "</div>";
if (document.querySelector(".yg-toast")) return; //当还没hide时禁止重复点击
document.body.insertAdjacentHTML("beforeend", toastHtml);
duration == null ? (duration = 2000) : ""; //如果toast没有加上时间默认2000毫秒
self.show();
setTimeout(function () {
self.hide();
}, duration);
},
show: function () {
let self = this;
document.querySelector(".yg-toast").style.display = "block";
document.querySelector(".yg-toast").style.marginTop =
"-" +
Math.round(document.querySelector(".yg-toast").offsetHeight / 2) +
"px";
if (document.querySelector(".yg-toast")) return;
},
hide: function () {
var self = this;
if (document.querySelector(".yg-toast")) {
document
.querySelector(".yg-toast")
.parentNode.removeChild(document.querySelector(".yg-toast"));
}
},
toast: function (str, duration) {
var self = this;
return self.create(str, duration);
},
};
window.Ygtoast = Ygtoast;
})(window);

BIN
public/qc/zhijian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

564
public/qc1.html Normal file
View File

@ -0,0 +1,564 @@
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="format-detection" content="telephone=yes">
<meta name="viewport"
content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1,viewport-fit=cover">
<title>验货报告</title>
<!-- version: v8.222f3-->
<link href="./qc/main.css" rel="stylesheet">
<link href="./qc/app.css" rel="stylesheet">
<!-- 引入样式文件 -->
<link rel="stylesheet" href="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vant%402.12/lib/index.min.css" />
<!-- 引入axios -->
<!-- <script src="https://unpkg.com/axios@1.5.0/dist/axios.min.js"></script> -->
<script src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/axios%401.5.0/axios.min.js"></script>
<!-- 引入复制 -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js"></script> -->
<script src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/clipboard%402.0.6/clipboard.min.js"></script>
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
<!-- <script src="https://unpkg.com/vue@2.7.14/dist/vue.js"></script> -->
<script src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vue%402.7.14/vue.min.js"></script>
<!-- <script src="https://unpkg.com/vant@2.12.54/lib/vant.min.js"></script> -->
<script src="https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/page_common/npm/vant%402.12/vant.min.js"></script>
</head>
<body>
<div id="app">
<div class="detection-report-wrapper">
<!-- <div class="detection-report-navigator">
<div class="navigator__back"><img src="./qc/f91120c59c495b475c73547633b800fd.png" class="navigator__back__img">
</div>
<h2 class="navigator__title">验货报告</h2>
<div class="navigator__box"></div>
</div> -->
<section class="detection-report-main" id="main">
<div class="main__wrapper">
<div class="main__bg">
<div class="main__top">
<img :src="logo" class="top__title">
<!-- <img src="./qc/zhijian.png" class="top__fish"> -->
<div class="top__fish"></div>
</div>
<div class="main__detail">
<div class="detail__top"
style="background-image: url(&quot;https://erp-temporary-file.oss-cn-hangzhou.aliyuncs.com/xy_common/banner.png&quot;);">
<span class="top__codetext">质检编码:</span><span
class="top__codetext top__copymain">{{xy_qc_data.business_id}}</span><img
src="./qc/e3e938a675054afaaff31e8ae81a0c45.png" class="top__copy"
@click="copyLink($event,xy_qc_data.business_id)">
</div>
<div class="detail__wrapper">
<div class="prodinfo__phoneinfo"><img v-if="xy_qc_data" class="prodinfo__cover" :src="xy_qc_data.img || res_img_url">
<div class="prodinfo__wrap">
<p class="prodinfo__name">{{xy_qc_data.sku}}</p>
<p class="prodinfo__imei">IMEI{{xy_qc_data.imei}}</p>
</div>
</div>
<div class="detail__qualityinfo">
<div class="qualityinfo__wrap"><span class="qualityinfo__score"
style="line-height: 0.7; margin-bottom: 0.03rem;"></span>
<!-- <div class="qualityinfo__level"><span> <span v-if="xytext">新· </span>{{xytext}}</span></div> -->
<div class="qualityinfo__level"><span v-if="xytext">{{xytext}}</span></div>
</div>
</div>
<div class="detail__qualitymessage">{{xy_qc_data.use_desc || ''}}</div>
<div class="detail__appearance">
<p class="rowTitle">外观检测</p>
<div class="appearance__previews imgBox">
<div @click="imgClick(0)" class="previews__left previews__box">
<div class="ant-image"><img v-if="res_img_url" class="ant-image-img previews__img" :src="res_img_url">
<!-- <div class="ant-image-mask">
<div class="ant-image-mask-info"><span role="img" aria-label="eye"
class="anticon anticon-eye">
</span>Preview</div>
</div> -->
</div>
</div>
<div class="previews__right previews__box">
<div v-for="(i,idx) in img_url1" :key="idx" @click="imgClick(idx + 1)"
class="previews__sitem previews__box false" :class="IsPC ? 'previews__sitem_my' : ''">
<div class="ant-image">
<img class="ant-image-img previews__img" v-if="i" :src="i">
<div class="ant-image-mask">
</div>
</div>
<div v-show="idx == 5 && img_url1.length > 6" class="previews__countplace">+{{img_url1.length -
6}}</div>
</div>
<!-- <div @click="imgClick(2)" class="previews__sitem previews__box false">
<div class="ant-image"><img class="ant-image-img previews__img"
src="./qc/44a8c100098e49868d6498f7c7882413.jpg">
</div>
<div v-show="images.length > 5" class="previews__countplace">+{{images.length}}</div>
</div> -->
</div>
</div>
</div>
<!-- 图片预览 -->
<van-image-preview v-model="show" :images="xy_qc_data.res_img_url" @change="onChange"
:start-position="position" ref="vanimgpre" :closeable="IsPC">
<template v-slot:cover v-if="IsPC" class="vancover">
<van-button @click="left" icon="arrow-left" class="btn" size="small"></van-button>
<van-button @click="right" icon="arrow" class="btn" size="small"></van-button>
</template>
</van-image-preview>
<!-- 图片预览 -->
<!-- 异常项 -->
<div class="list__wrap" v-show="xyyichangItem > 0">
<p class="rowTitle">异常检测项·{{xyyichangItem}}</p>
<div class="list__itemwrap" v-for="(item,index) in data" :key="index">
<p class="list__title" v-show="item.value.length > 0">{{item.qc_item}}</p>
<div class="list__item" v-for="(items,indexs) in item.value" :key="indexs">
<p class="list__content" v-show="items.fault_desc != ''"><span class="list__dot"></span><span
class="list__desc">{{items.fault_desc}}</span></p>
</div>
</div>
</div>
</div>
<div class="detail__all">
<p class="rowTitle all__title">全部检测项·{{xy_qc_item_map_len}}</p>
<div class="detail__expands" v-for="(item,index) in data" :key="index">
<div class="expands__titlewrap expands__levelTitle ">
<p class="rowTitle">{{item.qc_item}}</p>
<div class="expands__right" @click="item0(index)">
<p class="tip-default" v-show="item.value.length == 0">
{{itemLen.normalarr[index]}}项全部正常</span>
</p>
<p class="tip-default" v-show="item.value.length > 0">
{{itemLen.normalarr[index]}}项正常</span>
</p>
<p class="tip-wran" v-show="item.value.length > 0">{{item.value.length}}项需注意</p>
<img src="./qc/e561d1a6d254416183b6ebc19e3a8c0f.png" class="expands__arrow"
:class="!item.flag?'item':''">
</div>
</div>
<div class="expands__cols" v-show="item.flag" v-for="(items,indexs) in item.child" :key="indexs">
<div>
<div class="expands__titlewrap expands__gutter">
<p class="rowTitle collspae-title">{{items.qc_item}}</p>
</div>
</div>
<div v-for="(item_,index_) in items.child">
<div class="expands__item">
<p class="expands__itemlabel "
:class="item_.qc_item_value.length > 0 && item_.qc_item_value[0].abnormal != 0 ?'expands__stroke':''">
{{item_.qc_item}}</p>
<div class="expands__itemdivider"></div>
<p class="expands__itemvalue "
:class="item_.qc_item_value.length > 0 && item_.qc_item_value[0].abnormal != 0 ?'expands__stroke':''">
{{item_.qc_item_value.length > 0 ?
item_.qc_item_value[0].qc_item_value : ''}}</p>
</div>
</div>
</div>
<!-- <div class="expands__cols"></div> -->
<div class="expands__cols" v-show="!item.flag">
<div class="expands__item" v-for="(itemx,indx) in item.value" :key="indx">
<p class="expands__itemlabel expands__stroke">{{itemx.value}}</p>
<div class="expands__itemdivider"></div>
<p class="expands__itemvalue expands__stroke">{{itemx.text}}</p>
</div>
</div>
</div>
</div>
<p class="main__tipmsg">*商品的拆修情况目前仅针对第三方拆修进行检测,厂商官方的维修因技术原因无法判断,详见验机报告</p>
</div>
<!-- <div class="detection-report-footer">
<div class="footer__line"><img src="./qc/671751c6b1e24bb3b6d6098fd4cce9b3.png">
</div>
<div class="footer__content">
<div class="content__customer"><img :src="userinfodata.avatar || xy_qc_data.check_avatar" class="footer__logo">
<div class="footer__appinfo">
<p class="appinfo__title">{{userinfodata.signature}}</p>
<p class="appinfo__desc">{{ userinfodata.position || '资深验货工程师'}}</p>
</div>
</div>
<div class="content__disclaimer" @touchstart="goex"><img
src="./qc/8120650a4c8f4b448493e1e8f7918d6b.png">
</div>
</div>
</div> -->
<p class="main__report">本报告于{{ xy_qc_data.add_time | parseDateString}}出具</p>
</div>
</div>
</section>
</div>
</div>
</body>
<!-- 引入toast -->
<script src="./qc/toast.js"></script>
<script>
const service = axios.create({
timeout: 1000 * 60 * 2 // 接口超时
})
// 请求拦截
service.interceptors.request.use(
config => {
config.headers['token'] = localStorage.getItem('token')
return config
},
error => {
return Promise.reject(error)
}
)
new Vue({
el: '#app',
data: {
message: 'Hello Vue!',
show: false,
index: 0,
position: 0,
flag0: false,
flag1: false,
flag2: false,
flag3: false,
id: '',
data: [],
xy_qc_data: '',
xy_qc_item_map: [],
res_img_url: '',
img_url1: '',
itemIndex: '',
index9: '',
check_phone: '',
logo: './qc/zhijian.png',
name: './qc/name.jpg',
userinfodata:'',
},
created() {
// 获取URL地址
const url = window.location.href
// 获取参数部分
const params = url.split('?')[1]
// 将参数部分转换为对象
const paramsObj = {}
if (params) {
const paramsArr = params.split('&')
for (let i = 0; i < paramsArr.length; i++) {
const param = paramsArr[i].split('=')
paramsObj[param[0]] = param[1]
}
}
this.id = paramsObj.business_id;
console.log(this.id, 'id---------------------', paramsObj);
},
filters: {
parseDateString(dateString) {
// 创建Date对象并解析日期字符串
let date = new Date(dateString);
// 获取年、月、日、时、分、秒
let year = date.getFullYear();
let month = date.getMonth() + 1; // 月份是从0开始的所以需要加1
let day = date.getDate();
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
// 补全数字例如如果月份、日期、小时、分钟或秒数为单数字则在其前面添加一个0
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
hour = hour < 10 ? '0' + hour : hour;
minute = minute < 10 ? '0' + minute : minute;
second = second < 10 ? '0' + second : second;
// 返回格式化的字符串
// return `${year}年${month}月${day}日 ${hour}时${minute}分${second}秒`;
return `${year}年${month}月${day}日`;
},
filterTimeYMD(time) {
var date = new Date(time)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
return y + '-' + m + '-' + d
}
},
computed: {
itemLen() {
const normalarr = []; //正常
const flawarr = []; //瑕疵
const len = this.data.length;
for (let i = 0; i < len; i++) {
normalarr[i] = 0;
flawarr[i] = 0;
}
this.data.forEach((item, index) => {
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
item2.qc_item_value.forEach((item3, index3) => {
if (item3.fineness2 != '优品/严选') {
flawarr[index] += 1;
} else if (item3.fineness2 == '优品/严选' && item3.abnormal == 0) {
normalarr[index] += 1;
}
})
})
});
});
return { normalarr, flawarr }
},
xyyichangItem() {
let len = 0;
this.data.forEach((item, index) => {
item.value.forEach((items, indexs) => {
if (items.fault_desc != '') {
len += 1;
}
})
})
return len;
},
xy_qc_item_map_len() {
let len = this.xy_qc_item_map.length;
return len;
},
xytext() {
// 99细微使用痕迹
// 95轻微使用痕迹
// 9轻度使用
// 8明显使用
let text = '';
if (this.xy_qc_data.stuff_status == 9) {
text = '轻度使用'
} else if (this.xy_qc_data.stuff_status == 8) {
text = '明显使用'
} else if (this.xy_qc_data.stuff_status == 95) {
text = '轻微使用痕迹'
} else if (this.xy_qc_data.stuff_status == 99) {
text = '细微使用痕迹'
} else if(this.xy_qc_data.stuff_status == '微瑕'){
text = ''
}
return text;
},
IsPC() {
if (/Mobi|Android|iPhone/i.test(navigator.userAgent)) {
// 当前设备是移动设备
return false;
} else {
return true;
}
},
},
mounted() {
// service.post('https://api.aiguoerp.com/api/xy/xy_product_details', { xy_product_id: this.id }).then((res) => {
service.post('https://api.aiguoerp.com/api/inspection_center/product_details', { business_id: this.id }).then((res) => {
this.userinfodata = res.data.datas;
this.data = res.data.datas.xy_qc_item;
this.xy_qc_data = res.data.datas.datas;
// this.xy_qc_data.warranty_end_time = this.filterTimeYMD(this.xy_qc_data.warranty_end_time)
this.check_phone = `tel:${this.xy_qc_data.check_phone}`;
// if (res.data.datas.logo == '' || res.data.datas.logo == null || res.data.datas.logo == undefined) {
// this.logo = './qc/bg1.png'
// } else {
// this.logo = res.data.datas.logo;
// }
if (this.xy_qc_data.check_avatar == '') {
this.xy_qc_data.check_avatar = './qc/avatar.png'
}
this.xy_qc_item_map = res.data.datas.xy_qc_item_map;
this.xy_qc_data.res_img_url = JSON.parse(this.xy_qc_data.res_img_url);
this.res_img_url = JSON.parse(JSON.stringify(this.xy_qc_data.res_img_url))[0];
this.img_url1 = JSON.parse(JSON.stringify(this.xy_qc_data.res_img_url));
this.img_url1.splice(0, 1);
console.log(this.res_img_url, '------------', this.img_url1);
console.log(this.xy_qc_data, '-------------8', this.xy_qc_item_map);
this.xyitem();
})
},
methods: {
xyitem() {
this.data.forEach((item, index) => {
this.$set(item, 'value', []);
this.$set(item, 'flag', false);
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
item2.qc_item_value.forEach((items, indexs) => {
if (items.abnormal == 1) {
item.value.push({ value: item2.qc_item, text: items.qc_item_value, fault_desc: items.fault_desc })
}
if (items.qc_item_value_id == 53 && this.xy_qc_data.battery_cycle != '') {
items.qc_item_value = this.xy_qc_data.battery_cycle.includes('次') ? this.xy_qc_data.battery_cycle : this.xy_qc_data.battery_cycle + '次'
}
if (items.qc_item_value_id == 44) {
// items.qc_item_value = '到' + this.xy_qc_data.warranty_end_time
items.qc_item_value = this.xy_qc_data.warranty_end_time == '' ? '无' : this.xy_qc_data.warranty_end_time
}else if(items.qc_item_value_id == 44 && this){
}
})
})
})
})
},
xyitem1() {
service.post('https://api.aiguoerp.com/api/xy/xy_qc_item').then((res) => {
console.log(res.data)
this.data = res.data.datas;
this.data.forEach((item, index) => {
this.$set(item, 'flag', false);
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
item2.qc_item_value = item2.qc_item_value.filter((item3) => {
if (this.xy_qc_item_map.some(i_ => i_.qc_item_value_id == item3.qc_item_value_id)) {
return item3;
}
})
})
})
});
this.data.forEach((item, index) => {
this.$set(item, 'value', []);
item.child.forEach((item1, index1) => {
item1.child.forEach((item2, index2) => {
item2.qc_item_value.forEach((items, indexs) => {
if (items.abnormal == 1) {
item.value.push({ value: item2.qc_item, text: items.qc_item_value, fault_desc: items.fault_desc })
}
if (items.qc_item_value_id == 53 && this.xy_qc_data.battery_cycle != '') {
items.qc_item_value = this.xy_qc_data.battery_cycle + '次'
}
if (items.qc_item_value_id == 44 && this.xy_qc_data.warranty_end_time != '') {
items.qc_item_value = '到' + this.xy_qc_data.warranty_end_time
}
})
})
})
})
console.log(this.data, 'data-----------------------666');
})
},
imgClick(e) {
this.show = true;
this.position = e;
},
onChange(index) {
this.index = index;
},
item0(e) {
// this['flag' + e] = !this['flag' + e];
this.itemIndex = e;
this.index9 = e;
this.data.forEach((item, index) => {
if (e == index) {
this.$set(item, 'flag', !item.flag);
}
});
},
left() {
this.index--;
this.$refs.vanimgpre.swipeTo(this.index);
},
right() {
this.index++;
this.$refs.vanimgpre.swipeTo(this.index);
},
copyLink(e, val) {
var yg = new Ygtoast();
const clipboard = new ClipboardJS(e.target, { text: () => val })
// 调用
clipboard.on('success', (e) => {
yg.toast("复制成功", 1500);
// 释放内存
clipboard.off('error')
clipboard.off('success')
clipboard.destroy()
})
clipboard.on('error', (e) => {
// 不支持复制
yg.toast("不支持自动复制", 1500);
// 释放内存
clipboard.off('error')
clipboard.off('success')
clipboard.destroy()
})
clipboard.onClick(e)
},
goex() {
window.location = 'ex.html'
},
closePreview() {
console.log(777);
},
filterTimeYMD(time) {
var date = new Date(time)
var y = date.getFullYear()
var m = date.getMonth() + 1
m = m < 10 ? '0' + m : m
var d = date.getDate()
d = d < 10 ? '0' + d : d
return y + '-' + m + '-' + d
}
}
});
</script>
<style>
/* @font-face {
font-family: "DIN Alternate";
src: url("qc/font/PingFangHK-Semibold.otf") format("opentype"),
url("qc/font/Din\ Condensed.ttf") format(),
url("qc/font/PingFangSC-Medium.ttf"),
url("qc/font/PingFangSC-Regular.ttf");
} */
.detection-report-main .top__fish {
height:1.1rem;
}
.detection-report-main {
padding: 0 .32rem .5rem;
}
.item {
transform: rotate(180deg);
}
.imgBox {
height: 2.32rem;
}
.yg-toast {
position: fixed;
background: rgba(0, 0, 0, .7);
border-radius: 4px;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 60%;
text-align: center;
transition: all .1s;
z-index: 90000000;
}
.yg-toast-text {
color: #fff;
padding: 4px 10px;
padding-bottom: 6px;
}
.van-image-preview__cover {
top: 10px;
left: 10px;
}
.previews__sitem_my {
width: 0.9rem !important;
height: 1rem !important;
}
</style>
</html>

1
public/vite.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/.DS_Store vendored Normal file

Binary file not shown.

125
src/App.vue Normal file
View File

@ -0,0 +1,125 @@
<script setup>
import {
ref,
inject,
watch,
computed,
reactive,
onMounted,
provide,
} from "vue";
import Login from "./views/Login.vue";
import Slider from "@components/Layout/Slider.vue";
import Header from "@components/Layout/Header.vue";
import commont from "@services/commont";
import { useRouter } from "vue-router";
const isLogin = ref(commont.getStorage("token"));
const isCollapse = ref(false);
const router = useRouter();
const checkLogin = () => {
if (router.currentRoute.value.path == "/qualityreport") {
isLogin.value = true;
} else {
isLogin.value = commont.getStorage("token");
if (commont.getStorage("token")) {
router.push("/saleorder");
}
}
};
const showslider = ref(true);
watch(router.currentRoute, async (newpath, oldpath) => {
if (newpath.path == "/qualityreport") {
isLogin.value = true;
showslider.value = false;
} else {
showslider.value = true;
}
});
onMounted(() => {
if (router.currentRoute.value.path == "/qualityreport") {
isLogin.value = true;
showslider.value = false;
} else {
showslider.value = true;
}
});
</script>
<template>
<Login
v-if="!isLogin && router.currentRoute.value.path != '/qualityreport'"
:callback="checkLogin"
></Login>
<div
v-if="isLogin"
class="appcontainer"
:style="!showslider && { minWidth: '100%' }"
>
<Slider></Slider>
<main class="appmain">
<Header />
<router-view class="routeview" v-slot="{ Component }">
<keep-alive>
<component :is="Component" :key="$route.fullPath" />
</keep-alive>
</router-view>
</main>
</div>
</template>
<style lang="scss" scoped>
.appcontainer {
display: flex;
width: 100vw;
min-width: 1200px;
height: 100vh;
flex: 1;
flex-direction: row;
justify-content: flex-start;
}
.appmain {
display: flex;
flex-grow: 1;
background: #fff;
flex-direction: column;
overflow: hidden;
}
.routeview {
height: calc(100vh - 38px);
overflow-y: auto;
&::-webkit-scrollbar {
display: none;
}
}
::v-deep {
.el-button,
.el-dialog__headerbtn {
&:hover {
outline: none;
outline-offset: 0;
}
&:active {
outline: none;
outline-offset: 0;
}
&:focus {
outline: none;
}
&:focus-visible {
outline: none;
outline-offset: 0;
border-color: #333;
}
span {
&:focus-visible {
outline: none;
outline-offset: 0;
}
}
}
}
</style>

75
src/api/FundDetails.js Normal file
View File

@ -0,0 +1,75 @@
/*
* @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
})
}

View File

@ -0,0 +1,37 @@
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
})
}

611
src/api/Warehousing.js Normal file
View File

@ -0,0 +1,611 @@
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
})
}

458
src/api/idleFish.js Normal file
View File

@ -0,0 +1,458 @@
/*
* @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
})
}

10
src/api/qc.js Normal file
View File

@ -0,0 +1,10 @@
import request from '@axioshooks'
//获取质检项
export function xy_qc_item(data) {
return request({
url: 'inspection_center/xy_qc_item',
method: 'post',
data
})
}

View File

@ -0,0 +1,177 @@
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
})
}

302
src/api/shoppingman.js Normal file
View File

@ -0,0 +1,302 @@
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
})
}

292
src/api/user.js Normal file
View File

@ -0,0 +1,292 @@
/*
* @Author: your name
* @Date: 2020-09-08 18:06:28
* @LastEditTime: 2021-08-03 17:10:54
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \aiguo_erp_vue\src\api\user.js
*/
import request from '@axioshooks'
export function login(data) {
return request({
url: 'login/login',
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_user_menu(token) {
return request({
url: 'user/get_user_menu',
method: 'post',
params: { token }
})
}
/*获取用户信息*/
export function getInfo(token) {
return request({
url: 'menu/get_userinfo',
method: 'post',
params: { token }
})
}
/*判断是否绑定拍机堂账号*/
export function account_config_list(data) {
return request({
url: 'base_config/account_config_list',
method: 'post',
data
})
}
export function logout() {
return request({
url: 'login/quit',
method: 'post'
})
}
/*轮询*/
export function wxok(data) {
return request({
url: 'login/wxok',
method: 'post',
data
})
}
/*结束用户引导*/
export function end_new_hand(data) {
return request({
url: 'login/end_new_hand',
method: 'post',
data
})
}
/*获取code*/
export function get_ws_auth_code(data) {
return request({
url: 'socket_io/get_ws_auth_code',
method: 'post',
data
})
}
/*获取图像验证码*/
export function get_brand_img_tncode(data) {
return request({
url: 'login/get_brand_img_tncode',
method: 'post',
data
})
}
// 网页版列表
export function web_list(data) {
return request({
url: 'new_recycle/web_list',
method: 'post',
data
})
}
export function verif_picture_code(data) {
return request({
url: 'login/verif_picture_code',
method: 'post',
data
})
}
//出价
export function web_bid(data) {
return request({
url: 'new_recycle/web_bid',
method: 'post',
data
})
}
//注册页面发送短信
export function register_sendsms(data) {
return request({
url: 'login/register_sendsms',
method: 'post',
data
})
}
//改价
export function update_bid(data) {
return request({
url: 'new_recycle/web_update_amount',
method: 'post',
data
})
}
//没开通模块
export function unopened_module(data) {
return request({
url: 'module_permission/unopened_module',
method: 'post',
data
})
}
// 已开通模块
export function opened_module(data) {
return request({
url: 'module_permission/opened_module',
method: 'post',
data
})
}
//开通记录
export function open_record(data) {
return request({
url: 'module_permission/open_record',
method: 'post',
data
})
}
//注册公司账号
export function register(data) {
return request({
url: 'login/register',
method: 'post',
data
})
}
//获取具体价格套餐
export function get_unopened_module(data) {
return request({
url: 'module_permission/get_unopened_module',
method: 'post',
data
})
}
//获取系统版本号
export function get_erp_version(data) {
return request({
url: 'base_config/get_erp_version',
method: 'post',
data
})
}
export function check_nav_version(data) {
return request({
url: 'user/check_nav_version',
method: 'post',
data
})
}
// 新获取系统版本号
export function is_update_pc_erp(data) {
return request({
url: 'version/is_update_pc_erp',
method: 'post',
data
})
}
//编辑物流公司
export function logistics_platform_edit(data) {
return request({
url: 'base_config/logistics_platform_edit',
method: 'post',
data
})
}
//快递公司列表
export function express_company_list(data) {
return request({
url: 'base_config/express_company_list',
method: 'post',
data
})
}
//物流公司列表
export function logistics_platform_list(data) {
return request({
url: 'base_config/logistics_platform_list',
method: 'post',
data
})
}
//删除物流公司
export function logistics_platform_del(data) {
return request({
url: 'base_config/logistics_platform_del',
method: 'post',
data
})
}
//编辑寄件人
export function logistics_address_edit(data) {
return request({
url: 'base_config/logistics_address_edit',
method: 'post',
data
})
}
//寄件人列表
export function logistics_address_list(data) {
return request({
url: 'base_config/logistics_address_list',
method: 'post',
data
})
}
//删除寄件人
export function logistics_address_del(data) {
return request({
url: 'base_config/logistics_address_del',
method: 'post',
data
})
}
//删除寄件人
export function get_keywords_order_model(data) {
return request({
url: 'idle_fish/get_keywords_order_model',
method: 'post',
data
})
}
// 新-物流公司列表
export function new_logistics_platform_list(data) {
return request({
url: 'base_config/new_logistics_platform_list',
method: 'post',
data
})
}
// 新-物流公司-编辑-新增
export function new_logistics_platform_edit(data) {
return request({
url: 'base_config/new_logistics_platform_edit',
method: 'post',
data
})
}
// 默认物流设置列表
export function logistics_default_set_list(data) {
return request({
url: 'base_config/logistics_default_set_list',
method: 'post',
data
})
}
// 默认物流设置
export function logistics_default_set(data) {
return request({
url: 'base_config/logistics_default_set',
method: 'post',
data
})
}

74
src/api/xianyuShop.js Normal file
View File

@ -0,0 +1,74 @@
import request from '@axioshooks';
/* 店铺列表*/
export function xy_shop_list(data) {
return request({
url: 'xy_shop/xy_shop_list',
method: 'post',
data
})
}
//获取授权地址
export function get_auth_address(data) {
return request({
url: 'xy_shop/get_auth_address',
method: 'post',
data
})
}
//授权完的确认是否授权成功
export function affirm_auth_success(data) {
return request({
url: 'xy_shop/affirm_auth_success',
method: 'post',
data
})
}
//创建账号
export function account_config_create(data) {
return request({
url: 'base_config/account_config_create',
method: 'post',
data
})
}
//创建账号新
export function xy_account_config_create(data) {
return request({
url: 'base_config/xy_account_config_create',
method: 'post',
data
})
}
//删除店铺
export function account_config_delete(data) {
return request({
url: 'base_config/account_config_delete',
method: 'post',
data
})
}
// 第三方账号配置编辑||店铺修改
export function account_config_edit(data) {
return request({
url: 'base_config/account_config_edit',
method: 'post',
data
})
}
//获取行政区id
export function get_division_id(data) {
return request({
url: 'xy_shop/get_division_id',
method: 'post',
data
})
}
//获取站点拥有的闲鱼商品业务模式
export function site_business_model(data) {
return request({
url: 'xy_shop/site_business_model',
method: 'post',
data
})
}

BIN
src/assets/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
src/assets/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
src/assets/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 423 B

BIN
src/assets/2222.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/assets/53bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

BIN
src/assets/53bottomsjbg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
src/assets/53cloud.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
src/assets/53earth.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
src/assets/53gqleft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/assets/53gqright.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
src/assets/53titlebg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
src/assets/LCdd.TTF Normal file

Binary file not shown.

BIN
src/assets/Service.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
src/assets/a.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
src/assets/aas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
src/assets/aiguologo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
src/assets/aiguologo1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

BIN
src/assets/avatar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
src/assets/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
src/assets/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

BIN
src/assets/bannercenter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
src/assets/bannerleft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
src/assets/bannerright.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Some files were not shown because too many files have changed in this diff Show More