ncs_23818 %!s(int64=2) %!d(string=hai) anos
achega
c828b28833
Modificáronse 100 ficheiros con 830 adicións e 0 borrados
  1. 7 0
      .env
  2. 5 0
      .env.development
  3. 4 0
      .env.production
  4. 4 0
      .env.staging
  5. 4 0
      .eslintignore
  6. 326 0
      .eslintrc-common.js
  7. 47 0
      .eslintrc.js
  8. 19 0
      .gitignore
  9. 8 0
      README.md
  10. BIN=BIN
      favicon.ico
  11. 15 0
      index.html
  12. 12 0
      jsconfig.json
  13. 48 0
      package.json
  14. 14 0
      postcss.config.js
  15. 20 0
      public/env-variables.js
  16. 3 0
      src/App.vue
  17. 118 0
      src/api/menu1.js
  18. 15 0
      src/assets/css/global.less
  19. 101 0
      src/assets/css/index.less
  20. 54 0
      src/assets/css/reset.css
  21. 6 0
      src/assets/icon/lang.svg
  22. BIN=BIN
      src/assets/img/address-icon.png
  23. BIN=BIN
      src/assets/img/avatar.jpg
  24. BIN=BIN
      src/assets/img/bg-icon-s.png
  25. BIN=BIN
      src/assets/img/checks.png
  26. BIN=BIN
      src/assets/img/close-icons.png
  27. BIN=BIN
      src/assets/img/clound/clound1.jpg
  28. BIN=BIN
      src/assets/img/clound/clound2.jpg
  29. BIN=BIN
      src/assets/img/clound/clound2.png
  30. BIN=BIN
      src/assets/img/clound/clound3.jpg
  31. BIN=BIN
      src/assets/img/clound/clound4.jpg
  32. BIN=BIN
      src/assets/img/clound/clound5.jpg
  33. BIN=BIN
      src/assets/img/clound/clound6.jpg
  34. BIN=BIN
      src/assets/img/clound/clound7.jpg
  35. BIN=BIN
      src/assets/img/clound/cloundIocn1.png
  36. BIN=BIN
      src/assets/img/clound/cloundIocn10.png
  37. BIN=BIN
      src/assets/img/clound/cloundIocn11.png
  38. BIN=BIN
      src/assets/img/clound/cloundIocn12.png
  39. BIN=BIN
      src/assets/img/clound/cloundIocn13.png
  40. BIN=BIN
      src/assets/img/clound/cloundIocn14.png
  41. BIN=BIN
      src/assets/img/clound/cloundIocn15.png
  42. BIN=BIN
      src/assets/img/clound/cloundIocn16.png
  43. BIN=BIN
      src/assets/img/clound/cloundIocn17.png
  44. BIN=BIN
      src/assets/img/clound/cloundIocn18.png
  45. BIN=BIN
      src/assets/img/clound/cloundIocn19.png
  46. BIN=BIN
      src/assets/img/clound/cloundIocn2.png
  47. BIN=BIN
      src/assets/img/clound/cloundIocn20.png
  48. BIN=BIN
      src/assets/img/clound/cloundIocn21.png
  49. BIN=BIN
      src/assets/img/clound/cloundIocn22.png
  50. BIN=BIN
      src/assets/img/clound/cloundIocn3.png
  51. BIN=BIN
      src/assets/img/clound/cloundIocn4.png
  52. BIN=BIN
      src/assets/img/clound/cloundIocn5.png
  53. BIN=BIN
      src/assets/img/clound/cloundIocn6.png
  54. BIN=BIN
      src/assets/img/clound/cloundIocn7.png
  55. BIN=BIN
      src/assets/img/clound/cloundIocn8.png
  56. BIN=BIN
      src/assets/img/clound/cloundIocn9.png
  57. BIN=BIN
      src/assets/img/coupon-no.png
  58. BIN=BIN
      src/assets/img/coupon.png
  59. BIN=BIN
      src/assets/img/default-head.png
  60. BIN=BIN
      src/assets/img/del-goods.png
  61. BIN=BIN
      src/assets/img/donwload.png
  62. BIN=BIN
      src/assets/img/drop-icon.png
  63. BIN=BIN
      src/assets/img/email-icon.png
  64. BIN=BIN
      src/assets/img/footer-icons1.png
  65. BIN=BIN
      src/assets/img/footer-icons2.png
  66. BIN=BIN
      src/assets/img/footer-icons3.png
  67. BIN=BIN
      src/assets/img/goods/add.png
  68. BIN=BIN
      src/assets/img/goods/change-text.png
  69. BIN=BIN
      src/assets/img/goods/check.png
  70. BIN=BIN
      src/assets/img/goods/collect-icon.png
  71. BIN=BIN
      src/assets/img/goods/collect-show-icon.png
  72. BIN=BIN
      src/assets/img/goods/del.png
  73. BIN=BIN
      src/assets/img/goods/evaluate-share.png
  74. BIN=BIN
      src/assets/img/goods/evaluate-shop.png
  75. BIN=BIN
      src/assets/img/goods/evaluate-text1.png
  76. BIN=BIN
      src/assets/img/goods/evaluate-text2.png
  77. BIN=BIN
      src/assets/img/goods/goods-add-icon.png
  78. BIN=BIN
      src/assets/img/goods/goods-bg.png
  79. BIN=BIN
      src/assets/img/goods/goods-icon1.png
  80. BIN=BIN
      src/assets/img/goods/goods-icon2.png
  81. BIN=BIN
      src/assets/img/goods/goods-icon3.png
  82. BIN=BIN
      src/assets/img/goods/goods-icon4.png
  83. BIN=BIN
      src/assets/img/goods/goods-icon5.png
  84. BIN=BIN
      src/assets/img/goods/goods-icon6.png
  85. BIN=BIN
      src/assets/img/goods/goods-icon7.png
  86. BIN=BIN
      src/assets/img/goods/goods-icon8.png
  87. BIN=BIN
      src/assets/img/goods/goods-kf-cion.png
  88. BIN=BIN
      src/assets/img/goods/hotel-bg.png
  89. BIN=BIN
      src/assets/img/goods/hotel-goods-bg.png
  90. BIN=BIN
      src/assets/img/goods/kf-icon.png
  91. BIN=BIN
      src/assets/img/goods/lable.png
  92. BIN=BIN
      src/assets/img/goods/product-left-icon.png
  93. BIN=BIN
      src/assets/img/goods/product-right-icon.png
  94. BIN=BIN
      src/assets/img/goods/seckill-bg.png
  95. BIN=BIN
      src/assets/img/goods/seckill-bg2.png
  96. BIN=BIN
      src/assets/img/goods/seckill-bg3.png
  97. BIN=BIN
      src/assets/img/goods/seckill-goods.png
  98. BIN=BIN
      src/assets/img/goods/seckill-text.png
  99. BIN=BIN
      src/assets/img/goods/success-icon.png
  100. BIN=BIN
      src/assets/img/index-icon1.png

