Browse Source

no message

Fly 2 years ago
parent
commit
6435d5f125
100 changed files with 7445 additions and 26349 deletions
  1. 247 0
      .history/pages/contract/sustainability/freight-space_20230531091342.vue
  2. 247 0
      .history/pages/contract/sustainability/freight-space_20230531091400.vue
  3. 1366 0
      .history/pages/contract/sustainability/index_20230526104524.vue
  4. 1366 0
      .history/pages/contract/sustainability/index_20230531091400.vue
  5. 142 0
      .history/utils/websocket_20230531091125.js
  6. 142 0
      .history/utils/websocket_20230531091400.js
  7. 4 0
      App.vue
  8. 7 0
      api/index.js
  9. 3171 0
      components/k-line - 副本 (2)/data.json
  10. 323 0
      components/k-line - 副本 (2)/k-line.nvue
  11. 33 0
      components/k-line - 副本/k-line.vue
  12. 32 14
      components/k-line/k-line.vue
  13. BIN
      hybrid.zip
  14. 11 6
      hybrid/html/css/kline.css
  15. 337 214
      hybrid/html/js/kline.js
  16. 11 9
      hybrid/html/js/mock.js
  17. 6 6
      hybrid/html/local.html
  18. 0 1216
      hybrid_01/css/common.css
  19. 0 749
      hybrid_01/css/dataMap.css
  20. BIN
      hybrid_01/image/buy.png
  21. BIN
      hybrid_01/image/sell.png
  22. 0 1046
      hybrid_01/index.html
  23. 0 33
      hybrid_01/javascripts/dataMap.js
  24. 0 117
      hybrid_01/javascripts/jquery.cookie.js
  25. 0 239
      hybrid_01/javascripts/main.js
  26. 0 6988
      hybrid_01/javascripts/socket.io.js
  27. 0 27
      hybrid_01/kefu.html
  28. 0 10253
      hybrid_01/lib/jquery.js
  29. 0 2
      hybrid_01/lib/layer_mobile/layer.js
  30. 0 2
      hybrid_01/lib/layer_mobile/mobile/layer.js
  31. 0 1
      hybrid_01/lib/layer_mobile/mobile/need/layer.css
  32. BIN
      hybrid_01/lib/layer_mobile/theme/default/icon-ext.png
  33. BIN
      hybrid_01/lib/layer_mobile/theme/default/icon.png
  34. 0 1
      hybrid_01/lib/layer_mobile/theme/default/layer.css
  35. BIN
      hybrid_01/lib/layer_mobile/theme/default/loading-0.gif
  36. BIN
      hybrid_01/lib/layer_mobile/theme/default/loading-1.gif
  37. BIN
      hybrid_01/lib/layer_mobile/theme/default/loading-2.gif
  38. 0 6
      hybrid_01/lib/vue.min.js
  39. 0 2258
      hybrid_01/second.html
  40. 0 19
      hybrid_01/tradeview/CONTRIBUTING.md
  41. 0 17
      hybrid_01/tradeview/README.md
  42. 0 1230
      hybrid_01/tradeview/charting_library/charting_library.min.d.ts
  43. 0 1
      hybrid_01/tradeview/charting_library/charting_library.min.js
  44. 0 220
      hybrid_01/tradeview/charting_library/datafeed-api.d.ts
  45. 0 4
      hybrid_01/tradeview/charting_library/static/bundles/13.280894673316ad6ac6f2.js
  46. BIN
      hybrid_01/tradeview/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur
  47. BIN
      hybrid_01/tradeview/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur
  48. 0 78
      hybrid_01/tradeview/charting_library/static/bundles/ds-property-pages.1a3d233b8aa4552a7048.js
  49. 0 6
      hybrid_01/tradeview/charting_library/static/bundles/editobjectdialog.25fa62e6b4f8125e697e.js
  50. BIN
      hybrid_01/tradeview/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur
  51. 0 14
      hybrid_01/tradeview/charting_library/static/bundles/go-to-date-dialog-impl.5faeb6b7a961fd527d9b.js
  52. BIN
      hybrid_01/tradeview/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur
  53. BIN
      hybrid_01/tradeview/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur
  54. 0 1
      hybrid_01/tradeview/charting_library/static/bundles/ie-fallback-logos.b27f679ee44b7d0992e1.js
  55. 0 32
      hybrid_01/tradeview/charting_library/static/bundles/lazy-jquery-ui.1803178846ddad426aeb.js
  56. 0 15
      hybrid_01/tradeview/charting_library/static/bundles/lazy-velocity.97588d47c84409f2bc4b.js
  57. 0 697
      hybrid_01/tradeview/charting_library/static/bundles/library.19c99ed5d0307c67f071.js
  58. 0 1
      hybrid_01/tradeview/charting_library/static/bundles/library.a8de6f8cf4dda6895071c6ec45f900d9.css
  59. 0 77
      hybrid_01/tradeview/charting_library/static/bundles/lt-pane-views.96fd54d9b7bad567d490.js
  60. 0 136
      hybrid_01/tradeview/charting_library/static/bundles/new.css
  61. 0 9
      hybrid_01/tradeview/charting_library/static/bundles/objecttreedialog.3f22589e98a1cedf9028.js
  62. 0 1
      hybrid_01/tradeview/charting_library/static/bundles/propertypagesfactory.54b21a18753b2d8c83c2.js
  63. 0 6
      hybrid_01/tradeview/charting_library/static/bundles/symbol-info-dialog-impl.f6bc55c14cd39967110a.js
  64. 0 9
      hybrid_01/tradeview/charting_library/static/bundles/take-chart-image-dialog-impl.5ae42a6bc17c617b055f.js
  65. 0 1
      hybrid_01/tradeview/charting_library/static/bundles/vendors.a94ef44ed5c201cefcf6ad7460788c1a.css
  66. 0 169
      hybrid_01/tradeview/charting_library/static/bundles/vendors.fd8604c09abed9f6643a.js
  67. BIN
      hybrid_01/tradeview/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur
  68. 0 414
      hybrid_01/tradeview/charting_library/static/fonts/fontawesome-webfont.svg
  69. BIN
      hybrid_01/tradeview/charting_library/static/fonts/fontawesome-webfont.ttf
  70. BIN
      hybrid_01/tradeview/charting_library/static/fonts/fontawesome-webfont.woff
  71. BIN
      hybrid_01/tradeview/charting_library/static/images/balloon.png
  72. BIN
      hybrid_01/tradeview/charting_library/static/images/bar-loader.gif
  73. BIN
      hybrid_01/tradeview/charting_library/static/images/button-bg.png
  74. BIN
      hybrid_01/tradeview/charting_library/static/images/charting_library/logo-widget-copyright-faded.png
  75. BIN
      hybrid_01/tradeview/charting_library/static/images/charting_library/logo-widget-copyright.png
  76. BIN
      hybrid_01/tradeview/charting_library/static/images/controlll.png
  77. BIN
      hybrid_01/tradeview/charting_library/static/images/delayed.png
  78. BIN
      hybrid_01/tradeview/charting_library/static/images/dialogs/checkbox.png
  79. BIN
      hybrid_01/tradeview/charting_library/static/images/dialogs/close-flat.png
  80. BIN
      hybrid_01/tradeview/charting_library/static/images/dialogs/large-slider-handle.png
  81. BIN
      hybrid_01/tradeview/charting_library/static/images/dialogs/linewidth-slider.png
  82. BIN
      hybrid_01/tradeview/charting_library/static/images/dialogs/opacity-slider.png
  83. BIN
      hybrid_01/tradeview/charting_library/static/images/icons.png
  84. BIN
      hybrid_01/tradeview/charting_library/static/images/prediction-clock-black.png
  85. BIN
      hybrid_01/tradeview/charting_library/static/images/prediction-clock-white.png
  86. BIN
      hybrid_01/tradeview/charting_library/static/images/prediction-failure-white.png
  87. BIN
      hybrid_01/tradeview/charting_library/static/images/prediction-success-white.png
  88. BIN
      hybrid_01/tradeview/charting_library/static/images/select-bg.png
  89. BIN
      hybrid_01/tradeview/charting_library/static/images/sidetoolbar/instruments.png
  90. BIN
      hybrid_01/tradeview/charting_library/static/images/sidetoolbar/toolgroup.png
  91. 0 1
      hybrid_01/tradeview/charting_library/static/images/svg/chart/bucket2.svg
  92. 0 1
      hybrid_01/tradeview/charting_library/static/images/svg/chart/font.svg
  93. 0 1
      hybrid_01/tradeview/charting_library/static/images/svg/chart/large-slider-handle.svg
  94. 0 1
      hybrid_01/tradeview/charting_library/static/images/svg/chart/pencil2.svg
  95. 0 1
      hybrid_01/tradeview/charting_library/static/images/svg/question-mark-rounded.svg
  96. BIN
      hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-bg-gradient.png
  97. BIN
      hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-bg.png
  98. BIN
      hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-check.png
  99. BIN
      hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-sprite.png
  100. 0 0
      hybrid_01/tradeview/charting_library/static/images/warning-icon.png

+ 247 - 0
.history/pages/contract/sustainability/freight-space_20230531091342.vue

