diff --git a/client/src/api/cma.js b/client/src/api/cma.js
index 2859aa4..584a85d 100644
--- a/client/src/api/cma.js
+++ b/client/src/api/cma.js
@@ -15,6 +15,14 @@ export function getCMAGroup(query) {
})
}
+export function getCNASGroup(query) {
+ return request({
+ url: '/ability/cnas/group/',
+ method: 'get',
+ params: query
+ })
+}
+
export function getCNASList(query) {
return request({
url: '/ability/cnas/',
diff --git a/client/src/views/ability/cma.vue b/client/src/views/ability/cma.vue
index 3cc81d8..11c9083 100644
--- a/client/src/views/ability/cma.vue
+++ b/client/src/views/ability/cma.vue
@@ -182,6 +182,7 @@
stripe
highlight-current-row
max-height="300"
+ @filter-change="filterChange2"
>
@@ -209,7 +210,10 @@
>
-
+
@@ -283,6 +287,7 @@ import {
getCNASList,
importCNAS,
getCMAGroup,
+ getCNASGroup
} from "@/api/cma";
import checkPermission from "@/utils/permission";
import { upUrl, upHeaders } from "@/api/file";
@@ -306,6 +311,7 @@ export default {
upHeaders: upHeaders(),
upUrl: upUrl(),
groupBy: { sszx: [] },
+ groupBy2: { sszx: [] },
cmaList: { count: 0 },
cnasList: { count: 0 },
listLoading: true,
@@ -330,6 +336,7 @@ export default {
created() {
this.getList();
this.getGroup();
+ this.getGroup2();
this.getList2();
},
methods: {
@@ -401,6 +408,15 @@ export default {
});
}
},
+ getGroup2() {
+ for (let key in this.groupBy2) {
+ let data = Object.assign({}, this.listQuery2);
+ data.group_by = key;
+ getCNASGroup(data).then((response) => {
+ this.groupBy2[key] = response.data;
+ });
+ }
+ },
getList2() {
this.listLoading2 = true;
getCNASList(this.listQuery2).then((response) => {
diff --git a/server/apps/ability/views.py b/server/apps/ability/views.py
index 1f6d430..7b68b5c 100644
--- a/server/apps/ability/views.py
+++ b/server/apps/ability/views.py
@@ -290,6 +290,21 @@ class CNASViewSet(ModelViewSet):
filterset_fields = ['sszx']
ordering = 'bzmc'
+ @action(methods=['get'], detail=False,url_name='cnas_group_by', perms_map = {'*':'*'})
+ def group(self, request, pk=None):
+ """
+ 聚合查询列
+ """
+ queryset = self.filter_queryset(self.get_queryset())
+ ret = []
+ if request.query_params.get('group_by', None):
+ group_by = request.query_params.get('group_by')
+ group_by_data = list(queryset.values(group_by).annotate(count=Count(group_by)).order_by(group_by))
+ for i in group_by_data:
+ if i[group_by] and i['count']:
+ ret.append({'text':i[group_by]+'('+ str(i['count']) +')','value':i[group_by]})
+ return Response(ret)
+
@action(methods=['post'], detail=False, url_path='import', url_name='cnas_import', perms_map = {'post':'cnas_import'})
def cnas_import(self, request, pk=None):
"""
@@ -320,8 +335,6 @@ class CNASViewSet(ModelViewSet):
zzz.extractall(fulldir)
for root, dirs, files in os.walk(fulldir):
for f in files:
- if f.endswith('.xls'):
- return Response('不支持旧xls格式', status = status.HTTP_400_BAD_REQUEST)
import_cnas(f.encode('cp437').decode('gbk'), os.path.join(root,f))
return Response(status = status.HTTP_200_OK)
@@ -385,35 +398,26 @@ def import_cma(filename, path):
i = i + 1
CMA.objects.bulk_create(datalist)
+import xlrd
def import_cnas(filename, path):
- wb = load_workbook(path)
- sheet = wb.get_sheet_by_name('检测能力范围')
+ sheet = xlrd.open_workbook(path).sheet_by_name('检测能力范围')
datalist = []
- sszx = filename.replace('.xlsx','').replace('检测能力范围(含能源之星)-','')
- i = 3
- while sheet['l'+str(i)].value:
+ sszx = filename.replace('.xlsx','').replace('.xls', '').replace('检测能力范围(含能源之星)-','')
+ i = 2
+ lbmc = ''
+ xmmc = ''
+ while i < sheet.nrows:
data = {}
- if sheet['b'+str(i)].value:
- data['lbmc'] = sheet['b'+str(i)].value
- else:
- m = i - 1
- while True:
- if sheet['b'+str(m)].value:
- data['lbmc'] = sheet['b'+str(m)].value
- break
- m = m - 1
- if sheet['g'+str(i)].value:
- data['xmmc'] = sheet['g'+str(i)].value
- else:
- m = i - 1
- while True:
- if sheet['g'+str(m)].value:
- data['xmmc'] = sheet['g'+str(m)].value
- break
- m = m - 1
- data['bzmc'] = sheet['l'+str(i)].value
- data['bzbh'] = sheet['n'+str(i)].value
- data['bztk'] = sheet['p'+str(i)].value
+ data_list = sheet.row_values(i)
+ if data_list[1]:
+ lbmc = data_list[1]
+ if data_list[6]:
+ xmmc = data_list[6]
+ data['lbmc'] = lbmc
+ data['xmmc'] = xmmc
+ data['bzmc'] = data_list[11]
+ data['bzbh'] = data_list[13]
+ data['bztk'] = data_list[15]
data['sszx'] = sszx
datalist.append(CNAS(**data))
i = i + 1