Merge branch 'master-dev' into feature-Beta-dev-renpy
This commit is contained in:
		
						commit
						9ff3cbf619
					
				
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/station-operation/data-item-bg-active.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/images/station-operation/data-item-bg-active.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
						 | 
				
			
			@ -22,6 +22,11 @@
 | 
			
		|||
           <a-icon type="tool"/>
 | 
			
		||||
           <span>系统设置</span>
 | 
			
		||||
        </a-menu-item> -->
 | 
			
		||||
        <a-menu-item key="3">
 | 
			
		||||
          <a-icon type="user" />
 | 
			
		||||
          <span>{{ this.userInfo().username }}</span>
 | 
			
		||||
        </a-menu-item>
 | 
			
		||||
        <a-menu-divider />
 | 
			
		||||
        <a-menu-item key="4" @click="updatePassword">
 | 
			
		||||
          <a-icon type="setting" />
 | 
			
		||||
          <span>Change Password</span>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,13 +5,43 @@
 | 
			
		|||
        <a-col flex="108px">
 | 
			
		||||
          <a-button class="search-btn" type="primary" @click="handleConfig"> Config </a-button>
 | 
			
		||||
        </a-col>
 | 
			
		||||
        <a-col flex="380px">
 | 
			
		||||
        <a-col flex="365px">
 | 
			
		||||
          <span class="item-label">Cacl date</span>
 | 
			
		||||
          <a-range-picker
 | 
			
		||||
            :value="[moment(queryParams.startDate), moment(queryParams.endDate)]"
 | 
			
		||||
            @change="onRangeDateChange"
 | 
			
		||||
          />
 | 
			
		||||
        </a-col>
 | 
			
		||||
        <a-col flex="265px">
 | 
			
		||||
          <span class="item-label">Station</span>
 | 
			
		||||
          <a-select
 | 
			
		||||
            style="width: 180px"
 | 
			
		||||
            v-model="queryParams.stationId"
 | 
			
		||||
            placeholder="select..."
 | 
			
		||||
            :filter-option="filterOption"
 | 
			
		||||
            show-arrow
 | 
			
		||||
            allowClear
 | 
			
		||||
            :options="stationOptions"
 | 
			
		||||
            @change="onStationChange"
 | 
			
		||||
          >
 | 
			
		||||
            <img slot="suffixIcon" src="@/assets/images/global/select-down.png" alt="" />
 | 
			
		||||
          </a-select>
 | 
			
		||||
        </a-col>
 | 
			
		||||
        <a-col flex="285px">
 | 
			
		||||
          <span class="item-label">Source Type</span>
 | 
			
		||||
          <a-select
 | 
			
		||||
            style="width: 180px"
 | 
			
		||||
            v-model="queryParams.sourceType"
 | 
			
		||||
            placeholder="select..."
 | 
			
		||||
            :filter-option="filterOption"
 | 
			
		||||
            show-arrow
 | 
			
		||||
            allowClear
 | 
			
		||||
            :options="sourceOptions"
 | 
			
		||||
            @change="onSourceChange"
 | 
			
		||||
          >
 | 
			
		||||
            <img slot="suffixIcon" src="@/assets/images/global/select-down.png" alt="" />
 | 
			
		||||
          </a-select>
 | 
			
		||||
        </a-col>
 | 
			
		||||
      </a-row>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="analysis-main">
 | 
			
		||||
| 
						 | 
				
			
			@ -89,6 +119,11 @@ import moment from 'moment'
 | 
			
		|||
import TableList from '../../components/tableList.vue'
 | 
			
		||||
import { getAction, postAction, httpAction, deleteAction } from '@/api/manage'
 | 
			
		||||