@@ -0,0 +1,247 @@
+<template>
+	<view class="">
+		<template v-if="leverTrade && leverTrade.trades_cur && leverTrade.trades_cur.length > 0">
+			<view class="lable-title">
+				<text class="lable-title-text">仓位信息</text>
+				<text class="lable-title-btn" @click.stop="setCloseLeverAll()">全部平仓</text>
+			</view>
+			<template v-for="item in leverTrade.trades_cur">
+				<view class="content-box" :rise-fall="stocksColor">
+					<view class="content-top">
+						<view class="top-left">
+							<view class="top-left-title">
+								<text>{{ item.symbol }}</text>
+								<text>{{ item.type_name }}</text>
+								<view class="top-left-share" @click.stop="$emit('shareContent' , item)">
+									<text class="icon-size iconfont">&#xe8b0;</text>
+									<text class="icon-size">分享</text>
+								</view>
+							</view>
+							<view class="top-left-b">
+								<text>{{ item.multiple }}倍杠杆</text>
+								<text class="top-left-b-tag"></text>
+							</view>
+						</view>
+
+						<view class="top-right" :class="$setColor(item.profits)">
+							<text class="color">{{ item.profits }}</text>
+							<text class="top-right-float color"><text>浮动盈亏</text>{{ $getChange(item , 1) }}%</text>
+						</view>
+					</view>
+					<view class="content-info">
+						<view class="info-item">
+							<text class="info-item-lable">保证金(USDT)</text>
+							<text class="info-item-val">{{ item.caution_money }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">开仓价格(USDT)</text>
+							<text class="info-item-val">{{ item.origin_price }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">标记价格(USDT)</text>
+							<text class="info-item-val">{{ item.update_price }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">持仓数量(张)</text>
+							<text class="info-item-val">{{ item.share }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">风险率(%)</text>
+							<text class="info-item-val">{{ leverTrade.hazard_rate }}</text>
+							<!-- {{ item.caution_money }} -->
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计强平价(USDT)</text>
+							<text class="info-item-val">{{ $getChange(item , 3) }}</text>
+							<!-- {{ item.caution_money }} -->
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计止损(USDT)</text>
+							<text class="info-item-val"
+								@click.stop="setRestrict(item)">{{ item.stop_loss_price || '--' }} <text
+									class="iconfont">&#xe610;</text></text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计止盈(USDT)</text>
+							<text class="info-item-val" @click.stop="setRestrict(item)">
+								{{ item.target_profit_price	 || '--' }}
+								<text class="iconfont">&#xe610;</text>
+							</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计创建时间(USDT)</text>
+							<text class="info-item-val">{{ item.transaction_time }}</text>
+						</view>
+					</view>
+					<view class="content-btns">
+						<view class="content-btn-item" @click.stop="setCloseLever(item)">
+							平仓
+						</view>
+						<!-- @click.stop="setInversion(item)" -->
+						<view class="content-btn-item">
+							反向开仓
+						</view>
+						<view class="content-btn-item">
+							加仓
+						</view>
+					</view>
+				</view>
+				<gap />
+			</template>
+		</template>
+		<template v-else>
+			<empty class="empty-content" />
+		</template>
+
+	</view>
+</template>
+
+<script>
+	import {
+		Api_setCloseLever,
+		Api_setBatchClose
+	} from "@/api/index.js"
+	import {
+		mapGetters
+	} from 'vuex'
+	export default {
+		name: 'freight-space',
+		props: {
+
+			myTransaction: {
+				type: Array,
+				default: () => {
+					return []
+				}
+			},
+			currency: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			},
+		},
+		computed: {
+			...mapGetters([
+				"stocksColor",
+				'orderList',
+				'leverTrade'
+			])
+		},
+		data() {
+			return {
+				closeLeverItem: null,
+
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+			setCloseLever(item) {
+				this.closeLeverItem = item;
+				const obj = {
+					title: '平仓',
+					closeLeverContent: '如果存在平仓挂单(限价止盈止损),将会在全平前被撤单,确定平仓吗?'
+				}
+				this.$emit('setCloseLever', item)
+			},
+			setInversion() {
+
+				this.closeLeverItem = -1;
+				const obj = {
+					title: '反向开仓',
+					closeLeverContent: '如果存在平仓挂单(限价止盈止损),将会在全平前被撤单,确定反向开仓吗?',
+				}
+				this.$emit('setDepot', obj)
+			},
+			setCloseLeverAll() {
+				this.closeLeverItem = null;
+				const obj = {
+					title: '全部平仓',
+					closeLeverContent: '如果存在平仓挂单(限价止盈止损),将会在全平前被撤单,确定全部平仓吗?',
+				}
+				this.$emit('setDepot', obj)
+				// this.title = '全部平仓';
+				// this.closeLeverContent = '';
+				// this.closeLeverItem = null;
+				// this.$refs.unopenRef.open();
+			},
+			confirm() {
+				if (this.myTransaction.length > 0) {
+					uni.showLoading({
+						title: '',
+						mask: true
+					})
+					if (this.closeLeverItem && this.closeLeverItem !== -1) {
+						// 平仓
+						Api_setCloseLever({
+							id: this.closeLeverItem.id
+						}).then(res => {
+							setTimeout(() => {
+								uni.showToast({
+									title: '平仓成功',
+									icon: 'none'
+								})
+								setTimeout(() => {
+									uni.hideToast()
+									this.$emit('closeLeverSuccess')
+								}, 300)
+							}, 201)
+
+						}).finally(() => {
+							setTimeout(() => {
+								uni.hideLoading()
+							}, 200)
+						})
+					} else if (this.closeLeverItem == -1) {
+						// 反向开仓
+
+					} else {
+						// 全部平仓
+						
+						Api_setBatchClose({
+							type: 0,
+							currency_id: this.currency.currency_id
+						}).then(res => {
+							setTimeout(() => {
+								uni.showToast({
+									title: '平仓成功',
+									icon: 'none'
+								})
+								setTimeout(() => {
+									uni.hideToast()
+									this.$emit('closeLeverSuccess')
+								}, 300)
+							}, 201)
+						}).finally(() => {
+							setTimeout(() => {
+								uni.hideLoading()
+							}, 200)
+						})
+					}
+
+				}
+
+			},
+			// 设置止盈止损
+			setRestrict(item) {
+
+				console.log('setRestrict = ', item)
+				this.$emit('setProfitLoss', item)
+
+				// this.$nextTick(() => {
+				// 	this.$refs.restrictRef.open(item)
+				// })
+			},
+			setSuccess() {
+				this.$emit('closeLeverSuccess')
+			}
+		}
+
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import "~./index.scss"
+</style>

+ 247 - 0
.history/pages/contract/sustainability/freight-space_20230531091400.vue

@@ -0,0 +1,247 @@
+<template>
+	<view class="">
+		<template v-if="leverTrade && leverTrade.tradesList && leverTrade.tradesList.length > 0">
+			<view class="lable-title">
+				<text class="lable-title-text">仓位信息</text>
+				<text class="lable-title-btn" @click.stop="setCloseLeverAll()">全部平仓</text>
+			</view>
+			<template v-for="item in leverTrade.tradesList">
+				<view class="content-box" :rise-fall="stocksColor">
+					<view class="content-top">
+						<view class="top-left">
+							<view class="top-left-title">
+								<text>{{ item.symbol }}</text>
+								<text>{{ item.type_name }}</text>
+								<view class="top-left-share" @click.stop="$emit('shareContent' , item)">
+									<text class="icon-size iconfont">&#xe8b0;</text>
+									<text class="icon-size">分享</text>
+								</view>
+							</view>
+							<view class="top-left-b">
+								<text>{{ item.multiple }}倍杠杆</text>
+								<text class="top-left-b-tag"></text>
+							</view>
+						</view>
+
+						<view class="top-right" :class="$setColor(item.profits)">
+							<text class="color">{{ item.profits }}</text>
+							<text class="top-right-float color"><text>浮动盈亏</text>{{ $getChange(item , 1) }}%</text>
+						</view>
+					</view>
+					<view class="content-info">
+						<view class="info-item">
+							<text class="info-item-lable">保证金(USDT)</text>
+							<text class="info-item-val">{{ item.caution_money }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">开仓价格(USDT)</text>
+							<text class="info-item-val">{{ item.origin_price }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">标记价格(USDT)</text>
+							<text class="info-item-val">{{ item.update_price }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">持仓数量(张)</text>
+							<text class="info-item-val">{{ item.share }}</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">风险率(%)</text>
+							<text class="info-item-val">{{ leverTrade.hazard_rate }}</text>
+							<!-- {{ item.caution_money }} -->
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计强平价(USDT)</text>
+							<text class="info-item-val">{{ $getChange(item , 3) }}</text>
+							<!-- {{ item.caution_money }} -->
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计止损(USDT)</text>
+							<text class="info-item-val"
+								@click.stop="setRestrict(item)">{{ item.stop_loss_price || '--' }} <text
+									class="iconfont">&#xe610;</text></text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计止盈(USDT)</text>
+							<text class="info-item-val" @click.stop="setRestrict(item)">
+								{{ item.target_profit_price	 || '--' }}
+								<text class="iconfont">&#xe610;</text>
+							</text>
+						</view>
+						<view class="info-item">
+							<text class="info-item-lable">预计创建时间(USDT)</text>
+							<text class="info-item-val">{{ item.transaction_time }}</text>
+						</view>
+					</view>
+					<view class="content-btns">
+						<view class="content-btn-item" @click.stop="setCloseLever(item)">
+							平仓
+						</view>
+						<!-- @click.stop="setInversion(item)" -->
+						<view class="content-btn-item">
+							反向开仓
+						</view>
+						<view class="content-btn-item">
+							加仓
+						</view>
+					</view>
+				</view>
+				<gap />
+			</template>
+		</template>
+		<template v-else>
+			<empty class="empty-content" />
+		</template>
+
+	</view>
+</template>
+
+<script>
+	import {
+		Api_setCloseLever,
+		Api_setBatchClose
+	} from "@/api/index.js"
+	import {
+		mapGetters
+	} from 'vuex'
+	export default {
+		name: 'freight-space',
+		props: {
+
+			myTransaction: {
+				type: Array,
+				default: () => {
+					return []
+				}
+			},
+			currency: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			},
+		},
+		computed: {
+			...mapGetters([
+				"stocksColor",
+				'orderList',
+				'leverTrade'
+			])
+		},
+		data() {
+			return {
+				closeLeverItem: null,
+
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+			setCloseLever(item) {
+				this.closeLeverItem = item;
+				const obj = {
+					title: '平仓',
+					closeLeverContent: '如果存在平仓挂单(限价止盈止损),将会在全平前被撤单,确定平仓吗?'
+				}
+				this.$emit('setCloseLever', item)
+			},
+			setInversion() {
+
+				this.closeLeverItem = -1;
+				const obj = {
+					title: '反向开仓',
+					closeLeverContent: '如果存在平仓挂单(限价止盈止损),将会在全平前被撤单,确定反向开仓吗?',
+				}
+				this.$emit('setDepot', obj)
+			},
+			setCloseLeverAll() {
+				this.closeLeverItem = null;
+				const obj = {
+					title: '全部平仓',
+					closeLeverContent: '如果存在平仓挂单(限价止盈止损),将会在全平前被撤单,确定全部平仓吗?',
+				}
+				this.$emit('setDepot', obj)
+				// this.title = '全部平仓';
+				// this.closeLeverContent = '';
+				// this.closeLeverItem = null;
+				// this.$refs.unopenRef.open();
+			},
+			confirm() {
+				if (this.myTransaction.length > 0) {
+					uni.showLoading({
+						title: '',
+						mask: true
+					})
+					if (this.closeLeverItem && this.closeLeverItem !== -1) {
+						// 平仓
+						Api_setCloseLever({
+							id: this.closeLeverItem.id
+						}).then(res => {
+							setTimeout(() => {
+								uni.showToast({
+									title: '平仓成功',
+									icon: 'none'
+								})
+								setTimeout(() => {
+									uni.hideToast()
+									this.$emit('closeLeverSuccess')
+								}, 300)
+							}, 201)
+
+						}).finally(() => {
+							setTimeout(() => {
+								uni.hideLoading()
+							}, 200)
+						})
+					} else if (this.closeLeverItem == -1) {
+						// 反向开仓
+
+					} else {
+						// 全部平仓
+						
+						Api_setBatchClose({
+							type: 0,
+							currency_id: this.currency.currency_id
+						}).then(res => {
+							setTimeout(() => {
+								uni.showToast({
+									title: '平仓成功',
+									icon: 'none'
+								})
+								setTimeout(() => {
+									uni.hideToast()
+									this.$emit('closeLeverSuccess')
+								}, 300)
+							}, 201)
+						}).finally(() => {
+							setTimeout(() => {
+								uni.hideLoading()
+							}, 200)
+						})
+					}
+
+				}
+
+			},
+			// 设置止盈止损
+			setRestrict(item) {
+
+				console.log('setRestrict = ', item)
+				this.$emit('setProfitLoss', item)
+
+				// this.$nextTick(() => {
+				// 	this.$refs.restrictRef.open(item)
+				// })
+			},
+			setSuccess() {
+				this.$emit('closeLeverSuccess')
+			}
+		}
+
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import "~./index.scss"
+</style>

File diff suppressed because it is too large
+ 1366 - 0
.history/pages/contract/sustainability/index_20230526104524.vue


File diff suppressed because it is too large
+ 1366 - 0
.history/pages/contract/sustainability/index_20230531091400.vue


+ 142 - 0
.history/utils/websocket_20230531091125.js

@@ -0,0 +1,142 @@
+// import socket from "@/utils/websocket.js"
+import config from "./config.js"
+import { getStorageSync } from "./common.js"
+
+let socket_api = `${config.socketUrl}:2000`
+// import io from '@/js_sdk/hyoga-uni-socket_io/uni-socket.io.js';
+import io from '@hyoga/uni-socket.io';
+import store from '@/store'
+import {
+	decimalNum
+} from "./common.js"
+
+
+
+
+const nums = (arr = []) => {
+	const att = arr.map(el => {
+		return el[1]
+	})
+	const num = Math.max.apply(null, att)
+	arr.forEach(el => {
+		let n = (el[1] / num * 100).toFixed(2);
+		el[2] = n > 100 ? 100 : n;
+	})
+	return arr
+}
+
+let socket = null
+
+const filtration = (msg) => {
+	if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
+		msg.currency_id) {
+		return true
+	} else {
+		return false
+	}
+}
+// closeSocket();
+export const startSocket = (data) => {
+	console.log('closeSocket 初始化')
+	closeSocket();
+	socket = io(socket_api, {
+		query: {},
+		transports: ['websocket', 'polling'],
+		timeout: 5000,
+	});
+	socket.on('connect', () => {
+		socket.on('market_depth', (msg) => {
+			if (filtration(msg)) {
+				// console.log('market_depth = ' , msg)
+				// 收到服务器推送的消息,可以跟进自身业务进行操作
+				// var buyIn = msg.bids.slice(0, 7);
+				store.commit('websocket/set_bids', nums(msg.bids))
+				// var out = msg.asks.slice(0, 7);
+				store.commit('websocket/set_asks', nums(msg.asks))
+			}
+		})
+		socket.on('daymarket', (msg) => {
+			// 收到服务器推送的消息,可以跟进自身业务进行操作
+			if (filtration(msg)) {
+				store.commit('websocket/set_daymarket', msg)
+			}
+		})
+		socket.on('kline', (msg) => {
+			// 收到服务器推送的消息,可以跟进自身业务进行操作
+			if (filtration(msg)) {
+				console.log('kline = ' , msg , new Date().getTime())
+				const data = {
+					// id:new Date().getTime(), // 时间戳
+					id:msg.time, // 时间戳
+					open:msg.open,
+					close:msg.close,
+					high:msg.high,
+					low:msg.low,
+					vol:msg.volume,
+					amount:msg.amount,
+					count:msg.count || 0,
+					// id	int	时间戳
+					// open	float	开盘价
+					// close	float	收盘价
+					// high	float	最高价
+					// low	float	最低价
+					// vol	float	成交额,VOL副图需要用到该参数
+					// amount	float	成交量,在选择器里面需要用到该参数
+					// count	int	成交笔数,当前为预留字段,你那边没有这个数据的话传个0就行,但是不能不传
+					
+					
+				}
+			}
+		})
+		// socket.emit('login', getStorageSync('shareCode'));
+		socket.on('lever_trade', (msg) => {
+			// if (filtration(msg)) {
+			// 	console.log('lever_trade 133 = ' , JSON.parse(msg.trades_cur))
+			// 	const trades_cur = JSON.parse(msg.trades_cur)
+			// 	const obj = Object.assign({} , msg , {trades_cur:trades_cur})
+			// 	store.commit('websocket/set_lever_trade', obj)
+			// }
+			const tradesList = JSON.parse(msg.tradesList)
+			const obj = Object.assign({} , msg , {tradesList:tradesList})
+			store.commit('websocket/set_lever_trade', obj)
+		})
+
+	})
+
+
+
+	return false
+	if (socketObj[data.type]) {
+		socketObj[data.type].disconnect();
+		socketObj[data.type] = null
+	};
+	socketObj[data.type] = io(socket_api, {
+		query: {},
+		transports: ['websocket', 'polling'],
+		timeout: 5000,
+	});
+	socketObj[data.type].on(data.type, (msg) => {
+		if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
+			msg.currency_id) {
+			if (msg.type == 'market_depth') {
+				// var buyIn = msg.bids.slice(0, 7);
+				store.commit('websocket/set_bids', nums(msg.bids))
+				// var out = msg.asks.slice(0, 7);
+				store.commit('websocket/set_asks', nums(msg.asks))
+			}
+			if (msg.type == 'daymarket') {
+				// state.daymarket = msg;
+				store.commit('websocket/set_daymarket', msg)
+			}
+
+		}
+
+	});
+}
+
+export const closeSocket = () => {
+	try {
+		socket && socket.disconnect()
+		socket = null;
+	} catch {}
+}

+ 142 - 0
.history/utils/websocket_20230531091400.js

@@ -0,0 +1,142 @@
+// import socket from "@/utils/websocket.js"
+import config from "./config.js"
+import { getStorageSync } from "./common.js"
+
+let socket_api = `${config.socketUrl}:2000`
+// import io from '@/js_sdk/hyoga-uni-socket_io/uni-socket.io.js';
+import io from '@hyoga/uni-socket.io';
+import store from '@/store'
+import {
+	decimalNum
+} from "./common.js"
+
+
+
+
+const nums = (arr = []) => {
+	const att = arr.map(el => {
+		return el[1]
+	})
+	const num = Math.max.apply(null, att)
+	arr.forEach(el => {
+		let n = (el[1] / num * 100).toFixed(2);
+		el[2] = n > 100 ? 100 : n;
+	})
+	return arr
+}
+
+let socket = null
+
+const filtration = (msg) => {
+	if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
+		msg.currency_id) {
+		return true
+	} else {
+		return false
+	}
+}
+// closeSocket();
+export const startSocket = (data) => {
+	console.log('closeSocket 初始化')
+	closeSocket();
+	socket = io(socket_api, {
+		query: {},
+		transports: ['websocket', 'polling'],
+		timeout: 5000,
+	});
+	socket.on('connect', () => {
+		socket.on('market_depth', (msg) => {
+			if (filtration(msg)) {
+				// console.log('market_depth = ' , msg)
+				// 收到服务器推送的消息,可以跟进自身业务进行操作
+				// var buyIn = msg.bids.slice(0, 7);
+				store.commit('websocket/set_bids', nums(msg.bids))
+				// var out = msg.asks.slice(0, 7);
+				store.commit('websocket/set_asks', nums(msg.asks))
+			}
+		})
+		socket.on('daymarket', (msg) => {
+			// 收到服务器推送的消息,可以跟进自身业务进行操作
+			if (filtration(msg)) {
+				store.commit('websocket/set_daymarket', msg)
+			}
+		})
+		socket.on('kline', (msg) => {
+			// 收到服务器推送的消息,可以跟进自身业务进行操作
+			if (filtration(msg)) {
+				console.log('kline = ' , msg , new Date().getTime())
+				const data = {
+					// id:new Date().getTime(), // 时间戳
+					id:msg.time, // 时间戳
+					open:msg.open,
+					close:msg.close,
+					high:msg.high,
+					low:msg.low,
+					vol:msg.volume,
+					amount:msg.amount,
+					count:msg.count || 0,
+					// id	int	时间戳
+					// open	float	开盘价
+					// close	float	收盘价
+					// high	float	最高价
+					// low	float	最低价
+					// vol	float	成交额,VOL副图需要用到该参数
+					// amount	float	成交量,在选择器里面需要用到该参数
+					// count	int	成交笔数,当前为预留字段,你那边没有这个数据的话传个0就行,但是不能不传
+					
+					
+				}
+			}
+		})
+		// socket.emit('login', getStorageSync('shareCode'));
+		socket.on('lever_trade', (msg) => {
+			// if (filtration(msg)) {
+			// 	console.log('lever_trade 133 = ' , JSON.parse(msg.tradesList))
+			// 	const tradesList = JSON.parse(msg.tradesList)
+			// 	const obj = Object.assign({} , msg , {tradesList:tradesList})
+			// 	store.commit('websocket/set_lever_trade', obj)
+			// }
+			const tradesList = JSON.parse(msg.tradesList)
+			const obj = Object.assign({} , msg , {tradesList:tradesList})
+			store.commit('websocket/set_lever_trade', obj)
+		})
+
+	})
+
+
+
+	return false
+	if (socketObj[data.type]) {
+		socketObj[data.type].disconnect();
+		socketObj[data.type] = null
+	};
+	socketObj[data.type] = io(socket_api, {
+		query: {},
+		transports: ['websocket', 'polling'],
+		timeout: 5000,
+	});
+	socketObj[data.type].on(data.type, (msg) => {
+		if (store.getters.currencyVal.legal_id == msg.legal_id && store.getters.currencyVal.currency_id ==
+			msg.currency_id) {
+			if (msg.type == 'market_depth') {
+				// var buyIn = msg.bids.slice(0, 7);
+				store.commit('websocket/set_bids', nums(msg.bids))
+				// var out = msg.asks.slice(0, 7);
+				store.commit('websocket/set_asks', nums(msg.asks))
+			}
+			if (msg.type == 'daymarket') {
+				// state.daymarket = msg;
+				store.commit('websocket/set_daymarket', msg)
+			}
+
+		}
+
+	});
+}
+
+export const closeSocket = () => {
+	try {
+		socket && socket.disconnect()
+		socket = null;
+	} catch {}
+}

+ 4 - 0
App.vue

@@ -79,4 +79,8 @@
 	::v-deep uni-tabbar {
 		z-index: 88 !important;
 	}
+	
+	iframe{
+		border: none !important;
+	}
 </style>

+ 7 - 0
api/index.js

@@ -193,6 +193,13 @@ export function Api_checkGoogle (code) {
 	return axios.post(`/api/user/check_google`, code)
 }
 
+//  K线数初始化数据
+export function Api_newTimeshar (code) {
+	return axios.get(`/api/currency/new_timeshar`, code)
+}
+
+
+
 // // 根据手机号登录
 // export function goAuthLogin_Api(data) {
 // 	return axios.post(`/auth/c/doMiniLoginByPhone` , data )

File diff suppressed because it is too large
+ 3171 - 0
components/k-line - 副本 (2)/data.json


+ 323 - 0
components/k-line - 副本 (2)/k-line.nvue

@@ -0,0 +1,323 @@
+<template>
+	<view class="">
+		<view class="aa">
+
+		</view>
+		<fy-kline ref="fyKLine" :lang="lang" :max-count="maxCount" :is-line="isLine" :main-type="mainType"
+			:child-type="childType" :is-right-padding="isRightPadding" :show-dash-line="showDashLine"
+			:is-can-roll="isCanRoll" :theme="theme2" :size="size" :split-count="splitCount"
+			@onLoadHistory="onLoadHistory" @onLoad="kLineLoad" :style="'width:750rpx;height:' + height"></fy-kline>
+	</view>
+</template>
+
+<script>
+	// import {
+	// 	startSocket,
+	// 	closeSocket
+	// } from "@/utils/websocket.js"
+	let mapDataCollection = require('./data.json')
+	// 由于这个data.json里面的数据,是按照时间倒序排列的,所以这里对数组进行了翻转
+	mapDataCollection.reverse()
+	// Socket.startSocket()
+	var _self
+	// import {
+	// 	mapGetters
+	// } from 'vuex'
+	export default {
+		name: "k-line",
+		props: {
+			height: {
+				type: String,
+				default: '600rpx'
+			}
+
+		},
+		data() {
+			return {
+				lang: 'zh', // 默认中文,非‘zh’字符串一律为英文
+				maxCount: 1000, // 默认最多显示1000条数据
+				isLine: false, // 默认为K线
+				mainType: 0, // 主指标默认MA
+				childType: 0, // 副指标默认MACD
+				klineHeight: 0,
+				isRightPadding: true, // 右边刻度在K线图之外
+				showDashLine: true, // 是否显示虚线
+				isCanRoll: false, // 上下滑动K线图区域时,页面是否可上下滚动,一般设置为false,默认也为false
+				splitCount: {
+					main: 3,
+					vol: 1,
+					child: 1
+				},
+				theme1: {
+					chart_background: '#181B2C',
+					chart_up: '#d72c4c', // 上涨K柱颜色
+					chart_down: '#02ac8f', // 下跌K柱颜色
+					chart_line: '#c9933e', // 分时线颜色
+					chart_line_background: '#1ac9933e', // 分时线背景色,前两项'1a'表示透明度
+					chart_point_background: '#202326', // 长按弹出的光标末端点数和日期游标背景色
+					chart_point_text: '#818596', // 长按弹出的光标末端点数和日期游标文本颜色
+					chart_selected_yline: '#8040424d', // 十字光标选择器竖线颜色
+					chart_selected_xline: '#ffffff', // 十字光标选择器横线颜色
+					chart_grid_line: '#1affffff', // 网格线颜色
+					chart_dotted_line: '#d72c4c', // 收盘虚线颜色
+					chart_dotted_line_text: '#398fff', // 收盘虚线末端动态游标文本颜色
+					chart_selector_background: '#cc202326', // 长按弹出的高低开收详情弹框(以下简称选择器)背景颜色
+					chart_selector_lable: '#ffffff', // 选择器左侧标签文本颜色
+					chart_selector_text: '#818596', // 选择器右侧数值文本颜色
+					chart_selector_text_up: '#d72c4c', // 选择器文本中“涨跌额”、“涨跌幅”的值上涨时的颜色
+					chart_selector_text_down: '#02ac8f', // 选择器文本中“涨跌额”、“涨跌幅”的值下跌时的颜色
+					chart_selector_border: '#808080', // 选择器圆角边框线颜色
+
+					chart_ma: { // 主图,vol图的ma线和文本的颜色
+						ma5: '#da8ae5',
+						ma10: '#39b0e8',
+						ma30: '#ffc76d',
+						ma60: '#39b0e8', // 分时模式时会显示ma60指标,K线图模式显示 ma5、ma10、ma30三个指标
+					},
+					chart_boll: { // 主图BOLL指标下的三轨线文本和线的颜色
+						boll: '#39b0e8', // boll,中轨线
+						ub: '#da8ae5', // ub,上轨线
+						lb: '#ffc76d' // lb,下轨线
+					},
+					chart_macd: { // 副图MACD指标下的MACD,DIF,DEA三个指标线和文本的颜色
+						macd: '#39b0e8',
+						dif: '#da8ae5',
+						dea: '#ffc76d'
+					},
+					chart_kdj: { // 副图KDJ指标下的K,D,J三个指标线和文本的颜色
+						k: '#39b0e8',
+						d: '#da8ae5',
+						j: '#ffc76d'
+					},
+					chart_rsi: '#da8ae5', // 副图RSI指标线和文本的颜色
+					chart_wr: '#da8ae5', // 副图WR指标线和文本的颜色
+					chart_m_text: '#ffffff', // 最大/最小 值文本颜色
+					chart_scale_text: '#818596', // 刻度值文本颜色
+					chart_vol_text: '#818596', // vol图的 "VOL:XXXXXX" 文本的颜色
+					chart_child_text: '#818596', // 副图的指标名字文本颜色,例如副图MACD时,"MACD(12,26,9)" 文本的颜色
+				},
+				theme2: {
+					chart_background: '#ffffff',
+					chart_up: '#02ac8f', // 上涨K柱颜色
+					chart_down: '#d72c4c', // 下跌K柱颜色
+					chart_line: '#c9933e', // 分时线颜色
+					chart_line_background: '#1ac9933e', // 分时线背景色,前两项'1a'表示透明度
+					chart_point_background: '#202326', // 长按弹出的光标末端点数和日期游标背景色
+					chart_point_text: '#818596', // 长按弹出的光标末端点数和日期游标文本颜色
+					chart_selected_yline: '#80a01aff', // 十字光标选择器竖线颜色
+					chart_selected_xline: '#a01aff', // 十字光标选择器横线颜色
+					chart_grid_line: '#1a202326', // 网格线颜色
+					chart_dotted_line: '#02ac8f', // 收盘虚线颜色
+					chart_dotted_line_text: '#ffff1e', // 收盘虚线末端动态游标文本颜色
+					chart_selector_background: '#ccd8eeff', // 选择器背景颜色
+					chart_selector_lable: '#545862', // 选择器左侧标签文本颜色
+					chart_selector_text: '#717583', // 选择器右侧数值文本颜色
+					chart_selector_text_up: '#02ac8f', // 选择器文本中“涨跌额”、“涨跌幅”的值上涨时的颜色
+					chart_selector_text_down: '#d72c4c', // 选择器文本中“涨跌额”、“涨跌幅”的值下跌时的颜色
+					chart_selector_border: '#323232', // 选择器圆角边框线颜色
+					chart_ma: { // 主图,vol图的ma线和文本的颜色
+						ma5: '#ffc76d',
+						ma10: '#02ac8f',
+						ma30: '#da8ae5',
+						ma60: '#02ac8f', // 分时模式时会显示ma60指标,K线图模式显示 ma5、ma10、ma30三个指标
+					},
+					chart_boll: { // 主图BOLL指标下的三轨线文本和线的颜色
+						boll: '#02ac8f', // boll,中轨线
+						ub: '#ffc76d', // ub,上轨线
+						lb: '#da8ae5' // lb,下轨线
+					},
+					chart_macd: { // 副图MACD指标下的MACD,DIF,DEA三个指标线和文本的颜色
+						macd: '#ffc76d',
+						dif: '#39b0e8',
+						dea: '#da8ae5'
+					},
+					chart_kdj: { // 副图KDJ指标下的K,D,J三个指标线和文本的颜色
+						k: '#da8ae5',
+						d: '#39b0e8',
+						j: '#ffc76d'
+					},
+					chart_rsi: '#da8ae5', // 副图RSI指标线和文本的颜色
+					chart_wr: '#da8ae5', // 副图WR指标线和文本的颜色
+					chart_m_text: '#2f4eff', // 最大/最小 值文本颜色
+					chart_scale_text: '#179600', // 刻度值文本颜色
+					chart_vol_text: '#3e1aaa', // vol图的 "VOL:XXXXXX" 文本的颜色
+					chart_child_text: '#3e1aaa', // 副图的指标名字文本颜色,例如副图MACD时,"MACD(12,26,9)" 文本的颜色
+				},
+
+				size: {
+					chart_scale_x: 10, // x轴(时间轴)刻度字体大小, 默认值为10,这里也推荐你设置成10
+					chart_scale_y: 10, // y轴(数据轴)刻度字体大小, 默认值为10,这里也推荐你设置成10
+				},
+
+				logo: {
+					src: 'static/huobi.png', // 注意!重点!src路径,必须是static目录
+					left: 3, // 左边距,默认为0,在android里单位为dp
+					bottom: 5, // 下边距,默认为0,在android里单位为dp
+					width: 146, // 绘制区域宽度,默认为图片宽度,在android里单位为dp
+					height: 22, // 绘制区域高度,默认为图片高度,在android里单位为dp
+					trans: 0.3, // 透明度,默认为1不透明,0为全透明
+				},
+
+				dataIndex: 0,
+				latestData: null,
+
+				updateIndex: 0,
+				historyNumber: 0, // 调用history的次数
+
+			};
+		},
+		// computed: {
+		// 	...mapGetters([
+		// 		'currencyVal'
+		// 	]),
+		// },
+		onLoad() {
+			// startSocket()
+			
+		},
+		onReady() {
+			
+		},
+		created() {
+			_self = this
+			this.dataIndex = parseInt(mapDataCollection.length / 3)
+		},
+		mounted() {
+			
+			this.klineHeight = uni.getSystemInfoSync().windowHeight - uni.upx2px(200) + 'px';
+			
+			setTimeout(function() {
+				if (_self.updateIndex < mapDataCollection.length) {
+					_self.latestData = mapDataCollection[_self.updateIndex++]
+				}
+			}, 100)
+		},
+		methods: {
+			History(e) {
+				console.log('最左边第一条数据的日期时间戳', e.detail.id)
+			},
+			// K线图组件加载完毕
+			kLineLoad() {
+				console.log("K线图组件已初始化完成,可以加载数据了1")
+				this.initData();
+			},
+			initData() {
+				console.log(this.$refs.fyKLine)
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.loading();
+				}
+				// 请求数据,加载数据。这里测试,获取的是本地json数据
+				if (this.$refs.fyKLine) {
+					// mapDataCollection 数据太大了,这里为了便于测试,只加载了100条数据
+					this.$refs.fyKLine.initData(mapDataCollection.slice(this.dataIndex, this.dataIndex * 2));
+					// 隐藏加载动画
+					this.$refs.fyKLine.hideLoading();
+
+					this.updateIndex = this.dataIndex * 2
+				}
+			},
+			onLoadHistory(e) {
+				// 这里只是示例,加载了本地历史数据,实际上你需要根据 e.detail.id 从服务器获取正确的数据
+				if (this.$refs.fyKLine) {
+					this.historyNumber++
+					if (this.historyNumber == 1) {
+						// 第一次加载历史数据
+						let history = mapDataCollection.slice(parseInt(this.dataIndex / 2), this.dataIndex)
+						this.$refs.fyKLine.loadHistory(history);
+						uni.showModal({
+							title: "第一次触发onLoadHistory回调",
+							content: "成功加载历史数据" + history.length + "条",
+							showCancel: false
+						})
+					} else if (this.historyNumber == 2) {
+						// 第二次加载历史数据
+						let history = mapDataCollection.slice(0, parseInt(this.dataIndex / 2))
+						this.$refs.fyKLine.loadHistory(history);
+						uni.showModal({
+							title: "第二次触发onLoadHistory回调",
+							content: "成功加载历史数据" + history.length + "条",
+							showCancel: false
+						})
+					} else if (this.historyNumber == 3) {
+						uni.showModal({
+							title: "第三次触发onLoadHistory回调",
+							content: "但是此时已经没有历史数据可以加载了,你先往回滑动,然后再次滑到最后,也不会再触发onLoadHistory回调了",
+							showCancel: false
+						})
+					} else {
+						uni.showModal({
+							title: "???",
+							content: "你还是触发了onLoadHistory回调\n我很失望=͟͟͞͞(꒪⌓꒪*)",
+							showCancel: false
+						})
+					}
+				}
+			},
+			changeMainType(type) {
+				this.mainType = type
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.changeMainType(type)
+				}
+			},
+			changeChildType(type) {
+				this.childType = type
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.changeChildType(type)
+				}
+			},
+			changeTheme(e) {
+				if (this.$refs.fyKLine) {
+					if (e) {
+						this.$refs.fyKLine.changeTheme(this.theme2)
+					} else {
+						this.$refs.fyKLine.changeTheme(this.theme1)
+					}
+				}
+			}
+
+		},
+		watch: {
+			// 加载新数据,一般是 socket更新一个变量,监听器深度监听该变量,然后把数据加载进K线图
+			// 此demo没有实现 socket连接
+			latestData: {
+				handler(newData, oldData) {
+					this.$refs.fyKLine.updateData(newData);
+				},
+				deep: true
+			},
+			lang() {
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.changeLang(this.lang)
+				}
+			},
+			isLine() {
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.changeMainLine(this.isLine)
+				}
+			},
+			isRightPadding() {
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.changeIsRightPadding(this.isRightPadding)
+				}
+			},
+			showDashLine() {
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.changeShowDashLine(this.showDashLine)
+				}
+			},
+			isCanRoll() {
+				if (this.$refs.fyKLine) {
+					this.$refs.fyKLine.changeIsCanRoll(this.isCanRoll)
+				}
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.aa {
+		width: 750rpx;
+		height: 100rpx;
+		background-color: red;
+	}
+</style>

+ 33 - 0
components/k-line - 副本/k-line.vue

@@ -0,0 +1,33 @@
+<template>
+	<iframe
+		:src="`https://biking.okenx.com/biking/kline.html?legal_id=${currencyVal.legal_id}&currency_id=${currencyVal.currency_id}&symbol=${currencyVal.currency_name}/${currencyVal.legal_name}`"
+		frameborder="0"></iframe>
+		<!-- <web-view :src="'/k/index.html' + `?legal_id=${currencyVal.legal_id}&currency_id=${currencyVal.currency_id}&symbol=${currencyVal.currency_name}/${currencyVal.legal_name}`"></web-view> -->
+		<!-- <web-view src="/hybrid/html/local.html"></web-view> -->
+</template>
+
+<script>
+	import {
+		mapGetters
+	} from 'vuex'
+	export default {
+		name: "k-line",
+		data() {
+			return {
+
+			};
+		},
+		computed: {
+			...mapGetters([
+				'currencyVal'
+			]),
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	iframe {
+		width: 100%;
+		height: 100%;
+	}
+</style>

+ 32 - 14
components/k-line/k-line.vue

@@ -1,33 +1,51 @@
 <template>
-	<iframe
-		:src="`https://biking.okenx.com/biking/kline.html?legal_id=${currencyVal.legal_id}&currency_id=${currencyVal.currency_id}&symbol=${currencyVal.currency_name}/${currencyVal.legal_name}`"
-		frameborder="0"></iframe>
-		<!-- <web-view :src="'/k/index.html' + `?legal_id=${currencyVal.legal_id}&currency_id=${currencyVal.currency_id}&symbol=${currencyVal.currency_name}/${currencyVal.legal_name}`"></web-view> -->
-		<!-- <web-view src="/hybrid/html/local.html"></web-view> -->
+	<view class="web-view-box" :style="{'width': '100%' , 'height': kHeight + 'px' }">
+		<iframe :style="{'width': '100%' , 'height': kHeight + 'px' }" src="https://kline.cuwiee.com/local.html" frameborder="0"></iframe>
+<!-- 		<web-view :fullscreen="false" :style="{'width': '100%' , 'height': kHeight + 'px' }"
+			:src="`https://kline.cuwiee.com/local.html`"></web-view> -->
+	</view>
 </template>
-
 <script>
 	import {
 		mapGetters
 	} from 'vuex'
 	export default {
-		name: "k-line",
-		data() {
-			return {
 
-			};
+		props: {
+			kWidth: {
+				type: Number,
+				default: 0
+			},
+			kHeight: {
+				type: Number,
+				default: ''
+			},
+			// :k-width="kWidth" :k-height="kHeight"
+			height: {
+				type: String,
+				default: '600rpx'
+			}
+
 		},
 		computed: {
 			...mapGetters([
 				'currencyVal'
-			]),
+			])
 		},
+		data() {
+			return {
+				webviewStyles: {
+					width: this.kWidth + 'px',
+					height: this.kHeight + 'px'
+				}
+			}
+		}
 	}
 </script>
-
 <style lang="scss" scoped>
-	iframe {
+	.web-view-box {
 		width: 100%;
-		height: 100%;
+
+		uni-web-view {}
 	}
 </style>

BIN
hybrid.zip


+ 11 - 6
hybrid/html/css/kline.css

@@ -3,15 +3,16 @@
 	padding: 0;
 }
 html{
-	background-color: #131623;
+	/* padding-top: 220px; */
+	/* background-color: #131623; */
 }
-#app{
+/* #app{
 	height: 100vh;
 	width: 100vw;
 	overflow-y: scroll;
 	overflow-x: hidden;
 	-webkit-overflow-scrolling: touch;
-}
+} */
 .head{
 	padding: 10px;
 }
@@ -66,10 +67,11 @@ html{
 .tabs-item-text{
 	font-size: 12px;
 	line-height: 24px;
-	color: rgba(255,255,255,0.38);
+	/* color: rgba(255,255,255,0.38); */
+	color: #131623;
 }
 .tabs-item-text-active{
-	color: #fff;
+	color: $Theme-Color;
 }
 .tabs-item-bar{
 	width: 0;
@@ -328,7 +330,7 @@ html{
 
 .charts {
 	width: 100vw;
-	height: 420px;
+	height: 320px;
 }
 
 .charts-label {
@@ -394,3 +396,6 @@ html{
 .price-red{
 	color: #fe5c57;
 }
+iframe{
+	border: none;
+}

+ 337 - 214
hybrid/html/js/kline.js

@@ -1,79 +1,105 @@
-
 var myChart;
-
+// import $store from "./../../../store"
 // post请求封装
-// function post(url,data) {
-// 	let baseUrl='http://192.168.3.135:8080';
-// 	return new Promise((resolve,reject)=>{
-// 		axios({
-// 			headers:{
-// 				"Content-Type": "application/x-www-form-urlencoded",
-// 			},
-// 			method:'post',
-// 			url:baseUrl+url,
-// 			data:Qs.stringify( data || {})
-// 		})
-// 		.then(res=>{
-// 			console.log(res)
-// 			if(res.data.code==1){
-// 				resolve(res.data)
-// 			}else{
-// 				reject()
-// 				alertError('请求超时')
-// 			}
-// 		})
-// 		.catch(err=>{
-// 			alertError('请求超时')
-// 		})
-// 	})
-// }
+function post(url, data) {
+	let baseUrl = 'https://biking.okenx.com';
+	return new Promise((resolve, reject) => {
+		axios({
+				headers: {
+					"Content-Type": "application/x-www-form-urlencoded",
+				},
+				method: 'get',
+				url: baseUrl +
+					'/api/currency/new_timeshar?from=1685422833&to=1685520093&symbol=LTC/USDT&period=1min',
+
+			})
+			.then(res => {
+				console.log('res ======', res)
+				if (res.data.code == 1) {
+					resolve(res.data.data)
+				} else {
+					reject()
+					alertError('请求超时')
+				}
+			})
+			.catch(err => {
+				alertError('请求超时')
+			})
+	})
+}
 // 弹窗
 function alertError(title) {
-	document.addEventListener('plusready',function() {
+	document.addEventListener('plusready', function() {
 		console.log('......')
 	})
-	try{
+	try {
 		plus.nativeUI.toast(title, {
-			 icon:'/static/common/toast-error.png',
-			 style:'inline',
-			 verticalAlign:'top'
+			icon: '/static/common/toast-error.png',
+			style: 'inline',
+			verticalAlign: 'top'
 		});
-	}catch(e){
+	} catch (e) {
 		//TODO handle the exception
 	}
 }
 var app = new Vue({
-	el:'#app',
-	data:{
-		MA5:'',
-		MA10:'',
-		MA30:'',
-		volMA5:'',
-		volMA10:'',
-		current:1,
-		tabs:[
-			{'label':'1分钟','value':1},
-			{'label':'15分钟','value':2},
-			{'label':'30分钟','value':3},
-			{'label':'1小时','value':4},
-			{'label':'4小时','value':5},
-			{'label':'1天','value':6},
+	el: '#app',
+	data: {
+		MA5: '',
+		MA10: '',
+		MA30: '',
+		volMA5: '',
+		volMA10: '',
+		current: 1,
+		tabs: [{
+				'label': '1分钟',
+				'value': 1
+			},
+			{
+				'label': '15分钟',
+				'value': 2
+			},
+			{
+				'label': '30分钟',
+				'value': 3
+			},
+			{
+				'label': '1小时',
+				'value': 4
+			},
+			{
+				'label': '4小时',
+				'value': 5
+			},
+			{
+				'label': '1天',
+				'value': 6
+			},
 		],
-		category:1,
-		categoryList:[
-			{'label':'深度','value':1},
-			{'label':'成交','value':2},
-			{'label':'简介','value':3},
+		category: 1,
+		categoryList: [{
+				'label': '深度',
+				'value': 1
+			},
+			{
+				'label': '成交',
+				'value': 2
+			},
+			{
+				'label': '简介',
+				'value': 3
+			},
 		],
-		txData:{},//交易数据统计
-		buyList:[],
-		sellList:[],
-		dealHis:[],
-		tokenInfo:{},
-		page:1,
-		
+		txData: {}, //交易数据统计
+		buyList: [],
+		sellList: [],
+		dealHis: [],
+		tokenInfo: {},
+		page: 1,
+
 	},
 	created() {
+		console.log('00')
 		this.getTxData()
 		this.getDepth()
 	},
@@ -82,73 +108,115 @@ var app = new Vue({
 		this.draw()
 		this.getKline()
 	},
-	methods:{
+	methods: {
 		// 返回上一页
-		back(){
+		back() {
 			uni.navigateBack()
 		},
 		// 获取24小时交易数据统计
-		getTxData(){
-			this.txData=txData;
+		getTxData() {
+			this.txData = txData;
 		},
 		// 获取k线数据,生成k线
-		getKline(){
-			var dataMA5 = this.calculateMA(5, data);
-			var dataMA10 = this.calculateMA(10, data);
-			var dataMA30 = this.calculateMA(30, data);
-			var volumeMA5 = this.calculateMA(5, volumes);
-			var volumeMA10 = this.calculateMA(10, volumes);
-			myChart.setOption({
-				xAxis: [
-					{
-						data: dates
-					},
-					{
-						data: dates
-					},
-				],
-				series: [
-					{
-						name: '日K',
-						data: data
-					},
-					{
-						name: 'MA5',
-						data: dataMA5
-					},
-					{
-						name: 'MA10',
-						data: dataMA10
-					},
-					{
-						name: 'MA30',
-						data: dataMA30
-					},
-					{
-						name: 'Volume',
-						data: volumes
-					},
-					{
-						name: 'VolumeMA5',
-						data: volumeMA5
-					},
-					{
-						name: 'VolumeMA10',
-						data: volumeMA10
-					},
-				]
+		getKline() {
+			post().then(res => {
+				const dataX = []			 
+				res.forEach(el => {
+					dataX.push(el.time)
+					rawData.push([new Date(el.time).getTime() , el.open , el.high , el.low, el.close , el.volume ])
+					// var data = rawData.map(function(item) {
+					// 	return [+item[1], +item[2], +item[3], +item[4], +item[5]];
+					// });
+					// var volumes = rawData.map(function(item, index) {
+					// 	return [index, item[5], item[1] > item[2] ? 1 : -1];
+					// });
+				})
+				// var dataList = res.map(data => {
+				// 	// ["2004-01-05", 10411.85, 10544.07, 10411.85, 10575.92, 221290000],
+				// 		// return [new Date(data.time).getTime() , data.open , data.high , data.low, data.close , data.volume ]
+
+				// 		return{
+				// 			timestamp: new Date(data.time).getTime(),
+				// 			open: +data.open,
+				// 			high: +data.high,
+				// 			low: +data.low,
+				// 			close: +data.close,
+				// 			volume: +data.volume
+				// 		}
+				// 	})
+
+				var dates = rawData.map(function(item) {
+					console.log('dates--------' , item)
+					return item[0];
+				});
+				var data = rawData.map(function(item) {
+					return [+item[1], +item[2], +item[3], +item[4], +item[5]];
+				});
+				var volumes = rawData.map(function(item, index) {
+					return [index, item[5], item[1] > item[2] ? 1 : -1];
+				});
+
+				// this.buyList=this.addItem(res.buyList || []);
+				// this.sellList=this.addItem(res.sellList || []);
+				console.log('rawData 1= ', rawData)
+				var dataMA5 = this.calculateMA(5, data);
+				var dataMA10 = this.calculateMA(10, data);
+				var dataMA30 = this.calculateMA(30, data);
+				var volumeMA5 = this.calculateMA(5, volumes);
+				var volumeMA10 = this.calculateMA(10, volumes);
+				myChart.setOption({
+					xAxis: [{
+							// data: dates
+							data: dataX
+						},
+						{
+							data: dataX
+							// data: dates
+						},
+					],
+					series: [{
+							name: '日K',
+							data: data
+						},
+						{
+							name: 'MA5',
+							data: dataMA5
+						},
+						{
+							name: 'MA10',
+							data: dataMA10
+						},
+						{
+							name: 'MA30',
+							data: dataMA30
+						},
+						{
+							name: 'Volume',
+							data: volumes
+						},
+						{
+							name: 'VolumeMA5',
+							data: volumeMA5
+						},
+						{
+							name: 'VolumeMA10',
+							data: volumeMA10
+						},
+					]
+				})
 			})
+
 		},
 		// 列表条数不足补全
-		addItem(list,type){
+		addItem(list, type) {
 			// type: 1开头加,2末尾加
-			list=list || [];
-			let len=20-list.length;
-			if(len>0){
-				for(let i=0;i<len;i++){
-					if(type==1){
+			list = list || [];
+			let len = 20 - list.length;
+			if (len > 0) {
+				for (let i = 0; i < len; i++) {
+					if (type == 1) {
 						list.unshift({})
-					}else{
+					} else {
 						list.push({})
 					}
 				}
@@ -156,34 +224,37 @@ var app = new Vue({
 			return list;
 		},
 		// 获取深度数据
-		getDepth(){
-			this.buyList=this.addItem(depthList().buyList || []);
-			this.sellList=this.addItem(depthList().sellList || []);
+		getDepth() {
+
+			this.buyList = this.addItem(depthList().buyList || []);
+			this.sellList = this.addItem(depthList().sellList || []);
+			// console.log('000' , data)
+
 		},
 		// 获取成交记录
-		getDealHis(){
-			this.dealHis=dealHis();
+		getDealHis() {
+			this.dealHis = dealHis();
 		},
 		// 获取项目简介信息
-		getTokenInfo(){
-			this.tokenInfo=tokenInfo;
+		getTokenInfo() {
+			this.tokenInfo = tokenInfo;
 		},
-		
+
 		// 切换tab
-		switchTab(val){
-			if(this.current==val) return;
-			this.current=val;
+		switchTab(val) {
+			if (this.current == val) return;
+			this.current = val;
 			this.getKline()
 		},
 		// 切换类目
-		switchCategory(val){
-			if(this.category==val) return;
-			this.category=val;
-			if(this.category==1){
+		switchCategory(val) {
+			if (this.category == val) return;
+			this.category = val;
+			if (this.category == 1) {
 				this.getDepth()
-			}else if(this.category==2){
+			} else if (this.category == 2) {
 				this.getDealHis()
-			}else{
+			} else {
 				this.getTokenInfo()
 			}
 		},
@@ -211,16 +282,17 @@ var app = new Vue({
 			return result;
 		},
 		// 绘制(配置项)
-		draw(){
-			let that=this;
+		draw() {
+			let that = this;
 			var upColor = '#03ad91';
 			var downColor = '#dd345b';
-			var colorList = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622', '#bda29a', '#6e7074',
+			var colorList = ['#c23531', '#2f4554', '#61a0a8', '#d48265', '#91c7ae', '#749f83', '#ca8622',
+				'#bda29a', '#6e7074',
 				'#546570', '#c4ccd3'
 			];
 			var labelFont = 'bold 12px Sans-serif';
 			var option = {
-				backgroundColor: '#0d1723',
+				// backgroundColor: '#0d1723',
 				title: {
 					show: false
 				},
@@ -228,17 +300,17 @@ var app = new Vue({
 					show: false
 				},
 				visualMap: {
-				            show: false,
-				            seriesIndex: 4,
-				            dimension: 2,
-				            pieces: [{
-				                value: 1,
-				                color: downColor
-				            }, {
-				                value: -1,
-				                color: upColor
-				            }]
-				        },
+					show: false,
+					seriesIndex: 4,
+					dimension: 2,
+					pieces: [{
+						value: 1,
+						color: downColor
+					}, {
+						value: -1,
+						color: upColor
+					}]
+				},
 				grid: [{
 						top: '5%',
 						left: 20,
@@ -259,7 +331,7 @@ var app = new Vue({
 					label: {
 						backgroundColor: '#0d1723',
 						color: '#fff',
-						borderColor: 'rgb(99, 117, 139)',
+						// borderColor: 'rgb(99, 117, 139)',
 						borderWidth: 1,
 						borderRadius: 2,
 						fontSize: 10
@@ -312,7 +384,7 @@ var app = new Vue({
 						show: true,
 						margin: 6,
 						fontSize: 10,
-						color: 'rgba(99, 117, 139, 1.0)',
+						// color: 'rgba(99, 117, 139, 1.0)',
 						formatter: function(value) {
 							return echarts.format.formatTime('MM-dd', value);
 						}
@@ -337,7 +409,7 @@ var app = new Vue({
 					}, //坐标轴轴线相关设置。
 					axisTick: {
 						show: true,
-						inside:true
+						inside: true
 					}, //坐标轴刻度相关设置。
 					axisLabel: { //坐标轴刻度标签的相关设置。
 						show: true,
@@ -372,46 +444,67 @@ var app = new Vue({
 						show: false
 					}
 				}],
-			
+
 				animation: false, //是否开启动画。
 				color: colorList,
 				tooltip: {
 					show: true, //是否显示提示框组件,包括提示框浮层和 axisPointer。
 					trigger: 'axis', //触发类型。item,axis,none
-					formatter(params){
+					formatter(params) {
 						let tooltip = '';
-						let time = '', open = 0, high = 0, low = 0, close = 0, amount = 0;
+						let time = '',
+							open = 0,
+							high = 0,
+							low = 0,
+							close = 0,
+							amount = 0;
 						for (var i = 0; i < params.length; i++) {
 							if (params[i].seriesName === '日K') {
 								time = params[i].name;
-								open = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[1], 2)) : 0;
-								close = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[2], 2)) : 0;
-								low = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[3], 2)) : 0;
-								high = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[4], 2)) : 0;
-								amount = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[5], 2)) : 0;
+								open = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[
+									1], 2)) : 0;
+								close = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[
+									2], 2)) : 0;
+								low = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[
+									3], 2)) : 0;
+								high = params[i].data.length > 1 ? Number(that.formatterNum(params[i].data[
+									4], 2)) : 0;
+								amount = params[i].data.length > 1 ? Number(that.formatterNum(params[i]
+									.data[5], 2)) : 0;
 								// console.log(time,open,close,low,high,amount)
 								tooltip = '<div class="charts-tooltip">' +
-									'<div class="charts-tooltip-row"><div class="ctr-label">' + '时间' + '</div><div class="ctr-value">' + time + '</div></div>' + 
-									'<div class="charts-tooltip-row"><div class="ctr-label">' + '开' + '</div><div class="ctr-value">' + open + '</div></div>' + 
-									'<div class="charts-tooltip-row"><div class="ctr-label">' + '高' + '</div><div class="ctr-value">' + high + '</div></div>' + 
-									'<div class="charts-tooltip-row"><div class="ctr-label">' + '低' + '</div><div class="ctr-value">' + low + '</div></div>' + 
-									'<div class="charts-tooltip-row"><div class="ctr-label">' + '收' + '</div><div class="ctr-value">' + close + '</div></div>' + 
-									'<div class="charts-tooltip-row"><div class="ctr-label">' + '数量' + '</div><div class="ctr-value">' +amount + '</div></div></div>';
+									'<div class="charts-tooltip-row"><div class="ctr-label">' + '时间' +
+									'</div><div class="ctr-value">' + time + '</div></div>' +
+									'<div class="charts-tooltip-row"><div class="ctr-label">' + '开' +
+									'</div><div class="ctr-value">' + open + '</div></div>' +
+									'<div class="charts-tooltip-row"><div class="ctr-label">' + '高' +
+									'</div><div class="ctr-value">' + high + '</div></div>' +
+									'<div class="charts-tooltip-row"><div class="ctr-label">' + '低' +
+									'</div><div class="ctr-value">' + low + '</div></div>' +
+									'<div class="charts-tooltip-row"><div class="ctr-label">' + '收' +
+									'</div><div class="ctr-value">' + close + '</div></div>' +
+									'<div class="charts-tooltip-row"><div class="ctr-label">' + '数量' +
+									'</div><div class="ctr-value">' + amount + '</div></div></div>';
 							}
 							if (params[i].seriesName === 'MA5') {
-								that.MA5 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i].data, 2)) : 0
+								that.MA5 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i]
+									.data, 2)) : 0
 							}
 							if (params[i].seriesName === 'MA10') {
-								that.MA10 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i].data, 2)) : 0
+								that.MA10 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i]
+									.data, 2)) : 0
 							}
 							if (params[i].seriesName === 'MA30') {
-								that.MA30 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i].data, 2)) : 0
+								that.MA30 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i]
+									.data, 2)) : 0
 							}
 							if (params[i].seriesName === 'VolumeMA5') {
-								that.volMA5 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i].data, 2)) : 0
+								that.volMA5 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i]
+									.data, 2)) : 0
 							}
 							if (params[i].seriesName === 'VolumeMA10') {
-								that.volMA10 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i].data, 2)) : 0
+								that.volMA10 = params[i].data !== 'NAN' ? Number(that.formatterNum(params[i]
+									.data, 2)) : 0
 							}
 						}
 						return tooltip;
@@ -422,7 +515,7 @@ var app = new Vue({
 					}, //提示框浮层的文本样式
 					backgroundColor: 'rgba(30,42,66,0.8);', //提示框浮层的背景颜色。
 					borderColor: '#2f3a56', //提示框浮层的边框颜色。
-					borderWidth:2,
+					borderWidth: 2,
 					position: function(pos, params, el, elRect, size) { //提示框浮层的位置,默认不设置时位置会跟随鼠标的位置。
 						var obj = {
 							top: 20
@@ -467,17 +560,15 @@ var app = new Vue({
 						}
 					}
 				},
-			
+
 				dataZoom: [{ //用于区域缩放
 					type: 'inside',
 					xAxisIndex: [0, 1],
 					realtime: false,
 					start: 50,
 					end: 100,
-				}
-				],
-				series: [
-					{
+				}],
+				series: [{
 						type: 'candlestick',
 						name: '日K',
 						data: [],
@@ -515,74 +606,106 @@ var app = new Vue({
 								}
 							]
 						},
-					}, 
+					},
 					{
 						name: 'MA5',
 						type: 'line',
 						data: [],
-						symbol: 'none',//去除圆点
+						symbol: 'none', //去除圆点
 						smooth: true,
-						lineStyle: { normal: { opacity: 1, width: 1, color: "#eef4ba" } },
+						lineStyle: {
+							normal: {
+								opacity: 1,
+								width: 1,
+								color: "#eef4ba"
+							}
+						},
 						z: 5
-					}, 
+					},
 					{
 						name: 'MA10',
 						type: 'line',
 						data: [],
-						symbol: 'none',//去除圆点
+						symbol: 'none', //去除圆点
 						smooth: true,
-						lineStyle: { normal: { opacity: 1, width: 1, color: '#83c1c5' } },
+						lineStyle: {
+							normal: {
+								opacity: 1,
+								width: 1,
+								color: '#83c1c5'
+							}
+						},
 						z: 4
 					},
 					{
 						name: 'MA30',
 						type: 'line',
 						data: [],
-						symbol: 'none',//去除圆点
+						symbol: 'none', //去除圆点
 						smooth: true,
-						lineStyle: { normal: { opacity: 1, width: 1, color: '#b39cd8' } },
+						lineStyle: {
+							normal: {
+								opacity: 1,
+								width: 1,
+								color: '#b39cd8'
+							}
+						},
 						z: 3
 					},
 					{
-							name: 'Volume',
-							type: 'bar',
-							xAxisIndex: 1,
-							yAxisIndex: 1,
-							data: []
-						},
-						{
-							name: 'VolumeMA5',
-							type: 'line',
-							xAxisIndex: 1,
-							yAxisIndex: 1,
-							data: [],
-							symbol: 'none',//去除圆点
-							smooth: true,
-							lineStyle: { normal: { opacity: 1, width: 1, color: "#eef4ba" } },
-							z: 5
+						name: 'Volume',
+						type: 'bar',
+						xAxisIndex: 1,
+						yAxisIndex: 1,
+						data: []
+					},
+					{
+						name: 'VolumeMA5',
+						type: 'line',
+						xAxisIndex: 1,
+						yAxisIndex: 1,
+						data: [],
+						symbol: 'none', //去除圆点
+						smooth: true,
+						lineStyle: {
+							normal: {
+								opacity: 1,
+								width: 1,
+								color: "#eef4ba"
+							}
 						},
-						{
-							name: 'VolumeMA10',
-							type: 'line',
-							xAxisIndex: 1,
-							yAxisIndex: 1,
-							data: [],
-							symbol: 'none',//去除圆点
-							smooth: true,
-							lineStyle: { normal: { opacity: 1, width: 1, color: '#83c1c5' } },
-							z: 4
+						z: 5
+					},
+					{
+						name: 'VolumeMA10',
+						type: 'line',
+						xAxisIndex: 1,
+						yAxisIndex: 1,
+						data: [],
+						symbol: 'none', //去除圆点
+						smooth: true,
+						lineStyle: {
+							normal: {
+								opacity: 1,
+								width: 1,
+								color: '#83c1c5'
+							}
 						},
+						z: 4
+					},
 				]
 			};
 			myChart.setOption(option);
 			// 加载上一页数据
-			myChart.on('datazoom',function(params){
-				let num=params.batch[0]['start'];
-				if(num==0){
+			myChart.on('datazoom', function(params) {
+				let num = params.batch[0]['start'];
+				if (num == 0) {
 					console.log('到最左边了')
 				}
 			})
-			window.addEventListener('resize', () => { myChart.resize()})
+			window.addEventListener('resize', () => {
+				myChart.resize()
+			})
 		}
 	}
 })

+ 11 - 9
hybrid/html/js/mock.js

@@ -1,4 +1,5 @@
 // K线数据
+// var rawData = [];
 var rawData = [
 	["2004-01-05", 10411.85, 10544.07, 10411.85, 10575.92, 221290000],
 	["2004-01-06", 10543.85, 10538.66, 10454.37, 10584.07, 191460000],
@@ -39,15 +40,16 @@ var rawData = [
 	["2004-02-26", 10598.14, 10580.14, 10493.71, 10652.96, 223230000],
 	["2004-02-27", 10581.55, 10583.92, 10519.03, 10689.55, 200050000],
 ];
-var dates = rawData.map(function(item) {
-	return item[0];
-});
-var data = rawData.map(function(item) {
-	return [+item[1], +item[2], +item[3], +item[4], +item[5]];
-});
-var volumes = rawData.map(function(item, index) {
-	return [index, item[5], item[1] > item[2] ? 1 : -1];
-});
+// var dates = rawData.map(function(item) {
+// 	console.log('dates--------' , item)
+// 	return item[0];
+// });
+// var data = rawData.map(function(item) {
+// 	return [+item[1], +item[2], +item[3], +item[4], +item[5]];
+// });
+// var volumes = rawData.map(function(item, index) {
+// 	return [index, item[5], item[1] > item[2] ? 1 : -1];
+// });
 
 // 交易统计数据
 var txData={

+ 6 - 6
hybrid/html/local.html

@@ -9,7 +9,7 @@
 
 	<body>
 		<div id="app">
-			<div class="head">
+			<!-- <div class="head">
 				<div class="price">
 					<span class="price-label">{{txData.lastPrice || 0}}</span>
 					<span class="price-value">≈ ${{txData.lastPrice || 0}}</span>
@@ -34,7 +34,7 @@
 						<span class="hic-value">{{txData.low || 0}}</span>
 					</div>
 				</div>
-			</div>
+			</div> -->
 			<div class="tabs">
 				<div @click="switchTab(item.value)" class="tabs-item" v-for="(item,index) in tabs" :key="index">
 					<span class="tabs-item-text" :class="{'tabs-item-text-active':current==item.value}">{{item.label}}</span>
@@ -53,15 +53,15 @@
 					<div class="charts-MA10">MA10:{{volMA10 || 0}}</div>
 				</div>
 			</div>
-			<div class="category">
+	<!-- 		<div class="category">
 				<div class="category-item-wrap" v-for="(item,index) in categoryList" :key="index">
 					<div @click="switchCategory(item.value)" class="category-item">
 						<span class="category-item-text" :class="{'category-item-text-active':category==item.value}">{{item.label}}</span>
 						<div class="category-item-bar" :class="{'category-item-bar-active':category==item.value}"></div>
 					</div>
 				</div>
-			</div>
-			<div class="category-main">
+			</div> -->
+	<!-- 		<div class="category-main">
 				<div v-if="category==1" class="depth">
 					<div class="depth-head">
 						<div class="depth-head-left">
@@ -154,7 +154,7 @@
 			<div class="btns">
 				<div @click="back" class="btn btn-green">买入</div>
 				<div @click="back" class="btn btn-red">卖出</div>
-			</div>
+			</div> -->
 			
 			
 		</div>

File diff suppressed because it is too large
+ 0 - 1216
hybrid_01/css/common.css


+ 0 - 749
hybrid_01/css/dataMap.css

@@ -1,749 +0,0 @@
-
-.bgBalck #header {
-	padding: 10px 3% 0;
-	background: #131f30;
-}
-
-#header div {
-	overflow: hidden;
-}
-
-.bgBalck .header {
-	width: 100%;
-	background: #131f30;
-	z-index: 99;
-}
-.insure-header{
-	margin-right: 10px
-}
-.insure div{
-	font-size: 10px;
-
-}
-/* .insure div p{
-	width: 30px;
-} */
-.insure span{
-	display: block;
-	margin-left: 6px;
-	border: 1px solid #f1f1f1;
-	border-radius: 2px;
-	padding: 0 5px;
-	line-height: 20px;
-	height: 20px;
-	margin-top: 10px;
-	color: #7d818a;
-}
-.bgBalck .insure span{
-	border: 1px solid #2c313c;
-}
-.bgBalck .bg_active{
-	background-color: #12151c;
-}
-.bgBalck #sideColumn ul li{
-	border-bottom: 1px solid #12151c;
-}
-#header div p img {
-	width: 30px;
-	margin: -6px 1px 0 0;
-}
-.bgBalck #sideColumn ul li strong{
-	color: #fff;
-}
-
-#header div P span {
-	font-size: 18px;
-	font-weight: bold;
-
-}
-
-.CNY {
-	margin-top: 45px;
-	padding: 5px 15px 10px;
-}
-
-.CNY div h2,
-.CNY div h4 {
-	margin: 0;
-}
-
-.CNY div h2 {
-	color: #4f986f;
-	line-height: 40px;
-	text-align: left;
-	font-size: 28px;
-	font-weight: bold;
-}
-
-.CNY div h4 {
-	color: #5a718e;
-	font-size: 1.7rem;
-}
-
-.CNY div h4 span {
-	color: #4f986f;
-}
-
-.CNY ul {
-	list-style: none;
-	width: 30%;
-}
-
-.CNY ul li {
-	line-height: 20px;
-	text-align: right;
-	/* color: #5a718e; */
-}
-
-.CNY ul li span {
-	padding: 0 6px;
-	/* color: #cfd3e9; */
-	font-size: 1.3rem;
-}
-
-
-.p {
-	color: #c15a58;
-}
-
-.g {
-	color: #03bd87;
-}
-
-
-.bgBalck #bottom {
-	position: fixed;
-	bottom: 0;
-	width: 100%;
-	padding: 0 1.5%;
-	height: 70px;
-	background: #152741;
-	font-size: 14px;
-}
-
-#bottom {
-	position: fixed;
-	bottom: 0;
-	width: 100%;
-	padding: 0 1.5%;
-	height: 70px;
-	background: #fff;
-	font-size: 14px;
-	z-index: 99999;
-}
-
-#bottom button {
-	width: calc(48.50vw - 12px);
-	height: 50px;
-	font-size: 18px;
-	color: #fff;
-	outline: none;
-	border: none;
-	border-radius: 2px;
-	margin-top: 10px;
-}
-
-#bottom button:nth-child(2) {
-	margin-left: 0;
-}
-
-div#bottom button:nth-child(1) {
-	background: #4f986f;
-}
-
-#bottom button:nth-child(2) {
-	background: #c15a58;
-}
-
-/* 买入卖出弹窗 */
-.data-modal {
-	display: none;
-	width: 100%;
-	margin: 0 auto;
-	padding: 10px 15px;
-}
-
-.modals {
-	background-color: #303032 !important;
-}
-
-.modals .layui-layer-btn a {
-	display: block;
-	width: 100%;
-	text-align: center;
-	margin: 0;
-	padding: 0;
-	line-height: 40px;
-	height: 40px;
-}
-
-.tab p {
-	width: 50%;
-}
-
-.tab span {
-	display: block;
-	padding: 0 10px 5px;
-}
-
-.tab .active {
-	border-bottom: 1px solid #1E9FFF;
-}
-
-.control {
-	line-height: 30px;
-	border: 1px solid #f1f1f1;
-	padding: 0 10px;
-	width: 100%;
-	border-radius: 2px;
-}
-
-.modals select {
-	background-color: #303032;
-	width: 100%;
-}
-
-.modals #share {
-	width: 40%;
-}
-
-.share-num {
-	width: 50%;
-	line-height: 30px;
-	border: 1px solid #f1f1f1;
-	padding: 0 10px;
-	border-radius: 2px;
-}
-
-.new-price {
-	color: #4f986f;
-}
-
-#sideColumn h4 img {
-	width: 20px;
-	margin: -6px 5px 0 0;
-}
-
-#sideColumn {
-	z-index: 101;
-	position: fixed;
-	top: 0;
-	left: -70%;
-	width: 70%;
-	height: 100%;
-}
-
-#sideColumn h4 span {
-	margin: 0 10px;
-	color: #ccc;
-	border: none;
-}
-.insure .active{
-	color: #1f6bfd!important;
-	border: 1px solid #1f6bfd;
-}
-
-#sideColumn ol,
-#sideColumn ul {
-	list-style: none;
-}
-
-#sideColumn ol {
-	display: flex;
-}
-
-#sideColumn ol li {
-	float: left;
-	flex: 1;
-	text-align: center;
-	line-height: 35px;
-	color: #ccc;
-}
-
-#mask1 {
-	position: fixed;
-	left: 0px;
-	top: 0px;
-	right: 0px;
-	bottom: 0px;
-	display: none;
-	background: rgba(130, 129, 129, 0.5);
-	width: 100%;
-	height: 100%;
-	z-index: 100;
-}
-
-#sideColumn ul {
-	overflow-y: scroll;
-	height: calc(100.0vh - 70px)
-}
-
-#sideColumn ul li {
-	height: 60px;
-	line-height: 60px;
-	text-indent: 15px;
-	font-size: 1.2rem;
-}
-
-#sideColumn ul li strong {
-	padding: 0 20px 0 0;
-	float: left;
-	font-size: 16px;
-	font-weight: bold;
-	color: #1A384A;
-}
-
-#sideColumn ul li strong b {
-	color: #7d818a;
-	font-size: 14px;
-	font-weight: bold;
-}
-
-#sideColumn ul li p {
-	float: right;
-	/* width: 72%; */
-	padding: 0 10px;
-	margin: 0;
-}
-
-.texts-lever {
-	margin-top: 10px;
-	line-height: 35px;
-	padding-left: 15px;
-	padding-bottom: 10px;
-}
-
-#sideColumn ul li {
-	border-bottom: 1px solid #f1f1f1;
-}
-.bdbs {
-    border-bottom: 1px solid #12151c;
-}
-.fontC {
-	color: #c15a58;
-	font-size: 16px;
-	font-weight: bold;
-}
-
-.gre {
-	color: #4f986f;
-	font-size: 16px;
-	font-weight: bold;
-}
-
-.tab_list {
-	display: none;
-	padding-bottom: 20px;
-}
-
-.CNY ul {
-	list-style: none;
-	width: 40%;
-	margin-top: 5px;
-}
-
-.CNY div h4 span.red {
-	color: #c15a58;
-}
-
-.red {
-	color: #c15a58 !important;
-}
-
-.return {
-	width: 20px;
-}
-
-select {
-	background-color: #fff;
-	color: #333;
-	border: 1px solid #f1f1f1;
-	padding: 5px 10px;
-	border-radius: 2px;
-}
-
-.tabs-data-map {
-	border: none;
-}
-
-.tabs-data-map img {
-	width: 20px !important;
-	position: relative;
-	top: 3px;
-	margin: -10px 5px 0 0 !important;
-}
-
-.bg_active {
-	background: #f4f8fb;
-}
-
-/* 倒计时下单弹窗 */
-.time-modal {
-	display: none;
-	padding: 0 15px 20px;
-	margin-top: 15px;
-	overflow-x: hidden;
-}
-
-.time-list {
-	margin-top: 10px;
-	width: 100%;
-}
-
-.lists {
-	width: 100%;
-	overflow-x: scroll;
-}
-
-.lists .fl {
-	width: calc(29.33vw - 15px);
-	height: calc(29.33vw - 15px);
-	margin-right: 10px;
-	position: relative;
-}
-
-.lists-child {
-	width: calc(29.33vw - 15px);
-	height: calc(29.33vw - 15px);
-	box-sizing: border-box;
-	text-align: center;
-	background: url(../images/clock.png) no-repeat;
-	background-size: cover;
-	background-color: #2c2d31;
-	border-radius: 5px;
-	box-sizing: border-box;
-	color: #6d6d6d;
-
-}
-
-.title {
-	width: calc(29.33vw - 15px);
-	line-height: 30px;
-}
-
-.lists-child div {
-	color: #fdbe19;
-	margin-top: 6px;
-}
-
-.lists-child div p {
-	position: relative;
-	top: -3px;
-	margin-right: 5px;
-}
-
-.profit {
-	color: #fa2e42;
-	background-color: #232227;
-	width: 100%;
-	height: 24px;
-	line-height: 24px;
-	border-bottom-left-radius: 5px;
-	border-bottom-right-radius: 5px;
-	margin-top: 16px;
-}
-.bgBlackColor {
-    background-color: #202833;
-}
-.bgBalck .lists .active .profit {
-	margin-top: 13px;
-}
-
-.bgBalck .currency-list p {
-	border: 1px solid #12151c;
-}
-
-.bgBalck .time-num ul li {
-	border: 1px solid #12151c;
-}
-
-.bgBalck .balances {
-	border-bottom: 1px solid #12151c;
-}
-
-.bgBalck .time-num input {
-	color: #fff;
-	background-color: #12151c;
-}
-
-.time-num {
-	width: 100%;
-	margin-top: 10px;
-}
-ul,li{
-	list-style: none;
-}
-.time-num ul {
-	width: 100%;
-}
-
-.time-num ul li {
-	height: 29px;
-	font-size: 12px;
-	height: 30px;
-	line-height: 30px;
-	width: 22.7%;
-	text-align: center;
-	margin: 0 1.5%;
-	border: 1px solid #f1f1f1;
-	margin-bottom: 10px;
-}
-.time-num ul li:nth-child(4n +1){
-	margin: 0 1.5% 0 0;
-}
-.time-num ul li:nth-child(4n){
-	margin: 0 0 0 1.5%;
-}
-
-
-.time-num .active {
-	background: url(../../../static/image/selects.png) no-repeat right bottom;
-	background-size: 35px 30px;
-}
-
-.time-num input {
-	height: 29px;
-	font-size: 12px;
-	height: 30px;
-	line-height: 30px;
-	text-align: center;
-	background-color: #fff;
-	padding: 0 2px;
-	border: 1px solid #f1f1f1;
-}
-
-.balances {
-	width: 100%;
-	margin-top: 15px;
-	padding-bottom: 5px;
-	border-bottom: 1px solid #f1f1f1;
-}
-
-.time-bottom span {
-	display: block;
-	margin-top: 5px;
-	font-size: 14px;
-}
-
-.yellowColor {
-	color: #fdbe19;
-}
-
-.time-btn {
-	width: 100%;
-	line-height: 40px;
-	height: 40px;
-	border-radius: 6px;
-	margin: 20px 0 10px;
-}
-
-.time-btn button {
-	width: 49%;
-	height: 100%;
-	border: none;
-	outline: none;
-	color: #fff;
-	border-radius: 6px;
-}
-
-.lists .active {
-	border: 1px solid #fdbe19;
-	background-size: contain;
-	background-position: right top;
-	background-repeat: no-repeat;
-}
-
-.currency-list p {
-	border: 1px solid #f1f1f1;
-	font-size: 14px;
-	text-align: center;
-	width: 22.7%;
-	height: 30px;
-	line-height: 30px;
-	text-align: center;
-	margin: 0 1.5% 10px;
-	
-
-}
-.currency-list p:first-child{
-	margin: 0 1.5% 10px 0;
-}
-.currency-list p:nth-child(4n){
-	margin: 0 0 10px 1.5%;
-}
-
-.currency-list .active {
-	background: url(../../../static/image/selects.png) no-repeat right bottom;
-	background-size: 35px 30px;
-}
-
-.orders {
-	display: none;
-	text-align: center;
-	padding: 20px 20px 30px;
-}
-
-.orders-list {
-	margin-top: 20px;
-}
-
-.orders-list span {
-	margin-top: 10px;
-	display: inline-block;
-	width: 40%;
-	text-align: left;
-}
-.orders-list p span:first-child{
-	text-align: right;
-	width: 80px;
-}
-
-.order-list {
-	width: 100%;
-	padding-bottom: 20px;
-}
-
-.order-list-header {
-	width: 100%;
-	line-height: 40px;
-	background-color: #fff;
-}
-
-.order-list-header p {
-	width: 50%;
-}
-
-.order-list-header .active {
-	border-bottom: 2px solid #1f6bfd;
-}
-
-#bottom .second-buy {
-	width: 21.0vw;
-	/* padding: 0 20px; */
-	margin-right: 5px;
-}
-
-#bottom .second-sell {
-	width: 21.0vw;
-	/* padding: 0 20px; */
-}
-
-.bottom-left {
-	width: 52.0vw;
-}
-
-.logo-down {
-	width: 15px;
-	margin-top: 8px;
-}
-
-.logo-down img {
-	width: 100%;
-}
-
-.bottom-left {
-	height: 50px;
-	margin-top: 10px;
-	border: 1px solid #f1f1f1;
-	border-radius: 4px;
-	padding: 6px 5px;
-}
-#sideColumn ul li p b{
-	font-weight: normal;
-	color: #7d818a;
-}
-.btn-text .layui-layer-btn{
-	text-align: center;
-}
-.btn-text .layui-layer-btn .layui-layer-btn0 {
-    width: calc(50% - 8px);
-}
-.btn-text .layui-layer-btn a {
-    padding: 0;
-    margin: 0;
-    line-height: 44px;
-    height: 44px;
-    border: none;
-    font-size: 16px;
-}
-.second-modal .layui-layer-btn0 {
-    background-color: #4f986f!important;
-    color: #fff!important;
-}
-.btn-text .layui-layer-btn .layui-layer-btn1 {
-    width: calc(50% - 8px);
-    color: #fff;
-    background: #1f6bfd;
-    margin-left: 15px;
-}
-.second-modal .layui-layer-btn{
-	padding: 0!important;
-}
-.second-modal .layui-layer-btn0{
-background-color: #4f986f!important;
-color: #fff!important;
-}
-.second-modal .layui-layer-btn1{
-	background-color: #c15a58!important;
-	}
-.buys .layui-layer-btn1{
-	background-color: #4f986f!important;
-}
-.sells .layui-layer-btn1{
-	background-color: #c15a58!important;
-}
-.order-list li{
-	/* line-height: 30px; */
-	border-bottom: 1px solid #f1f1f1;
-	padding: 10px 0;
-}
-.lists li p{
-	width: 15.0vw;
-	text-align: center;
-}
-.lists li p:nth-child(2){
-	width: 25%;
-}
-.lists li p:nth-child(3){
-	width: 25%;
-}
-.bgBalck .order-list-header{
-	background-color: #131f30;
-}
-.bgBalck .order-list{
-	background-color: #131f30;
-}
-.bgBalck .order-list li{
-	border-bottom: 1px solid #12151c;
-}
-.bgBalck .bottom-left{
-	border: 1px solid #12151c;
-}
-.bgBalck  .time-num input{
-	border: 1px solid #12151c;
-	background-color: #202833;
-}
-.buys,.sells{
-	top: auto!important;
-	bottom: 10.0vh;
-}
-.buys .layui-layer-title{
-	background-color: #4f986f!important;
-	color: #fff;
-}
-.sells .layui-layer-title{
-	background-color: #c15a58!important;
-	color: #fff;
-}
-.buys .orders,.sells .orders{
-	padding: 0 20px 10px;
-}
-.buys .layui-layer-btn,.sells .layui-layer-btn{
-	padding: 0 15px 10px;
-}
-.buys .orders-list span,.sells .orders-list span{
-	margin-top: 0;
-}
-.bgBalck .btn-text {
-    background-color: #202833;
-}

