diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..83f8a60
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,131 @@
+# ---> Node
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+.env.production
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
+**/.idea/
+**/target/
+*.iml
+*.ipr
+*.iws
+*.log
+
+### VS Code ###
+.vscode/
+.hbuilderx/
+unpackage/
\ No newline at end of file
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..37dc5ca
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,102 @@
+
+
+
\ No newline at end of file
diff --git a/common/Time.js b/common/Time.js
new file mode 100644
index 0000000..d157ce8
--- /dev/null
+++ b/common/Time.js
@@ -0,0 +1,201 @@
+const timeText = (time, format) => {
+
+ if (format == null) {
+ format = "yyyy-MM-dd HH:mm:ss"
+ }
+
+ let timeStr = "";
+
+ let todayEndTime = getTodayEndTime();
+ let todayStartTime = getTodayStartTime();
+ let thisWeekStartTime = getThisWeekStartTime();
+
+ console.log("kaishi" + todayStartTime)
+ console.log("jieshu" + thisWeekStartTime)
+
+
+ // 今天23:59:59:999之后
+ if (time > todayEndTime) {
+ // 显示年月日
+ timeStr = timeFormat(time, format)
+ } else if (thisWeekStartTime > time) {
+ // 此周前(本周星期一之前)
+
+ let i = format.indexOf(" ");
+ let formatStyle = format.substring(i + 1);
+ let formatNew = timeFormat(time, formatStyle);
+
+ if (time > todayStartTime - 86399999 && time < todayStartTime) {
+ // 显示昨天
+ timeStr = "昨天 " + formatNew;
+ } else {
+ timeStr = timeFormat(time, format)
+ }
+
+ } else {
+ // 显示星期 时分
+ let i = format.indexOf(" ");
+ let formatStyle = format.substring(i + 1);
+ let formatNew = timeFormat(time, formatStyle);
+
+ if (todayStartTime - 86399999 > time) {
+ // 显示星期
+ timeStr = getWeekStr(time) + " " + formatNew
+ } else if (time > todayStartTime - 86399999 && time < todayStartTime) {
+ // 显示昨天
+ timeStr = "昨天 " + formatNew;
+ } else {
+ // 显示
+ timeStr = formatNew;
+ }
+ }
+
+ return timeStr
+}
+
+/**
+ * 获取本周开始时间
+ */
+const getThisWeekStartTime = () => {
+
+ let todayEndTime = getTodayEndTime();
+
+ var date = new Date();
+ var weekDays = date.getDay();
+ var weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
+ var week = weeks[weekDays];
+
+ return todayEndTime + 1 - weekDays * 86400000;
+}
+
+/**
+ * 获取今天是周几
+ */
+const getWeekStr = (time) => {
+
+
+ if (time instanceof Date) {
+
+ } else {
+ let temp = new Date(time);
+ time = temp;
+ }
+
+ let todayEndTime = getTodayEndTime();
+
+ var weekDays = time.getDay();
+ var weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
+ var week = weeks[weekDays];
+
+ return week;
+}
+
+/**
+ * 获取今天开始时间
+ */
+const getTodayStartTime = () => {
+
+ let startTime = 0;
+
+ let myDate = new Date();
+
+ let current = myDate.getTime();
+
+ try {
+
+ let format = timeFormat(myDate);
+ let split = format.split(" ");
+ let time = split[1].split(":");
+
+ startTime = current - time[0] * 60 * 60 * 1000 - time[1] * 60 * 1000 - time[2] * 1000 - time[3]
+
+ } catch (e) {
+ console.log(e)
+ }
+
+ return startTime;
+}
+
+/**
+ * 获取今天结束时间
+ */
+const getTodayEndTime = () => {
+
+ let endTime = 0;
+
+ let myDate = new Date();
+
+ let current = myDate.getTime();
+
+ try {
+
+ let format = timeFormat(myDate);
+ let split = format.split(" ");
+ let time = split[1].split(":");
+
+ let startTime = current - time[0] * 60 * 60 * 1000 - time[1] * 60 * 1000 - time[2] * 1000 - time[3]
+ endTime = startTime + 86399999;
+
+ } catch (e) {
+ console.log(e)
+ }
+
+ return endTime;
+}
+
+/**
+ * 格式化时间
+ * 支持时间戳 以及 date类型
+ */
+const timeFormat = (date, formoat) => {
+
+ if (date == undefined || date == null) {
+ return "";
+ }
+
+ if (date instanceof Date) {
+ console.log("正确")
+ } else {
+ let temp = new Date(Number(date));
+ date = temp;
+ }
+
+ let fmt = formoat;
+
+ if (fmt == null) {
+ fmt = "yyyy-MM-dd HH:mm:ss:SSS"
+ }
+
+
+ let ret;
+ const opt = {
+ "y+": date.getFullYear().toString(), // 年
+ "M+": (date.getMonth() + 1).toString(), // 月
+ "d+": date.getDate().toString(), // 日
+ "H+": date.getHours().toString(), // 时
+ "m+": date.getMinutes().toString(), // 分
+ "s+": date.getSeconds().toString(), // 秒
+ "S+": date.getMilliseconds().toString()
+
+ };
+ for (let k in opt) {
+ ret = new RegExp("(" + k + ")").exec(fmt);
+ if (ret) {
+ fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
+ };
+ };
+ return fmt;
+}
+
+const currentMillions = () => {
+ let current = new Date().getTime();
+ return current;
+}
+
+export {
+ timeText,
+ timeFormat,
+ currentMillions,
+ getWeekStr,
+ getTodayEndTime
+}
diff --git a/common/app.scss b/common/app.scss
new file mode 100644
index 0000000..415d752
--- /dev/null
+++ b/common/app.scss
@@ -0,0 +1,130 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color: #333; //基本色
+$uni-text-color-inverse: #fff; //反色
+$uni-text-color-grey: #999; //辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable: #c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color: #ffffff;
+$uni-bg-color-grey: #f8f8f8;
+$uni-bg-color-hover: #f1f1f1; //点击状态颜色
+$uni-bg-color-mask: rgba(0, 0, 0, 0.4); //遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color: #c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm: 12px;
+$uni-font-size-base: 14px;
+$uni-font-size-lg: 16;
+
+/* 图片尺寸 */
+$uni-img-size-sm: 20px;
+$uni-img-size-base: 26px;
+$uni-img-size-lg: 40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2c405a; // 文章标题颜色
+$uni-font-size-title: 20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle: 26px;
+$uni-color-paragraph: #3f536e; // 文章段落颜色
+$uni-font-size-paragraph: 15px;
+
+/**
+ * 下面为当前APP自己定义的公共样式
+ */
+.app-container {
+ padding: 20px;
+ font-size: 14px;
+ line-height: 24px;
+}
+
+.u-block {
+ padding: 14px;
+ &__section {
+ margin-bottom: 10px;
+ }
+ &__title {
+ margin-top: 10px;
+ font-size: 15px;
+ color: $u-content-color;
+ margin-bottom: 10px;
+ }
+ &__flex {
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ }
+}
+
+// 使用了cell组件的icon图片样式
+.u-cell-icon {
+ width: 36rpx;
+ height: 36rpx;
+ margin-right: 8rpx;
+}
+
+.u-page {
+ padding: 15px 15px 40px 15px;
+}
+
+.u-demo-block {
+ flex: 1;
+ margin-bottom: 23px;
+
+ &__content {
+ @include flex(column);
+ }
+
+ &__title {
+ font-size: 14px;
+ color: rgb(143, 156, 162);
+ margin-bottom: 8px;
+ @include flex;
+ }
+}
diff --git a/common/bus.js b/common/bus.js
new file mode 100644
index 0000000..cb21a52
--- /dev/null
+++ b/common/bus.js
@@ -0,0 +1,3 @@
+import Vue from 'vue'
+const bus = new Vue()
+export default bus
\ No newline at end of file
diff --git a/common/config.js b/common/config.js
new file mode 100644
index 0000000..5ce3327
--- /dev/null
+++ b/common/config.js
@@ -0,0 +1,17 @@
+/**
+ * config 配置项说明
+ * baseUrl = "", // 接口的根地址
+ * tokenName = "Authorization", // 请求头中token的名字,与服务器端对应
+ * loginTimeoutCode : "5000", // 登录超时或失效的情况下,服务器端返回的错误码
+ * loginTimeoutPage = "/pages/login/index", // 登录超时或失效的情况下,跳转到的登录页面
+ */
+module.exports = {
+ // baseUrl: 'http://uv32vz.natappfree.cc', // 本地
+ // baseUrl: 'http://192.168.0.105:7211', // 本地
+ // baseUrl: 'https://39.104.100.138/lpkapi', // 测试服务器
+ // baseUrl: 'https://lpk.yyundong.com/mallapi', // 测试服务器
+ baseUrl: 'https://supervise.yxtsoft.com/lpkapi', // 正式服务器
+ // tokenName: "Authorization", // 请求头中token的名字,与服务器端对应
+ loginTimeoutCode: "5001", // 登录超时或失效的情况下,服务器端返回的错误码
+ loginTimeoutPage: "/pages/login/index", // 登录超时或失效的情况下,跳转到的登录页面
+}
\ No newline at end of file
diff --git a/common/empty.js b/common/empty.js
new file mode 100644
index 0000000..f44d8fd
--- /dev/null
+++ b/common/empty.js
@@ -0,0 +1,12 @@
+function stringIsEmpty(str) {
+ return str === undefined || str === null || str === ''
+}
+
+function stringIsNotEmpty(str) {
+ return !stringIsEmpty(str)
+}
+
+export {
+ stringIsEmpty,
+ stringIsNotEmpty
+}
diff --git a/common/getQuery.js b/common/getQuery.js
new file mode 100644
index 0000000..ab91403
--- /dev/null
+++ b/common/getQuery.js
@@ -0,0 +1,22 @@
+/**
+ * getQueryString 二维码参数转换提取
+ * 参数
+ * url 二维码参数
+ * name 需要提取的参数
+ */
+function getQueryString(url, name) {
+ let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)",'i');
+ var r = url.substr(1).match(reg)
+
+ if (r != null) {
+
+ return r[2]
+
+ }
+
+ return null;
+}
+
+export {
+ getQueryString
+}
\ No newline at end of file
diff --git a/common/mixin.js b/common/mixin.js
new file mode 100644
index 0000000..b6a4eee
--- /dev/null
+++ b/common/mixin.js
@@ -0,0 +1,7 @@
+export default {
+ data() {
+ return {
+
+ }
+ }
+}
diff --git a/common/nav-calc-utils.js b/common/nav-calc-utils.js
new file mode 100644
index 0000000..7cabae7
--- /dev/null
+++ b/common/nav-calc-utils.js
@@ -0,0 +1,84 @@
+function navParams() {
+
+ let params = {
+ // 是否支持自定义导航栏(小程序 pc版 false)
+ supportCustomBar: true,
+ // 胶囊
+ menuButton: {
+ width: 0,
+ height: 0
+ },
+ // 导航栏
+ // 可自定义,wx小程序会强制更改
+ navBar: {
+ height: 0,
+ // 导航栏字体大小 wx小程序 ios:13,Android:17
+ fontSize: 0,
+ // 导航栏样式 wx小程序时:ios:center,Android:left
+ style: '',
+ // 导航栏可用宽度 wx小程序时 ios,Android:屏幕宽-胶囊
+ enableWidth: 0,
+ // 导航栏不可用宽度 wx小程序时 ios,Android:胶囊+胶囊距离屏幕右侧边界的距离
+ disableWidth: 0
+ },
+ window: {
+ width: 0,
+ height: 0
+ },
+ os: {
+ osName: ''
+ },
+ // 导航栏+状态栏高度
+ navStatusHeight: '0px',
+ // 状态栏高度
+ statusBarHeight: 0,
+ unit: 'px'
+ }
+
+ // 同步获取信息
+ let info = uni.getSystemInfoSync();
+
+ // 状态栏高度
+ params.statusBarHeight = info.statusBarHeight;
+ params.window.width = info.screenWidth
+ params.window.height = info.screenHeight
+ params.os.osName = info.osName
+
+ // 获取胶囊相关内容
+ // #ifdef MP-WEIXIN
+ let menuButton = uni.getMenuButtonBoundingClientRect();
+ params.menuButton.width = menuButton.width;
+ params.menuButton.height = menuButton.height;
+ let paddingTop = menuButton.top - params.statusBarHeight;
+ let paddingBottom = 0;
+ if (params.os.osName === 'ios') {
+ paddingBottom = paddingTop * 2;
+ params.navBar.fontSize = 13;
+ params.navBar.style = 'center';
+ } else if (params.os.osName === 'android') {
+ paddingBottom = paddingTop;
+ params.navBar.fontSize = 17;
+ params.navBar.style = 'left';
+ } else if (params.os.osName === 'windows' || params.os.osName === 'mac') {
+ params.supportCustomBar = false;
+ } else {
+ // 未知系统按照Android处理
+ paddingBottom = paddingTop;
+ params.navBar.fontSize = 17;
+ params.navBar.style = 'left';
+ }
+ params.navBar.height = params.menuButton.height + paddingTop + paddingBottom;
+ // 导航栏可用宽度 屏幕左边界到胶囊左边界
+ params.navBar.enableWidth = menuButton.left;
+ params.navBar.disableWidth = params.window.width - params.navBar.enableWidth;
+ // #endif
+
+ params.navStatusHeight = params.statusBarHeight + params.navBar.height
+
+ console.log(params);
+ return params
+}
+
+export {
+ navParams
+}
\ No newline at end of file
diff --git a/common/price.js b/common/price.js
new file mode 100644
index 0000000..682fda4
--- /dev/null
+++ b/common/price.js
@@ -0,0 +1,15 @@
+// 10.00 10.60
+function convertPrice(str) {
+ if (str == undefined || str == null || str == '')
+ return ''
+ if (str.endsWith('.00')) {
+ return str.substring(0, str.length - 3)
+ } else if (str.endsWith('0') && str.includes('.')) {
+ return str.substring(0, str.length - 1)
+ }
+
+ return str
+}
+export {
+ convertPrice
+}
\ No newline at end of file
diff --git a/common/props.js b/common/props.js
new file mode 100644
index 0000000..9c1ef07
--- /dev/null
+++ b/common/props.js
@@ -0,0 +1,2 @@
+uni.$u.props.gap.bgColor = '#f3f4f6'
+uni.$u.props.gap.height = '10'
diff --git a/common/req.js b/common/req.js
new file mode 100644
index 0000000..4b02b48
--- /dev/null
+++ b/common/req.js
@@ -0,0 +1,16 @@
+const {
+ http
+} = uni.$u
+
+export default {
+ login: (params, config = {}) => http.post('/login', params, {
+ custom: {
+ catchError: true,
+ showFailMessage: true
+ }
+ }),
+ sayhello: (params = {}) => http.get("/sayb", params),
+
+ // 查看预警信息
+ selectBusinessRiskInfo: (params = {}) => http.post("/v1/businessData/selectBusinessRiskInfo", params)
+}
diff --git a/common/request.api.js b/common/request.api.js
new file mode 100644
index 0000000..db62d60
--- /dev/null
+++ b/common/request.api.js
@@ -0,0 +1,184 @@
+import request from '@/utils/requester.js'
+import config from "@/common/config.js"
+
+export default {
+ login: (params = {}) => request.post("/wxmpapi/sysuser/login", params),
+ wxBindMobile: (params = {}) => request.post("/lpkcustomer/wxBindMobile", params),
+ // 不显示loading true
+ // 提货卡列表
+ cardList: (params = {}) => request.post("/lpkgiftcard/gifCardByCustomerSid", params, {}, {}, true),
+ // 福礼卡列表
+ gifcardList: (params = {}) => request.post("/empcardgift/gifCardByCustomerSid", params, {}, {}, true),
+ // 企业卡列表
+ empcardList: (params = {}) => request.post("/empcard/getEmpCardByCustomerSid", params, {}, {}, true),
+ // 提货卡详情
+ cardDetail: (params = {}) => request.get("/lpkgiftcard/getGifCardBySid/" + params, params, {}, {}, true),
+ // 福礼卡详情
+ gifcardDetail: (params = {}) => request.get("/empcardgift/getGifCardBySid/" + params, params, {}, {}, true),
+ // 企业卡详情
+ empCardDetail: (params = {}) => request.get("/empcard/getEmpCardBySid/" + params, params, {}, {}, true),
+ // 福礼卡分享 改变卡状态
+ shareEmpCard: (params = {}) => request.get("/empcardgift/shareEmpCard/" + params, params, {}, {}, true),
+ // 提货日期 周六日的日期组合
+ isSaturAndSun: (params = {}) => request.get("/lpkgiftcard/isSaturAndSun/" + params, params, {}, {}, true),
+ // 提货日期 周六日的日期组合
+ isSaturAndSun2: (params = {}) => request.get("/empcardgift/isSaturAndSun/" + params, params, {}, {}, true),
+ // 提货日期 周六日的日期组合
+ isSaturAndSun3: (params = {}) => request.get("/empcard/isSaturAndSun/" + params, params, {}, {}, true),
+ // 提货卡预约初始化
+ cardBooking: (params = {}) => request.get("/lpkgiftcard/getReservationBySid/" + params, params, {}, {}, true),
+ // 提货卡预约保存
+ cardBookingSave: (params = {}) => request.post("/lpksreservoorder/submission", params),
+ // 提货卡转赠保存
+ generateEmpCard: (params = {}) => request.post("/empcardgift/generateEmpCard", params),
+ // 福礼卡预约保存
+ gifcardBookingSave: (params = {}) => request.post("/empsreservoorder/submission", params),
+ // 福利卡转赠保存
+ generateEmpCardGift: (params = {}) => request.post("/empcardgift/generateEmpCardGift", params),
+ // 企业卡生成福利卡
+ empcardSave: (params = {}) => request.post("/empcardgift/generateCard", params),
+ // 企业卡预约保存
+ empcardBookingSave: (params = {}) => request.post("/empsreservoorder/submissionEmp", params),
+ // 绑定提货卡
+ cardBind: (params = {}) => request.post("/lpkgiftcard/bindCard", params),
+ // 绑定企业卡
+ empcardBind: (params = {}) => request.post("/empcard/bindCard", params),
+ // 单一提货卡预约记录
+ orderByCardSid: (params = {}) => request.get("/lpksreservoorder/orderByCardSid/" + params, params, {}, {}, true),
+ // 订单记录
+ orderListByUserSid: (params = {}) => request.post("/lpksreservoorder/orderListByUserSid", params, {}, {}, true),
+ // 订单详情
+ orderDetails: (params = {}) => request.get("/lpksreservoorder/orderDetails/" + params, params, {}, {}, true),
+ // 订单退款
+ orderRetrun: (params = {}) => request.post("/refund/createOrder", params, {}, {}, true),
+ // 商品详情
+ goodsDetail: (params = {}) => request.get("/lpkgoods/goodsDetails/" + params.sid + "/" + params
+ .customerSid, {}, {}, {}, true),
+ // 提货点
+ address: (params = {}) => request.post("/lpkstore/getAllStoreByQuery", params, {}, {}, true),
+
+
+ // 2024-1-13 新需求接口 所有卡数据整合到一个页面
+ // 新提货卡列表
+ pickUpCardList: (params = {}) => request.post("/lpkgiftcard/gifCardsByCustomerSid", params, {}, {}, true),
+ // 新绑定提货卡
+ pickUpCardBind: (params = {}) => request.post("/lpkgiftcard/bindAllCard", params),
+
+ // 云菜窖列表
+ appletGiftBagList: (params = {}) => request.get("/appletgiftbag/appletGiftBagList", params),
+ // 云菜窖列表
+ getGiftBagBySid: (params = {}) => request.get("/appletgiftbag/getGiftBagBySid/" + params, params),
+ // 自选菜窖 商品信息
+ getAllGiftBag: (params = {}) => request.get("/lpkgoods/getAllGiftBag", params),
+ // 結算商品
+ createOrder: (params = {}) => request.post("/empsreservoorder/createOrder", params),
+ // 预约记录
+ orderListByUserSid: (params = {}) => request.post("/lpksreservoorder/orderListByUserSid", params, {}, {}),
+ // 取消预约记录
+ cancelReservation: (params = {}) => request.get("/lpksreservoorders/cancelReservation/" + params, params, {}, {}),
+ // 转赠记录
+ transferRecordsList: (params = {}) => request.post("/transferrecords/transferRecordsList", params, {}, {}),
+
+
+ // 我的
+ // 获取头像 昵称
+ getUserInfo: (params = {}) => request.get("/lpkcustomer/customerInfo/" + params, params),
+ // 用户基本信息
+ getBaseInfo: (params = {}) => request.get("/lpkcustomer/getCustomerInfo/" + params, params, {}, {}, true),
+ // 修改头像
+ uploadHandImage: (params = {}) => request.post("/lpkcustomer/uploadAvatar", params),
+ // 获取默认提菜信息
+ getStoreBySid: (params = {}) => request.get("/customerstore/getStoreBySid/" + params, params),
+ // 推荐有礼
+ myRecommend: (params = {}) => request.get("/newcomerrecorecord/recordList/" + params, params),
+ // 基本信息修改头像
+ headerUpload: config.baseUrl + '/lpkcustomer/modifyHeadImage',
+ // 修改昵称
+ changeNick: (params = {}) => request.formpost("/lpkcustomer/modifyUserNickName", params),
+ // 获取手机号
+ getPhone: (params = {}) => request.formpost("/lpkcustomer/getPhoneNumber", params),
+ // 获取实名
+ getRealInfo: (params = {}) => request.get("/lpkcustomer/getRealInfo/" + params, params, {}, {}, true),
+ // 保存实名
+ saveRealInfo: (params = {}) => request.post("/lpkcustomer/saveRealInfo", params),
+ // 查询推荐支行
+ searchTuiJianZhiHang: (params = {}) => request.get("/LpkCustomerBank/getBankList", params),
+ // 保存支行
+ saveTuiJianZhiHang: (params = {}) => request.formpost("/lpkcustomer/updateCustomerBank", params),
+ // 我的 预约记录
+ myOrderListByUserSid: (params = {}) => request.post("/lpksreservoorders/orderListByUserSid", params, {}, {}),
+ // 我的 订单列表
+ ordersList: (params = {}) => request.post("/empsreservoorder/ordersList", params, {}, {}),
+ // 我的 订单详情
+ orderDetails: (params = {}) => request.get("/empsreservoorder/OrderDetails/" + params, params, {}, {}, true),
+ // 我的 订单详情 修改订单状态
+ changePayState: (params = {}) => request.get("/empsreservoorder/changePayState/" + params, params, {}, {}, true),
+ // 订单发票获取授权页链接
+ wxElectronicInvoice: (params = {}) => request.post("/empsreservoorder/wxElectronicInvoice", params, {}, {}),
+ // 我的 失效商品
+ vegeCellarInvalidList: (params = {}) => request.post("/lpkgoods/vegeCellarInvalidList", params, {}, {}),
+
+ // 查询发票列表
+ getInvoiceList: (params = {}) => request.get("/customerinvoice/listInvoice/" + params, params),
+ // 新增发票
+ saveOrUpdateInvoice: (params = {}) => request.post("/customerinvoice/saveOrUpdate", params, {}, {}),
+ // 提交申请发票
+ submitInvoice: (params = {}) => request.post("/invoicerecords/save", params, {}, {}),
+ // 我的 推荐有礼
+ recommendNewUsers: (params = {}) => request.post("/newcomerrecorecord/recommendNewUsers", params, {}, {}),
+ // 新人助力
+ recommendedAssistance: (params = {}) => request.post("/newcomerrecorecord/recommendedAssistance", params, {}, {}),
+
+
+ // 2024-1-15 新需求
+ // 获取轮播图
+ bannerList: (params = {}) => request.get("/wxapi/banner/list", params),
+ // 获取分类和品牌
+ getGoodsTypeAndBrand: (params = {}) => request.get("/lpkgoods/getGoodsTypeAndBrand", {}, {}, {}, true),
+ // 判断企业菜窖是否认证
+ isEnterprise: (params = {}) => request.get("/lpkgoods/isEnterprise/" + params.customerSid + "/" + params.brandId, +
+ params, {}, {}, {}, true, true),
+ // 保存企业认证
+ saveAuthentication: (params = {}) => request.post("/enterprisecertification/save", params),
+ // 获取补充菜窖 商品分类列表
+ getAllGoodsType: (params = {}) => request.get("/lpkgiftcard/getAllGoodsType/" + params, params),
+ // 获取补充菜窖 商品分类列表
+ getGoodsByType: (params = {}) => request.post("/lpkgoods/getGoodsByType", params, {}, {}, true),
+ // 获取当前购物车总价及总斤数
+ getGoodsWeight: (params = {}) => request.post("/shoppingcart/getGoodsWeight", params, {}, {}, true),
+ // 加入购物车
+ addShoppingCart: (params = {}) => request.post("/shoppingcart/addShoppingCart", params),
+ // 购物车列表
+ shoppingCartList: (params = {}) => request.post("/shoppingcart/shoppingCartList", params, {}, {}, true),
+ // 结算 跳过支付
+ saveGoods: (params = {}) => request.post("/vegetablecellar/saveGoods", params),
+ // 正式结算 支付
+ createVegeOrder: (params = {}) => request.post("/empsreservoorder/createVegeOrder", params),
+
+
+ // 我的菜窖 通知公告
+ getNotices: (params = {}) => request.get("/appletnotice/getNotice", params),
+ // 我的菜窖 新人礼包列表
+ newUserQuota: (params = {}) => request.post("/appletgiftbag/newUserQuota", params),
+ // 结算新人礼包 支付
+ createNewUserBagOrder: (params = {}) => request.post("/empsreservoorder/createNewUserBagOrder", params),
+ // 我的菜窖 类型列表
+ vegeCellarTypeList: (params = {}) => request.post("/lpkgoods/vegeCellarTypeList", params),
+ // 我的菜窖 商品列表
+ vegeCellarList: (params = {}) => request.post("/lpkgoods/vegeCellarList", params),
+ // 我的菜窖 转赠亲友
+ transSubmission: (params = {}) => request.post("/transferrecords/submission", params),
+ // 我的菜窖 获取转赠内容
+ getTransferByCode: (params = {}) => request.post("/transferrecords/getTransferByCode/" + params, params),
+ // 我的菜窖 领取/绑定转赠菜窖
+ receiveTransferGoods: (params = {}) => request.post("/vegetablecellar/receiveTransferGoods", params),
+ // 我的菜窖 绑定之前发出的礼品卡
+ bindAllCard: (params = {}) => request.post("/lpkgiftcard/bindAllCard", params),
+ // 我的菜窖 预约提菜
+ getStoreBySid: (params = {}) => request.get("/customerstore/getStoreBySid/" + params, params),
+ // 我的菜窖 预约提菜 选择时间范围
+ getExtractSaturAndSun: (params = {}) => request.get("/customerstore/isSaturAndSun", params),
+ // 我的菜窖 保存预约提菜
+ submissionExtract: (params = {}) => request.post("/lpksreservoorders/submission", params, {}, {}, true),
+
+}
\ No newline at end of file
diff --git a/common/toast.js b/common/toast.js
new file mode 100644
index 0000000..ddd24fd
--- /dev/null
+++ b/common/toast.js
@@ -0,0 +1,20 @@
+function shortToast(str) {
+ uni.showToast({
+ title: str,
+ icon: 'none',
+ duration: 2000
+ })
+}
+
+function longToast(str) {
+ uni.showToast({
+ title: str,
+ icon: 'none',
+ duration: 3500
+ })
+}
+
+export {
+ shortToast,
+ longToast
+}
diff --git a/components/NavBar/NavBar.vue b/components/NavBar/NavBar.vue
new file mode 100644
index 0000000..f476045
--- /dev/null
+++ b/components/NavBar/NavBar.vue
@@ -0,0 +1,240 @@
+
+
+
+汇融云眼服务协议 + +
++
+ + 版本发布日期: + 2023年 + + 3 + 月 + 15 + 日 +
++ 欢迎您使用 + 汇融云眼小程序 + + 产品和服务(下称 + “服务”)。 + +
++ + 本协议自发布之日起即刻生效。本协议各条款前 + “【】”所列索引关键词仅为帮助您理解该条款表达的主旨之用,不影响或限制本协议条款的含义或解释。为维护您自身权益,建议您仔细阅读各条款具体表述。 + +
++ 【审慎阅读】如果您完成 + 在 + 汇融云眼 + 程序 + 上的 + 租户信息绑定 + , + 取得 + 汇融云眼 + 程序 + + 账号,即表示您接受或同意本协议。因此,请您在信息绑定之前务必审慎阅读本协议各条款,特别是免除或限制责任条款、法律适用条款和管辖条款。免除或限制责任条款、法律适用条款和管辖条款将以下划线粗体标识,请您重点阅读。 + +
+一、相关定义
++ + + 1.1 + + 汇融云眼 + 程序 + 用户端: + 指 + + “ + + 汇融云眼 + ”小程序 + + 用于提供服务的网站、客户端、小程序以及随技术发展出现的新形态 + 。 + + 汇融云眼程序 + 用户端可能适配在多种智能终端,包括电脑、智能手机 + 等 + 设备等。 +
++ 1.2 + “ + 汇融云眼网站 + ” + 等网站及 + 微信小程序端 + 。 +
+二、用户资格
++ 2.1 + + + + + 当您完成注册 + + + 汇融云眼 + 程序 + , + 取得 + 汇融云眼程序 + + + 账号时,即表示您已充分阅读、理解、接受并同意本协议的全部内容,并与 + + + 我公司 + 达成一致,成为 + 汇融云眼程序 + 用户 + 。 +
++ + 2.2 + 如果您属于非自然人法律主体,则您须为在中国大陆地区合法设立并已具备相应资质开展经营活动或其他业务的法人或其他组织,且您订立并履行本协议不受您所属、所居住或开展经营活动或其他业务的国家或地区法律法规的排斥。如果您不具备前述条件的,您应立即停止注册,否则您应依据法律规定承担因此导致的不利后果。 + +
++ + 2.3 + 如果您属于任何国家、国际组织或者地域实施的贸易限制、制裁或其他法律、规则限制的对象,则您应立即停止注册,否则您应依据法律规定承担因此导致的不利后果。 + +
+三、账号说明
++ 3.1 【账号取得】您可以创建自己的 + 汇融云眼 + 程序的 + 账号,也有可能通过管理者(如您所在的单位)的分配取得 + 汇融云眼程序 + + 账号。在后一种情况下,除了接受或同意本协议,您可能需要遵守管理者另外制定的条款或附加条款,并且您的管理者可能有权访问或停用您的账号。 + +
++ 3.2 【用户名合法保证】您设置的 + 汇融云眼 + + + 程序的账号 + + 用户名 + 不得违反国家法律法规及 + 我公司 + 关于用户名的管理规定,否则 + 我公司 + 可回收您的 + 汇融云眼程序 + 用户名(在不损害 + 我公司 + 任何权益前提下)。 +
++ 3.3【账号数量限制】通常情况下, + 我公司 + 只允许每位用户使用一个 + 汇融云眼程序 + 账号。如有证据证明或 + 我公司 + 有理由相信您存在不当注册或不当使用多个 + 汇融云眼程序 + 账号的情形, + 我公司 + 可采取冻结或关闭账号、拒绝提供服务等措施,如给 + 我公司 + 及相关方造成损失的,您还应承担赔偿责任。 +
++ 3.4 【账号关联】当您选择使用 + + + + 微信 + + + 账号等其它第三方账号直接登陆 + 汇融云眼 + 程序 + 用户端时,您无需按照 + 汇融云眼程序 + 账号标准创建流程另行设置 + 汇融云眼程序 + 账号。您按照前述方式成功登陆 + + 汇融云眼 + + 程序 + 用户端后,在此情况下,您理解并同意, + 我公司 + 有权获得并使用您的 + + 微信 + + 账号等其它第三方账号相关信息。 +
++ 3.5 【账号权限】由于 + 我公司 + 有不同的业务领域,各领域有不同的准入条件和业务条款,所以您取得 + 汇融云眼 + 程序 + 账号并不意味着您能使用 + 我公司 + + 的所有产品或者服务。您应当满足相应领域的准入条件(如实名认证、资质认证)、并签署相应的业务条款后,您才能使用相应的产品或服务。 + +
++ 3.6 【手机号码】您理解并同意, + + 为了您更便捷地使用 + + + 汇融云眼程序 + + + 服务,并保障您的 + + + 汇融云眼程序 + + + + 账号安全,您需要将您的手机号码和 + + + + 您的 + + + 汇融云眼程序 + + + 账号绑定 + + 。通常情况下,一个手机号码只允许绑定一个 + 汇融云眼程序 + 账号,因此,若您的手机号码发生了变化,请您及时登陆 + 汇融云眼 + 程序 + 账号变更您的手机号码,以保证您能正常使用 + 汇融云眼程序 + 账号,从而使用 + 汇融云眼程序 + 服务。手机号码是您登陆 + + 汇融云眼 + + 程序 + 账号的一个非常重要的登陆手段,因此, + 我公司 + 建议您务必保管好您的通讯设备。 +
+四、账号管理
++ 4.1 【账号使用】由于您的 + + 汇融云眼 + + 程序 + 账号关联您的相关信息(包括个人信息、商业信息、交易信息),您的 + 汇融云眼 + 程序 + 账号仅限您本人使用。如 + 我公司 + 判断您 + 汇融云眼 + 程序 + + 账号的使用可能危及您的账号安全和 + /或 + + 汇融云眼 + 程序 + 用户端信息安全的, + 我公司 + 可以拒绝提供相应服务或终止本协议。 +
++ + 4.2 【账号保管】请您务必保管好您的账号、密码和登陆信息,并确保您在每个上网时段结束时退出登录并以正确步骤离开 + + 汇融云眼 + 程序 + 用户端。 + 汇融云眼 + 程序 + + 账号因您主动泄露或遭受他人攻击、诈骗等行为导致的损失及后果,均由您自行承担。除 + + 我公司 + + 存在过错外,您应对您账号项下的所有行为(包括但不限于在线签署各类协议、发布信息、采购服务及披露信息等)负责。 + +
++ 4.3 + + + 如果发现任何未经授权使用您账号登录 + + + + 汇融云眼程序 + + + + 用户端或其他可能导致您账号遭窃、遗失的情况,建议您立即通知 + + + + 我公司 + + 您理解 + 我公司 + 对您的任何请求采取行动均需要合理时间,除 + 我公司 + 存在过错外, + 我公司 + 对因任何未经授权使用您账号登录 + 汇融云眼 + 程序 + 用户端或其他可能导致您账号遭窃、遗失的情况而产生的后果不承担任何责任。 +
++ 4.4 【不活跃账号回收】如果您的账号同时符合以下条件,则 + 我公司 + 可回收您的账号,您的账号将不能再登录 + 汇融云眼程序 + 用户端,相应服务同时终止: +
++ + (一)未按照约定进行实名认证和 + /或资质认证的; + +
++ (二)连续 + 六 + 个月未登录 + 汇融云眼 + 程序 + 用户端; +
+(三)不存在未到期的有效业务。
++ 4.5 【账号注销】您可以通过联系 + 我公司 + 按照 + 我公司 + 账号注销流程 + , + 注销 + 汇融云眼 + 程序 + 账号。由于您的 + 汇融云眼 + 程序 + 账号可能直接关系到您是否能正常使用 + 汇融云眼程序 + 服务,且 + 汇融云眼程序 + 账号注销属于不可恢复的操作,因此,为了保证您的 + + 汇融云眼 + + 程序 + 账号安全以及与 + 汇融云眼程序 + 账号相关的所有服务均已经进行了妥善处理,在您向 + 我公司 + 提出注销 + 汇融云眼 + 程序 + 账号申请之后, + 我公司 + 会就您的 + 汇融云眼 + 程序 + 账号进行相应核查及身份核验。 +
+五、服务内容
++ 5.1 + + 您理解并同意, + + + 我公司 + + + + 提供的服务内容众多,服务范围非常广泛,您取得 + + + + 汇融云眼程序 + + + 账号后不必然享有 + + + 汇融云眼程序 + + + + + 用户端公布的产品或服务,除非您满足该产品或服务的准入条件,并 + /或签署相应的业务条款,具体您可登录 + + + + + 我公司 + + + + 汇融云眼程序进行 + + + + 浏览。 + +
++ 5.2 【服务承诺免责】您理解并同意, + 我公司 + 在提供服务时将会尽到商业上合理水平的技能和注意义务,但 + 汇融云眼 + 程序 + + 用户端公布信息不意味着对服务承诺,具体服务内容以您实际签署的相关协议为准。除本协议或补充协议中明确规定的内容外, + + 我公司 + 及其供应商对服务均不作任何具体承诺。 +
++ 5.3 【不可抗力免责】 + 我公司 + + 负责 + "按现状"和"可得到"的状态向您提供服务。 + + 我公司 + + 依法律规定承担基础保障义务,但无法对由于信息网络设备维护、连接故障,电脑、通讯或其他系统的故障、电力故障、罢工、暴乱、火灾、洪水、风暴、爆炸、战争、政府行为、司法行政机关的命令或因第三方原因而给您造成的损害结果承担责任。 + +
++ 5.4 【第三方内容免责】 + 汇融云眼 + 程序 + 用户端会展示一些不属于 + 我公司 + 的内容,这些内容由发布的实体承担全部责任。 + 我公司 + 可能会审查相关内容,以确定其是否违法或违反了 + 我公司 + 的政策;如果 + 我公司 + 有理由相信该内容违反了 + 我公司 + 的政策或违法, + 我公司 + 可以将其删除或拒绝展示。不过,这并不意味 + 我公司 + 必然会或有义务审查相关内容。 +
++ + 5.5 某些司法管辖区域可能会规定一些特定保证,如:适销性、特定目的适用性及不侵权的默示保证。在法律允许的范围内, + + 我公司 + 排除适用前述所有保证。 +
++ 5.6 + 汇融云眼 + 序 + 用户端展示很多内容是出于传递更多信息之目的,并不意味 + 我公司 + 赞同其观点或已经证实其内容的真实性。 +
++ 5.7 【服务费用】 + 我公司 + 为 + + 汇融云眼 + + 程序 + 用户端向您提供的服务付出了大量的成本, + + 除 + + 汇融云眼程序 + + + 用户端明示的收费业务或另有单独协议约定外, + + + + 我公司 + + + + 向您提供的服务目前是免费的。如果未来 + + + + 我公司 + + + 向您收取合理费用, + + + 我公司 + + + + + 会在合理期限内根据本协议第十一条约定的方式提前通知您,确保您有充分选择的权利。 + + + +
+六、知识产权
++ 6.1 【知识产权归属】除非 + 我公司 + 另行书面声明, + 汇融云眼 + 程序 + + 用户端向您展示的和 + /或 + + 我公司 + + 向您提供服务中的所有产品、技术、软件、程序、数据、文字、图像、图片、照片、音频、视频、图表、色彩、版面设计、电子文档及其他信息、内容、资料的所有权利,包括但不限于版权、商标权、专利权、商业秘密及其他所有相关的世界范围内的权利,均归 + + 我公司 + 所有。未经 + 我公司 + + 明确书面授权,任何人不得擅自使用,包括但不限于通过任何机器人、蜘蛛等程序或设备监视、复制、传播、展示、镜像、上载、下载 + + 我公司 + 用户端内的任何内容。访问 + 我公司 + + 用户端和 + /或使用 + + 我公司 + + 服务并无法让您获得所访问和 + /或您所使用的 + + 我公司 + 服务中的信息、内容、资料的任何权利。 + + + + 除非您获得相关信息、内容、资料的所有者的许可或通过其他方式获得法律的许可, + + + + + 否则 + + + 您不得使用 + + + 汇融云眼程序 + + + + + 用户端向您展示的和 + /或 + + + + + 我公司 + + + + 向您提供服务内中的任何信息、内容、资料 + + + 。 +
++ 6.2 【商标使用】 + + 汇融云眼程序 + + + 上展示的 + + + 我公司 + + + + 文字、设计、图形及其组成部分,以及 + + + + + + 汇融云眼 + 程序 + + + + + + 用户端上展示的其他标识、徵记、产品和服务名称,未经 + + + + 我公司 + + + + + 明确书面授权,任何人不得以任何方式在任何国家或区域展示、使用、申请或注册、或以任何其他方式进行处理,也不得在任何国家或区域向他人表明您有权展示、使用、申请或注册、或以任何其他方式进行处理。本协议并未授予您使用、申请或注册 + + + + + 汇融云眼程序 + + + 用户端上展示的或 + + + 我公司 + + + + 服务中所用的任何商标的权利。 + + +
++ 6.3 【侵权处理】 + 我公司 + 非常尊重知识产权。如果您认为 + 汇融云眼 + 程序 + + 用户端向您展示的和 + /或 + + 我公司 + 向您提供服务内中的任何信息、内容、资料可能涉嫌侵犯相关合法权益,可以与 + 我公司 + 联系(客服电话为 + 95113 + ), + 我公司 + 收到后将及时处理。 +
+七、信息收集、使用、共享、存储和保护
++ 7.1 【个人信息】 + + 我公司 + + + + 非常重视用户个人信息的保护,在您使用 + + + + 我公司 + + + + 提供的服务时,您同意 + + + + 我公司 + + + 根据在 + + + 汇融云眼程序 + + + 用户端上公布的《 + + + 汇融云眼程序 + + + 隐私政策 + + + + 》收集、使用、共享、存储和保护您的个人信息。 + + + + 我公司 + + + 希望通过《 + + + 汇融云眼程序 + + + 隐私政策 + + + 》向您清楚地介绍 + + + 我公司 + + + + 对您个人信息的处理方式,因此 + + + + 我公司 + + + 建议您完整地阅读《 + + + 汇融云眼程序 + + + 隐私政策 + + + + 》,以帮助您更好地保护您的隐私权。您同意按照 + + + + 我公司 + + + + 的隐私政策收集、使用、共享、存储和保护您的个人信息。 + + +
++ 7.2 【非个人信息】 + + + 对于您在注册账号或使用 + + + + 汇融云眼程序 + + + + + 用户端服务过程中提供、形成的除个人信息外的文字、图片、视频、音频、数据等非个人信息,在法律规定的保护期限内您免费授予 + + + + + 我公司 + + + + + 获得全球排他的许可使用权利及再授权给其他第三方使用并可以自身名义对第三方侵权行为取证及提起诉讼的权利 + + + + 。 + + 您同意 + + + 我公司 + + + + + 存储、使用、复制、修订、编辑、发布、展示、翻译、分发您的非个人信息或制作其派生作品,并以已知或日后开发的形式、媒体或技术将上述信息纳入其它作品内。 + + + +
++ 7.3 【禁止性信息】 + + + 您声明并保证,您对您在注册账号或使用 + + + + 汇融云眼程序 + + + + + 用户端服务过程中提供、形成的信息拥有相应、合法的权利,您在注册账号或使用 + + + + + 汇融云眼程序 + + + + 用户端服务过程中提供、形成的信息不包含以下内容,否则 + + + + 我公司 + + + + 可对您在注册账号或使用 + + + + 汇融云眼程序 + + + + 用户端服务过程中提供、形成的信息依法或依本协议进行删除或屏蔽 + + + : +
+(一)违反国家法律法规禁止性规定的;
++ (二)政治宣传、封建迷信、淫秽、色情、赌博、暴力、恐怖或者教唆犯罪的; +
+(三)欺诈、虚假、不准确或存在误导性的;
++ (四)侵犯他人知识产权或涉及第三方商业秘密及其他专有权利的; +
++ (五)侮辱、诽谤、恐吓、涉及他人隐私等侵害他人合法权益的; +
++ (六)存在可能破坏、篡改、删除、影响 + 我公司或 + 汇融云眼程序 + 用户端任何系统正常运行或未经授权获取 + 汇融云眼程序 + + 用户端及其他用户的数据、个人资料的病毒、木马、爬虫等恶意软件、程序代码的; + +
++ (七)其他违背社会公共利益或公共道德或依据 + 汇融云眼程序 + 用户端相关协议、规则的规定不适合在 + 汇融云眼程序 + 用户端上发布的。 +
++ 7.4 为方便您使用 + 我公司 + 其他相关服务,您授权 + 我公司 + 将 + + 您在注册账号和使用 + + + 汇融云眼程序 + + + + 用户端服务过程中提供、形成的信息传递给 + + + + 我公司 + + + + 等其他相关服务提供者,或从 + + + + + 我公司、我公司关联公司 + + + + + + 等其他相关服务提供者获取您在注册相关服务提供者的账号或使用相关服务过程中提供、形成的信息 + + + + 。 +
++ 7.5 + + 若您需要查询您的 + + + 汇融云眼程序 + + + + 账号上的用户信息,您可以直接登陆 + + + + 汇融云眼程序 + + + + 用户端进行查询或联系 + + + + 我公司 + + 。若您在注册账号或使用 + 汇融云眼 + 程序 + 用户端服务过程中提供的信息有变化,您可以登陆 + 汇融云眼 + 程序 + 账号或联系 + 我公司 + 更新您提供的信息。若您需要删除您的 + 汇融云眼 + 程序 + 账号上的用户信息,您可以联系 + 我公司 + 。由于您的用户信息可能直接关系到您是否能正常使用 + 我公司 + 服务,因此, + 我公司 + 建议,在您更新、删除您的用户信息时,提前联系 + 我公司 + ,以确保您所使用的 + 我公司 + 服务不会受到任何影响。在法律有明确规定要求 + 我公司 + 作为服务提供者必须对用户信息进行核实的情况下, + 我公司 + + 将依法不时地对您的信息进行检查核实,您应当配合提供最新、真实、完整的信息。如果 + + 我公司 + 按您最后一次提供的信息与您联系未果,或您未按 + 我公司 + + 的要求及时提供信息,或您提供的信息存在明显不实的,您将承担因此对您自身、他人及 + + 我公司 + 造成的全部损失与不利后果。 +
+八、协议终止
++ 8.1 + + + 您有权通过以下任一方式终止本协议: + + +
++ (一)在按照本协议或 + 汇融云眼程序 + 用户端公示方式,停止使用账号的; +
++ (二)在 + 汇融云眼程序 + + 账号或服务或本协议变更和 + /或修改事项生效前,您停止使用且明示不愿接受该变更和/或修改事项的; + +
++ (三)您向 + 我公司 + 明示不愿继续使用服务,且符合 + 我公司 + 终止条件。 +
++ 8.2 + + + + + 【违约终止】出现以下情况时, + + + + + 我公司 + + + + 可以根据本协议第十一条的所列的方式通知您终止本协议: + + +
++ + + + (一)您在使用服务过程中违反有关法律法规规定的,或违反本协议(包括本协议第 + 2.4条约定的补充协议)约定的; + + + +
++ + + + (二)您存在欺诈、盗用他人账号、骗取他人财物、售假、扰乱市场秩序、采取不正当手段谋利等行为的,或者您存在危及他人交易安全或账号安全风险等行为的; + + + +
++ + (三)滥用 + + + 汇融云眼程序 + + + 用户端或 + + + 我公司 + + + + 提供的服务(如:干扰服务或尝试使用除 + + + + 我公司 + + + + 提供的界面和指示以外的方法访问这些服务); + + +
++ + + + (四)根据本协议第 + 5.4条约定,您的账号被 + + + + + 我公司 + + + 回收的; + +
++ + (五)您违反您与 + + + 我 + + + + 公司协议约定;或者您违反 + + + + 我公司 + + + + 服务规则的;或者您在 + + + + 我公司其它平台 + + + + 存在本条款第(二)项规定的行为的; + + +
++ (六)其它 + 我公司 + 认为应当终止的情况。 +
++ 8.3 【违约认定】 + 我公司 + + 可根据您的信息与海量用户信息的关系来认定您是否出现本协议第 + 9.2条所列情况,若 + + 我公司 + 要求您对您的 + 汇融云眼 + 程序 + + 账号异常现象进行充分举证和合理解释,您有义务配合,否则您将被认定为出现第 + 9.2所列情况, + + 我公司 + + 有权根据本协议第 + 9.2条约定终止本协议。 + +
++ 8.4 + + + 本协议终止后,对于您在本协议存续期间产生的交易 + + + + (如有) + + + , + + + 我公司 + + + + + 可视交易相对方的意愿决定是否终止该等交易;如交易相对方要求继续履行的,则您应当就该等交易继续履行本协议及交易的约定,并承担因此产生的任何损失或增加的任何费用 + + + + 。 +
++ 8.5【协议终止后的 + 我公司 + 权利】 + 我公司 + + 根据本协议第 + 8.2条约定终止本协议时, + + 我公司 + 有权立即查封您的账号, + 我公司 + + 有权中止或终止根据本协议(包括本协议第 + 2.4条约定的补充协议)向您提供的服务。 + + + + 本协议终止后,除法律有明确规定外, + + + + 我公司 + + + + 无义务向您或您指定的第三方披露您账号中的任何信息。 + + + 本协议终止后, + 我公司 + 有权继续保存您留存于 + 我公司 + + 用户端的本协议第八条所列的各类信息。本协议终止后,对于您过往出现的本协议第 + 8.2条所列情况, + + 我公司 + 仍可根据本协议向您追究相应法律责任。此外, + 我公司 + + 可将对您违反本协议行为及相应处理措施信息以及其他经国家行政或司法机关生效法律文书确认的违法信息在 + + 汇融云眼 + 程序 + 用户端上予以公示。 +
++ 8.6 【关联交易】 + + 本协议终止后, + + + 我公司 + + + + 有权依照您行为的风险程度指示 + + + + 汇融云眼程序 + + + 、我 + + + 公司 + + + 其它关联公司 + + + + 对您的相关账号采取查封等强制措施 + + + 。如果因为您的原因导致 + 我公司 + 终止本协议的, + 我公司 + + 、我公司其它关联公司可对与您在其他协议项下的合作采取中止甚或终止协议的措施,并以本协议第十一条约定的方式通知您。如 + + 我公司 + 与您签署的其他协议及我公司其它关联公司与您签署的协议中 + , + 明确约定了对您在本协议项下权利义务进行关联处理的情形,则 + 我公司 + 可在收到指令时中止甚至终止本协议,并以本协议第十一条约定的方式通知您。 +
++ 8.7 【赔偿责任】 + + 如果您的行为使 + + + 我公司 + + + + + 、我公司关联公司遭受损失(包括自身的直接经济损失、商誉损失及对外支付的赔偿金、和解款、律师费、诉讼费等间接经济损失),您应赔偿 + + + + + 我公司 + + + + 、我公司关联公司的上述全部损失。如果您的行为使 + + + + 我公司 + + + + 、我公司关联公司遭受第三人主张权利, + + + + 我公司 + + + + + 、我公司关联公司可在对第三人承担金钱给付等义务后就全部损失向您追偿。 + + + +
+九、协议的变更或修改
++ 9.1 + 我公司 + + 有权不定时变更或修改本协议或任何适用于某项服务的补充协议,如:为反映法律的变更或服务变化而进行的修改。当 + + 我公司 + 对本协议或任何适用于某项服务的补充协议做出变更或修改的, + 我公司 + 将通过 + 汇融云眼 + 程序 + + 用户端或在适用的服务中予以公布。您应当定期查阅本协议条款。如果您在本协议内容公告变更 + /修改生效后继续使用 + + 我公司 + + 服务的,表示您已充分阅读、理解并接受变更或修改后的协议内容;如果您不同意变更或修改后的协议内容,您可以拒绝使用 + + 我公司 + 服务。 +
+十、通知条款
++ 10.1 【有效联系方式】 + 我公司 + + 将通过您提供的有效联系方式的其中之一或其中若干向您送达各类通知,而此类通知的内容可能对您的权利义务产生重大的有利或不利影响,请您务必及时关注。您提供的有效联系方式包括: + +
++ 10.1.1 您应当按 + 汇融云眼 + 程序 + + 用户端页面的提示准确完整地提供您的真实有效的联系方式(例如您的电子邮件地址、联系电话、联系地址等),以便 + + 我公司 + + 或其他用户与您联系。您了解并同意,您有义务保持您提供联系方式的真实性及有效性。联系方式发生变更的,您有义务及时更新有关信息,并保持可被联系的状态。 + +
++ 10.2 【通知送达】 + 我公司 + + 通过本协议第 + 11.1约定的有效联系方式向您发出通知。其中,以电子的方式发出的书面通知,包括但不限于在 + + 汇融云眼 + 程序 + + 用户端公告,向您提供的联系电话发送手机短信,向您提供的电子邮件地址发送电子邮件,向您的账号发送信息、系统消息以及站内信信息,在发送成功后即视为送达;以纸质载体发出的书面通知,按照提供联系地址交邮后的第五个自然日即视为送达。 + +
++ 10.3 对于在 + 汇融云眼 + 程序 + + 用户端上发生的任何纠纷,您同意司法机关(包括但不限于人民法院)可以通过手机短信、电子邮件等现代通讯方式或邮寄方式向您送达法律文书(包括但不限于诉讼文书)。您指定接收法律文书的手机号码、电子邮箱等联系方式为您在 + + 汇融云眼 + 程序 + 用户端注册、更新时提供的手机号码、电子邮箱联系方式 + 等 + + ,司法机关向上述联系方式发出法律文书即视为送达。您指定的邮寄地址为您的法定联系地址或您提供的有效联系地址。您同意司法机关可采取以上一种或多种送达方式向您达法律文书,司法机关采取多种方式向您送达法律文书,送达时间以上述送达方式中最先送达的为准。您同意上述送达方式适用于各个司法程序阶段。如进入诉讼程序的,包括但不限于一审、二审、再审、执行以及督促程序等。 + +
++ 10.4 + 您 + + 应当保证所提供的联系方式是准确、有效的,并进行实时更新。如果因提供的联系方式不确切,或不及时告知变更后的联系方式,使法律文书无法送达或未及时送达,由您自行承担由此可能产生的法律后果。 + +
+十一、商业准则
++ 11.1 【商业贿赂】 + + 如果您向 + + + 我公司 + + + 、 + + + 我公司关联公司 + + + + + 的雇员或顾问等提供实物、现金、现金等价物、劳务、旅游等价值明显超出正常商务洽谈范畴的利益,则可视为您存在商业贿赂行为。发生上述情形的, + + + + + 我公司 + + + + + 可立即终止与您的所有合作并向您收取违约金和 + /或赔偿金,该等金额以 + + + + + 我公司 + + + + 因您的贿赂行为而遭受的经济损失和商誉损失作为计算根据 + + + 。 +
+十二、争议解决
++ + 12.1 + 【法律适用】本协议之订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国大陆地区法律;如果法律无相关规定的,参照商业惯例和/或行业惯例。 + +
++ 13.2 【管辖条款】您因使用服务所产生和/或与服务有关的争议,由 + 我公司 + 与您协商解决;协商不成时,任何一方均可向被告所在地人民法院提起诉讼。 +
++ 12.3 除非另有单独协议约定,您通过 + 汇融云眼程序 + + 用户端享受相应服务过程中与其他用户发生争议的,您或其他用户中任何一方均有权选择以下途径解决: + +
+(一)与争议相对方自主协商;
++ (二)使用 + 我公司 + 提供的争议调处服务;在此情况下,您理解并同意, + 我公司 + + 提供争议调处服务人员并非专业人士,仅能以普通人的认知对用户提交的凭证进行判断。因此,除存在故意外,调处方对争议调处决定免责。 + +
++ (三)请求消费者协会或者其他依法成立的调解组织调解; +
+(四)向有关行政部门投诉;
++ (五)根据与争议相对方达成的仲裁协议(如有)提请仲裁机构仲裁; +
+(六)向人民法院提起诉讼。
++ + 12.4 本协议任一条款被视为废止、无效或不可执行,该条应视为可分的且并不影响本协议其余条款的有效性及可执行性。 + +
++
+ 汇融云眼程序隐私政策 +
++ + 欢迎使用汇融云眼 + + 。 +
++ + 请您务必仔细阅读和理解以下条款。若您一旦接受我公司产品或服务,则表示您同意接受我公司约定的以下各项条款的约束。若您不接受以下条款,请您立即停止使用我公司的产品及服务。 + +
++ + + 为了使您充分理解本协议,本协议中与您的权益存在或可能存在重大关系的部分,我们已采用下划线、加粗等方式提示您注意。您点击 + + "确认"或进行类似操作后,即表示您已同意我们按照本协议来使用和保护您的信息。 + +
+一、声明与承诺
++ + (一)您理解并承诺,在您接受我公司的产品或服务前,您已充分阅读、理解并接受本协议的全部内容,您接受我公司的产品或服务,即表示您同意遵循本协议之所有约定。您理解并同意本协议规定的内容,并对相关法律法规有适当的了解,如您不能清楚地知晓或理解国家相关法律法规规定的内容,您应当咨询相关法律专业人士后再决定是否接受本协议。 + +
++ + (二)您在此确认知悉并同意,我公司有权依据国家法律法规及运营需求,对本协议条款不时地进行修改。我公司如更新本协议相关条款,将采用在“一诺云网”(www.enuoyun + .com)上公布,通知您该等修改、增加或删减的内容,以便您随时了解我公司产品或服务对您信息资料的收集和使用方法。一经公告,即视为上述内容已经通知到您。若您在本协议及各类规则变更后继续使用我公司产品或服务的,视为您已仔细认真阅读、充分理解并同意接受修改后的协议条款及各类规则。您有义务不时关注并阅读最新版的协议及网站公告等。如您不同意更新后的协议,应立即停止接受我公司产品或服务,否则视为您同意接受更新后的协议。 + +
++ + (三)您保证,作为自然人,在您同意接受本协议时,您已经年满16周岁;作为企业、事业单位等组织,您在中华人民共和国(“中国”)大陆地区(不含香港、台湾、澳门地区)合法开展经营活动或其他业务,或依照中国大陆地区(不含香港、台湾、澳门地区)法律登记注册成立;本协议内容不受您所属国家或地区法律的约束。不具备前述条件的,您应立即停止使用本软件提供的服务。 + +
++ + (四)我公司为遵守国家法律法规、向您提供服务、保护您的隐私及提升服务质量的目的,将按照本协议收集、使用您的信息(包括但不限于我公司认为了解您的需求和开展业务所必需的相关资料),本协议包含了我们收集、存储、保护、使用您的信息的条款,请您完整地阅读本协议项下各条款。 + +
+二、信息收集
++ + 您在此不可撤销地同意并授权我公司收集以下信息: + +
++ + 1.在您使用或接受我公司产品或服务时,我们会获取您的信息,包括但不限于基本信息、企业经营、商务交易信息等。 + +
++ + 2.设备信息:我公司产品或服务会接收并记录您所使用的设备相关信息(例如设备型号、操作系统版本、设备设置、唯一设备标识符、设备环境等软硬件特征信息)、设备所在位置相关信息(例如IP + 地址、GPS位置以及能够提供相关信息的WLAN接入点、蓝牙和基站等传感器信息)及您所授予的设备权限使用所获信息。 + +
++ + 3.服务日志信息:当您接受我公司提供的产品或服务时,我们会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。例如搜索查询内容、IP地址、浏览器的类型、电信运营商、使用的语言、访问日期和时间及您访问的网页记录等。 + +
++ + 4.发票信息:当您接受我公司提供的产品或服务时,我们会收集您在使用我公司产品或服务时,主动提供的以及通过自动化方式收集您在使用功能或接受服务过程中产生的增值税发票信息,以及开具增值税发票需要的业务信息。 + +
++ + 5.为了更好地为您提供服务,经您授权通过合法途径从我公司产品或我公司提供的服务过程中获取的其他您信息。 + +
++ + 6.在法律、行政法规允许的范围内采集的您的您信息。 + +
+三、除外信息
++ + 您了解并同意,以下信息属于您自愿、主动在公开领域传播的信息,我公司存储、使用以下信息无需您授权: + +
++ + 1)您在使用我公司产品提供的搜索服务时,输入的关键字信息; + +
++ + 2)您在使用我公司产品或接受我公司服务时所产生的信息; + +
++ + 3)您违反法律规定或违反我公司产品规则的行为,以及我公司已对您采取的措施。 + +
+四、信息使用
++ + 一旦您使用我公司的产品或服务,我公司即有权依照自行设立的模型、模式、格式、规则、流程等对您的您信息进行整理、保存、加工。 + +
++ + 我公司将以高度的勤勉、审慎义务对待您信息,您不可撤销地授权并同意我公司将收集到的您信息用于以下用途: + +
++ + 1)将信息进行整合和处理,以便更好地为您提供服务,并依此对我公司的产品或服务进行改进,保存、整理、加工您信息; + +
++ + 2)为达到服务您的目的,我公司可能通过使用您信息,向您提供您感兴趣的通知、营销活动及其他商业性电子信息; + +
++ + 3)经您明确同意并授权的其他用途; + +
++ + 4)除本协议明确阐述和相关法律法规规定外,我公司不会向任何无关第三方提供、出售、出租或交易您的信息; + +
++ + 5)我公司不允许任何第三方以任何手段收集、编辑、出售或者传播您的信息。如您从事上述活动,一经发现,我公司有权立即终止与该您的服务协议,并要求赔偿相应损失。 + +
+五、信息保护
++ + 我们致力于维护您对我公司的产品或服务的信任,因此我公司会使用商业上合理的技术和其他措施,防止您信息的丢失和被盗用,并对您信息的保护情况不定期进行自查,记录自查情况,以便及时消除自查中发现的安全隐患。为尽可能地保护您的信息安全,我公司提请您注意: + +
++ + 1)我公司的产品账号均有安全保护功能,请妥善保管您的账号及密码信息。我公司将通过对您密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”,您信息仍存在丢失、被盗用的可能,非因我公司过错而发生上述情况,我公司不承担任何责任; + +
++ + 2)请您妥善保护自己的信息,仅在必要的情形下向他人提供。如您发现信息泄露,尤其是您的账户及密码发生泄露,请您立即联络客服,以便采取相应措施。 + +
+六、服务使用限制
++ + (一)您在使用我公司产品或服务时,应遵守中华人民共和国相关法律法规,不将本服务用于任何非法目的,也不以任何非法方式使用我公司产品或服务。 + +
++ + (二)您不得利用我公司产品或服务从事侵害他人合法权益之行为, + 否则我们有权拒绝提供相关服务,且您应承担所有相关法律责任,因此导致我公司受损的,您应承担赔偿责任。 + +
++ + (三)您理解并同意,我公司不对因下述任一情况导致的任何损害赔偿承担责任,包括但不限于利润、商誉、数据等方面的损失或其他无形损失的损害赔偿(无论我公司是否已被告知该等损害赔偿的可能性): + +
++ + 1、如果您违反本协议的明文规定及精神,我们可能对您暂停、中断或终止提供本服务或其任何部分,但我们会在法律允许的范围内继续持有、保存您的您信息与使用本服务的记录。 + +
++ + 2、在发现我公司产品或服务被异常使用,或对我公司产品或服务的使用有合理疑义,或对我公司产品或服务的使用有违反法律规定或本协议约定之虞时,我公司有权不经通知先行暂停或终止您对于本服务使用。具体可能导致暂停或终止本软件服务的情形包括但不限于: + +
+1)根据本协议的约定;
++ + 2)根据法律法规及法律文书的规定; + +
+3)根据有权机关的要求;
++ + 4)您使用我公司的产品或服务的行为涉嫌违反国家法律法规及行政规定的; + +
++ + 5)本公司依据自行合理判断认为可能产生风险的; + +
++ + 6)您遭到他人投诉,且对方已经提供了一定证据的。 + +
++ + (四)若您停止使用我公司的产品或服务,我公司仍可能保有您的相关信息。 + +
++ + (五)禁止反向工程、反向编译和反向汇编:您不得对本软件产品进行反向工程(ReverseEngineer)、反向编译(Decompile)或反向汇编(Disassemble),同时不得改动编译在程序文件内部的任何资源。除法律、法规明文规定允许上述活动外,您必须遵守此协议限制。 + +
++ + (六) + 组件分割:我公司的产品或服务是作为一个单一产品而被授予许可使用,您不得将各个部分分开用于任何目的。 + +
++ + (七)个别授权:如需进行商业性的销售、复制、分发,包括但不限于软件销售、预装、捆绑等,必须获得我公司的书面授权和许可。 + +
++ + (八)保留权利:本协议未明示授权的其他一切权利仍归我公司所有,您使用其他权利时必须获得我公司的书面同意。 + +
+七、信息披露
++ + 我公司对您提供的信息严格保密,除具备下列情形外,不会向任何外部机构披露: + +
++ + 1)经过您事先同意而对外披露的您信息; + +
++ + 2)应法律法规或公权力部门(如法院、政府部门、上级监管机构等执法机构)的要求而披露的您信息; + +
++ + 3)当我公司涉及合并、收购或资产出售等重大交易时,我公司有权依据交易的需要将您信息提供给交易相对方及交易各方聘请的各中介机构(包括但不限于律师、会计师等),我们会在任何信息进行转让或受其他隐私权政策约束之前,继续确保其保密性并及时通知受影响方; + +
++ + 4)我公司可能会为了保护我公司产品自身、我公司员工和客户、我公司合作伙伴和其他公众的合法权利、利益和安全而披露您的信息; + +
++ + 八、 + Cookies的使用 + +
++ + 1)在您未拒绝接受cookies的情况下,我公司的产品或服务会在您的客户端设定或取用cookies,以便您能登录或使用依赖于cookies的产品或服务。我公司的产品或服务使用cookies可为您提供更加周到的个性化服务,包括推广服务; + +
++ + 2)您有权选择接受或拒绝接受cookies。您可以通过修改设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的产品的网络服务或功能; + +
++ + 3)通过我公司的产品或服务所设cookies所取得的有关信息,将适用本协议。 + +
+九、法律管辖和适用
++ + 本协议的订立、履行和解释及争议的解决均应适用中华人民共和国大陆地区适用之有效法律(但不包括其冲突法规则)。协议履行期间,凡因本协议引起的或与本协议有关的一切争议、纠纷,双方应首先友好协商解决;协商不成,您在此完全同意将纠纷或争议提交被告住所地人民法院管辖。 + +
+十、其他
++ + 1)因台风、地震、海啸、洪水、战争、计算机病毒感染、黑客攻击、网络通信故障等不能预见、不能控制的不可抗力因素,造成本我公司产品不能正常向您提供服务而可能导致的损失,我公司不承担责任; + +
++ + 2)您理解并同意,鉴于网络服务的特殊性,本协议可在您接受我公司产品或服务的过程中多次使用,未来为您提供服务时再次涉及到本协议服务内容时无需您另行签署; + +
++ + 3)知识产权,与我公司产品及服务相关的任何内容和资源的知识产权均属于我公司所有。未经我公司书面明确许可,任何单位和个人不得以任何方式将我公司产品或服务之内容和相关资源作全部或部分复制、转载、引用、编辑; + +
++ + 4)我公司产品或服务仅在您接受本协议条款并依此提供您信息且授权我公司产品按照上述条款的规定获取您信息的基础上提供服务,如您不同意本协议条款或不同意进行相应操作,则您将无法使用我公司产品的全部服务或相应部分服务; + +
++ + 5)若本协议中任何一条无论因何种原因完全或部分无效或不具有执行力,本协议的其他条款仍继续有效; + +
++ + 6)您在本协议项下对我公司的产品或服务的授权,将视为对我公司的授权。 + +
++ + 7)您如需更正所提供的信息,或希望停止接受我公司的产品或服务,或对本协议有任何疑问,请通过联系我公司在线客服或直接拨打客服电话: + 95113 的途径联系处理。 + +
++ + 8)我公司对本协议有最终解释权。 + +
++
a&&(a=u),n.push(u)}for(var h=0;ha&&(a=d)}return r.y0=o,r.max=a,r}function Bm(t){var e=0;d(t.children,function(t){Bm(t);var i=t.value;y(i)&&(i=i[0]),e+=i});var i=t.value;y(i)&&(i=i[0]),(null==i||isNaN(i))&&(i=e),i<0&&(i=0),y(t.value)?t.value[0]=i:t.value=i}function Vm(t,e,i){function n(){r.ignore=r.hoverIgnore}function o(){r.ignore=r.normalIgnore}tb.call(this);var a=new hM({z2:zP});a.seriesIndex=e.seriesIndex;var r=new rM({z2:BP,silent:t.getModel("label").get("silent")});this.add(a),this.add(r),this.updateData(!0,t,"normal",e,i),this.on("emphasis",n).on("normal",o).on("mouseover",n).on("mouseout",o)}function Gm(t,e,i){var n=t.getVisual("color"),o=t.getVisual("visualMeta");o&&0!==o.length||(n=null);var a=t.getModel("itemStyle").get("color");if(a)return a;if(n)return n;if(0===t.depth)return i.option.color[0];var r=i.option.color.length;return a=i.option.color[Fm(t)%r]}function Fm(t){for(var e=t;e.depth>1;)e=e.parentNode;return l(t.getAncestors()[0].children,e)}function Wm(t,e,i){return i!==RP.NONE&&(i===RP.SELF?t===e:i===RP.ANCESTOR?t===e||t.isAncestorOf(e):t===e||t.isDescendantOf(e))}function Hm(t,e,i){e.getData().setItemVisual(t.dataIndex,"color",i)}function Zm(t,e){var i=t.children||[];t.children=Um(i,e),i.length&&d(t.children,function(t){Zm(t,e)})}function Um(t,e){if("function"==typeof e)return t.sort(e);var i="asc"===e;return t.sort(function(t,e){var n=(t.getValue()-e.getValue())*(i?1:-1);return 0===n?(t.dataIndex-e.dataIndex)*(i?-1:1):n})}function Xm(t,e){return e=e||[0,0],f(["x","y"],function(i,n){var o=this.getAxis(i),a=e[n],r=t[n]/2;return"category"===o.type?o.getBandWidth():Math.abs(o.dataToCoord(a-r)-o.dataToCoord(a+r))},this)}function jm(t,e){return e=e||[0,0],f([0,1],function(i){var n=e[i],o=t[i]/2,a=[],r=[];return a[i]=n-o,r[i]=n+o,a[1-i]=r[1-i]=e[1-i],Math.abs(this.dataToPoint(a)[i]-this.dataToPoint(r)[i])},this)}function Ym(t,e){var i=this.getAxis(),n=e instanceof Array?e[0]:e,o=(t instanceof Array?t[0]:t)/2;return"category"===i.type?i.getBandWidth():Math.abs(i.dataToCoord(n-o)-i.dataToCoord(n+o))}function qm(t,e){return f(["Radius","Angle"],function(i,n){var o=this["get"+i+"Axis"](),a=e[n],r=t[n]/2,s="dataTo"+i,l="category"===o.type?o.getBandWidth():Math.abs(o[s](a-r)-o[s](a+r));return"Angle"===i&&(l=l*Math.PI/180),l},this)}function Km(t){var e,i=t.type;if("path"===i){var n=t.shape,o=null!=n.width&&null!=n.height?{x:n.x||0,y:n.y||0,width:n.width,height:n.height}:null,a=lv(n);(e=Xn(a,null,o,n.layout||"center")).__customPathData=a}else"image"===i?(e=new fi({})).__customImagePath=t.style.image:"text"===i?(e=new rM({})).__customText=t.style.text:e=new(0,zM[i.charAt(0).toUpperCase()+i.slice(1)]);return e.__customGraphicType=i,e.name=t.name,e}function $m(t,e,n,o,a,r,s){var l={},u=n.style||{};if(n.shape&&(l.shape=i(n.shape)),n.position&&(l.position=n.position.slice()),n.scale&&(l.scale=n.scale.slice()),n.origin&&(l.origin=n.origin.slice()),n.rotation&&(l.rotation=n.rotation),"image"===t.type&&n.style){h=l.style={};d(["x","y","width","height"],function(e){Jm(e,h,u,t.style,r)})}if("text"===t.type&&n.style){var h=l.style={};d(["x","y"],function(e){Jm(e,h,u,t.style,r)}),!u.hasOwnProperty("textFill")&&u.fill&&(u.textFill=u.fill),!u.hasOwnProperty("textStroke")&&u.stroke&&(u.textStroke=u.stroke)}if("group"!==t.type&&(t.useStyle(u),r)){t.style.opacity=0;var c=u.opacity;null==c&&(c=1),To(t,{style:{opacity:c}},o,e)}r?t.attr(l):Io(t,l,o,e),n.hasOwnProperty("z2")&&t.attr("z2",n.z2||0),n.hasOwnProperty("silent")&&t.attr("silent",n.silent),n.hasOwnProperty("invisible")&&t.attr("invisible",n.invisible),n.hasOwnProperty("ignore")&&t.attr("ignore",n.ignore),n.hasOwnProperty("info")&&t.attr("info",n.info);var f=n.styleEmphasis,p=!1===f;t.__cusHasEmphStl&&null==f||!t.__cusHasEmphStl&&p||(ro(t,f),t.__cusHasEmphStl=!p),s&&po(t,!p)}function Jm(t,e,i,n,o){null==i[t]||o||(e[t]=i[t],i[t]=n[t])}function Qm(t,e,i,n){function o(t){null==t&&(t=h),v&&(c=e.getItemModel(t),d=c.getModel(UP),f=c.getModel(XP),p=e.getItemVisual(t,"color"),v=!1)}var s=t.get("renderItem"),l=t.coordinateSystem,u={};l&&(u=l.prepareCustoms?l.prepareCustoms():YP[l.type](l));var h,c,d,f,p,g=r({getWidth:n.getWidth,getHeight:n.getHeight,getZr:n.getZr,getDevicePixelRatio:n.getDevicePixelRatio,value:function(t,i){return null==i&&(i=h),e.get(e.getDimension(t||0),i)},style:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(HP).getItemStyle();null!=p&&(r.fill=p);var s=e.getItemVisual(n,"opacity");return null!=s&&(r.opacity=s),mo(r,d,null,{autoColor:p,isRectText:!0}),r.text=d.getShallow("show")?A(t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},styleEmphasis:function(i,n){null==n&&(n=h),o(n);var r=c.getModel(ZP).getItemStyle();return mo(r,f,null,{isRectText:!0},!0),r.text=f.getShallow("show")?D(t.getFormattedLabel(n,"emphasis"),t.getFormattedLabel(n,"normal"),_u(e,n)):null,i&&a(r,i),r},visual:function(t,i){return null==i&&(i=h),e.getItemVisual(i,t)},barLayout:function(t){if(l.getBaseAxis)return Ll(r({axis:l.getBaseAxis()},t),n)},currentSeriesIndices:function(){return i.getCurrentSeriesIndices()},font:function(t){return So(t,i)}},u.api||{}),m={context:{},seriesId:t.id,seriesName:t.name,seriesIndex:t.seriesIndex,coordSys:u.coordSys,dataInsideLength:e.count(),encode:tv(t.getData())},v=!0;return function(t,i){return h=t,v=!0,s&&s(r({dataIndexInside:t,dataIndex:e.getRawIndex(t),actionType:i?i.type:null},m),g)}}function tv(t){var e={};return d(t.dimensions,function(i,n){var o=t.getDimensionInfo(i);if(!o.isExtraCoord){var a=o.coordDim;(e[a]=e[a]||[])[o.coordDimIndex]=n}}),e}function ev(t,e,i,n,o,a){return(t=iv(t,e,i,n,o,a,!0))&&a.setItemGraphicEl(e,t),t}function iv(t,e,i,n,o,a,r){var s=!i,l=(i=i||{}).type,u=i.shape,h=i.style;if(t&&(s||null!=l&&l!==t.__customGraphicType||"path"===l&&uv(u)&&lv(u)!==t.__customPathData||"image"===l&&hv(h,"image")&&h.image!==t.__customImagePath||"text"===l&&hv(u,"text")&&h.text!==t.__customText)&&(o.remove(t),t=null),!s){var c=!t;return!t&&(t=Km(i)),$m(t,e,i,n,a,c,r),"group"===l&&nv(t,e,i,n,a),o.add(t),t}}function nv(t,e,i,n,o){var a=i.children,r=a?a.length:0,s=i.$mergeChildren,l="byName"===s||i.diffChildrenByName,u=!1===s;if(r||l||u)if(l)ov({oldChildren:t.children()||[],newChildren:a||[],dataIndex:e,animatableModel:n,group:t,data:o});else{u&&t.removeAll();for(var h=0;h