+ 7 - 0
.env

@@ -0,0 +1,7 @@
+# port
+VITE_PORT = 3000
+
+# spa-title
+VITE_GLOB_APP_TITLE = 管理平台
+
+VITE_GLOB_BASE_URL = https://screen-test.zhousi.hdlkeji.com/

+ 5 - 0
.env.development

@@ -0,0 +1,5 @@
+#  env falg
+NODE_ENV = development
+
+
+VITE_GLOB_BASE_URL = https://screen-test.zhousi.hdlkeji.com/

+ 4 - 0
.env.production

@@ -0,0 +1,4 @@
+#  env falg
+NODE_ENV = production
+
+VITE_GLOB_BASE_URL = https://jsonplaceholder.typicode.com/

+ 4 - 0
.env.staging

@@ -0,0 +1,4 @@
+#  env falg
+NODE_ENV = production
+
+VITE_GLOB_BASE_URL = https://jsonplaceholder.typicode.com/

+ 4 - 0
.eslintignore

@@ -0,0 +1,4 @@
+build/*.js
+src/assets
+public
+dist

+ 326 - 0
.eslintrc-common.js

@@ -0,0 +1,326 @@
+/**
+ * @fixable 表示此配置支持 --fix
+ */
+
+ module.exports = {
+  parserOptions: {
+    ecmaVersion: 2017,
+    sourceType: 'module',
+    ecmaFeatures: {
+      jsx: true,
+      modules: true
+    }
+  },
+  env: {
+    browser: true,
+    node: true,
+    commonjs: true,
+    es6: true
+  },
+  // 以当前目录为根目录,不再向上查找 .eslintrc.js
+  root: true,
+  rules: {
+    // @fixable This rule enforces a consistent indentation style in <template>. The default style is 2 spaces.
+    // "vue/html-indent": ["error", 'number', {
+    //   "attribute": 2,
+    //   "baseIndent": 2,
+    //   "closeBracket": 2,
+    //   "alignAttributesVertically": true,
+    //   "ignores": []
+    // }],
+    // @fixable 去除标签中间空格
+    "vue/no-multi-spaces": ["error", {
+      "ignoreProperties": false
+    }],
+    // @fixable 去除标签手尾空格
+    "vue/html-closing-bracket-spacing": ["error", {
+      "startTag": "never",
+      "endTag": "never",
+      "selfClosingTag": "never"
+    }],
+    // @fixable 使用两个空格进行缩进
+    'indent': [
+      'error',
+      2,
+      {
+        SwitchCase: 1
+      }
+    ],
+    // 不要混合使用空格与制表符作为缩进
+    'no-mixed-spaces-and-tabs': 'error',
+    // @fixable 关键字后面加空格
+    'keyword-spacing': [
+      'error', 
+      { 
+        "after": true
+      }
+    ],
+    // @fixable function 的小括号之前必须要有空格
+    'space-before-function-paren': [
+        'error',
+        'never'
+    ],
+
+    // @fixable 函数名和执行它的括号之间禁止有空格
+    'func-call-spacing': [
+      'error',
+      'never'
+    ],
+    // @fixable 对象字面量中冒号前面禁止有空格,后面必须有空格
+    'key-spacing': [
+      'error',
+      {
+        beforeColon: false,
+        afterColon: true,
+        mode: 'strict',
+      }
+    ],
+    // @fixable 操作符左右必须有空格,比如 let sum = 1 + 2;
+    'space-infix-ops': 'error',
+    // @fixable 逗号前禁止有空格,逗号后必须要有空格
+    'comma-spacing': [
+      'error',
+      {
+        'before': false,
+        'after': true
+      }
+    ],
+    // @fixable 代码块如果在一行内,那么大括号内的首尾必须有空格,比如 function () { alert('Hello') }
+    'block-spacing': [
+      'error',
+      'always'
+    ],
+    // @fixable 禁止出现连续的多个空格,除非是注释前,或对齐对象的属性、变量定义、import 等
+    'no-multi-spaces': [
+      'error',
+      {
+        ignoreEOLComments: true,
+        exceptions: {
+          Property: true,
+          BinaryExpression: false,
+          VariableDeclarator: true,
+          ImportDeclaration: true
+        }
+      }
+    ],
+    // 禁止使用 tabs
+    // 'no-tabs': 'error',
+    'no-tabs': 'off',
+    // @fixable 禁止行尾有空格
+    'no-trailing-spaces': [
+      'error',
+      {
+        skipBlankLines: true,
+        ignoreComments: true
+      }
+    ],
+    // @fixable 禁止属性前有空格,比如 foo. bar()
+    'no-whitespace-before-property': 'error',
+    // @fixable 一行有多个语句时,分号前面禁止有空格,分号后面必须有空格
+    'semi-spacing': [
+      'error',
+      {
+        before: false,
+        after: true
+      }
+    ],
+    // @fixable if, function 等的大括号之前必须要有空格,比如 if (a) {
+    'space-before-blocks': [
+      'error',
+      'always'
+    ],
+    // @fixable 小括号内的首尾禁止有空格
+    'space-in-parens': [
+      'error',
+      'never'
+    ],
+    // @fixable new, typeof 等后面必须有空格,++, -- 等禁止有空格,比如:
+    // let foo = new Person();
+    // bar = bar++;
+    'space-unary-ops': [
+      'error',
+      {
+        words: true,
+        nonwords: false
+      }
+    ],
+    // @fixable else、catch需要和花括号在一行
+    'brace-style': 'error',
+    // @off 有时放在第二行开始处更易读
+    'operator-linebreak': 'off',
+    // @fixable 链式调用的时候,点号必须放在第二行开头处,禁止放在第一行结尾处
+    'dot-location': [
+      'error',
+      'property'
+    ],
+    // @fixable 文件最后一行必须有一个空行
+    'eol-last': 'error',
+
+    // @fixable 对象属性换行时注意统一代码风格, 要么都在同一行,要么一个一行
+    'object-property-newline': [
+      'error', 
+      { 
+        'allowMultiplePropertiesPerLine': true 
+      }
+    ],
+    // @fixable if 后面必须要有 {,除非是单行 if
+    'curly': [
+      'error',
+      'multi-line',
+      'consistent'
+    ],
+    // @fixable new 后面的类必须有小括号
+    'new-parens': 'error',
+    // @fixable 禁止函数表达式中出现多余的括号,比如 let foo = (function () { return 1 })
+    'no-extra-parens': [
+      'error',
+      'functions'
+    ],
+    // 禁止在测试表达式中使用赋值语句,除非这个赋值语句被括号包起来了
+    'no-cond-assign': [
+      'error',
+      'except-parens'
+    ],
+    // 禁止在 return 语句里赋值
+    'no-return-assign': [
+      'error',
+      'always'
+    ],
+    // @fixable 必须使用单引号,禁止使用双引号
+    'quotes': [
+      'error',
+      'single',
+      {
+        avoidEscape: true,
+        allowTemplateLiterals: true
+      }
+    ],
+    // @fixable 最后一行不要逗号
+    'comma-dangle': 'error',
+    // 对于变量和函数名统一使用驼峰命名法
+    'camelcase': 'off',
+    // 禁止变量申明时用逗号一次申明多个
+    'one-var': [
+      'error',
+      'never'
+    ],
+    // 禁止直接 new 一个类而不赋值
+    'no-new': 'error',
+    // 禁止重复定义变量
+    'no-redeclare': 'error',
+    // @fixable 禁止将 undefined 赋值给变量
+    'no-undef-init': 'error',
+    // 禁止对使用 const 定义的常量重新赋值
+    'no-const-assign': 'error',
+    // 禁止在函数参数中出现重复名称的参数
+    'no-dupe-args': 'error',
+    // 禁止在对象字面量中出现重复名称的键名
+    'no-dupe-keys': 'error',
+    // 禁止修改原生对象
+    'no-extend-native': 'error',
+    // 禁止将一个函数声明重新赋值,如:
+    // function foo() {}
+    // foo = bar
+    'no-func-assign': 'error',
+    // 禁止对全局变量赋值
+    'no-global-assign': 'error',
+    // 禁止在 if 代码块内出现函数声明
+    'no-inner-declarations': 'error',
+    // 禁止 label 名称与定义过的变量重复
+    'no-label-var': 'error',
+    // 禁止使用没必要的 {} 作为代码块
+    'no-lone-blocks': 'error',
+    // 禁止使用 new Function,比如 let x = new Function("a", "b", "return a + b");
+    'no-new-func': 'error',
+    // 禁止直接 new Object
+    'no-new-object': 'error',
+    // 禁止直接 new require('foo')
+    'no-new-require': 'error',
+    // 禁止使用 new 来生成 Symbol
+    'no-new-symbol': 'error',
+    // 禁止使用 new 来生成 String, Number 或 Boolean
+    'no-new-wrappers': 'error',
+    // 禁止将 Math, JSON 或 Reflect 直接作为函数调用
+    'no-obj-calls': 'error',
+    // 禁止使用 __proto__
+    'no-proto': 'error',
+    // 禁止将自己赋值给自己
+    'no-self-assign': 'error',
+    // 禁止将自己与自己比较
+    'no-self-compare': 'error',
+    // 禁止使用保留字作为变量名
+    'no-shadow-restricted-names': 'error',
+    // 禁止在数组中出现连续的逗号,如 let foo = [,,]
+    'no-sparse-arrays': 'error',
+    // 禁止 throw 字面量,必须 throw 一个 Error 对象
+    'no-throw-literal': 'error',
+    // 禁止在 return, throw, break 或 continue 之后还有代码
+    'no-unreachable': 'error',
+    // 禁止在 finally 中出现 return, throw, break 或 continue
+    'no-unsafe-finally': 'error',
+    // @fixable 禁止在 in 或 instanceof 操作符的左侧使用感叹号,如 if (!key in object)
+    'no-unsafe-negation': 'error',
+    // 禁止出现没必要的转义
+    'no-useless-escape': 'error',
+    // callback 中的 error 必须被处理
+    'handle-callback-err': 'error',
+    // @fixable 始终使用 === 替代 ==。例外: obj == null 可以用来检查 null || undefined
+    'eqeqeq': [
+      'error', 
+      'always', 
+      { 
+        'null': 'ignore' 
+      }
+    ],
+    // 禁止使用 Array 构造函数
+    'no-array-constructor': 'error',
+    // 禁止将常量作为分支条件判断中的测试表达式,但允许作为循环条件判断中的测试表达式
+    'no-constant-condition': [
+      'error',
+      {
+        checkLoops: false
+      }
+    ],
+    // 禁止使用 eval
+    'no-eval': 'error',
+    // 禁止在 setTimeout 或 setInterval 中传入字符串,如 setTimeout('alert("Hi!")', 100);
+    'no-implied-eval': 'error',
+    // @fixable 禁止在测试表达式中使用 !! 或 Boolean
+    'no-extra-boolean-cast': 'error',
+    // @fixable 表示小数时,禁止省略 0,比如 .5
+    'no-floating-decimal': 'error',
+    // 禁止使用 label
+    'no-labels': 'error',
+    // 禁止使用 \ 来换行字符串,可使用+
+    'no-multi-str': 'error',
+    // 禁止对 __dirname 或 __filename 使用字符串连接
+    'no-path-concat': 'error',
+    // 循环内必须对循环条件的变量有修改
+    'no-unmodified-loop-condition': 'error',
+    // @fixable 禁止出现没必要的计算键名,比如 let a = { ['0']: 0 };
+    'no-useless-computed-key': 'error',
+    // 必须使用 isNaN(foo) 而不是 foo === NaN
+    'use-isnan': 'error',
+    // @fixable 禁止出现 foo['bar'],必须写成 foo.bar
+    'dot-notation': 'error',
+    // @fixable 注释的斜线或 * 后必须有空格
+    'spaced-comment': [
+      'error',
+      'always',
+      {
+        block: {
+          exceptions: [
+            '*'
+          ],
+          balanced: true
+        }
+      }
+    ],
+    // @fixable 不加分号
+    'semi': ['error', 'never'],
+    // 禁止出现难以理解的多行表达式,如:
+    // let foo = bar
+    // [1, 2, 3].forEach(baz);
+    'no-unexpected-multiline': 'error',
+  }
+};