BIN
hybrid_01/image/buy.png


BIN
hybrid_01/image/sell.png


File diff suppressed because it is too large
+ 0 - 1046
hybrid_01/index.html


+ 0 - 33
hybrid_01/javascripts/dataMap.js

@@ -1,33 +0,0 @@
-$(function() {
-	//=================li标签切换=====================
-	$('.tab_content .tab_list').eq(0).show();
-	
-	$('ul.information>li').click(function(){
-		$(this).addClass('borb2').siblings().removeClass('borb2');
-		var index = $(this).index();
-		$('.tab_content .tab_list').hide().eq(index).show();
-		// var length = $('#record>div>table').eq(index).find('tr').length;
-		// for(var i=0;i<length;i++) {
-		// 	var the = $('#record>div>table').eq(index).find('tr').eq(i).find('td').eq(1);
-		// 	if(the.html() == '买入'){
-		// 		the.addClass('g');
-		// 	}else if(the.html() == '卖出'){
-		// 		the.addClass('p');
-		// 	}			
-		// }
-
-	});
-	//=====================================
-	$('#bottom>dl').click(function(){
-		if($(this).hasClass('act') == false){
-			$(this).addClass('act');
-			$(this).find('dt>img').attr('src','images/collect1.png').parent('dt').next('dd').html('已收藏')
-		}else{
-			$(this).removeClass('act');
-			$(this).find('dt>img').attr('src','images/collect2.png').parent('dt').next('dd').html('添加自选')
-		}
-		
-	});
-	
-});
-

