图标添加拖拽功能,接口对接,参数调整
This commit is contained in:
		
							parent
							
								
									73250bd1c2
								
							
						
					
					
						commit
						82f707971a
					
				| 
						 | 
				
			
			@ -176,8 +176,9 @@ export default {
 | 
			
		|||
      this.currIdx = val
 | 
			
		||||
    },
 | 
			
		||||
    async handleDetalSelfStationCache() {
 | 
			
		||||
      const { inputFileName } = this.sample
 | 
			
		||||
      let params = {
 | 
			
		||||
        sampleFileName: 'ABC01_001-20240108_1405_S_FULL_40186.0.PHD',
 | 
			
		||||
        sampleFileName: inputFileName,
 | 
			
		||||
      }
 | 
			
		||||
      try {
 | 
			
		||||
        const { success, result, message } = await deleteAction('/selfStation/deleteSelfStationCache', params)
 | 
			
		||||
| 
						 | 
				
			
			@ -188,9 +189,10 @@ export default {
 | 
			
		|||
    async getSelfStationSampleDetail() {
 | 
			
		||||
      const { inputFileName, detFileName } = this.sample
 | 
			
		||||
      let params = {
 | 
			
		||||
        // sampleFileName: inputFileName,
 | 
			
		||||
        sampleFileName: 'ABC01_001-20240108_1405_S_FULL_40186.0.PHD',
 | 
			
		||||
        detFileName: detFileName || 'ABC01_001-20240108_1327_D_FULL_381505.PHD',
 | 
			
		||||
        sampleFileName: inputFileName,
 | 
			
		||||
        detFileName: detFileName,
 | 
			
		||||
        // sampleFileName: 'ABC01_001-20240108_1405_S_FULL_40186.0.PHD',
 | 
			
		||||
        // detFileName: detFileName || 'ABC01_001-20240108_1327_D_FULL_381505.PHD',
 | 
			
		||||
      }
 | 
			
		||||
      try {
 | 
			
		||||
        this.isLoading = true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,7 +15,7 @@
 | 
			
		|||
    </div>
 | 
			
		||||
    <div class="beta-gamma-spectrum-chart-main">
 | 
			
		||||
      <!-- 2D 图表,为了相应Unzoom采用的v-show -->
 | 
			
		||||
      <div class="_2d-chart" v-show="active == 0">
 | 
			
		||||
      <div class="_2d-chart" ref="TwoChartRef" v-show="active == 0">
 | 
			
		||||
        <CustomChart
 | 
			
		||||
          ref="chartTwoDRef"
 | 
			
		||||
          :option="twoDOption"
 | 
			
		||||
| 
						 | 
				
			
			@ -43,6 +43,8 @@
 | 
			
		|||
import CustomChart from '@/components/CustomChart/index.vue'
 | 
			
		||||
import ColorPalette from './ColorPalette.vue'
 | 
			
		||||
import { getXAxisAndYAxisByPosition, rangeNumber } from '@/utils/chartHelper.js'
 | 
			
		||||
import { getAction, postAction, deleteAction } from '../../../api/manage'
 | 
			
		||||
import SampleDataMixin from '../SampleDataMixin'
 | 
			
		||||
const buttons = ['Beta-Gamma', 'Gamma', 'Beta']
 | 
			
		||||
// Beta-Gamma 的配置
 | 
			
		||||
const twoDOption = {
 | 
			
		||||
| 
						 | 
				
			
			@ -67,6 +69,7 @@ const twoDOption = {
 | 
			
		|||
    },
 | 
			
		||||
  },
 | 
			
		||||
  xAxis: {
 | 
			
		||||
    id: '2',
 | 
			
		||||
    name: 'Beta Channel',
 | 
			
		||||
    nameTextStyle: {
 | 
			
		||||
      color: '#5b9cba',
 | 
			
		||||
| 
						 | 
				
			
			@ -97,6 +100,7 @@ const twoDOption = {
 | 
			
		|||
    interval: 128,
 | 
			
		||||
  },
 | 
			
		||||
  yAxis: {
 | 
			
		||||
    id: '3',
 | 
			
		||||
    name: 'Gamma Channel',
 | 
			
		||||
    nameTextStyle: {
 | 
			
		||||
      color: '#5b9cba',
 | 
			
		||||
| 
						 | 
				
			
			@ -128,6 +132,7 @@ const twoDOption = {
 | 
			
		|||
  },
 | 
			
		||||
  series: {
 | 
			
		||||
    type: 'scatterGL',
 | 
			
		||||
    z: 100,
 | 
			
		||||
    symbolSize: 4,
 | 
			
		||||
    data: [],
 | 
			
		||||
    itemStyle: {
 | 
			
		||||
| 
						 | 
				
			
			@ -147,6 +152,53 @@ const twoDOption = {
 | 
			
		|||
  brush: {},
 | 
			
		||||
  animation: false,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const dragOption = {
 | 
			
		||||
  // 绘制阈值的graphic line
 | 
			
		||||
  graphic: [
 | 
			
		||||
    {
 | 
			
		||||
      type: 'rect',
 | 
			
		||||
      // rotation: Math.PI/2,
 | 
			
		||||
      z: 1000,
 | 
			
		||||
      shape: {
 | 
			
		||||
        width: 5,
 | 
			
		||||
        height: 0,
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      //构造坐标扔进去
 | 
			
		||||
      position: [],
 | 
			
		||||
      draggable: true,
 | 
			
		||||
      style: {
 | 
			
		||||
        fill: 'rgba(255,0,255,0.3)', // fill: 'rgba(0,0,0,0.03)',  方便观察
 | 
			
		||||
        stroke: 'rgba(255,0,255,0.3)', // stroke: 'rgba(0,0,0,0.03)',  方便观察
 | 
			
		||||
        lineWidth: 10,
 | 
			
		||||
      },
 | 
			
		||||
      cursor: 'move',
 | 
			
		||||
      ondrag: null,
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      type: 'rect',
 | 
			
		||||
      // rotation: Math.PI/2,
 | 
			
		||||
      z: 1000,
 | 
			
		||||
      shape: {
 | 
			
		||||
        width: 5,
 | 
			
		||||
        height: 0,
 | 
			
		||||
      },
 | 
			
		||||
 | 
			
		||||
      //构造坐标扔进去
 | 
			
		||||
      position: [],
 | 
			
		||||
      draggable: true,
 | 
			
		||||
      style: {
 | 
			
		||||
        fill: 'rgba(255,0,255,0.3)', // fill: 'rgba(0,0,0,0.03)',  方便观察
 | 
			
		||||
        stroke: 'rgba(255,0,255,0.3)', // stroke: 'rgba(0,0,0,0.03)',  方便观察
 | 
			
		||||
        lineWidth: 10,
 | 
			
		||||
      },
 | 
			
		||||
      cursor: 'move',
 | 
			
		||||
      ondrag: null,
 | 
			
		||||
    },
 | 
			
		||||
  ],
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Gamma 的配置
 | 
			
		||||
const gammaOption = {
 | 
			
		||||
  grid: {
 | 
			
		||||
| 
						 | 
				
			
			@ -292,6 +344,7 @@ const betaOption = {
 | 
			
		|||
  },
 | 
			
		||||
}
 | 
			
		||||
export default {
 | 
			
		||||
  mixins: [SampleDataMixin],
 | 
			
		||||
  components: {
 | 
			
		||||
    CustomChart,
 | 
			
		||||
    ColorPalette,
 | 
			
		||||
| 
						 | 
				
			
			@ -362,22 +415,106 @@ export default {
 | 
			
		|||
      },
 | 
			
		||||
      // immediate: true,
 | 
			
		||||
    },
 | 
			
		||||
    boundaryData: {
 | 
			
		||||
      handler(newVal) {
 | 
			
		||||
        const { minX, maxX, minY, maxY, color } = newVal
 | 
			
		||||
        const [graphic1, graphic2] = this.dragOption.graphic
 | 
			
		||||
        const _this = this
 | 
			
		||||
        this.myChart = this.$refs.chartTwoDRef.getChartInstance()
 | 
			
		||||
        let graphicHeight = this.$refs.TwoChartRef.clientHeight
 | 
			
		||||
        graphic1.shape.height = graphicHeight
 | 
			
		||||
        graphic1.position = [
 | 
			
		||||
          this.myChart.convertToPixel({ xAxisId: '2' }, minX),
 | 
			
		||||
          this.myChart.convertToPixel({ yAxisId: '3' }, maxY),
 | 
			
		||||
        ]
 | 
			
		||||
        graphic1.ondrag = function () {
 | 
			
		||||
          const rectList = []
 | 
			
		||||
          this.startChannel = _this.myChart.convertFromPixel({ xAxisId: '2' }, this.position[0])
 | 
			
		||||
          const rect = [
 | 
			
		||||
            [this.startChannel, minY],
 | 
			
		||||
            [maxX, minY],
 | 
			
		||||
            [maxX, maxY],
 | 
			
		||||
            [this.startChannel, maxY],
 | 
			
		||||
          ]
 | 
			
		||||
          rectList.push(..._this.drawOneRect(rect, color))
 | 
			
		||||
          console.log(rectList)
 | 
			
		||||
          _this.myChart.setOption({
 | 
			
		||||
            series: {
 | 
			
		||||
              markLine: {
 | 
			
		||||
                data: rectList,
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
        graphic2.shape.height = graphicHeight
 | 
			
		||||
        graphic2.position = [
 | 
			
		||||
          this.myChart.convertToPixel({ xAxisId: '2' }, maxX),
 | 
			
		||||
          this.myChart.convertToPixel({ yAxisId: '3' }, maxY),
 | 
			
		||||
        ]
 | 
			
		||||
        graphic2.ondrag = function () {
 | 
			
		||||
          const rectList = []
 | 
			
		||||
          this.endChannel = _this.myChart.convertFromPixel({ xAxisId: '2' }, this.position[0])
 | 
			
		||||
          const rect = [
 | 
			
		||||
            [minX, minY],
 | 
			
		||||
            [this.endChannel, minY],
 | 
			
		||||
            [this.endChannel, maxY],
 | 
			
		||||
            [minX, maxY],
 | 
			
		||||
          ]
 | 
			
		||||
          rectList.push(..._this.drawOneRect(rect, color))
 | 
			
		||||
          console.log(rectList)
 | 
			
		||||
          _this.myChart.setOption({
 | 
			
		||||
            series: {
 | 
			
		||||
              markLine: {
 | 
			
		||||
                data: rectList,
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
        this.myChart.setOption(this.dragOption)
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    this.buttons = buttons
 | 
			
		||||
    return {
 | 
			
		||||
      active: 0,
 | 
			
		||||
      twoDOption,
 | 
			
		||||
      dragOption,
 | 
			
		||||
      gammaOption,
 | 
			
		||||
      betaOption,
 | 
			
		||||
      currCount: 50,
 | 
			
		||||
      boundaryData: [],
 | 
			
		||||
      showROI: true,
 | 
			
		||||
      myChart: null,
 | 
			
		||||
      startChannel: null,
 | 
			
		||||
      endChannel: null,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.twoDOption.brush = { toolbox: [] }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // onLineDragging(position, data) {
 | 
			
		||||
    //   const { minX, maxX, minY, maxY, color } = data
 | 
			
		||||
    //   console.log(this)
 | 
			
		||||
    //   const rectList = []
 | 
			
		||||
    //   let xAxis = this.myChart.convertFromPixel({ xAxisId: '2' }, position[0])
 | 
			
		||||
    //   const rect = [
 | 
			
		||||
    //     [xAxis, minY],
 | 
			
		||||
    //     [maxX, minY],
 | 
			
		||||
    //     [maxX, maxY],
 | 
			
		||||
    //     [xAxis, maxY],
 | 
			
		||||
    //   ]
 | 
			
		||||
    //   rectList.push(...this.drawOneRect(rect, color))
 | 
			
		||||
    //   console.log(rectList)
 | 
			
		||||
    //   this.myChart.setOption({
 | 
			
		||||
    //     series: {
 | 
			
		||||
    //       markLine: {
 | 
			
		||||
    //         data: rectList,
 | 
			
		||||
    //       },
 | 
			
		||||
    //     },
 | 
			
		||||
    //   })
 | 
			
		||||
    // },
 | 
			
		||||
    // Gamma 的折线图数据
 | 
			
		||||
    buildGammaLineList(val) {
 | 
			
		||||
      const gammaSeries = this.gammaOption.series
 | 
			
		||||
| 
						 | 
				
			
			@ -398,7 +535,6 @@ export default {
 | 
			
		|||
      this.twoDOption.series.data = this.histogramDataList
 | 
			
		||||
        .filter(({ b, g, c }) => c && b >= minX && b <= maxX && g >= minY && g <= maxY)
 | 
			
		||||
        .map(({ b, g, c }) => this.buildScatterItem(b, g, c))
 | 
			
		||||
      console.log('this.twoDOption.series.data', this.twoDOption.series.data)
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 构造一个scatter 的点
 | 
			
		||||
| 
						 | 
				
			
			@ -702,7 +838,20 @@ export default {
 | 
			
		|||
      this.reDrawRect()
 | 
			
		||||
    },
 | 
			
		||||
    // 点击Update
 | 
			
		||||
    handleUpdate() {},
 | 
			
		||||
    async handleUpdate() {
 | 
			
		||||
      const { inputFileName } = this.sampleData
 | 
			
		||||
      let params = {
 | 
			
		||||
        sampleFileName: inputFileName,
 | 
			
		||||
        startChannel: this.startChannel,
 | 
			
		||||
        endChannel: this.endChannel,
 | 
			
		||||
        ROINum: this.currCount + 1,
 | 
			
		||||
      }
 | 
			
		||||
      try {
 | 
			
		||||
        const { success, result, message } = await postAction('/selfStation/updateROI', params)
 | 
			
		||||
      } catch (error) {
 | 
			
		||||
        console.error(error)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 颜色插值算法
 | 
			
		||||
    interpolateColor(percentage) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -566,6 +566,8 @@ export default {
 | 
			
		|||
            return item
 | 
			
		||||
          } else if (!item.gasFileName && !item.detFileName && !item.qcFileName) {
 | 
			
		||||
            return item
 | 
			
		||||
          } else {
 | 
			
		||||
            return item
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user