+ 47 - 0
.eslintrc.js

@@ -0,0 +1,47 @@
+
+module.exports = {
+    root: true,
+    parserOptions: {
+      parser: 'babel-eslint',
+      sourceType: 'module'
+    },
+    env: {
+      browser: true,
+      node: true,
+      es6: true,
+    },
+    extends: [
+      //'plugin:vue/recommended',
+      'plugin:vue/vue3-essential',
+      '@vue/standard', 
+      './.eslintrc-common.js'],
+    globals: {
+      ht: true
+    },
+    // add your custom rules here
+    //it is base on https://github.com/vuejs/eslint-config-vue
+    rules: {
+      "vue/max-attributes-per-line": [2, {
+        "singleline": 10,
+        "multiline": {
+          "max": 1,
+          "allowFirstLine": false
+        }
+      }],
+      "no-undef": "off",
+      "vue/singleline-html-element-content-newline": "off",
+      "vue/multiline-html-element-content-newline":"off",
+      "vue/name-property-casing": ["error", "PascalCase"],
+      "vue/no-v-html": "off",
+      'accessor-pairs': 2,
+      'arrow-spacing': [2, {
+        'before': true,
+        'after': true
+      }],
+      'block-spacing': [2, 'always'],
+      'brace-style': [2, '1tbs', {
+        'allowSingleLine': true
+      }]
+    }
+  }
+  