+ 0 - 117
hybrid_01/javascripts/jquery.cookie.js

@@ -1,117 +0,0 @@
-/*!
- * jQuery Cookie Plugin v1.4.1
- * https://github.com/carhartl/jquery-cookie
- *
- * Copyright 2013 Klaus Hartl
- * Released under the MIT license
- */
-(function (factory) {
-	if (typeof define === 'function' && define.amd) {
-		// AMD
-		define(['jquery'], factory);
-	} else if (typeof exports === 'object') {
-		// CommonJS
-		factory(require('jquery'));
-	} else {
-		// Browser globals
-		factory(jQuery);
-	}
-}(function ($) {
-
-	var pluses = /\+/g;
-
-	function encode(s) {
-		return config.raw ? s : encodeURIComponent(s);
-	}
-
-	function decode(s) {
-		return config.raw ? s : decodeURIComponent(s);
-	}
-
-	function stringifyCookieValue(value) {
-		return encode(config.json ? JSON.stringify(value) : String(value));
-	}
-
-	function parseCookieValue(s) {
-		if (s.indexOf('"') === 0) {
-			// This is a quoted cookie as according to RFC2068, unescape...
-			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
-		}
-
-		try {
-			// Replace server-side written pluses with spaces.
-			// If we can't decode the cookie, ignore it, it's unusable.
-			// If we can't parse the cookie, ignore it, it's unusable.
-			s = decodeURIComponent(s.replace(pluses, ' '));
-			return config.json ? JSON.parse(s) : s;
-		} catch(e) {}
-	}
-
-	function read(s, converter) {
-		var value = config.raw ? s : parseCookieValue(s);
-		return $.isFunction(converter) ? converter(value) : value;
-	}
-
-	var config = $.cookie = function (key, value, options) {
-
-		// Write
-
-		if (value !== undefined && !$.isFunction(value)) {
-			options = $.extend({}, config.defaults, options);
-
-			if (typeof options.expires === 'number') {
-				var days = options.expires, t = options.expires = new Date();
-				t.setTime(+t + days * 864e+5);
-			}
-
-			return (document.cookie = [
-				encode(key), '=', stringifyCookieValue(value),
-				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
-				options.path    ? '; path=' + options.path : '',
-				options.domain  ? '; domain=' + options.domain : '',
-				options.secure  ? '; secure' : ''
-			].join(''));
-		}
-
-		// Read
-
-		var result = key ? undefined : {};
-
-		// To prevent the for loop in the first place assign an empty array
-		// in case there are no cookies at all. Also prevents odd result when
-		// calling $.cookie().
-		var cookies = document.cookie ? document.cookie.split('; ') : [];
-
-		for (var i = 0, l = cookies.length; i < l; i++) {
-			var parts = cookies[i].split('=');
-			var name = decode(parts.shift());
-			var cookie = parts.join('=');
-
-			if (key && key === name) {
-				// If second argument (value) is a function it's a converter...
-				result = read(cookie, value);
-				break;
-			}
-
-			// Prevent storing a cookie that we couldn't decode.
-			if (!key && (cookie = read(cookie)) !== undefined) {
-				result[name] = cookie;
-			}
-		}
-
-		return result;
-	};
-
-	config.defaults = {};
-
-	$.removeCookie = function (key, options) {
-		if ($.cookie(key) === undefined) {
-			return false;
-		}
-
-		// Must not alter options, thus extending a fresh object...
-		$.cookie(key, '', $.extend({}, options, { expires: -1 }));
-		return !$.cookie(key);
-	};
-
-}));

