Parcourir la source

feat: fix bug处理

lixiangrui il y a 3 semaines
Parent
commit
4cf19e2f31

+ 8 - 3
src/views/portraitManagement/components/InterceptionDistribution.vue

@@ -21,11 +21,10 @@ const setChartsOptionsBar = computed(() => {
21 21
     grid: {
22 22
       top: 10,
23 23
       bottom: 30,
24
-      left: 80,
24
+      left: 110,
25 25
       right: 40
26 26
     },
27 27
     xAxis: {
28
-      max: 'dataMax',
29 28
       axisLabel: { color: '#fff', fontSize: 14 },
30 29
     },
31 30
     dataset: {
@@ -36,7 +35,13 @@ const setChartsOptionsBar = computed(() => {
36 35
     yAxis: {
37 36
       type: 'category',
38 37
       position: 'left',
39
-      axisLabel: { color: '#fff', fontSize: 14 },
38
+      axisLabel: { 
39
+        color: '#fff',
40
+        fontSize: 14, 
41
+        formatter: function(value) {
42
+          return value.length > 5 ? value.substring(0, 6) + '...' : value;
43
+        }
44
+      },
40 45
       splitLine: { lineStyle: { color: '#344067' } }
41 46
     },
42 47
     series: [

+ 7 - 1
src/views/portraitManagement/components/ProfileRadar.vue

@@ -72,10 +72,16 @@ const updateRadarChart = () => {
72 72
   }
73 73
 
74 74
   const option = {
75
+    grid: {
76
+      top: 40,
77
+      bottom: 40,
78
+      left: 50,
79
+      right: 50
80
+    },
75 81
     radar: {
76 82
       indicator: computedIndicators.value,
77 83
       center: ['50%', '50%'],
78
-      radius: '70%',
84
+      radius: '60%',
79 85
       splitNumber: 4,
80 86
       axisLine: {
81 87
         lineStyle: {

+ 25 - 23
src/views/portraitManagement/components/SearchBar.vue

@@ -9,14 +9,14 @@
9 9
         <div :class="currentTime === 'custom' ? 'primary' : 'default'" @click="selectTime('custom')">自定义时间范围</div>
10 10
         <div class="custom-style-date-picker-wrap" v-if="currentTime === 'custom'">
11 11
           <el-date-picker class="custom-style-date-picker" v-model="dateRange" type="daterange" range-separator="至"
12
-            start-placeholder="开始" end-placeholder="结束" style="width:320px" @change="() => searchHandler()" />
12
+            start-placeholder="开始" end-placeholder="结束" style="width:320px" @change="() => searchHandler(curQuery)" />
13 13
         </div>
14 14
       </div>
15
-      <el-popover class="popover" title="" :visible="visible" placement="bottom-start" trigger="click" width="45vw">
15
+      <el-popover v-if=" deptType !== 'STATION' " class="popover" title="" :visible="visible" placement="bottom-start" trigger="click" width="45vw">
16 16
         <template #reference>
17 17
           <div class="primary" style="border-radius: 6px;" @click.stop="visible = !visible">{{ props.deptType === 'user'
18 18
             ?
19
-            '组织架构/模糊搜索' : '部门选择' }}</div>
19
+            '组织架构/模糊搜索' : deptType === 'BRIGADE' ?  '部门选择' : deptType === 'MANAGER' ? '班组选择' :   deptType === 'TEAMS' ? '小组选择' : '组织选择' }}</div>
20 20
         </template>
21 21
 
22 22
         <div class="custom-el-style">
@@ -68,6 +68,7 @@ const departments = ref([])
68 68
 const dateRange = ref([])
69 69
 const treeRef = ref(null)
70 70
 const currentKey = ref(null)
71
+const curQuery = ref({})
71 72
 
72 73
 const defaultIdMap = {
73 74
   user: 13,
@@ -108,20 +109,20 @@ const queryDept = async (query, cb) => {
108 109
 const handleSelect = (item) => {
109 110
   if (props.deptType === 'user') {
110 111
     personName.value = item.nickName
111
-    searchHandler({ personName: item.nickName })
112
+    curQuery.value = { personName: item.nickName }
113
+    searchHandler(curQuery.value)
112 114
   } else {
113 115
     personName.value = item.deptName
114
-    let obj = {}
115 116
     if (props.deptType === 'BRIGADE' || props.deptType === 'STATION') {
116
-      obj = { deptId: item.deptId || item.id }
117
+      curQuery.value = { deptId: item.deptId || item.id }
117 118
     }
118 119
     if (props.deptType === 'MANAGER') {
119
-      obj = { teamId: item.deptId || item.id, deptId: item.deptId || item.id }
120
+      curQuery.value = { teamId: item.deptId || item.id, deptId: item.deptId || item.id }
120 121
     }
121 122
     if (props.deptType === 'TEAMS') {
122
-      obj = { groupId: item.deptId || item.id, deptId: item.deptId || item.id }
123
+      curQuery.value = { groupId: item.deptId || item.id, deptId: item.deptId || item.id }
123 124
     }
124
-    searchHandler(obj)
125
+    searchHandler(curQuery.value)
125 126
   }
126 127
 }
127 128
 
@@ -173,7 +174,7 @@ const formatDate = (d) => {
173 174
 
174 175
 const selectTime = (t) => {
175 176
   currentTime.value = t
176
-  if (t !== 'custom') searchHandler()
177
+  if (t !== 'custom') searchHandler(curQuery.value)
177 178
 }
178 179
 
179 180
 const searchHandler = (query = {}) => {
@@ -192,23 +193,22 @@ const handleNodeClick = (node) => {
192 193
   if (props.deptType === 'user') {
193 194
     if (node.nodeType === 'user') {
194 195
       personName.value = node.label
195
-      searchHandler({ personName: node.label })
196
+      curQuery.value = { personName: node.label }
197
+      searchHandler(curQuery.value)
196 198
     }
197 199
   } else {
198 200
     if (node.deptType === props.deptType) {
199 201
       personName.value = node.deptName || node.name || node.label;
200
-      let obj = {}
201
-
202 202
       if (props.deptType === 'BRIGADE' || props.deptType === 'STATION') {
203
-        obj = { deptId: node.deptId || node.id }
203
+        curQuery.value = { deptId: node.deptId || node.id }
204 204
       }
205 205
       if (props.deptType === 'MANAGER') {
206
-        obj = { teamId: node.deptId || node.id, deptId: node.deptId || node.id }
206
+        curQuery.value = { teamId: node.deptId || node.id, deptId: node.deptId || node.id }
207 207
       }
208 208
       if (props.deptType === 'TEAMS') {
209
-        obj = { groupId: node.deptId || node.id, deptId: node.deptId || node.id }
209
+        curQuery.value = { groupId: node.deptId || node.id, deptId: node.deptId || node.id }
210 210
       }
211
-      searchHandler(obj)
211
+      searchHandler(curQuery.value)
212 212
     }
213 213
   }
214 214
 }
@@ -221,6 +221,7 @@ const setStyle = () => {
221 221
   root.style.setProperty('--el-popover-padding', '0px')
222 222
   root.style.setProperty('--el-text-color-regular', '#fff')
223 223
   root.style.setProperty('--el-fill-color-light', '#5c676d')
224
+  root.style.setProperty('--el-text-color-primary', '#fff')
224 225
 }
225 226
 
226 227
 const resetStyle = () => {
@@ -231,6 +232,7 @@ const resetStyle = () => {
231 232
   root.style.setProperty('--el-popover-padding', '12px')
232 233
   root.style.setProperty('--el-text-color-regular', '#606266')
233 234
   root.style.setProperty('--el-fill-color-light', '#f5f7fa')
235
+  root.style.setProperty('--el-text-color-primary', '#303133')
234 236
 
235 237
 }
236 238
 
@@ -252,20 +254,20 @@ onMounted(async () => {
252 254
       currentKey.value = defaultId
253 255
       if (props.deptType === 'user') {
254 256
         personName.value = defaultNode.label
255
-        searchHandler({ personName: defaultNode.label })
257
+        curQuery.value = { personName: defaultNode.label }
258
+        searchHandler(curQuery.value)
256 259
       } else {
257 260
         personName.value = defaultNode.deptName || defaultNode.name || defaultNode.label
258
-        let obj = {}
259 261
         if (props.deptType === 'BRIGADE' || props.deptType === 'STATION') {
260
-          obj = { deptId: defaultNode.deptId || defaultNode.id }
262
+          curQuery.value = { deptId: defaultNode.deptId || defaultNode.id }
261 263
         }
262 264
         if (props.deptType === 'MANAGER') {
263
-          obj = { teamId: defaultNode.deptId || defaultNode.id, deptId: defaultNode.deptId || defaultNode.id }
265
+          curQuery.value = { teamId: defaultNode.deptId || defaultNode.id, deptId: defaultNode.deptId || defaultNode.id }
264 266
         }
265 267
         if (props.deptType === 'TEAMS') {
266
-          obj = { groupId: defaultNode.deptId || defaultNode.id, deptId: defaultNode.deptId || defaultNode.id }
268
+          curQuery.value = { groupId: defaultNode.deptId || defaultNode.id, deptId: defaultNode.deptId || defaultNode.id }
267 269
         }
268
-        searchHandler(obj)
270
+        searchHandler(curQuery.value)
269 271
       }
270 272
       nextTick(() => {
271 273
         treeRef.value?.setCurrentKey(defaultId)

+ 1 - 1
src/views/portraitManagement/components/SeizedInfo.vue

@@ -77,7 +77,7 @@ const setChartsOptionsBar = computed(() => {
77 77
   return {
78 78
     grid: {
79 79
       top: 20,
80
-      bottom: 40,
80
+      bottom: 55,
81 81
       left: 45,
82 82
       right: 15
83 83
     },

+ 1 - 1
src/views/portraitManagement/components/rollingTable.vue

@@ -40,7 +40,7 @@ let pendingStart = false
40 40
 
41 41
 const scrollData = computed(() => {
42 42
   if (!props.data || props.data.length === 0) return []
43
-  return [...props.data, ...props.data]
43
+  return [...props.data]
44 44
 })
45 45
 
46 46
 const startScroll = () => {

+ 27 - 34
src/views/portraitManagement/deptProfile/component/profile.vue

@@ -3,7 +3,7 @@
3 3
     <div class="main-content">
4 4
       <div class="content-row">
5 5
         <ProfileRadar :chartData="radarData" />
6
-        <ProfileMembers :columns="memberColumns" :data="teamMembers" />
6
+        <ProfileMembers :columns="teamColumns" :data="teamMembers" />
7 7
       </div>
8 8
 
9 9
       <div class="content-row">
@@ -20,7 +20,7 @@ import ProfileRadar from '../../components/ProfileRadar.vue'
20 20
 import ProfileMembers from '../../components/ProfileMembers.vue'
21 21
 import ProfileBasicDistribution from '../../components/ProfileBasicDistribution.vue'
22 22
 import ProfilePositionDistribution from '../../components/ProfilePositionDistribution.vue'
23
-import { getDeptMembers, getDeptMemberDistribution, getDeptPositionDistribution, getDimensionScoreOverview } from '@/api/portraitManagement/portraitManagement'
23
+import { countDeptTeamStats, getDeptMemberDistribution, getDeptPositionDistribution, getDimensionScoreOverview } from '@/api/portraitManagement/portraitManagement'
24 24
 const props = defineProps({
25 25
   queryParams: {
26 26
     type: Object,
@@ -33,29 +33,32 @@ const radarData = ref([
33 33
 ])
34 34
 
35 35
 
36
+const teamMembers = ref([])
36 37
 
37
-const teamMembers = ref([
38
-  // { name: '孙晓波', age: 25, seniority: 3, gender: '男', nation: '汉', political: '群众', position: '安检员', qualification: '前传、特检、人身', skillLevel: '三级', operateYears: 5, avgYears: 6, totalScore: 88 },
39
-  // { name: '孙晓波', age: 28, seniority: 6, gender: '男', nation: '汉', political: '群众', position: '组长', qualification: '前传、特检、人身', skillLevel: '三级', operateYears: 5, avgYears: 5, totalScore: 85 },
40
-  // { name: '孙晓波', age: 31, seniority: 2, gender: '女', nation: '汉', political: '党员', position: '组长', qualification: '前传、特检、人身', skillLevel: '四级', operateYears: 5, avgYears: 76, totalScore: 76 },
41
-  // { name: '马力', age: 26, seniority: 3, gender: '男', nation: '汉', political: '群众', position: '组长', qualification: '前传、特检、人身', skillLevel: '五级', operateYears: 5, avgYears: 81, totalScore: 81 },
42
-  // { name: '马建国', age: 24, seniority: 5, gender: '男', nation: '汉', political: '党员', position: '安检员', qualification: '前传、特检、人身', skillLevel: '三级', operateYears: 6, avgYears: 78, totalScore: 78 }
43
-])
44
-
45
-const memberColumns = ref([
46
-  { label: '姓名', prop: 'personName' },
47
-  { label: '年龄', prop: 'age' },
48
-  { label: '司龄', prop: 'workYears' },
49
-  { label: '性别', prop: 'sex' },
50
-  { label: '民族', prop: 'nation' },
51
-  { label: '政治面貌', prop: 'politicalStatus' },
52
-  { label: '职务', prop: 'roleNames' },
53
-  { label: '岗位资质', prop: 'qualificationLevel' },
54
-  { label: '职业技能等级', prop: 'skillLevel' },
55
-  { label: '开机年限', prop: 'xrayOperatorYears' },
56
-  { label: '平均年限', prop: 'avgYears' },
38
+const teamColumns = [
39
+  { label: '班组', prop: 'deptName' },
40
+  { label: '员工数量', prop: 'employeeCount' },
41
+  { label: '党员数量', prop: 'partyMemberCount' },
42
+  { label: '平均年龄', prop: 'avgAge' },
43
+  { label: '平均工龄', prop: 'avgWorkYears' },
44
+  { label: '职业资格等级证书数量', prop: 'qualificationLevel' },
45
+  { label: '平均开机年龄', prop: 'avgXrayOperatorYears' },
57 46
   { label: '综合得分', prop: 'totalScore' }
58
-])
47
+]
48
+
49
+const fetchTeamData = async (params) => {
50
+  try {
51
+    const res = await countDeptTeamStats(params)
52
+    if (res.code === 200 && res.data) {
53
+      console.log(res.data);
54
+      
55
+      teamData.value = res.data
56
+    }
57
+  } catch (error) {
58
+    console.error('获取部门成员列表失败', error)
59
+  }
60
+}
61
+
59 62
 
60 63
 const genderData = ref([
61 64
 
@@ -80,16 +83,6 @@ const operateData = ref([
80 83
 const postData = ref([
81 84
 
82 85
 ])
83
-const fetchTeamMembers = async (params) => {
84
-  try {
85
-    const res = await getDeptMembers(params)
86
-    if (res.code === 200 && res.data) {
87
-      teamMembers.value = res.data
88
-    }
89
-  } catch (error) {
90
-    console.error('获取部门成员列表失败', error)
91
-  }
92
-}
93 86
 
94 87
 const fetchMemberDistribution = async (params) => {
95 88
   try {
@@ -138,7 +131,7 @@ const fetchData = (params) => {
138 131
   }
139 132
   //  console.log('params', params)
140 133
   // debugger
141
-  fetchTeamMembers(params)
134
+  fetchTeamData(params)
142 135
   fetchMemberDistribution(params)
143 136
   fetchPositionDistribution(params)
144 137
   fetchRadarData(params)

+ 14 - 13
src/views/portraitManagement/stationProfile/component/profile.vue

@@ -49,9 +49,20 @@ const teamColumns = [
49 49
   { label: '综合得分', prop: 'totalScore' }
50 50
 ]
51 51
 
52
-const teamData = ref([
53
-  
54
-])
52
+const teamData = ref([])
53
+
54
+const fetchTeamData = async (params) => {
55
+  try {
56
+    const res = await countStationTeamStats(params)
57
+    if (res.code === 200 && res.data) {
58
+      teamData.value = res.data
59
+      console.log(teamData.value);
60
+      
61
+    }
62
+  } catch (error) {
63
+    console.error('获取部门成员列表失败', error)
64
+  }
65
+}
55 66
 
56 67
 const genderData = ref([])
57 68
 const nationData = ref([])
@@ -68,16 +79,6 @@ const operateData = ref([
68 79
 const postData = ref([
69 80
   
70 81
 ])
71
-const fetchTeamData = async (params) => {
72
-  try {
73
-    const res = await countStationTeamStats(params)
74
-    if (res.code === 200 && res.data) {
75
-      teamData.value = res.data
76
-    }
77
-  } catch (error) {
78
-    console.error('获取部门成员列表失败', error)
79
-  }
80
-}
81 82
 
82 83
 const fetchMemberDistribution = async (params) => {
83 84
   try {

+ 1 - 0
src/views/portraitManagement/stationProfile/component/runData.vue

@@ -272,6 +272,7 @@ const fetchData = () => {
272 272
       params[key] = val
273 273
     }
274 274
   })
275
+  delete params.deptId
275 276
 
276 277
   invokerCountStationHourlyThroughput(params)
277 278
   invokerCountSeizureInfoItem(params)

+ 26 - 33
src/views/portraitManagement/teamProfile/component/profile.vue

@@ -3,7 +3,7 @@
3 3
     <div class="main-content">
4 4
       <div class="content-row">
5 5
         <ProfileRadar :chartData="radarData" />
6
-        <ProfileMembers :columns="memberColumns" :data="teamMembers" />
6
+        <ProfileMembers :columns="teamColumns" :data="teamMembers" />
7 7
       </div>
8 8
 
9 9
       <div class="content-row">
@@ -20,7 +20,7 @@ import ProfileRadar from '../../components/ProfileRadar.vue'
20 20
 import ProfileMembers from '../../components/ProfileMembers.vue'
21 21
 import ProfileBasicDistribution from '../../components/ProfileBasicDistribution.vue'
22 22
 import ProfilePositionDistribution from '../../components/ProfilePositionDistribution.vue'
23
-import { getDeptMembers, getDeptMemberDistribution, getDeptPositionDistribution, getDimensionScoreOverview } from '@/api/portraitManagement/portraitManagement'
23
+import { countDeptTeamStats, getDeptMemberDistribution, getDeptPositionDistribution, getDimensionScoreOverview } from '@/api/portraitManagement/portraitManagement'
24 24
 const props = defineProps({
25 25
   queryParams: {
26 26
     type: Object,
@@ -34,28 +34,30 @@ const radarData = ref([
34 34
 
35 35
 
36 36
 
37
-const teamMembers = ref([
38
-  // { name: '孙晓波', age: 25, seniority: 3, gender: '男', nation: '汉', political: '群众', position: '安检员', qualification: '前传、特检、人身', skillLevel: '三级', operateYears: 5, avgYears: 6, totalScore: 88 },
39
-  // { name: '孙晓波', age: 28, seniority: 6, gender: '男', nation: '汉', political: '群众', position: '组长', qualification: '前传、特检、人身', skillLevel: '三级', operateYears: 5, avgYears: 5, totalScore: 85 },
40
-  // { name: '孙晓波', age: 31, seniority: 2, gender: '女', nation: '汉', political: '党员', position: '组长', qualification: '前传、特检、人身', skillLevel: '四级', operateYears: 5, avgYears: 76, totalScore: 76 },
41
-  // { name: '马力', age: 26, seniority: 3, gender: '男', nation: '汉', political: '群众', position: '组长', qualification: '前传、特检、人身', skillLevel: '五级', operateYears: 5, avgYears: 81, totalScore: 81 },
42
-  // { name: '马建国', age: 24, seniority: 5, gender: '男', nation: '汉', political: '党员', position: '安检员', qualification: '前传、特检、人身', skillLevel: '三级', operateYears: 6, avgYears: 78, totalScore: 78 }
43
-])
37
+const teamMembers = ref([])
44 38
 
45
-const memberColumns = ref([
46
-  { label: '姓名', prop: 'personName' },
47
-  { label: '年龄', prop: 'age' },
48
-  { label: '司龄', prop: 'workYears' },
49
-  { label: '性别', prop: 'sex' },
50
-  { label: '民族', prop: 'nation' },
51
-  { label: '政治面貌', prop: 'politicalStatus' },
52
-  { label: '职务', prop: 'roleNames' },
53
-  { label: '岗位资质', prop: 'qualificationLevel' },
54
-  { label: '职业技能等级', prop: 'skillLevel' },
55
-  { label: '开机年限', prop: 'xrayOperatorYears' },
56
-  { label: '平均年限', prop: 'avgYears' },
39
+const teamColumns = [
40
+  { label: '小组', prop: 'deptName' },
41
+  { label: '员工数量', prop: 'employeeCount' },
42
+  { label: '党员数量', prop: 'partyMemberCount' },
43
+  { label: '平均年龄', prop: 'avgAge' },
44
+  { label: '平均工龄', prop: 'avgWorkYears' },
45
+  { label: '职业资格等级证书数量', prop: 'qualificationLevel' },
46
+  { label: '平均开机年龄', prop: 'avgXrayOperatorYears' },
57 47
   { label: '综合得分', prop: 'totalScore' }
58
-])
48
+]
49
+
50
+const fetchTeamData = async (params) => {
51
+  try {
52
+    const res = await countDeptTeamStats(params)
53
+    if (res.code === 200 && res.data) {
54
+      teamData.value = res.data
55
+    }
56
+  } catch (error) {
57
+    console.error('获取部门成员列表失败', error)
58
+  }
59
+}
60
+
59 61
 
60 62
 const genderData = ref([
61 63
   
@@ -80,16 +82,7 @@ const operateData = ref([
80 82
 const postData = ref([
81 83
   
82 84
 ])
83
-const fetchTeamMembers = async (params) => {
84
-  try {
85
-    const res = await getDeptMembers(params)
86
-    if (res.code === 200 && res.data) {
87
-      teamMembers.value = res.data
88
-    }
89
-  } catch (error) {
90
-    console.error('获取部门成员列表失败', error)
91
-  }
92
-}
85
+
93 86
 
94 87
 const fetchMemberDistribution = async (params) => {
95 88
   try {
@@ -138,7 +131,7 @@ const fetchData = (params) => {
138 131
   }
139 132
   //  console.log('params', params)
140 133
   // debugger
141
-  fetchTeamMembers(params)
134
+  fetchTeamData(params)
142 135
   fetchMemberDistribution(params)
143 136
   fetchPositionDistribution(params)
144 137
   fetchRadarData(params)

+ 1 - 1
src/views/score/dimension/index.vue

@@ -286,7 +286,7 @@ async function loadTree() {
286 286
 }
287 287
 
288 288
 function handleAddIndicator(parentRow) {
289
-  Object.assign(indForm, { id: null, dimensionId: selectedDim.value.id, parentId: parentRow ? parentRow.id : 0, level: parentRow ? parentRow.level + 1 : 2, name: '', type: '2', scoreValue: 0, cascadeRule: '', sortOrder: 0, status: '0', remark: '' })
289
+  Object.assign(indForm, { id: null, org: selectedDim.value.org, dimensionId: selectedDim.value.id, parentId: parentRow ? parentRow.id : 0, level: parentRow ? parentRow.level + 1 : 2, name: '', type: '2', scoreValue: 0, cascadeRule: '', sortOrder: 0, status: '0', remark: '' })
290 290
   parentIndicatorName.value = parentRow ? parentRow.name : ''
291 291
   indDialogTitle.value = '新增' + (parentRow ? parentRow.level + 1 : 2) + '级指标'
292 292
   indDialogVisible.value = true