+ 19 - 0
.gitignore

@@ -0,0 +1,19 @@
+node_modules
+.DS_Store
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.idea
+# .vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.local
+*.code-workspace
+
+package-lock.json
+yarn.lock
+/*.zip

+ 8 - 0
README.md

@@ -0,0 +1,8 @@
+// 安装依赖
+yarn install
+
+// 可以通过如下操作解决 npm 下载速度慢的问题
+npm install --registry=https://registry.npm.taobao.org
+
+// 启动服务
+yarn dev

BIN=BIN
favicon.ico


+ 15 - 0
index.html

@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <link rel="icon" href="" />
+      <link rel="shortcut icon" type="image/x-icon" href="favicon.ico"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>屏酷</title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script type="module" src="/src/main.js"></script>
+    <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=ad0de80bad2745055aaac60e7f6343a1"></script>
+  </body>
+</html>

+ 12 - 0
jsconfig.json

@@ -0,0 +1,12 @@
+{
+	"compilerOptions": {
+    "baseUrl": ".",
+		"jsx":"preserve"
+		,
+		"paths": {
+			"@/*": ["src/*"]
+		}
+	},
+	"include": ["src/**/*"],
+	"exclude": ["node_modules"]
+}

+ 48 - 0
package.json

@@ -0,0 +1,48 @@
+{
+  "name": "vite-project",
+  "version": "0.0.0",
+  "scripts": {
+    "dev": "vite",
+    "build:dev": "vite build --mode development ",
+    "build:prod": "vite build --mode production ",
+    "build:stag": "vite build --mode staging ",
+    "serve": "vite preview"
+  },
+  "dependencies": {
+    "@element-plus/icons": "^0.0.11",
+    "@neysf/qiyu-web-sdk": "^1.0.0",
+    "@vueuse/core": "^9.2.0",
+    "axios": "^0.24.0",
+    "element-plus": "^1.2.0-beta.3",
+    "js-base64": "^3.7.2",
+    "js-cookie": "^3.0.1",
+    "less": "^4.1.2",
+    "less-loader": "^10.2.0",
+    "mitt": "^3.0.0",
+    "pinia": "^2.0.13",
+    "prerender-spa-plugin": "^3.4.0",
+    "sass": "^1.54.9",
+    "screenfull": "^6.0.0",
+    "swiper": "^8.3.2",
+    "vue": "^3.2.6",
+    "vue-i18n": "^9.2.0-beta.35",
+    "vue-meta-info": "^0.1.7",
+    "vue-router": "4"
+  },
+  "devDependencies": {
+    "@vitejs/plugin-vue": "^1.6.0",
+    "@vue/cli-plugin-eslint": "~4.5.0",
+    "@vue/compiler-sfc": "^3.0.5",
+    "@vue/eslint-config-standard": "^5.1.2",
+    "babel-eslint": "^10.1.0",
+    "eslint": "^6.7.2",
+    "eslint-plugin-html": "^6.1.2",
+    "eslint-plugin-import": "^2.20.2",
+    "eslint-plugin-node": "^11.1.0",
+    "eslint-plugin-promise": "^4.2.1",
+    "eslint-plugin-standard": "^4.0.0",
+    "eslint-plugin-vue": "^7.0.0",
+    "postcss-px-to-viewport": "^1.1.1",
+    "vite": "^2.3.7"
+  }
+}