+ 0 - 239
hybrid_01/javascripts/main.js

@@ -1,239 +0,0 @@
-var _PROTOCOL = "http:";
-// var _HOST = "www.hsfuture.net";
-var _HOST='a001.8810888.cn';
-var _DOMAIN = _PROTOCOL + '//' + _HOST;
-var _SERVER = _DOMAIN + "/mobile/"; //域名
-var _API = _DOMAIN + "/api/";
-// var socket_api = _DOMAIN + ':' + localStorage.getItem('socketPort');
-var socket_api = _DOMAIN  ;
-if (window.location.pathname != '/mobile/leverList.html') {
-    localStorage.setItem('leverStatus', '');
-}
-if (window.location.pathname != '/mobile/LeveragedDeals.html') {
-    localStorage.setItem('htmlStatus', '');
-}
-$('input').blur(function () {
-    setTimeout(function () {
-        document.body.scrollTop = document.body.scrollHeight;
-    }, 300);
-})
-$('select').change(function () {
-    setTimeout(function () {
-        document.body.scrollTop = document.body.scrollHeight;
-    }, 300);
-})
-$('.header .back').click(function () {
-    // alert(-1);
-    history.back();
-})
-function get_user() {
-    return plus.storage.getItem("token") || 0;
-}
-
-function set_user(token) {
-    var days = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 7;
-    $.cookie("token", token, {
-        expires: days,
-        path: "/"
-    });
-}
-
-function get_user_login() {
-    return get_user() || (location.href = _SERVER + "login.html");
-}
-//layer提示层
-function layer_msg(content) {
-
-    if (content == "") {
-        content = "请刷新重试"
-    }
-    layer.msg(content)
-    // layer.open({
-    //     content: content
-    //     ,skin: 'msg'
-    //     ,time: 2 //2秒后自动关闭
-    // });
-}
-
-//layer提示层
-function layer_loading(content) {
-    if (content == "") {
-        content = "加载中"
-    }
-    layer.load(2);
-}
-
-function layer_close() {
-    layer.closeAll()
-}
-// 询问提示框
-function layer_confirm2(con, data, callback) {
-    // var con = con || '确定要删除吗?'
-    // var btnText = data.text || '确定'
-    // var titles = data.title || ''
-    // layer.confirm(con, {
-    //     title: titles
-    // }, function (index) {
-    //     layer.close(index);
-    //     callback && callback();
-    // })
-    layer.open({
-        type: 1,
-        title: '<img class="modal-logo" src="images/modal-logo.png" alt="">',
-        skin: 'loads-btn btn-text',
-        area: ['70%', 'auto'],
-        content: con,
-        btn: ['取消', '确认'],
-        btn2: function (index) {
-            layer.close(index);
-            callback && callback();
-
-        }
-    });
-    // layer.open({
-    //     title:titles,
-    //     content: con
-    //     ,btn: [btnText, '取消']
-    //     ,yes: function(index){
-    //       layer.close(index);
-    //       callback&&callback();
-    //     }
-    //   });
-}
-
-function layer_confirm(con, callback) {
-    var con = con || '确定要删除吗?';
-    layer.open({
-        type: 1,
-        title: '<img class="modal-logo" src="images/modal-logo.png" alt="">',
-        skin: 'loads-btn btn-text',
-        area: ['70%', 'auto'],
-        content: con,
-        btn: ['取消', '确认'],
-        btn2: function (index) {
-            layer.close(index);
-            callback && callback();
-
-        }
-    });
-}
-/***
- * 获取url中所有参数
- * 返回参数键值对 对象
- */
-function get_all_params() {
-    var url = location.href;
-    var nameValue;
-    var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
-    var paraObj = {};
-    for (var i = 0; nameValue = paraString[i]; i++) {
-        var name = nameValue.substring(0, nameValue.indexOf("=")).toLowerCase();
-        var value = nameValue.substring(nameValue.indexOf("=") + 1, nameValue.length);
-        if (value.indexOf("#") > -1) {
-            value = value.split("#")[0];
-        }
-        paraObj[name] = decodeURI(value);
-    }
-    return paraObj;
-}
-
-/**获取url中字段的值
- * name : 字段名
- * */
-function get_param(name) {
-    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
-    var r = window.location.search.substr(1).match(reg);
-    if (r != null) {
-        return unescape(r[2]);
-    }
-    return null;
-}
-// 获取不需token的数据
-function initData(params, callback) {
-    // layer_loading();
-    url = _API + params.url;
-    type = params.type || 'get';
-    data = params.data || [];
-    $.ajax({
-        url,
-        type,
-        data,
-        success: function (res) {
-            layer_close();
-            if (res.type == 'ok') {
-                callback && callback(res.message)
-            } else {
-                layer_msg(res.message)
-            }
-        }
-    })
-}
-function initDataToken(params, callback) {
-    // layer_loading();
-    var url = _API + params.url;
-    var type = params.type || 'get';
-    var data = params.data || [];
-    var token = getlocal_storage('token');
-    $.ajax({
-        url,
-        type,
-        data,
-        beforeSend: function beforeSend(request) {
-            request.setRequestHeader('AUTHORIZATION', token)
-        },
-        success: function (res) {
-            layer_close();
-			console.log(token);
-            if (res.type == 'ok') {
-                callback && callback(res.message)
-            } else {
-                layer_msg(res.message)
-            }
-        }
-    })
-}
-
-function setlocal_storage(str, data) {
-	if(window.plus){
-		plus.storage.setItem(str, JSON.stringify(data));
-	}else{
-		localStorage.setItem(str, JSON.stringify(data));
-	}
-    
-}
-
-function getlocal_storage(str) {
-	if(window.plus){
-		// console.log('+-+-+--+--++--22')
-		console.log(plus.storage.getItem(str))//312308f2dbb3dd790dc5a5e378712955
-		return plus.storage.getItem(str);
-	}else{
-		// console.log('+-+-+--+--++--33')
-		console.log(localStorage.getItem(str))
-		if(localStorage.getItem(str) =='' ||localStorage.getItem(str) == null){
-			return;
-		}
-		return localStorage.getItem(str);
-	}
-}
-//时间戳转换时间
-function timestampToTime(timestamp) {
-    var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
-    var Y = date.getFullYear() + '-';
-    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
-    var D = date.getDate() > 9 ? date.getDate() + ' ' : ('0' + date.getDate()) + ' ';
-    var h = date.getHours() > 9 ? date.getHours() + ':' : ('0' + date.getHours()) + ':';
-    var m = date.getMinutes() > 9 ? date.getMinutes() + ':' : ('0' + date.getMinutes()) + ':';
-    var s = date.getSeconds() > 9 ? date.getSeconds() : ('0' + date.getSeconds());
-    return Y + M + D + h + m + s;
-}
-
-function iTofixed(values, numbers) {
-    let val = Number(values);
-	let num = Number(numbers);
-	let nums = Number(numbers - 0 + 1);
-	let base = '10';
-	let decimal = base.padEnd(nums, 0) - 0;
-	var vals = (Math.floor(val * decimal) / decimal).toFixed(num);
-	return vals;
-}

