Quellcode durchsuchen

feat:ai任务接口调整

xiayu3 vor 4 Jahren
Ursprung
Commit
0011b3d9f8

+ 161 - 0
security-protection-platform/.aid/mock/aiTask.js

@ -0,0 +1,161 @@
1
2
const Mock= require('mockjs') // 获取mock对象
3
4
let totalData = Mock.mock({
5
  'taskStatus|5':[{
6
    'description': ['初始化(未确认)','处理中','结束(已处理'],
7
    'charSpecValueId|+1': 3501
8
  }],
9
  'modalData|5-10':[{
10
    'staus' : 200,
11
    'charSpecValueId|+1': 3601,
12
    'description': ['人体目标检测','口罩佩戴识别','陌生人识别','抽烟识别']
13
  }],
14
  'taskStatusList':{
15
    'data|100': [{
16
      'userid|+1': 123,
17
      'userno|+1': 108375,      // 员工号
18
      'org|+1': ['河东风场', '河西风场', '河南风场', '河北风场', '邵阳风场'],         // 组织名称
19
      'dep|+1': ['发电部','造电厂','研发部'],          // 部门名
20
      'name|1': "@CNAME",
21
      'duty|1': ['运维人员','技术人员','检修人员'],       // 职务
22
      'status|1': ['正常','倒休','事假','迟到@integer(1,60)分钟','早退@integer(1,60)分钟','旷工@float(1, 7, 0, 1)天','年假']         // 考勤状态
23
    }]
24
  },
25
  'MonthReportData':{
26
    'data|100': [{
27
      'userid|+1': 123,
28
      'userno|+1': 108375,      // 员工号
29
      'org|1': ['河东风场', '河西风场', '河南风场', '河北风场', '邵阳风场'],         // 组织名称
30
      'dep|1': ['发电部','造电厂','研发部'],          // 部门名
31
      'name|1': "@CNAME",
32
      'duty|1': ['运维人员','技术人员','检修人员'],       // 职务
33
      'status|1': ['正常','倒休','事假','迟到@integer(1,60)分钟','早退@integer(1,60)分钟','旷工@float(1, 7, 0, 1)天','年假'], // 考勤状态
34
      'daysAttendance': '@integer(0,30)',  // 出勤天数
35
      'timesLate': '@integer(0,30)',        // 迟到次数
36
      'hoursLate': '@float(0, 10, 0, 1)',      // 迟到时长
37
      'timesLeftearly': '@integer(1,30)',   // 早退天数
38
      'hoursLeftearly': '@float(0, 10, 0, 1)', // 早退时长
39
      'timesAbsence': '@integer(0,30)',     // 旷工次数
40
      'daysAbsence':  '@integer(0,30)',   // 旷工天数
41
    }],
42
  },
43
  'MonthReportDetail':{
44
    'success': true,
45
    'data|100': [{
46
      'userid|+1': 123,
47
      'avatar': '',               // 用户头像
48
      'startDate': '2020-08-27',  // 考勤起始日
49
      'endDate': '2020-09-26',    // 考勤终止日
50
      'detail|31': [{
51
        'dateNo|+1': 0,
52
        'date': function() {
53
          const date = new Date('2020-08-27')
54
          const cur = new Date(date.getFullYear(), date.getMonth(), date.getDate() + this.dateNo)
55
          return  `${cur.getFullYear()}-${cur.getMonth() + 1}-${cur.getDate()}`
56
        },     // 考勤日期,
57
        'isAbnormal|1': [true, false],
58
        'descr':function() {
59
          if(!this.isAbnormal) {
60
            const list = ['正常','倒休','事假','年假']
61
            return [Mock.Random.pick(list, 1)]
62
          }
63
          else {
64
            const list = ['迟到@integer(1,60)分钟', '早退@integer(1,60)分钟','旷工@float(1, 7, 0, 1)天']
65
            return Mock.mock(Mock.Random.pick(list, 1, 3))
66
          }
67
        }
68
      }]
69
    }]
70
  }
71
})
72
module.exports = [
73
  {
74
  url: '/assignment/getCharSpecList',
75
  method: 'get',
76
  type: 'func',
77
  response: req => {
78
      let url =  parseQueryString(req.url)
79
      let code = url.charSpecCode
80
      if(code ==='TASK_STATUS'){
81
        return totalData.taskStatusList
82
      } else if (code === 'AI_MATCHER_MODE')
83
      {return totalData.modalData}
84
  }
85
},
86
{
87
  url: '/attendance/getDepartmentMember',
88
  method: 'get',
89
  type: 'func',
90
  response: req => {
91
    let url = parseQueryString(req.url)
92
    let id = parseInt(url.depId)
93
    for (let i=0;i<totalData.departmentData.length;i++){
94
      for(let j=0;j<totalData.departmentData[i].departments.length;j++){
95
        if(id===totalData.departmentData[i].departments[j].id){
96
          return totalData.departmentDataPerson
97
        }
98
      }
99
    }
100
  }
101
},
102
{
103
  url: '/attendance/getDailyReportData',
104
  method: 'get',
105
  type: 'func',
106
  response: req => {
107
    let url = parseQueryString(req.url)
108
    let current = parseInt(url.page)
109
    let limit = parseInt(url.limit)
110
    let total = totalData.dailyReportData.data.length
111
    let arr=[]
112
  return {data:totalData.dailyReportData.data.slice((current-1)*limit,(current)*limit),page:current,success:true, limit:limit, total:total}
113
  }
114
},
115
{
116
  url: '/attendance/getMonthReportData',
117
  method: 'get',
118
  type: 'func',
119
  response: req => {
120
    let url = parseQueryString(req.url)
121
    let current = parseInt(url.page)
122
    let limit = parseInt(url.limit)
123
    let total = totalData.MonthReportData.data.length
124
    let arr=[]
125
  return {data:totalData.MonthReportData.data.slice((current-1)*limit,(current)*limit),page:current, limit:limit, total:total}
126
  }
127
},
128
{
129
  url: '/attendance/getMonthReportDetail',
130
  method: 'get',
131
  type: 'func',
132
  response: req => {
133
    let url = parseQueryString(req.url)
134
    let userid = parseInt(url.userId)
135
    for (let i=0;i<totalData.MonthReportData.data.length;i++){
136
        if(userid===totalData.MonthReportData.data[i].userid){
137
          return totalData.MonthReportDetail.data[i]
138
        }
139
      }
140
  }
141
}
142
]
143
144
function parseQueryString (url) { // 获取当前浏览器的URL
145
  let arr = [] // 存储参数的数组
146
  let res = {} // 存储最终JSON结果对象
147
  if (url.split('?')[1]) {
148
    arr = url.split('?')[1].split('&') // 获取浏览器地址栏中的参数
149
    for (let i = 0; i < arr.length; i++) { // 遍历参数
150
      if (arr[i].indexOf('=') != -1) { // 如果参数中有值
151
        let str = arr[i].split('=')
152
        res[str[0]] = str[1]
153
      } else { // 如果参数中无值
154
        res[arr[i]] = ''
155
      }
156
    }
157
    return res
158
  } else {
159
    return
160
  }
161
}