+ 14 - 0
postcss.config.js

@@ -0,0 +1,14 @@
+module.exports = {
+  plugins: {
+    'postcss-px-to-viewport': {
+      unitToConvert: 'px', // 需要转换的单位
+      viewportWidth: '1920', // 视窗的宽度,对应设计稿的宽度 理想视口宽度为375
+      viewportHeight: '1080', // 视窗的高度,对应设计搞的高度
+      viewportUnit: 'vw', // 转换的视窗单位
+      selectorBlackList: ['TabBarItem'], // 指定不需要转换的类
+      minPixelValue: 1, // 小于或者等于1px 不转换
+      mediaQuery: true, // 是否允许媒体查询中转换px
+      unitPrecision: 5 // 转换后的精度,即小数点
+    }
+  }
+}

+ 20 - 0
public/env-variables.js

@@ -0,0 +1,20 @@
+/*
+ * @description:  环境变量的引用,直接使用vue cli自带的env文件,没办法将变量提取出来
+ *                这里使用通过一个js文件引用,其他代码使用都通过此文件使用环境变量,部署环境可以实现动态修改
+ *
+ * @author:
+ * @since:
+ * @version: 1.0
+ */
+export default  {
+  // 项目名称
+  title: import.meta.env.VITE_GLOB_APP_TITLE,
+  // 接口IP地址
+  baseURL: import.meta.env.VITE_GLOB_BASE_URL,
+  // 体验账号
+  userName: import.meta.env.VITE_GLOB_USER_NAME,
+  // 体验密码
+  pwd: import.meta.env.VITE_GLOB_USER_PWD,
+  // swagger地址
+  swaggerURL: import.meta.env.VITE_GLOB_SWAGGER_URL,
+}

+ 3 - 0
src/App.vue

@@ -0,0 +1,3 @@
+<template>
+  <router-view />
+</template>

+ 118 - 0
src/api/menu1.js