File diff suppressed because it is too large
+ 0 - 6988
hybrid_01/javascripts/socket.io.js


+ 0 - 27
hybrid_01/kefu.html

@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-  <meta charset="UTF-8" />
-  <meta http-equiv="X-UA-Compatible " content="IE=edge" />
-  <meta name="viewport"
-    content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-  <title>在线咨询</title>
-  <style>
-    html,
-    body {
-      width: 100%;
-      height: 100%;
-      margin: 0;
-      padding: 0
-    }
-  </style>
-</head>
-<body>
-    <script language="javascript" type="text/javascript">
-
-setTimeout("javascript:location.href='https://kefu.jtgj88.com/index/index/home?visiter_id=&visiter_name=&avatar=&business_id=26&groupid=0&special=29&theme=7571f9'", 1000);
-
-</script>
- 
-    </body >
-  </html >

File diff suppressed because it is too large
+ 0 - 10253
hybrid_01/lib/jquery.js


File diff suppressed because it is too large
+ 0 - 2
hybrid_01/lib/layer_mobile/layer.js


File diff suppressed because it is too large
+ 0 - 2
hybrid_01/lib/layer_mobile/mobile/layer.js


File diff suppressed because it is too large
+ 0 - 1
hybrid_01/lib/layer_mobile/mobile/need/layer.css