const columns = [
 | 
			
		||||
  {
 | 
			
		||||
    title: 'STATION',
 | 
			
		||||
    align: 'center',
 | 
			
		||||
    dataIndex: 'stationCode',
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    title: 'NUCLIDE',
 | 
			
		||||
    align: 'center',
 | 
			
		||||
| 
						 | 
				
			
			@ -125,6 +160,8 @@ export default {
 | 
			
		|||
      dataSource: [],
 | 
			
		||||
      loading: false,
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        stationId: undefined,
 | 
			
		||||
        sourceType: undefined,
 | 
			
		||||
        startDate: dateFormat(new Date(), 'yyyy-MM-dd'),
 | 
			
		||||
        endDate: dateFormat(new Date(), 'yyyy-MM-dd'),
 | 
			
		||||
      },
 | 
			
		||||
| 
						 | 
				
			
			@ -148,6 +185,17 @@ export default {
 | 
			
		|||
        index: '',
 | 
			
		||||
      },
 | 
			
		||||
      currId: '',
 | 
			
		||||
      stationOptions: [],
 | 
			
		||||
      sourceOptions: [
 | 
			
		||||
        {
 | 
			
		||||
          label: 'ARMDARR',
 | 
			
		||||
          value: '1',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          label: 'ARMDRRR',
 | 
			
		||||
          value: '2',
 | 
			
		||||
        },
 | 
			
		||||
      ],
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
| 
						 | 
				
			
			@ -157,6 +205,30 @@ export default {
 | 
			
		|||
    this.getNuclideAvgList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    onSourceChange(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
    },
 | 
			
		||||
    getStationList() {
 | 
			
		||||
      getAction('/webStatistics/findStationList', { menuName: '' }).then((res) => {
 | 
			
		||||
        if (res.success) {
 | 
			
		||||
          if (res.result.length > 0) {
 | 
			
		||||
            this.stationOptions = res.result.map((item) => {
 | 
			
		||||
              return {
 | 
			
		||||
                label: item.stationCode,
 | 
			
		||||
                value: `${item.stationId}`,
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            this.stationOptions = []
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$message.warning('This operation fails. Contact your system administrator')
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    filterOption(input, option) {
 | 
			
		||||
      return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
 | 
			
		||||
    },
 | 
			
		||||
    // 获取n天前的日期
 | 
			
		||||
    getBeforeDate(n) {
 | 
			
		||||
      var n = n
 | 
			
		||||
| 
						 | 
				
			
			@ -183,8 +255,7 @@ export default {
 | 
			
		|||
    getNuclideAvgList() {
 | 
			
		||||
      this.loading = true
 | 
			
		||||
      let params = {
 | 
			
		||||
        startDate: this.queryParams.startDate,
 | 
			
		||||
        endDate: this.queryParams.endDate,
 | 
			
		||||
        ...this.queryParams,
 | 
			
		||||
        pageNo: this.ipagination.current,
 | 
			
		||||
        pageSize: this.ipagination.pageSize,
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -198,6 +269,14 @@ export default {
 | 
			
		|||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    onStationChange(val) {
 | 
			
		||||
      this.queryParams.stationId = val
 | 
			
		||||
      this.getNuclideAvgList()
 | 
			
		||||
    },
 | 
			
		||||
    onSourceChange(val) {
 | 
			
		||||
      this.queryParams.sourceType = val
 | 
			
		||||
      this.getNuclideAvgList()
 | 
			
		||||
    },
 | 
			
		||||
    onRangeDateChange(date, dateString) {
 | 
			
		||||
      this.queryParams.startDate = dateString[0]
 | 
			
		||||
      this.queryParams.endDate = dateString[1]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,14 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <custom-modal v-model="visible" :width="800" title="Spectrum" :footer="null">
 | 
			
		||||
    <a-spin :spinning="isLoading">
 | 
			
		||||
      <pre>
 | 
			
		||||
        {{ content }}
 | 
			
		||||
      </pre>
 | 
			
		||||
      <a-tabs :animated="false">
 | 
			
		||||
        <a-tab-pane tab="phd" key="1">
 | 
			
		||||
          <pre key="1">{{ spectrum }}</pre>
 | 
			
		||||
        </a-tab-pane>
 | 
			
		||||
        <a-tab-pane tab="phd:raw" key="2">
 | 
			
		||||
          <pre key="2">{{ phdSpectrum }}</pre>
 | 
			
		||||
        </a-tab-pane>
 | 
			
		||||
      </a-tabs>
 | 
			
		||||
    </a-spin>
 | 
			
		||||
  </custom-modal>
 | 
			
		||||
</template>
 | 
			
		||||
| 
						 | 
				
			
			@ -16,8 +21,9 @@ export default {
 | 
			
		|||
  mixins: [ModalMixin, SampleDataMixin],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      content: '',
 | 
			
		||||
      isLoading: true
 | 
			
		||||
      spectrum: '',
 | 
			
		||||
      phdSpectrum: '',
 | 
			
		||||
      isLoading: true,
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
| 
						 | 
				
			
			@ -27,10 +33,12 @@ export default {
 | 
			
		|||
        const { sampleId, inputFileName: fileName } = this.sampleData
 | 
			
		||||
        const { success, result, message } = await getAction('/gamma/Spectrum', {
 | 
			
		||||
          sampleId,
 | 
			
		||||
          fileName
 | 
			
		||||
          fileName,
 | 
			
		||||
        })
 | 
			
		||||
        if (success) {
 | 
			
		||||
          this.content = result
 | 
			
		||||
          const { Spectrum, phdSpectrum } = result
 | 
			
		||||
          this.spectrum = Spectrum
 | 
			
		||||
          this.phdSpectrum = (phdSpectrum || []).join('\r\n')
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$message.error(message)
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -43,8 +51,8 @@ export default {
 | 
			
		|||
 | 
			
		||||
    beforeModalOpen() {
 | 
			
		||||
      this.getContent()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@
 | 
			
		|||
      {{ item.stationName || item.stationCode }}
 | 
			
		||||
    </h4>
 | 
			
		||||
    <div class="data-list-item-container">
 | 
			
		||||
      <div class="data-list-item-content">
 | 
			
		||||
      <div class="data-list-item-content" :class="[item.scheduling ? 'active' : '']">
 | 
			
		||||
        <div class="data-list-item-children">
 | 
			
		||||
          <div class="data-list-item-child">
 | 
			
		||||
            <label>Station Type:</label>
 | 
			
		||||
| 
						 | 
				
			
			@ -42,9 +42,9 @@
 | 
			
		|||
export default {
 | 
			
		||||
  props: {
 | 
			
		||||
    item: {
 | 
			
		||||
      type: Object
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
      type: Object,
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -85,6 +85,10 @@ export default {
 | 
			
		|||
    flex-direction: column;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
 | 
			
		||||
    &.active {
 | 
			
		||||
      background-image: url(~@/assets/images/station-operation/data-item-bg-active.png);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .data-list-item-children {
 | 
			
		||||
      display: flex;
 | 
			
		||||
      justify-content: space-between;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -189,7 +189,7 @@
 | 
			
		|||
              <div class="content">
 | 
			
		||||
                <a-form-model class="attribute-form" layout="vertical">
 | 
			
		||||
                  <a-form-model-item label="Cache time">
 | 
			
		||||
                    <a-input-number type="number" v-model="dataRecieveStatusModel.cacheTime" :min="0"></a-input-number>
 | 
			
		||||
                    <a-input-number type="number" v-model="dataRecieveStatusModel.cacheTime" :min="1"></a-input-number>
 | 
			
		||||
                    <span>day</span>
 | 
			
		||||
                  </a-form-model-item>
 | 
			
		||||
                  <a-form-model-item label="Scale interval">
 | 
			
		||||
| 
						 | 
				
			
			@ -268,15 +268,11 @@
 | 
			
		|||
import CustomModal from '@/components/CustomModal/index.vue'
 | 
			
		||||
import CustomTree from '@/components/CustomTree/index.vue'
 | 
			
		||||
import RealTimeDataChart from './RealTimeDataChart.vue'
 | 
			
		||||
import { getAction, postAction } from '../../../api/manage'
 | 
			
		||||
import { deleteAction, getAction, postAction } from '../../../api/manage'
 | 
			
		||||
import { MarkerType, FilterIcon } from './markerEnum'
 | 
			
		||||
 | 
			
		||||
import { Vector as VectorLayer } from 'ol/layer'
 | 
			
		||||
import VectorSource from 'ol/source/Vector'
 | 
			
		||||
import { Circle } from 'ol/geom'
 | 
			
		||||
import { fromLonLat } from 'ol/proj'
 | 
			
		||||
import Feature from 'ol/Feature'
 | 
			
		||||
import { Fill, Stroke, Style } from 'ol/style'
 | 
			
		||||
import { cloneDeep } from 'lodash'
 | 
			
		||||
 | 
			
		||||
// Filter中的筛选列表
 | 
			
		||||
| 
						 | 
				
			
			@ -455,8 +451,6 @@ export default {
 | 
			
		|||
    this.initParentMapProps()
 | 
			
		||||
    document.addEventListener('fullscreenchange', this.onFullScreenChange)
 | 
			
		||||
    this.stationList = []
 | 
			
		||||
 | 
			
		||||
    this.getDataRecieveSettings()
 | 
			
		||||
  },
 | 
			
		||||
  destroyed() {
 | 
			
		||||
    document.removeEventListener('fullscreenchange', this.onFullScreenChange)
 | 
			
		||||
| 
						 | 
				
			
			@ -739,7 +733,16 @@ export default {
 | 
			
		|||
          userId: this.$store.getters.userInfo.id,
 | 
			
		||||
        })
 | 
			
		||||
        if (success) {
 | 
			
		||||
          const { cacheTime, scaleInterval, timelineLength, updateIntervalTime, sysUserFocusStations } = result
 | 
			
		||||
          this.initialDataRecieveSettings = result
 | 
			
		||||
 | 
			
		||||
          this.dataRecieveStatusModel = {
 | 
			
		||||
            cacheTime,
 | 
			
		||||
            scaleInterval,
 | 
			
		||||
            timelineLength,
 | 
			
		||||
            updateIntervalTime,
 | 
			
		||||
          }
 | 
			
		||||
          this.dataStatusCheckedKeys = sysUserFocusStations.map((item) => parseInt(item.stationId))
 | 
			
		||||
        } else {
 | 
			
		||||
          this.$message.error(message)
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -771,6 +774,7 @@ export default {
 | 
			
		|||
        const { success, result, message } = await getAction('/stationOperation/getDataReceivingStatus', {
 | 
			
		||||
          userId: this.$store.getters.userInfo.id,
 | 
			
		||||
          oneStationId: (this.stationInfo && this.stationInfo.stationId) || '',
 | 
			
		||||
          cacheTime: this.initialDataRecieveSettings.cacheTime,
 | 
			
		||||
        })
 | 
			
		||||
        this.maskVisi = false
 | 
			
		||||
        this.spinLoading = false
 | 
			
		||||
| 
						 | 
				
			
			@ -804,24 +808,32 @@ export default {
 | 
			
		|||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    // 清理接收状态配置缓存
 | 
			
		||||
    async clearDataRecieveSetting() {
 | 
			
		||||
      const { success, message } = await deleteAction('/sysUserFocusStation/deleteUserCache', {
 | 
			
		||||
        userId: this.$store.getters.userInfo.id,
 | 
			
		||||
      })
 | 
			
		||||
      if (!success) {
 | 
			
		||||
        throw new Error(message)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    handleResize() {
 | 
			
		||||
      this.$refs.realtimeChartRef.resize()
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  watch: {
 | 
			
		||||
    dataStatusModalVisible(val) {
 | 
			
		||||
    async dataStatusModalVisible(val) {
 | 
			
		||||
      if (val) {
 | 
			
		||||
        this.dataStatusCheckedKeys = this.initialDataRecieveSettings.sysUserFocusStations.map((item) =>
 | 
			
		||||
          parseInt(item.stationId)
 | 
			
		||||
        )
 | 
			
		||||
        this.dataRecieveStatusModel = {
 | 
			
		||||
          cacheTime: this.initialDataRecieveSettings.cacheTime,
 | 
			
		||||
          scaleInterval: this.initialDataRecieveSettings.scaleInterval,
 | 
			
		||||
          timelineLength: this.initialDataRecieveSettings.timelineLength,
 | 
			
		||||
          updateIntervalTime: this.initialDataRecieveSettings.updateIntervalTime,
 | 
			
		||||
        try {
 | 
			
		||||
          this.spinLoading = true
 | 
			
		||||
          await this.clearDataRecieveSetting()
 | 
			
		||||
          await this.getDataRecieveSettings()
 | 
			
		||||
          this.startGetDataReceiveStatusList()
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
          this.$message.error(error)
 | 
			
		||||
          this.spinLoading = false
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        this.startGetDataReceiveStatusList()
 | 
			
		||||
      } else {
 | 
			
		||||
        clearInterval(this.timer)
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ const initialOption = {
 | 
			
		|||
    formatter: (params) => {
 | 
			
		||||
      return `
 | 
			
		||||
        <div>${params.marker}${params.name}</div>
 | 
			
		||||
        <div>START:${dayjs(new Date(params.value[1])).format('YYYY-MM-DD HH:mm:ss')}</div>
 | 
			
		||||
        <div>START:${dayjs(new Date(params.value[4])).format('YYYY-MM-DD HH:mm:ss')}</div>
 | 
			
		||||
        <div style="white-space: pre">   END:${dayjs(new Date(params.value[2])).format('YYYY-MM-DD HH:mm:ss')}</div>
 | 
			
		||||
      `
 | 
			
		||||
    },
 | 
			
		||||
| 
						 | 
				
			
			@ -249,6 +249,7 @@ export default {
 | 
			
		|||
        item.dataList.forEach((item) => {
 | 
			
		||||
          this.convertStatus(item)
 | 
			
		||||
 | 
			
		||||
          let originalTime = new Date(item.beginTime * 1000).getTime()
 | 
			
		||||
          let startTime = new Date(item.beginTime * 1000).getTime()
 | 
			
		||||
          if (item.type == 'PHD') {
 | 
			
		||||
            startTime = item.endTime * 1000 - 60 * 1000 * 30
 | 
			
		||||
| 
						 | 
				
			
			@ -261,7 +262,7 @@ export default {
 | 
			
		|||
          if (find.isShow) {
 | 
			
		||||
            data.push({
 | 
			
		||||
              name: item.status,
 | 
			
		||||
              value: [index, startTime, endTime, duration],
 | 
			
		||||
              value: [index, startTime, endTime, duration, originalTime],
 | 
			
		||||
              itemStyle: {
 | 
			
		||||
                normal: {
 | 
			
		||||
                  color: find.color,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -521,12 +521,6 @@ export default {
 | 
			
		|||
     */
 | 
			
		||||
    onFilterMarker({ filterType, filterDataQuality }) {
 | 
			
		||||
      this.updataFilterType = filterType
 | 
			
		||||
      console.log(
 | 
			
		||||
        '%c [ filterType, filterDataQuality ]-343',
 | 
			
		||||
        'font-size:13px; background:pink; color:#bf2c9f;',
 | 
			
		||||
        filterType,
 | 
			
		||||
        filterDataQuality
 | 
			
		||||
      )
 | 
			
		||||
      this.updataFilterDataQuality = []
 | 
			
		||||
      filterDataQuality.forEach((item) => {
 | 
			
		||||
        if (item === 'Excellent data quality') {
 | 
			
		||||
| 
						 | 
				
			
			@ -548,7 +542,13 @@ export default {
 | 
			
		|||
 | 
			
		||||
    // 地图图标点击
 | 
			
		||||
    onMarkerClick(stationInfo) {
 | 
			
		||||
      const { stationType, status } = stationInfo
 | 
			
		||||
      const { stationType, stationName } = stationInfo
 | 
			
		||||
      const find = this.orgStationList.find(item => item.stationCode == stationName)
 | 
			
		||||
      if(!find) {
 | 
			
		||||
        return
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      const status = find.status
 | 
			
		||||
      if (stationType !== 'NRL' && stationType !== 'Nuclear Facility' && status !== 'Unoperating') {
 | 
			
		||||
        this.$refs.mapPane.handleOpenAnalyzeModal(stationInfo)
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -188,7 +188,10 @@ export default {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    const validateCountryCode = (_, value, callback) => {
 | 
			
		||||
      if (value && value.length > 2) {
 | 
			
		||||
      if(!value) {
 | 
			
		||||
        callback(new Error('Please Enter Country Code'))
 | 
			
		||||
      }
 | 
			
		||||
      else if (value.length > 2) {
 | 
			
		||||
        callback(new Error('Country Code Limit 2 Char'))
 | 
			
		||||
      } else {
 | 
			
		||||
        callback()
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +202,7 @@ export default {
 | 
			
		|||
      rules: {
 | 
			
		||||
        stationId: [{ required: true, message: 'Please Enter Station Id' }],
 | 
			
		||||
        stationCode: [{ required: true, validator: validateStationCode }],
 | 
			
		||||
        countryCode: [{ validator: validateCountryCode }]
 | 
			
		||||
        countryCode: [{ required: true, validator: validateCountryCode }]
 | 
			
		||||
      },
 | 
			
		||||
      url: {
 | 
			
		||||
        list: '/gardsStations/findPage',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user