@@ -0,0 +1,118 @@
+import { get, post } from '@/utils/axios.js'
+
+export const register = (params) => post('index.php/api/user/register', params,) //注册接口
+export const sendComple = (params) => post('index.php/api/sms/send', params) //发送验证码
+export const checkComple = (params) => post('index.php/api/sms/check', params) //检测验证码
+export const createCode = (params) => get('index.php/api/user/wx_bind_qr', params) //检测验证码
+export const wx_bind_qr_check = (params) => get('index.php/api/user/wx_bind_qr_check', params) //检查是否已经绑定
+
+export const login = (params) => post('index.php/api/user/login', params) //会员登录
+export const mobileLogin = (params) => post('index.php/api/user/mobilelogin', params) //手机号验证码登录
+export const checkToken = (params) => post('index.php/api/token/check', params) //检测Token是否过期
+export const refreshToken = (params) => post('index.php/api/token/refresh', params) //刷新token
+export const category = (params) => get('index.php/api/mall.index/category', params) //获取首页分类和商品
+export const killGoods = (params) => get('index.php/api/mall.index/kill_goods', params) //获取秒杀商品
+export const hotSel = (params) => get('index.php/api/mall.index/hot_goods', params) //获取热销商品
+export const goodsLists = (params) => get('index.php/api/mall.goods/index', params) //获取商品列表
+export const goodsDetail = (params) => get('index.php/api/mall.goods/show', params) //获取商品详情
+export const get_area = (params) => get('index.php/api/common/area_tree', params) //地区三级联动
+export const user_ls = (params) => get('index.php/api/user/ls', params) //记录时长
+export const user_lsp = (params) => get('index.php/api/user/lsp', params) //记录访问次数
+export const goods_ls = (params) => get('index.php/api/mall.goods/ls', params) //浏览产品时长
+export const logistics_order = (params) => get('index.php/api/mall.orders/logistics_order', params) //订单物流查询
+export const logistics_map = (params) => get('index.php/api/mall.orders/logistics_map', params) //订单物流地图
+
+
+export const goods_fav = (params) => get('index.php/api/mall.goods_fav/store', params) //添加收藏
+export const goods_fav_index = (params) => post('index.php/api/mall.goods_fav/index', params) //获取收藏列表
+export const goods_fav_del = (params) => get('index.php/api/mall.goods_fav/del', params) //取消收藏
+export const order_refund = (params) => get('index.php/api/mall.order_refund/config', params) //退货退款配置
+
+
+//购物车
+export const goods_coupon = (params) => get('index.php/api/mall.goods_coupon/index', params) //获取优惠券列表
+export const goods_cart = (params) => post('index.php/api/mall.goods_cart/add', params,'application/json') //添加到购物车
+export const goods_cart_del = (params) => get('index.php/api/mall.goods_cart/del', params) //删除购物车
+export const goods_update = (params) => get('index.php/api/mall.goods_cart/update', params) //修改购物车
+export const goods_list = (params) => get('index.php/api/mall.goods_cart/index', params) //购物车列表
+
+export const preview = (params) => post('index.php/api/mall.orders/preview', params,'application/json') //预下单
+export const creates = (params) => post('index.php/api/mall.orders/create', params,'application/json') //提交订单
+export const orderDetail = (params) => get('index.php/api/mall.orders/show', params) //订单详情
+export const oderList = (params) => get('index.php/api/mall.orders/users', params) //用户订单列表
+export const payOrders = (params) => get('index.php/api/mall.orders/pay', params) //支付订单
+export const cancel_order = (params) => get('index.php/api/mall.orders/cancel', params) //取消订单
+
+
+export const user_address_controller = (params) => get('index.php/api/user_address_controller/edit', params) //新增地址
+export const address_list = (params) => get('index.php/api/user_address_controller/list', params) //地址列表
+export const del_address = (params) => get('index.php/api/user_address_controller/delete', params) //删除地址
+
+export const user_tax_store = (params) => post('index.php/api/user_tax/store', params,'application/json') //新增发票
+export const user_tax_list = (params) => get('index.php/api/user_tax/list', params) //发票列表
+export const user_tax_del = (params) => get('index.php/api/user_tax/del', params) //删除发票
+
+
+
+export const amount_s = (params) => get('index.php/api/mall.goods/amount', params) //根据sku计算商品的价格
+export const getSku = (params) => get('index.php/api/mall.goods/sku', params) //根据sizeId获取下一级
+export const getContentPage = (params) => get('index.php/api/content/page', params) //获取静态页面配置
+
+
+
+export const submit_cate = (params) => get('index.php/api/customized/submit', params) //提交预约
+export const cate_list = (params) => get('index.php/api/customized/cateList', params) //预约分类列表
+export const cs_open = (params) => get('index.php/api/cs/open', params) //获取客服配置
+
+export const calculate = (params) => post('index.php/api/programme/calculate', params,) //预估报价
+export const submit_calulate = (params) => post('index.php/api/programme/submit', params,) //预约分类列表
+export const programme_list = (params) => get('index.php/api/programme/lists', params) //方案列表
+export const programme_detail = (params) => get('index.php/api/programme/detail', params) //查看方案
+export const programme_detail1 = (params) => get('index.php/api/programme/detail1', params) //查看方案
+export const programme_del = (params) => get('index.php/api/programme/delete', params) //删除方案
+export const deleteGoods = (params) => get('index.php/api/programme/deleteGoods', params) //删除方案商品
+export const getUserTax = (params) => get('index.php/api/user_tax/list', params) //获取发票列表
+export const feedBacks = (params) => get('index.php/api/common/feedback', params) //意见反馈
+export const site_list = (params) => get('index.php/api/user_site_msg/index', params) //会员信列表
+export const site_details = (params) => get('index.php/api/user_site_msg/show', params) //会员信详情
+export const get_eval_list = (params) => get('index.php/api/mall.goods_eval/user_list', params) //获取评价列表
+export const info_list = (params) => get('index.php/api/infos/index', params) //新闻列表
+export const info_detail = (params) => get('index.php/api/infos/show', params) //新闻详情
+export const user_infos = (params) => get('index.php//api/user/index', params) //用户信息
+
+export const indexSwiper = (params) => get('index.php/api/common/ads', params) //获取轮播图
+
+export const bind_goods = (params) => get('index.php/api/mall.goods/bind_goods', params) //获取组合搭配
+export const zj_goods = (params) => get('index.php/api/mall.goods/zj_goods', params) //获取支架商品
+export const recommend = (params) => get('index.php/api/mall.goods/recommend', params) //获取推荐商品
+export const pz_goods = (params) => get('index.php/api/mall.goods/pz_goods', params) //获取配件商品
+export const get_config = (params) => get('index.php/api/common/config', params) //获取系统配置
+export const agreement = (params) => get('index.php/api/common/agreement', params) //获取协议
+export const refund_cancel = (params) => get('index.php/api/mall.orders/refund_cancel', params) //取消售后
+export const resetpwd = (params) => post('index.php/api/user/resetpwd', params) //重置密码
+export const changepwd = (params) => post('index.php/api/user/changepwd', params) //修改密码
+export const service_list = (params) => get('index.php/api/mall.orders/service_list', params) //售后列表
+export const profile = (params) => post('index.php/api/user/profile', params) //修改用户信息
+export const commit = (params) => get('index.php/api/mall.orders/commit', params) //确认收货
+export const refund = (params) => get('index.php/api/mall.orders/refund', params) //申请售后
+export const orderEval = (params) => get('index.php/api/mall.goods_eval/create', params) //评价商品
+export const showDetails = (params) => get('index.php/api/content/show', params) //图文详情
+export const changemobile = (params) => post('index.php/api/user/changemobile', params) //换绑手机号
+export const sendEmail = (params) => post('index.php/api/ems/send', params) //发送验证码
+export const changeemail = (params) => post('index.php/api/user/changeemail', params,) //修改邮箱
+export const updateProGramme = (params) => get('index.php/api/programme/update', params,) //修改方案详情
+export const order_refund_s = (params) => get('index.php/api/mall.order_refund/show', params,) //修改方案详情
+export const logistics_company = (params) => get('index.php/api/mall.index/logistics_company', params,) //获取快递公司
+export const back_goods = (params) => get('index.php/api/mall.order_refund/back_goods', params,) //寄回物品
+
+
+
+
+export const goods_eval = (params) => get('index.php/api/mall.goods_eval/goods', params) //获取商品评价列表
+export const po_complete = (params) => get('index.php/api/mall.orders/po_complete', params) //上传打款凭证
+
+export const upload_s = (params) => post('index.php/api/common/upload', params) //上传图片
+
+
+
+