BIN
hybrid_01/lib/layer_mobile/theme/default/icon-ext.png


BIN
hybrid_01/lib/layer_mobile/theme/default/icon.png


File diff suppressed because it is too large
+ 0 - 1
hybrid_01/lib/layer_mobile/theme/default/layer.css


BIN
hybrid_01/lib/layer_mobile/theme/default/loading-0.gif


BIN
hybrid_01/lib/layer_mobile/theme/default/loading-1.gif


BIN
hybrid_01/lib/layer_mobile/theme/default/loading-2.gif


File diff suppressed because it is too large
+ 0 - 6
hybrid_01/lib/vue.min.js


File diff suppressed because it is too large
+ 0 - 2258
hybrid_01/second.html


+ 0 - 19
hybrid_01/tradeview/CONTRIBUTING.md

@@ -1,19 +0,0 @@
-## General
-* Please use English. We want to share experience between our customers to increase effectiveness of this bug tracker.
-
-## Reporting a bug
-* Please help us spend our time effectively and always update your Library's build to the latest `unstable` version to check if the issue still happens. You can also find the Charting Library built from `unstable` at https://demo_chart.tradingview.com
-* Report a version of the library. You can check it with `TradingView.version()` from the browser console
-* Report a device/browser where the issue can be replicated
-* Provide step-by-step way to reproduce the issue
-* Provide a code example
-* Give a link to your Charting Library where we can reproduce it
-
-## Asking a question
-* We spent a lot of time creating those [docs](https://github.com/tradingview/charting_library/wiki) for you to make your life easier. Please give it a try. If you are a newcomer please make sure that you've read the [Best Practices](https://github.com/tradingview/charting_library/wiki/Best-practices) and [Frequently Asked Questions](https://github.com/tradingview/charting_library/wiki/Frequently-Asked-Questions).
-* Describe what do you want to achieve
-* Provide screenshots if possible
- 
-## Requesting a new feature
-* While we would love to be able to implement everything, we simply don’t have the resources. At this time, please be aware we have long term plans and quick implementation of new feature requests should not be expected. However, we review everything and take your many great suggestions into account. 
-* Thank you for playing an active part in the TradingView community!

+ 0 - 17
hybrid_01/tradeview/README.md

@@ -1,17 +0,0 @@
-# TradingView Charting Library
-
-
-This repository contains Charting Library package. If you use Git in your project, please feel free to use this repo as a submodule to your one. 
-
-`master` branch contains current stable version. 
-
-`unstable` branch contains the most recent features and fixes, but it can be less stable (actually, it is beta which is already thourghly tested).
-
-### Documentation
-See our docs @ this repository's [wiki](https://github.com/tradingview/charting_library/wiki). Please read it (at least, [Overview](https://github.com/tradingview/charting_library/wiki) and [Best Practices](https://github.com/tradingview/charting_library/wiki/Best-practices)) before running the Library.
-
-### Issues Tracking
-We use GitHub [Issues tracker](https://github.com/tradingview/charting_library/issues) for our project. Feel free to create bug reports and features requests. Please try reading the doc before asking questions because we will have more time for development then. 
-
-### Stay Tuned
-[Follow us](https://twitter.com/intent/follow?screen_name=tv_charts) on Twitter to receive the updates.

File diff suppressed because it is too large
+ 0 - 1230
hybrid_01/tradeview/charting_library/charting_library.min.d.ts


File diff suppressed because it is too large
+ 0 - 1
hybrid_01/tradeview/charting_library/charting_library.min.js


File diff suppressed because it is too large
+ 0 - 220
hybrid_01/tradeview/charting_library/datafeed-api.d.ts


File diff suppressed because it is too large
+ 0 - 4
hybrid_01/tradeview/charting_library/static/bundles/13.280894673316ad6ac6f2.js


BIN
hybrid_01/tradeview/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur


BIN
hybrid_01/tradeview/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur


File diff suppressed because it is too large
+ 0 - 78
hybrid_01/tradeview/charting_library/static/bundles/ds-property-pages.1a3d233b8aa4552a7048.js


File diff suppressed because it is too large
+ 0 - 6
hybrid_01/tradeview/charting_library/static/bundles/editobjectdialog.25fa62e6b4f8125e697e.js


BIN
hybrid_01/tradeview/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur


File diff suppressed because it is too large
+ 0 - 14
hybrid_01/tradeview/charting_library/static/bundles/go-to-date-dialog-impl.5faeb6b7a961fd527d9b.js


BIN
hybrid_01/tradeview/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur


BIN
hybrid_01/tradeview/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur


File diff suppressed because it is too large
+ 0 - 1
hybrid_01/tradeview/charting_library/static/bundles/ie-fallback-logos.b27f679ee44b7d0992e1.js


File diff suppressed because it is too large
+ 0 - 32
hybrid_01/tradeview/charting_library/static/bundles/lazy-jquery-ui.1803178846ddad426aeb.js


File diff suppressed because it is too large
+ 0 - 15
hybrid_01/tradeview/charting_library/static/bundles/lazy-velocity.97588d47c84409f2bc4b.js


File diff suppressed because it is too large
+ 0 - 697
hybrid_01/tradeview/charting_library/static/bundles/library.19c99ed5d0307c67f071.js


File diff suppressed because it is too large
+ 0 - 1
hybrid_01/tradeview/charting_library/static/bundles/library.a8de6f8cf4dda6895071c6ec45f900d9.css


File diff suppressed because it is too large
+ 0 - 77
hybrid_01/tradeview/charting_library/static/bundles/lt-pane-views.96fd54d9b7bad567d490.js


+ 0 - 136
hybrid_01/tradeview/charting_library/static/bundles/new.css

@@ -1,136 +0,0 @@
-.space-single:nth-child(7) .button{
-  /*background: #344568;*/
-  /*color: #fff;*/
-  /*float: left !important;*/
-  /*position: absolute;*/
-  /*left: 20px;*/
-}
-.my2{
-  /*background: none;不能删*/
-}
-.chart-page .chart-container{
-  border: none;
-}
-.header-group-bars-style{
-  display: none !important;
-}
-.header-group-symbol-search{
-  display: none !important;
-}
-.header-group-properties{
-  float: right;
-}
-.header-group-indicators{
-  float: right;
-}
-.header-chart-panel .header-group-fullscreen{
-  float: right;
-  display: none;
-}
-
-.apply-overflow-tooltip{
-  /*color: #fff !important;*/
-  /*font-size: 19px !important;*/
-}
-
-/*.header-chart-panel .group:nth-child(2){*/
-/*background: red !important;*/
-/*}*/
-.bottom-widgetbar-content.backtesting .button, .header-chart-panel .button{
-  /*width: 20px;*/
-  padding: 7px 5px;
-  border: none;
-  background: none;
-  /*height: 30px;*/
-  /*line-height: 15px;*/
-  color: #999;
-}
-.mydate{
-  /*margin-left: 20px;*/
-  /* background: #344568 !important;
-  color: #fff !important; */
-  color: #218bde !important;
-  border-bottom: 1px solid #218bde !important
-}
-.js-rootresizer__contents{
-  background:#10202e;
-}
-.header-chart-panel .group.header-group-properties{
-	/* display: block !important; */
-}
-.pane-legend-item-value-wrap .pane-legend-item-value:first-child{
-	display: none;
-}
-/* .pane-legend{
-  display: none;
-} */
-.button.indicators svg {
-  fill: #4e5b85;
-}
-.button.fullscreen svg {
-  fill: #4e5b85;
-}
-.button.properties svg {
-  fill: #4e5b85;
-}
-@media only screen and (max-width: 410px){
-  .header-chart-panel .group.header-group-indicators {
-      display: block!important;
-  }
-}
-.pane-controls.toppane{
-  display: none;
-}
-.pane-legend-line.pane-legend-wrap.study{
-  display: none;
-}
-.control-bar-wrapper{
-  display: none;
-}
-.pane-controls{
-  display: none;
-}
-.tv-search-row.tv-insert-indicator-dialog__search-control{
-  display: none;
-}
-.tv-dialog{
-  background: #10202e !important;
-  color: #5a718e;
-}
-.layout__area--top.header-chart-panel.header-chart-panel--compact{
-  background: #131f30
-}
-.pane-legend-line .pane-legend-icon-container{
-  display: none ;
-}
-.pane-legend .pane-legend-minbtn.apply-common-tooltip.apply{
-  display: none;
-}
-.pane-legend-line>span.pane-legend-line.apply-overflow-tooltip.no-context-menu.main{
-  display: none;
-}
-.feature-touch .header-chart-panel .button:active{
-  background: none !important;
-}
-.tv-dialog__section {
-  border-bottom-color: #2b323b !important;
-}
-.tv-dialog__title {
-  color: #5a718e !important;
-}
-.tv-dialog__close svg {
-  fill: #f1f3f6 !important;
-}
-.header-chart-panel .button.active{
-  background: none !important;
-}
-.tv-insert-indicator-dialog__pages::-webkit-scrollbar-thumb {
-  border-color: #fff !important;
-  background-color: #fff !important;
-}
-.header-chart-panel-content>.left>.group:nth-child(n+9){
-  /* display: none; */
-}
-.header-chart-panel-content>.left>.group:nth-last-child(1){
-  display: inline-block;
-}

File diff suppressed because it is too large
+ 0 - 9
hybrid_01/tradeview/charting_library/static/bundles/objecttreedialog.3f22589e98a1cedf9028.js


File diff suppressed because it is too large
+ 0 - 1
hybrid_01/tradeview/charting_library/static/bundles/propertypagesfactory.54b21a18753b2d8c83c2.js


File diff suppressed because it is too large
+ 0 - 6
hybrid_01/tradeview/charting_library/static/bundles/symbol-info-dialog-impl.f6bc55c14cd39967110a.js


File diff suppressed because it is too large
+ 0 - 9
hybrid_01/tradeview/charting_library/static/bundles/take-chart-image-dialog-impl.5ae42a6bc17c617b055f.js


+ 0 - 1
hybrid_01/tradeview/charting_library/static/bundles/vendors.a94ef44ed5c201cefcf6ad7460788c1a.css

@@ -1 +0,0 @@
-@keyframes highlight-animation{0%{background:transparent}to{background:#fff2cf}}@keyframes highlight-animation-theme-dark{0%{background:transparent}to{background:#194453}}

File diff suppressed because it is too large
+ 0 - 169
hybrid_01/tradeview/charting_library/static/bundles/vendors.fd8604c09abed9f6643a.js


BIN
hybrid_01/tradeview/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur


File diff suppressed because it is too large
+ 0 - 414
hybrid_01/tradeview/charting_library/static/fonts/fontawesome-webfont.svg


BIN
hybrid_01/tradeview/charting_library/static/fonts/fontawesome-webfont.ttf


BIN
hybrid_01/tradeview/charting_library/static/fonts/fontawesome-webfont.woff


BIN
hybrid_01/tradeview/charting_library/static/images/balloon.png


BIN
hybrid_01/tradeview/charting_library/static/images/bar-loader.gif


BIN
hybrid_01/tradeview/charting_library/static/images/button-bg.png


BIN
hybrid_01/tradeview/charting_library/static/images/charting_library/logo-widget-copyright-faded.png


BIN
hybrid_01/tradeview/charting_library/static/images/charting_library/logo-widget-copyright.png


BIN
hybrid_01/tradeview/charting_library/static/images/controlll.png


BIN
hybrid_01/tradeview/charting_library/static/images/delayed.png


BIN
hybrid_01/tradeview/charting_library/static/images/dialogs/checkbox.png


BIN
hybrid_01/tradeview/charting_library/static/images/dialogs/close-flat.png


BIN
hybrid_01/tradeview/charting_library/static/images/dialogs/large-slider-handle.png


BIN
hybrid_01/tradeview/charting_library/static/images/dialogs/linewidth-slider.png


BIN
hybrid_01/tradeview/charting_library/static/images/dialogs/opacity-slider.png


BIN
hybrid_01/tradeview/charting_library/static/images/icons.png


BIN
hybrid_01/tradeview/charting_library/static/images/prediction-clock-black.png


BIN
hybrid_01/tradeview/charting_library/static/images/prediction-clock-white.png


BIN
hybrid_01/tradeview/charting_library/static/images/prediction-failure-white.png


BIN
hybrid_01/tradeview/charting_library/static/images/prediction-success-white.png


BIN
hybrid_01/tradeview/charting_library/static/images/select-bg.png


BIN
hybrid_01/tradeview/charting_library/static/images/sidetoolbar/instruments.png


BIN
hybrid_01/tradeview/charting_library/static/images/sidetoolbar/toolgroup.png


+ 0 - 1
hybrid_01/tradeview/charting_library/static/images/svg/chart/bucket2.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38 38"><path d="M0 0v38h38V0H0zm7 29h24v4H7v-4z" class="bg"/><path d="M24.06 17.94L15.123 9l-1.41 1.41 2.38 2.38-5.15 5.15a1.49 1.49 0 0 0 0 2.12l5.5 5.5c.29.29.68.44 1.06.44s.77-.15 1.06-.44l5.5-5.5c.59-.58.59-1.53 0-2.12zM12.713 19l4.79-4.79L22.29 19h-9.58zM26.5 20.5s-2 2.17-2 3.5c0 1.1.9 2 2 2s2-.9 2-2c0-1.33-2-3.5-2-3.5z" class="icon"/></svg>

+ 0 - 1
hybrid_01/tradeview/charting_library/static/images/svg/chart/font.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38 38"><path d="M0 0v38h38V0H0zm7 29h24v4H7v-4z" class="bg"/><path d="M23.094 25.5L22 22.17h-5.904l-1.17 3.33H12.5l6.446-16h.574l5.98 16h-2.405zM19.13 13.637l-2.46 6.95h4.712l-2.252-6.95z" class="icon"/></svg>

+ 0 - 1
hybrid_01/tradeview/charting_library/static/images/svg/chart/large-slider-handle.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><g transform="translate(0 -1032.362)"><circle cx="10" cy="1042.362" r="8" fill="#fff"/><path d="M10 1033.362c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9-4.03-9-9-9zm0 1.125c4.35 0 7.875 3.526 7.875 7.875 0 4.35-3.526 7.875-7.875 7.875-4.35 0-7.875-3.526-7.875-7.875 0-4.35 3.526-7.875 7.875-7.875zm0 5.875a2 2 0 0 0-2 2 2 2 0 0 0 2 2 2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill="#aaafb9"/></g></svg>

+ 0 - 1
hybrid_01/tradeview/charting_library/static/images/svg/chart/pencil2.svg

@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 38 38"><path d="M0 0v38h38V0H0zm7 29h24v4H7v-4z" class="bg"/><path d="M24.748 16l-3.75-3.748-9.998 10V26h3.75l9.998-10zm2.96-2.96a.996.996 0 0 0 0-1.408l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.96 1.96 3.75 3.75 1.96-1.96z" class="icon"/></svg>

File diff suppressed because it is too large
+ 0 - 1
hybrid_01/tradeview/charting_library/static/images/svg/question-mark-rounded.svg


BIN
hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-bg-gradient.png


BIN
hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-bg.png


BIN
hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-check.png


BIN
hybrid_01/tradeview/charting_library/static/images/tvcolorpicker-sprite.png


+ 0 - 0
hybrid_01/tradeview/charting_library/static/images/warning-icon.png


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