warnZb.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473
  1. <template>
  2. <div class="warnZb">
  3. <div ref="coord" class="coords" :style="{ width: widthV, height: heightV }">
  4. <div class="triangle-x"></div>
  5. <div class="triangle-y"></div>
  6. <div class="coord-dw">
  7. <div class="dw-item" :style="{ bottom: `${coordDw[0]}px` }">30~40℃</div>
  8. <div class="dw-item" :style="{ bottom: `${coordDw[1]}px` }">50~60℃</div>
  9. <div class="dw-item" :style="{ bottom: `${coordDw[2]}px` }">70~80℃</div>
  10. <div class="dw-item" :style="{ bottom: `${coordDw[3]}px` }">90~110℃</div>
  11. <div class="dw-item" :style="{ bottom: `${coordDw[4]}px` }">130~160℃</div>
  12. <div class="dw-item" :style="{ bottom: `${coordDw[5]}px` }">210~350℃</div>
  13. </div>
  14. <div class="coord-bj">
  15. <div class="bj-qfq" :style="{ width: widthCanvas < 600 ? '180px' : '401px' }">
  16. <div class="left-jt"></div>
  17. <div class="line"></div>
  18. <div class="right-jt"></div>
  19. <div class="text">潜伏期</div>
  20. </div>
  21. <div class="bj-zrq" :style="{ width: widthCanvas < 600 ? '360px' : '699px' }">
  22. <div class="left-jt"></div>
  23. <div class="line"></div>
  24. <div class="right-jt"></div>
  25. <div class="text">自热期</div>
  26. </div>
  27. <div class="bj-rsq" :style="{ width: widthCanvas < 600 ? '90px' : '305px' }">
  28. <div class="left-jt"></div>
  29. <div class="line"></div>
  30. <div class="text">燃烧期</div>
  31. </div>
  32. </div>
  33. <div class="coord-area" :style="{ width: 'calc(100% - 10px)', height: 'calc(100% - 10px)',overflow:'hidden' }">
  34. <canvas id="myCanvas" :width="widthCanvas" :height="heightCanvas"></canvas>
  35. </div>
  36. </div>
  37. </div>
  38. </template>
  39. <script setup lang="ts">
  40. import { ref, reactive, onMounted, watch } from 'vue';
  41. let props = defineProps({
  42. widthV: {
  43. type: String,
  44. default: '',
  45. },
  46. heightV: {
  47. type: String,
  48. default: '',
  49. },
  50. coordDw: {
  51. type: Array,
  52. default: () => {
  53. return [];
  54. },
  55. },
  56. widthCanvas: {
  57. type: Number,
  58. default: 0,
  59. },
  60. heightCanvas: {
  61. type: Number,
  62. default: 0,
  63. },
  64. warnLevel: {
  65. type: String,
  66. default: ''
  67. }
  68. });
  69. let coord = ref(null);
  70. let lengY = ref(0);
  71. //与x,y轴相交最大值坐标
  72. let maxY = ref(0);
  73. let maxX = ref(0);
  74. function getAreas() {
  75. if (coord.value) {
  76. let width = coord.value.offsetWidth;
  77. let height = coord.value.offsetHeight;
  78. lengY.value = Math.ceil((height - 10) / 10);
  79. }
  80. }
  81. function getCanvas() {
  82. // 获取canvas元素
  83. let canvas = document.getElementById('myCanvas');
  84. let ctx = canvas.getContext('2d');
  85. let x = 0;
  86. let step = props.widthCanvas < 600 ? 0.02 : 0.05; // 设置每次递增的长度
  87. let y = props.widthCanvas < 600 ? 280 : 230; // 初始y坐标
  88. // 设置线条样式
  89. ctx.strokeStyle = '#3df6ff'; // 红色线条
  90. ctx.lineWidth = 2; // 线宽为2
  91. // 初始化曲线数据
  92. let xValues: any[] = [];
  93. let yValues: any[] = [];
  94. for (let i = 0; i < 30000; i++) {
  95. x += step;
  96. if (props.widthCanvas < 600) {
  97. y -= (step * Math.random() * i) / 15000; // 随机增加长度,使曲线更加平滑
  98. } else {
  99. y -= (step * Math.random() * i) / 30000; // 随机增加长度,使曲线更加平滑
  100. }
  101. xValues[i] = x;
  102. yValues[i] = y;
  103. }
  104. // 绘制递增曲线
  105. ctx.beginPath();
  106. ctx.moveTo(xValues[0], yValues[0]);
  107. for (var i = 1; i < xValues.length; i++) {
  108. ctx.lineTo(xValues[i], yValues[i]);
  109. if(props.warnLevel=='1'){
  110. ctx.fillStyle = 'rgba(145, 230, 9)'; // 设置填充颜色
  111. if(props.widthCanvas < 600 && i<=4500){
  112. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  113. }else if(i<=4000) {
  114. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  115. }
  116. }else if(props.warnLevel=='2'){
  117. ctx.fillStyle = 'rgba(0, 242, 255)'; // 设置填充颜色
  118. if(props.widthCanvas < 600 && i<=9000){
  119. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  120. }else if(i<=8000) {
  121. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  122. }
  123. }else if(props.warnLevel=='3'){
  124. ctx.fillStyle = 'rgba(255, 255, 53)'; // 设置填充颜色
  125. if(props.widthCanvas < 600 && i<=13500){
  126. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  127. }else if(i<=12000) {
  128. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  129. }
  130. }else if(props.warnLevel=='4'){
  131. ctx.fillStyle = 'rgba(255, 190, 105)'; // 设置填充颜色
  132. if(props.widthCanvas < 600 && i<=18000){
  133. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  134. }else if(i<=16000) {
  135. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  136. }
  137. }else if(props.warnLevel=='5'){
  138. ctx.fillStyle = 'rgba(255, 111, 0)'; // 设置填充颜色
  139. if(props.widthCanvas < 600 && i<=22500){
  140. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  141. }else if(i<=20000) {
  142. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  143. }
  144. }else if(props.warnLevel=='6'){
  145. ctx.fillStyle = 'rgba(255, 0, 0)'; // 设置填充颜色
  146. if(props.widthCanvas < 600 && i<=27000){
  147. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  148. }else if(i<=22000) {
  149. ctx.fillRect(xValues[i], yValues[i], step, canvas.height - yValues[i]);
  150. }
  151. }
  152. }
  153. ctx.stroke();
  154. //标记点1
  155. ctx.beginPath();
  156. ctx.arc(xValues[props.widthCanvas < 600 ? 4500 : 4000], yValues[props.widthCanvas < 600 ? 4500 : 4000], 6, 0, 2 * Math.PI);
  157. ctx.fillStyle = '#ff6363';
  158. ctx.fill();
  159. //标记点2
  160. ctx.beginPath();
  161. ctx.arc(xValues[props.widthCanvas < 600 ? 9000 : 8000], yValues[props.widthCanvas < 600 ? 9000 : 8000], 6, 0, 2 * Math.PI);
  162. ctx.fillStyle = '#ff6363';
  163. ctx.fill();
  164. //标记点3
  165. ctx.beginPath();
  166. ctx.arc(xValues[props.widthCanvas < 600 ? 13500 : 12000], yValues[props.widthCanvas < 600 ? 13500 : 12000], 6, 0, 2 * Math.PI);
  167. ctx.fillStyle = '#ff6363';
  168. ctx.fill();
  169. // 在点附近添加文字
  170. ctx.font = '12px Arial';
  171. ctx.fillStyle = '#ff6363';
  172. ctx.fillText('临界', xValues[props.widthCanvas < 600 ? 13500 : 12000] - 10, yValues[props.widthCanvas < 600 ? 13500 : 12000] - 15); // 文字位置略微偏上,以便于文字与点对齐
  173. //标记点4
  174. ctx.beginPath();
  175. ctx.arc(xValues[props.widthCanvas < 600 ? 18000 : 16000], yValues[props.widthCanvas < 600 ? 18000 : 16000], 6, 0, 2 * Math.PI);
  176. ctx.fillStyle = '#ff6363';
  177. ctx.fill();
  178. //标记点5
  179. ctx.beginPath();
  180. ctx.arc(xValues[props.widthCanvas < 600 ? 22500 : 20000], yValues[props.widthCanvas < 600 ? 22500 : 20000], 6, 0, 2 * Math.PI);
  181. ctx.fillStyle = '#ff6363';
  182. ctx.fill();
  183. // 在点附近添加文字
  184. ctx.font = '12px Arial';
  185. ctx.fillStyle = '#ff6363';
  186. ctx.fillText('征兆', xValues[props.widthCanvas < 600 ? 22500 : 20000] - 10, yValues[props.widthCanvas < 600 ? 22500 : 20000] - 15); // 文字位置略微偏上,以便于文字与点对齐
  187. //标记点5
  188. ctx.beginPath();
  189. ctx.arc(xValues[props.widthCanvas < 600 ? 27000 : 22000], yValues[props.widthCanvas < 600 ? 27000 : 22000], 6, 0, 2 * Math.PI);
  190. ctx.fillStyle = '#ff6363';
  191. ctx.fill();
  192. // 在点附近添加文字
  193. ctx.font = '12px Arial';
  194. ctx.fillStyle = '#ff6363';
  195. ctx.fillText('火灾', xValues[props.widthCanvas < 600 ? 27000 : 22000] - 10, yValues[props.widthCanvas < 600 ? 27000 : 22000] - 15); // 文字位置略微偏上,以便于文字与点对齐
  196. // 设置线条样式(颜色、宽度等)
  197. ctx.strokeStyle = '#0d2973';
  198. ctx.lineWidth = 1;
  199. ctx.lineCap = 'round';
  200. // 定义虚线模式:[线段长度, 间隔长度]
  201. ctx.setLineDash([5, 5]);
  202. //绘制标记点1线条-x
  203. ctx.beginPath();
  204. ctx.moveTo(0, yValues[props.widthCanvas < 600 ? 4500 : 4000]); // 开始绘制的点
  205. ctx.lineTo(xValues[props.widthCanvas < 600 ? 4500 : 4000], yValues[props.widthCanvas < 600 ? 4500 : 4000]); // 结束绘制的点
  206. ctx.stroke(); // 进行绘制
  207. //绘制标记点1线条-y
  208. ctx.beginPath();
  209. ctx.moveTo(xValues[props.widthCanvas < 600 ? 4500 : 4000], yValues[props.widthCanvas < 600 ? 4500 : 4000]); // 开始绘制的点
  210. ctx.lineTo(xValues[props.widthCanvas < 600 ? 4500 : 4000], canvas.height); // 结束绘制的点
  211. ctx.stroke(); // 进行绘制
  212. // 在线条附近添加文字
  213. ctx.font = '12px Arial';
  214. ctx.fillStyle = '#2aadf3';
  215. if (props.widthCanvas < 600) {
  216. ctx.fillText('潜伏阶段', xValues[props.widthCanvas < 600 ? 4500 : 4000] - 70, yValues[props.widthCanvas < 600 ? 4500 : 4000] + 25); // 文字位置略微偏上,以便于文字与点对齐
  217. ctx.fillText('氧化阶段', xValues[props.widthCanvas < 600 ? 4500 : 4000] - 70, yValues[props.widthCanvas < 600 ? 4500 : 4000] - 5); // 文字位置略微偏上,以便于文字与点对齐
  218. } else {
  219. ctx.fillText('潜伏阶段', xValues[props.widthCanvas < 600 ? 4500 : 4000] - 120, yValues[props.widthCanvas < 600 ? 4500 : 4000] + 18); // 文字位置略微偏上,以便于文字与点对齐
  220. ctx.fillText('氧化阶段', xValues[props.widthCanvas < 600 ? 4500 : 4000] - 120, yValues[props.widthCanvas < 600 ? 4500 : 4000] - 5); // 文字位置略微偏上,以便于文字与点对齐
  221. }
  222. //绘制标记点2线条-x
  223. ctx.beginPath();
  224. ctx.moveTo(0, yValues[props.widthCanvas < 600 ? 9000 : 8000]); // 开始绘制的点
  225. ctx.lineTo(xValues[props.widthCanvas < 600 ? 9000 : 8000], yValues[props.widthCanvas < 600 ? 9000 : 8000]); // 结束绘制的点
  226. ctx.stroke(); // 进行绘制
  227. //绘制标记点2线条-y
  228. ctx.beginPath();
  229. ctx.moveTo(xValues[props.widthCanvas < 600 ? 9000 : 8000], yValues[props.widthCanvas < 600 ? 9000 : 8000]); // 开始绘制的点
  230. ctx.lineTo(xValues[props.widthCanvas < 600 ? 9000 : 8000], canvas.height); // 结束绘制的点
  231. ctx.stroke(); // 进行绘制
  232. // 在线条附近添加文字
  233. ctx.font = '12px Arial';
  234. ctx.fillStyle = '#2aadf3';
  235. if (props.widthCanvas < 600) {
  236. ctx.fillText('自热阶段', xValues[props.widthCanvas < 600 ? 9000 : 8000] - 160, yValues[props.widthCanvas < 600 ? 9000 : 8000] - 12); // 文字位置略微偏上,以便于文字与点对齐
  237. } else {
  238. ctx.fillText('自热阶段', xValues[props.widthCanvas < 600 ? 9000 : 8000] - 320, yValues[props.widthCanvas < 600 ? 9000 : 8000] - 12); // 文字位置略微偏上,以便于文字与点对齐
  239. }
  240. //绘制标记点3线条-x
  241. ctx.beginPath();
  242. ctx.moveTo(0, yValues[props.widthCanvas < 600 ? 13500 : 12000]); // 开始绘制的点
  243. ctx.lineTo(xValues[props.widthCanvas < 600 ? 13500 : 12000], yValues[props.widthCanvas < 600 ? 13500 : 12000]); // 结束绘制的点
  244. ctx.stroke(); // 进行绘制
  245. //绘制标记点3线条-y
  246. ctx.beginPath();
  247. ctx.moveTo(xValues[props.widthCanvas < 600 ? 13500 : 12000], yValues[props.widthCanvas < 600 ? 13500 : 12000]); // 开始绘制的点
  248. ctx.lineTo(xValues[props.widthCanvas < 600 ? 13500 : 12000], canvas.height); // 结束绘制的点
  249. ctx.stroke(); // 进行绘制
  250. // 在线条附近添加文字
  251. ctx.font = '12px Arial';
  252. ctx.fillStyle = '#2aadf3';
  253. if (props.widthCanvas < 600) {
  254. ctx.fillText('临界阶段', xValues[props.widthCanvas < 600 ? 13500 : 12000] - 250, yValues[props.widthCanvas < 600 ? 13500 : 12000] - 20); // 文字位置略微偏上,以便于文字与点对齐
  255. } else {
  256. ctx.fillText('临界阶段', xValues[props.widthCanvas < 600 ? 13500 : 12000] - 520, yValues[props.widthCanvas < 600 ? 13500 : 12000] - 20); // 文字位置略微偏上,以便于文字与点对齐
  257. }
  258. //绘制标记点4线条-x
  259. ctx.beginPath();
  260. ctx.moveTo(0, yValues[props.widthCanvas < 600 ? 18000 : 16000]); // 开始绘制的点
  261. ctx.lineTo(xValues[props.widthCanvas < 600 ? 18000 : 16000], yValues[props.widthCanvas < 600 ? 18000 : 16000]); // 结束绘制的点
  262. ctx.stroke(); // 进行绘制
  263. //绘制标记点4线条-y
  264. ctx.beginPath();
  265. ctx.moveTo(xValues[props.widthCanvas < 600 ? 18000 : 16000], yValues[props.widthCanvas < 600 ? 18000 : 16000]); // 开始绘制的点
  266. ctx.lineTo(xValues[props.widthCanvas < 600 ? 18000 : 16000], canvas.height); // 结束绘制的点
  267. ctx.stroke(); // 进行绘制
  268. // 在线条附近添加文字
  269. ctx.font = '12px Arial';
  270. ctx.fillStyle = '#2aadf3';
  271. if (props.widthCanvas < 600) {
  272. ctx.fillText('热解阶段', xValues[props.widthCanvas < 600 ? 18000 : 16000] - 340, yValues[props.widthCanvas < 600 ? 18000 : 16000] - 25); // 文字位置略微偏上,以便于文字与点对齐
  273. } else {
  274. ctx.fillText('热解阶段', xValues[props.widthCanvas < 600 ? 18000 : 16000] - 720, yValues[props.widthCanvas < 600 ? 18000 : 16000] - 25); // 文字位置略微偏上,以便于文字与点对齐
  275. }
  276. //绘制标记点5线条-x
  277. ctx.beginPath();
  278. ctx.moveTo(0, yValues[props.widthCanvas < 600 ? 22500 : 20000]); // 开始绘制的点
  279. ctx.lineTo(xValues[props.widthCanvas < 600 ? 22500 : 20000], yValues[props.widthCanvas < 600 ? 22500 : 20000]); // 结束绘制的点
  280. ctx.stroke(); // 进行绘制
  281. //绘制标记点5线条-y
  282. ctx.beginPath();
  283. ctx.moveTo(xValues[props.widthCanvas < 600 ? 22500 : 20000], yValues[props.widthCanvas < 600 ? 22500 : 20000]); // 开始绘制的点
  284. ctx.lineTo(xValues[props.widthCanvas < 600 ? 22500 : 20000], canvas.height); // 结束绘制的点
  285. ctx.stroke(); // 进行绘制
  286. // 在线条附近添加文字
  287. ctx.font = '12px Arial';
  288. ctx.fillStyle = '#2aadf3';
  289. if (props.widthCanvas < 600) {
  290. ctx.fillText('裂变阶段', xValues[props.widthCanvas < 600 ? 22500 : 20000] - 430, yValues[props.widthCanvas < 600 ? 22500 : 20000] - 30); // 文字位置略微偏上,以便于文字与点对齐
  291. } else {
  292. ctx.fillText('裂变阶段', xValues[props.widthCanvas < 600 ? 22500 : 20000] - 920, yValues[props.widthCanvas < 600 ? 22500 : 20000] - 15); // 文字位置略微偏上,以便于文字与点对齐
  293. }
  294. //绘制标记点6线条-x
  295. ctx.beginPath();
  296. ctx.moveTo(0, yValues[props.widthCanvas < 600 ? 27000 : 22000]); // 开始绘制的点
  297. ctx.lineTo(xValues[props.widthCanvas < 600 ? 27000 : 22000], yValues[props.widthCanvas < 600 ? 27000 : 22000]); // 结束绘制的点
  298. ctx.stroke(); // 进行绘制
  299. //绘制标记点6线条-y
  300. ctx.beginPath();
  301. ctx.moveTo(xValues[props.widthCanvas < 600 ? 27000 : 22000], yValues[props.widthCanvas < 600 ? 27000 : 22000]); // 开始绘制的点
  302. ctx.lineTo(xValues[props.widthCanvas < 600 ? 27000 : 22000], canvas.height); // 结束绘制的点
  303. ctx.stroke(); // 进行绘制
  304. // 在线条附近添加文字
  305. ctx.font = '12px Arial';
  306. ctx.fillStyle = '#2aadf3';
  307. if (props.widthCanvas < 600) {
  308. ctx.fillText('燃烧阶段', xValues[props.widthCanvas < 600 ? 27000 : 22000] - 520, yValues[props.widthCanvas < 600 ? 27000 : 22000] - 15); // 文字位置略微偏上,以便于文字与点对齐
  309. } else {
  310. ctx.fillText('燃烧阶段', xValues[props.widthCanvas < 600 ? 27000 : 22000] - 1020, yValues[props.widthCanvas < 600 ? 27000 : 22000] - 15); // 文字位置略微偏上,以便于文字与点对齐
  311. }
  312. }
  313. onMounted(() => {
  314. getAreas();
  315. getCanvas();
  316. });
  317. </script>
  318. <style lang="less" scoped>
  319. .warnZb {
  320. position: relative;
  321. width: 100%;
  322. height: 100%;
  323. .blast-title {
  324. position: absolute;
  325. left: 50%;
  326. top: 24px;
  327. transform: translate(-50%, 0);
  328. font-size: 12px;
  329. color: #fff;
  330. }
  331. .coords {
  332. position: absolute;
  333. left: 50%;
  334. top: 50%;
  335. border-left: 1px solid #244a94;
  336. border-bottom: 1px solid #244a94;
  337. transform: translate(-50%, -55%);
  338. .triangle-x {
  339. position: absolute;
  340. left: -6px;
  341. top: -15px;
  342. width: 0px;
  343. height: 0px;
  344. border-top: 5px solid transparent;
  345. border-left: 5px solid transparent;
  346. border-right: 5px solid transparent;
  347. border-bottom: 10px solid #244a94;
  348. }
  349. .triangle-y {
  350. position: absolute;
  351. right: -15px;
  352. bottom: -6px;
  353. width: 0px;
  354. height: 0px;
  355. border-top: 5px solid transparent;
  356. border-left: 10px solid #244a94;
  357. border-right: 5px solid transparent;
  358. border-bottom: 5px solid transparent;
  359. }
  360. .coord-dw {
  361. position: absolute;
  362. left: -100px;
  363. top: 0;
  364. width: 100px;
  365. height: 100%;
  366. .dw-item {
  367. position: absolute;
  368. left: 50%;
  369. transform: translate(-50%, 0);
  370. color: #b3b8cc;
  371. font-size: 12px;
  372. }
  373. }
  374. .coord-bj {
  375. display: flex;
  376. position: absolute;
  377. left: -1px;
  378. bottom: -50px;
  379. width: 100%;
  380. height: 50px;
  381. border-left: 1px solid #244a94;
  382. .left-jt {
  383. position: absolute;
  384. left: 0px;
  385. top: 30px;
  386. width: 0px;
  387. height: 0px;
  388. border-top: 5px solid transparent;
  389. border-right: 10px solid #244a94;
  390. border-left: 5px solid transparent;
  391. border-bottom: 5px solid transparent;
  392. }
  393. .right-jt {
  394. position: absolute;
  395. right: 0px;
  396. top: 30px;
  397. width: 0px;
  398. height: 0px;
  399. border-top: 5px solid transparent;
  400. border-left: 10px solid #244a94;
  401. border-right: 5px solid transparent;
  402. border-bottom: 5px solid transparent;
  403. }
  404. .text {
  405. position: absolute;
  406. left: 50%;
  407. top: 50%;
  408. transform: translate(-50%, -50%);
  409. font-size: 14px;
  410. color: #db9753;
  411. }
  412. .line {
  413. width: calc(100% - 30px);
  414. height: 1px;
  415. position: absolute;
  416. left: 14px;
  417. top: 34px;
  418. background-color: #244a94;
  419. }
  420. .bj-qfq {
  421. flex-shrink: 0;
  422. position: relative;
  423. // width: 401px;
  424. height: 100%;
  425. border-right: 1px dashed #244a94;
  426. }
  427. .bj-zrq {
  428. flex-shrink: 0;
  429. position: relative;
  430. // width: 699px;
  431. height: 100%;
  432. border-right: 1px dashed #244a94;
  433. }
  434. .bj-rsq {
  435. flex-shrink: 0;
  436. position: relative;
  437. // width: 415px;
  438. height: 100%;
  439. }
  440. }
  441. .coord-area {
  442. position: absolute;
  443. left: 0;
  444. top: 10px;
  445. }
  446. }
  447. }
  448. </style>