+ 6 - 0
security-protection-platform/src/api/system/index.js

@ -69,6 +69,12 @@ const api = {
69 69
      return resp
70 70
    })
71 71
  },
72
  // 获取ai任务下拉框列表
73
  getCharSpecList(code) {
74
    return $default.post(`/sp/charSpec/getCharSpecList?charSpecCode=${code}`).then(resp => {
75
      return resp
76
    })
77
  },
72 78
  // 获取设备列表数据
73 79
  getDeviceData (data) {
74 80
    // return $http.get('/system/getDeviceData', data).catch((err) => { return err })

+ 12 - 5
security-protection-platform/src/modules/system/assignment/index.vue

@ -9,7 +9,7 @@
9 9
        </div>
10 10
        <div class="col-3">匹配模型:
11 11
          <t-select v-model="matchingType" width="200px">
12
            <t-option v-for="item in matchingTypeList" :key="item.id" :value="item.id">{{ item.name }}</t-option>
12
            <t-option v-for="item in matchingTypeList" :key="item.id" :value="item.charSpecValueId">{{ item.description }}</t-option>
13 13
          </t-select>
14 14
        </div>
15 15
        <div class="col-3">任务状态:
@ -105,11 +105,19 @@ export default {
105 105
  created () {
106 106
    this.getDeviceData()
107 107
    this.getDeviceTypes()
108
    this.getTaskName()
109
    this.getmatchingType()
108 110
  },
109 111
  methods: {
110
    testStyle(a, b, c) {
111
      console.log(b)
112
      a.className = 'test'
112
    getTaskName() {
113
      sysapi.getCharSpecList('TASK_STATUS').then(res => {
114
        console.log(res);
115
      })
116
    },
117
    getmatchingType() {
118
      sysapi.getCharSpecList('AI_MATCHER_MODE').then(res => {
119
        this.matchingTypeList = res.data
120
      })
113 121
    },
114 122
    getTypecellClass (orderTypeName) {
115 123
      let typecellClass = ''
@ -129,7 +137,6 @@ export default {
129 137
      const res = await sysapi.getDeviceData({ params: { page: this.page, limit: this.limit, taskName: this.taskName, matchingType: this.matchingType, taskStatus: this.taskStatus } }
130 138
      )
131 139
      if (res.status === 200) {
132
        console.log(res.data.data)
133 140
        const list = res.data.data.data
134 141
        let dataList = list.map(item => {
135 142
          return {