+ 15 - 0
src/assets/css/global.less

@@ -0,0 +1,15 @@
+/*
+    系统主配置
+*/
+@mainColor: #1c202b; // 颜色
+@mainHoverColor: #252d3d; // hover颜色
+@mainActiveColor: #252d3d; // active颜色
+@textColor: #ffffffb3; // 文字颜色
+@textActiveColor: #fff; // 文字active颜色
+@borderColor: #ebebeb; // 边框颜色
+
+/*
+    表格
+*/
+@tableHeadColor: #fafafa; //表头颜色
+

+ 101 - 0
src/assets/css/index.less

@@ -0,0 +1,101 @@
+// 弹窗样式
+.el-dialog {
+  position: relative;
+  &__header {
+    height: 60px;
+    line-height: 60px;
+    padding: 0;
+    font-size: 20px;
+    color: @textColor;
+    border-bottom: 1px solid @borderColor;
+    &::before {
+      content: '';
+      width: 5px;
+      display: inline-block;
+      height: 20px;
+      background-color: #437eff;
+      border-radius: 0 3px 3px 0;
+      margin-right: 20px;
+      vertical-align: text-bottom;
+    }
+  }
+  &__body {
+    padding: 20px 40px;
+  }
+  &__footer {
+    bottom: 0;
+    width: 100%;
+    height: 74px;
+    line-height: 74px;
+    text-align: center;
+    padding: 0;
+    border-top: 1px solid @borderColor;
+    .el-button {
+      width: 72px;
+      height: 34px;
+      line-height: 0;
+    }
+  }
+}
+// 表格样式
+.el-table {
+  thead {
+    th {
+      &.el-table__cell {
+        background-color: @tableHeadColor;
+      }
+    }
+  }
+  .el-table__cell {
+    padding: 2px 0;
+  }
+}
+// 按钮样式
+.el-button {
+  height: 34px;
+  min-height: 34px;
+  padding: 2px 20px;
+}
+// 输入框样式
+.el-input {
+  .el-input__inner {
+    height: 34px;
+    line-height: 34px;
+  }
+}
+//滚动条样式:谷歌浏览器下
+::-webkit-scrollbar {
+  height: 12px;
+  width: 8px;
+}
+//滚动条的轨道
+::-webkit-scrollbar-track {
+  background-color: #fff;
+}
+//滚动条的滑块按钮
+::-webkit-scrollbar-thumb {
+  border-radius: 10px;
+  background-color: #ccc;
+  box-shadow: inset 0 0 5px #fff;
+}
+.overflow1{
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.overflow2{
+  overflow : hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -webkit-line-clamp: 2;
+}
+.pages{
+  display: flex;
+  justify-content: center;
+  padding: 30px 0;
+}
+//兼容火狐浏览器
+input[type='number']{
+  -moz-appearance:textfield;
+}

+ 54 - 0
src/assets/css/reset.css

@@ -0,0 +1,54 @@
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, menu, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+main, nav, output, ruby, section, summary,
+time, mark, audio, video {
+	margin: 0;
+	padding: 0;
+	border: 0;
+	font: inherit;
+	font-size: 100%;
+	vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, main, menu, nav, section {
+	display: block;
+}
+
+/* HTML5 hidden-attribute fix for newer browsers */
+*[hidden] {
+    display: none;
+}
+
+body {
+	line-height: 1;
+}
+
+menu, ol, ul {
+	list-style: none;
+}
+
+blockquote, q {
+	quotes: none;
+}
+
+blockquote::before, blockquote::after,
+q::before, q::after {
+	content: '';
+	content: none;
+}
+
+table {
+	border-collapse: collapse;
+	border-spacing: 0;
+}

+ 6 - 0
src/assets/icon/lang.svg

@@ -0,0 +1,6 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--ion" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
+	<path fill="currentColor" d="m478.33 433.6l-90-218a22 22 0 0 0-40.67 0l-90 218a22 22 0 1 0 40.67 16.79L316.66 406h102.67l18.33 44.39A22 22 0 0 0 458 464a22 22 0 0 0 20.32-30.4ZM334.83 362L368 281.65L401.17 362Zm-66.99-19.08a22 22 0 0 0-4.89-30.7c-.2-.15-15-11.13-36.49-34.73c39.65-53.68 62.11-114.75 71.27-143.49H330a22 22 0 0 0 0-44H214V70a22 22 0 0 0-44 0v20H54a22 22 0 0 0 0 44h197.25c-9.52 26.95-27.05 69.5-53.79 108.36c-31.41-41.68-43.08-68.65-43.17-68.87a22 22 0 0 0-40.58 17c.58 1.38 14.55 34.23 52.86 83.93c.92 1.19 1.83 2.35 2.74 3.51c-39.24 44.35-77.74 71.86-93.85 80.74a22 22 0 1 0 21.07 38.63c2.16-1.18 48.6-26.89 101.63-85.59c22.52 24.08 38 35.44 38.93 36.1a22 22 0 0 0 30.75-4.9Z">
+	</path>
+</svg>

BIN=BIN
src/assets/img/address-icon.png


BIN=BIN
src/assets/img/avatar.jpg


BIN=BIN
src/assets/img/bg-icon-s.png


BIN=BIN
src/assets/img/checks.png


BIN=BIN
src/assets/img/close-icons.png


BIN=BIN
src/assets/img/clound/clound1.jpg


BIN=BIN
src/assets/img/clound/clound2.jpg


BIN=BIN
src/assets/img/clound/clound2.png


BIN=BIN
src/assets/img/clound/clound3.jpg


BIN=BIN
src/assets/img/clound/clound4.jpg


BIN=BIN
src/assets/img/clound/clound5.jpg


BIN=BIN
src/assets/img/clound/clound6.jpg


BIN=BIN
src/assets/img/clound/clound7.jpg


BIN=BIN
src/assets/img/clound/cloundIocn1.png


BIN=BIN
src/assets/img/clound/cloundIocn10.png


BIN=BIN
src/assets/img/clound/cloundIocn11.png


BIN=BIN
src/assets/img/clound/cloundIocn12.png


BIN=BIN
src/assets/img/clound/cloundIocn13.png


BIN=BIN
src/assets/img/clound/cloundIocn14.png


BIN=BIN
src/assets/img/clound/cloundIocn15.png


BIN=BIN
src/assets/img/clound/cloundIocn16.png


BIN=BIN
src/assets/img/clound/cloundIocn17.png


BIN=BIN
src/assets/img/clound/cloundIocn18.png


BIN=BIN
src/assets/img/clound/cloundIocn19.png


BIN=BIN
src/assets/img/clound/cloundIocn2.png


BIN=BIN
src/assets/img/clound/cloundIocn20.png


BIN=BIN
src/assets/img/clound/cloundIocn21.png


BIN=BIN
src/assets/img/clound/cloundIocn22.png


BIN=BIN
src/assets/img/clound/cloundIocn3.png


BIN=BIN
src/assets/img/clound/cloundIocn4.png


BIN=BIN
src/assets/img/clound/cloundIocn5.png


BIN=BIN
src/assets/img/clound/cloundIocn6.png


BIN=BIN
src/assets/img/clound/cloundIocn7.png


BIN=BIN
src/assets/img/clound/cloundIocn8.png


BIN=BIN
src/assets/img/clound/cloundIocn9.png


BIN=BIN
src/assets/img/coupon-no.png


BIN=BIN
src/assets/img/coupon.png


BIN=BIN
src/assets/img/default-head.png


BIN=BIN
src/assets/img/del-goods.png


BIN=BIN
src/assets/img/donwload.png


BIN=BIN
src/assets/img/drop-icon.png


BIN=BIN
src/assets/img/email-icon.png


BIN=BIN
src/assets/img/footer-icons1.png


BIN=BIN
src/assets/img/footer-icons2.png


BIN=BIN
src/assets/img/footer-icons3.png


BIN=BIN
src/assets/img/goods/add.png


BIN=BIN
src/assets/img/goods/change-text.png


BIN=BIN
src/assets/img/goods/check.png


BIN=BIN
src/assets/img/goods/collect-icon.png


BIN=BIN
src/assets/img/goods/collect-show-icon.png


BIN=BIN
src/assets/img/goods/del.png


BIN=BIN
src/assets/img/goods/evaluate-share.png


BIN=BIN
src/assets/img/goods/evaluate-shop.png


BIN=BIN
src/assets/img/goods/evaluate-text1.png


BIN=BIN
src/assets/img/goods/evaluate-text2.png


BIN=BIN
src/assets/img/goods/goods-add-icon.png


BIN=BIN
src/assets/img/goods/goods-bg.png


BIN=BIN
src/assets/img/goods/goods-icon1.png


BIN=BIN
src/assets/img/goods/goods-icon2.png


BIN=BIN
src/assets/img/goods/goods-icon3.png


BIN=BIN
src/assets/img/goods/goods-icon4.png


BIN=BIN
src/assets/img/goods/goods-icon5.png


BIN=BIN
src/assets/img/goods/goods-icon6.png


BIN=BIN
src/assets/img/goods/goods-icon7.png


BIN=BIN
src/assets/img/goods/goods-icon8.png


BIN=BIN
src/assets/img/goods/goods-kf-cion.png


BIN=BIN
src/assets/img/goods/hotel-bg.png


BIN=BIN
src/assets/img/goods/hotel-goods-bg.png


BIN=BIN
src/assets/img/goods/kf-icon.png


BIN=BIN
src/assets/img/goods/lable.png


BIN=BIN
src/assets/img/goods/product-left-icon.png


BIN=BIN
src/assets/img/goods/product-right-icon.png


BIN=BIN
src/assets/img/goods/seckill-bg.png


BIN=BIN
src/assets/img/goods/seckill-bg2.png


BIN=BIN
src/assets/img/goods/seckill-bg3.png


BIN=BIN
src/assets/img/goods/seckill-goods.png


BIN=BIN
src/assets/img/goods/seckill-text.png


BIN=BIN
src/assets/img/goods/success-icon.png


BIN=BIN
src/assets/img/index-icon1.png


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio