检验能力

This commit is contained in:
shilixia 2020-12-22 14:43:44 +08:00
commit 5208464dd0
4 changed files with 104 additions and 122 deletions

View File

@ -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/',

View File

@ -182,6 +182,7 @@
stripe
highlight-current-row
max-height="300"
@filter-change="filterChange2"
>
<el-table-column type="index" width="50" />
<el-table-column align="header-center" label="类别名称">
@ -209,7 +210,10 @@
><span v-html="showlight(scope.row.bztk)"></span
></template>
</el-table-column>
<el-table-column align="header-center" label="所属地点">
<el-table-column align="header-center" label="所属地点" prop="sszx"
column-key="sszx"
:filters="groupBy2.sszx"
:filter-multiple="false">
<template slot-scope="scope"
><span v-html="showlight(scope.row.sszx)"></span
></template>
@ -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) => {
@ -419,6 +435,7 @@ export default {
this.getList();
this.getList2();
this.getGroup();
this.getGroup2();
},
handleFilter() {
this.listQuery.page = 1;
@ -427,6 +444,7 @@ export default {
this.listQuery2.search = this.listQuery.search;
this.getList2();
this.getGroup();
this.getGroup2();
},
handleAdd() {
this.cma = Object.assign({}, defaultCMA);
@ -469,6 +487,13 @@ export default {
this.listQuery.page = 1;
this.getList();
},
filterChange2(obj) {
for (let key in obj) {
this.listQuery2[key] = obj[key][0];
}
this.listQuery2.page = 1;
this.getList2();
},
async confirm(form) {
this.$refs[form].validate((valid) => {
if (valid) {

View File

@ -89,7 +89,7 @@
highlight-current-row
max-height="700"
ref="filterTable"
@selection-change="handleSelectionChange">
@selection-change="handleSelectionChange"
@filter-change="filterChange"
>
<el-table-column
@ -324,7 +324,6 @@ export default {
data.group_by = key;
getCMAGroup(data).then((response) => {
this.groupBy[key] = response.data;
console.log(this.groupBy);
});
}
},
@ -372,7 +371,6 @@ export default {
});
})
.catch((err) => {
console.error(err);
});
},
@ -399,7 +397,6 @@ export default {
})
})
.catch((err) => {
console.error(err);
});
},
@ -407,6 +404,7 @@ export default {
this.multipleSelection = val;
},
filterChange(obj) {
console.log(obj)
for (let key in obj) {
this.listQuery[key] = obj[key][0];
}

View File

@ -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):
"""
@ -321,10 +336,6 @@ class CNASViewSet(ModelViewSet):
zzz.extractall(fulldir)
for root, dirs, files in os.walk(fulldir):
for f in files:
print(f)
if f.endswith('.xls'):
return Response('不支持旧xls格式', status = status.HTTP_400_BAD_REQUEST)
print(f.encode('cp437').decode('gbk'), os.path.join(root,f))
import_cnas(f.encode('cp437').decode('gbk'), os.path.join(root,f))
return Response(status = status.HTTP_200_OK)
@ -388,38 +399,26 @@ def import_cma(filename, path):
i = i + 1
CMA.objects.bulk_create(datalist)
import xlrd
def import_cnas(filename, path):
print(path)
wb = load_workbook(path)
sheet = wb.get_sheet_by_name('检测能力范围')
print(wb)
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
@ -435,84 +434,49 @@ def import_cma2(filename, path):
CMA.objects.filter(sszx=sszx, type='sub').delete()
i = 3
max_row = sheet.max_row
defaultv = {}
while i<max_row+1:
data = {}
if sheet['a'+str(i)].value:
data['dlxh'] = sheet['a'+str(i)].value
elif sheet['a3'].value:
m = i - 1
while True:
if sheet['a'+str(m)].value:
data['dlxh'] = sheet['a'+str(m)].value
break
m = m - 1
defaultv['dlxh'] = data['dlxh']
else:
data['dlxh'] = defaultv['dlxh']
if sheet['b'+str(i)].value:
data['dlmc'] = sheet['b'+str(i)].value
elif sheet['b3'].value:
m = i - 1
while True:
if sheet['b'+str(m)].value:
data['dlmc'] = sheet['b'+str(m)].value
break
m = m - 1
defaultv['dlmc'] = data['dlmc']
else:
data['dlmc'] = defaultv['dlmc']
if sheet['c'+str(i)].value:
data['lbxh'] = sheet['c'+str(i)].value
defaultv['lbxh'] = data['lbxh']
else:
m = i - 1
while True:
if sheet['c'+str(m)].value:
data['lbxh'] = sheet['c'+str(m)].value
break
m = m - 1
data['lbxh'] = defaultv['lbxh']
if sheet['d'+str(i)].value:
data['lbmc'] = sheet['d'+str(i)].value
defaultv['lbmc'] = data['lbmc']
else:
m = i - 1
while True:
if sheet['d'+str(m)].value:
data['lbmc'] = sheet['d'+str(m)].value
break
m = m - 1
data['lbmc'] = defaultv['lbmc']
if sheet['e'+str(i)].value:
data['xmxh'] = sheet['e'+str(i)].value
elif sheet['e3'].value: # 该表存在项目序号
m = i - 1
while True:
if sheet['e'+str(m)].value:
data['xmxh'] = sheet['e'+str(m)].value
break
m = m - 1
else: #该表没有项目序号,自己定
pass
defaultv['xmxh'] = data['xmxh']
else:
data['xmxh'] = defaultv['xmxh']
if sheet['f'+str(i)].value:
data['xmmc'] = sheet['f'+str(i)].value
elif sszx=='枣庄公司':
pass
defaultv['xmmc'] = data['xmmc']
else:
m = i - 1
while True:
if sheet['f'+str(m)].value:
data['xmmc'] = sheet['f'+str(m)].value
break
m = m - 1
data['xmmc'] = defaultv['xmmc']
if sheet['g'+str(i)].value:
data['bzmc'] = sheet['g'+str(i)].value
defaultv['bzmc'] = data['bzmc']
else:
m = i - 1
while True:
if sheet['g'+str(m)].value:
data['bzmc'] = sheet['g'+str(m)].value
break
m = m - 1
data['bzmc'] = defaultv['bzmc']
if sheet['h'+str(i)].value:
data['bzbh'] = sheet['h'+str(i)].value
elif sheet['h3'].value:
m = i - 1
while True:
if sheet['h'+str(m)].value:
data['bzbh'] = sheet['h'+str(m)].value
break
m = m - 1
defaultv['bzbh'] = data['bzbh']
else:
data['bzbh'] = defaultv['bzbh']
data['xzfw'] = sheet['i'+str(i)].value if (sheet['i'+str(i)].value and sheet['i'+str(i)].value !='') else None
data['bz'] = sheet['j'+str(i)].value if (sheet['j'+str(i)].value and sheet['j'+str(i)].value !='') else None
data['glzz'] = sheet['k'+str(i)].value if (sheet['k'+str(i)].value and sheet['k'+str(i)].value !='') else None
@ -530,46 +494,33 @@ def import_inspection(filename, path):
Inspection.objects.filter(sszx=sszx).delete()
i = 3
max_row = sheet.max_row
defaultv = {}
while i<max_row+1:
data = {}
if sheet['a'+str(i)].value:
data['dlxh'] = sheet['a'+str(i)].value
elif sheet['a3'].value:
m = i - 1
while True:
if sheet['a'+str(m)].value:
data['dlxh'] = sheet['a'+str(m)].value
break
m = m - 1
defaultv['dlxh'] = data['dlxh']
else:
data['dlxh'] = defaultv['dlxh']
if sheet['b'+str(i)].value:
data['dlmc'] = sheet['b'+str(i)].value
elif sheet['b3'].value:
m = i - 1
while True:
if sheet['b'+str(m)].value:
data['dlmc'] = sheet['b'+str(m)].value
break
m = m - 1
defaultv['dlmc'] = data['dlmc']
else:
data['dlmc'] = defaultv['dlmc']
if sheet['c'+str(i)].value:
data['dxxh'] = sheet['c'+str(i)].value
elif sheet['c3'].value:
m = i - 1
while True:
if sheet['c'+str(m)].value:
data['dxxh'] = sheet['c'+str(m)].value
break
m = m - 1
defaultv['dxxh'] = data['dxxh']
else:
data['dxxh'] = defaultv['dxxh']
if sheet['d'+str(i)].value:
data['jydx'] = sheet['d'+str(i)].value
elif sheet['d3'].value:
m = i - 1
while True:
if sheet['d'+str(m)].value:
data['jydx'] = sheet['d'+str(m)].value
break
m = m - 1
defaultv['jydx'] = data['jydx']
else:
data['jydx'] = defaultv['jydx']
if sheet['e'+str(i)].value:
data['jyxmxh'] = sheet['e'+str(i)].value
elif sheet['e3'].value: # 该表存在项目序号
m = i - 1
while True: