Commit 476e5fd5 by 刘泽志

最终版本

parent 4062c2ef
...@@ -132,3 +132,28 @@ export function getMetaFieldDict() { ...@@ -132,3 +132,28 @@ export function getMetaFieldDict() {
method: 'get', method: 'get',
}) })
} }
/**
* 字段同步查询
* @returns {*}
*/
export function querySyncField(templateId) {
return request({
url: `${prefix}/querySyncField`,
method: 'get',
params:{templateId}
})
}
/**
* 字段同步
* @returns {*}
*/
export function syncField(data) {
return request({
url: `${prefix}/syncField`,
method: 'post',
data
})
}
import request from "@/utils/request"; import request from '@/utils/request'
const prefix = '/data/excel' const prefix = '/data/excel'
...@@ -58,14 +58,43 @@ export async function blobValidate(data) { ...@@ -58,14 +58,43 @@ export async function blobValidate(data) {
/** /**
* 获取机构数据 * 获取机构数据
* @param orgName * @param name
* @param year * @param year
* @returns {*} * @returns {*}
*/ */
export function queryArea(orgName,year) { export function queryArea(name,year) {
return request({ return request({
url: `${prefix}/queryArea`, url: `${prefix}/queryArea`,
method: 'get', method: 'get',
params:{orgName,year} params:{name,year}
})
}
/**
* 更新机构数据
* @param data
* @returns {*}
*/
export function updateArea(data){
return request({
url: `${prefix}/updateArea`,
method: 'post',
data
})
}
/**
* 导出修改后的excel
* @param name
* @param year
* @returns {*}
*/
export function exportExcel(name,year) {
return request({
url: `${prefix}/export`,
method: 'get',
params:{name,year},
headers: { "Content-Type": "application/x-www-form-urlencoded" },
responseType: "blob",
}) })
} }
...@@ -116,7 +116,8 @@ ...@@ -116,7 +116,8 @@
<el-date-picker <el-date-picker
format="yyyy" value-format="yyyy" format="yyyy" value-format="yyyy"
v-model="yearDialog.data.value" v-model="yearDialog.data.value"
type="year"> type="year"
>
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -212,11 +213,12 @@ ...@@ -212,11 +213,12 @@
</el-form-item> </el-form-item>
<el-form-item label="数据库字段" prop="field"> <el-form-item label="数据库字段" prop="field">
<el-select v-model="fieldDialog.data.field" :popper-append-to-body="false" filterable clearable> <el-select v-model="fieldDialog.data.field" :popper-append-to-body="false" filterable clearable>
<el-option v-for="item in metaFieldDict" :key="item.value" :label="item.label" :value="item.value" <el-option v-for="item in metaFieldDict" :key="item.value" :label="item.label"
:value="item.value"
></el-option> ></el-option>
</el-select> </el-select>
<!-- <el-autocomplete v-model="fieldDialog.data.field" :fetch-suggestions="fetchSuggestions"> <!-- <el-autocomplete v-model="fieldDialog.data.field" :fetch-suggestions="fetchSuggestions">
</el-autocomplete>--> </el-autocomplete>-->
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -250,10 +252,15 @@ ...@@ -250,10 +252,15 @@
</el-button> </el-button>
<el-button type="success" @click="openFieldDialog">新增</el-button> <el-button type="success" @click="openFieldDialog">新增</el-button>
<el-button type="warning" @click="openQuicklyBind">快速绑定</el-button> <el-button type="warning" @click="openQuicklyBind">快速绑定</el-button>
<el-button type="warning" @click="openSwitchYear('template')" :disabled="!fieldDrawer.template.excelId">模板初始化</el-button> <el-button :disabled="!fieldDrawer.template.excelId" type="warning"
@click="openSwitchYear('template')"
>模板初始化
</el-button>
<el-button type="warning" @click="openSwitchYear('rule')">规则同步</el-button> <el-button type="warning" @click="openSwitchYear('rule')">规则同步</el-button>
<el-button type="info" @click="createTable">物理表生成 <el-button type="info" @click="createTable">物理表生成
</el-button> </el-button>
<el-button type="info" @click="querySyncField">字段同步
</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="fieldDrawer.queryFieldLoading" :data="fieldDrawer.fieldList" <el-table v-loading="fieldDrawer.queryFieldLoading" :data="fieldDrawer.fieldList"
...@@ -262,7 +269,9 @@ ...@@ -262,7 +269,9 @@
<el-table-column align="center" label="代码" prop="code" show-overflow-tooltip width="120"/> <el-table-column align="center" label="代码" prop="code" show-overflow-tooltip width="120"/>
<el-table-column align="center" label="指标名称" min-width="200" prop="title" show-overflow-tooltip/> <el-table-column align="center" label="指标名称" min-width="200" prop="title" show-overflow-tooltip/>
<el-table-column align="center" label="数据坐标" prop="coordinate" show-overflow-tooltip width="100"/> <el-table-column align="center" label="数据坐标" prop="coordinate" show-overflow-tooltip width="100"/>
<el-table-column align="center" label="数据库字段名" min-width="150" prop="fieldName" show-overflow-tooltip/> <el-table-column align="center" label="数据库字段名" min-width="150" prop="fieldName"
show-overflow-tooltip
/>
<el-table-column align="center" label="计量单位" prop="unit" show-overflow-tooltip width="90"/> <el-table-column align="center" label="计量单位" prop="unit" show-overflow-tooltip width="90"/>
<el-table-column align="center" label="操作" width="150"> <el-table-column align="center" label="操作" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -356,7 +365,8 @@ ...@@ -356,7 +365,8 @@
<el-table-column align="center" label="规则名称" prop="name" show-overflow-tooltip width="180"/> <el-table-column align="center" label="规则名称" prop="name" show-overflow-tooltip width="180"/>
<el-table-column align="center" label="验证模式" prop="mode" show-overflow-tooltip width="120" <el-table-column align="center" label="验证模式" prop="mode" show-overflow-tooltip width="120"
/> />
<el-table-column :formatter="contentFormat" align="center" label="验证内容" min-width="200" prop="content" <el-table-column :formatter="contentFormat" align="center" label="验证内容" min-width="200"
prop="content"
show-overflow-tooltip show-overflow-tooltip
/> />
<el-table-column align="center" label="操作" width="120"> <el-table-column align="center" label="操作" width="120">
...@@ -406,7 +416,8 @@ ...@@ -406,7 +416,8 @@
> >
<el-form size="small"> <el-form size="small">
<el-form-item> <el-form-item>
<el-button icon="el-icon-plus" type="success" @click="openAddOrgListDialog">添加</el-button> <el-button v-if="false" icon="el-icon-plus" type="success" @click="openAddOrgListDialog">添加</el-button>
<el-button :loading="orgDictDialog.loading" icon="el-icon-plus" type="success" @click="exportExcel">导出</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="orgDictDialog.loading" :data="orgDictDialog.orgList" <el-table v-loading="orgDictDialog.loading" :data="orgDictDialog.orgList"
...@@ -419,15 +430,12 @@ ...@@ -419,15 +430,12 @@
<el-table-column align="center" label="机构地址" prop="MAILING_ADDRESS" show-overflow-tooltip/> <el-table-column align="center" label="机构地址" prop="MAILING_ADDRESS" show-overflow-tooltip/>
<el-table-column align="center" label="行政区划代码" prop="AREA_NUMBER_CODE" show-overflow-tooltip/> <el-table-column align="center" label="行政区划代码" prop="AREA_NUMBER_CODE" show-overflow-tooltip/>
<el-table-column v-if="false" align="center" label="所属市" prop="CITY" show-overflow-tooltip/> <el-table-column v-if="false" align="center" label="所属市" prop="CITY" show-overflow-tooltip/>
<el-table-column align="center" label="所属区" prop="AREA" show-overflow-tooltip/> <el-table-column align="center" label="对应区名称" prop="AREA" show-overflow-tooltip/>
<el-table-column align="center" label="操作" width="120"> <el-table-column align="center" label="操作" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button circle icon="el-icon-edit" plain <el-button circle icon="el-icon-edit" plain
size="small" type="primary" @click.stop="openUpdateOrgListDialog(scope.row)" size="small" type="primary" @click.stop="openUpdateOrgListDialog(scope.row)"
></el-button> ></el-button>
<el-button circle icon="el-icon-delete" plain
size="small" type="danger" @click.stop="deleteOrgList(scope.row)"
></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -437,26 +445,20 @@ ...@@ -437,26 +445,20 @@
append-to-body width="500px" append-to-body width="500px"
> >
<el-form ref="orgListForm" :model="orgListDialog.data" label-width="100px"> <el-form ref="orgListForm" :model="orgListDialog.data" label-width="100px">
<el-form-item label="标识" prop="value" required> <el-form-item label="标识" prop="ROWCODE" required>
<el-input v-model="orgListDialog.data.value" size="small"/> <el-input v-model="orgListDialog.data.ROWCODE" disabled size="small"/>
</el-form-item>
<el-form-item label="机构类型" prop="orgType" required>
<el-input v-model="orgListDialog.data.orgType" size="small"/>
</el-form-item> </el-form-item>
<el-form-item label="机构名称" prop="label" required> <el-form-item label="机构类型" prop="ORG_TYPE">
<el-input v-model="orgListDialog.data.label" size="small"/> <el-input v-model="orgListDialog.data.ORG_TYPE" disabled size="small"/>
</el-form-item> </el-form-item>
<el-form-item label="机构地址" prop="address"> <el-form-item label="机构名称" prop="ORG_NAME" required>
<el-input v-model="orgListDialog.data.address" size="small"/> <el-input v-model="orgListDialog.data.ORG_NAME" size="small"/>
</el-form-item> </el-form-item>
<el-form-item label="行政区划代码" prop="unifiedCode"> <el-form-item label="机构地址" prop="MAILING_ADDRESS">
<el-input v-model="orgListDialog.data.unifiedCode" size="small"/> <el-input v-model="orgListDialog.data.MAILING_ADDRESS" autosize size="small" type="textarea"/>
</el-form-item> </el-form-item>
<el-form-item label="所属市" prop="city"> <el-form-item label="行政区划代码" prop="AREA_NUMBER_CODE">
<el-input v-model="orgListDialog.data.city" size="small"/> <el-input v-model="orgListDialog.data.AREA_NUMBER_CODE" size="small"/>
</el-form-item>
<el-form-item label="所属区" prop="region">
<el-input v-model="orgListDialog.data.region" size="small"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -468,13 +470,32 @@ ...@@ -468,13 +470,32 @@
<el-dialog title="请选择同步年份" :visible.sync="otherYearDialog.show" <el-dialog title="请选择同步年份" :visible.sync="otherYearDialog.show"
append-to-body width="300px" v-loading="otherYearDialog.loading" append-to-body width="300px" v-loading="otherYearDialog.loading"
> >
<el-select v-model="otherYearDialog.year" > <el-select v-model="otherYearDialog.year">
<el-option v-for="item in otherYearDialog.list" :key="item" :value="item" :label="item"></el-option> <el-option v-for="item in otherYearDialog.list" :key="item" :value="item" :label="item"></el-option>
</el-select> </el-select>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitOtherYear">确 定</el-button> <el-button type="primary" @click="submitOtherYear">确 定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<!-- 字段同步 -->
<el-dialog :visible.sync="syncFieldDialog.show" append-to-body close-on-click-modal title="字段同步"
width="80%"
>
<el-form size="small">
<el-form-item>
<el-button :loading="syncFieldDialog.loading" icon="el-icon-plus" type="success" @click="syncField">同步新增数据库字段</el-button>
</el-form-item>
</el-form>
<el-table v-loading="syncFieldDialog.loading" :data="syncFieldDialog.list"
border height="500px" max-height="500px" stripe @selection-change="handleSelectionChange"
>
<el-table-column align="center" type="selection" width="50"/>
<el-table-column align="center" label="代码" prop="code" show-overflow-tooltip/>
<el-table-column align="center" label="指标名称" prop="title" show-overflow-tooltip/>
<el-table-column align="center" label="字段名称" prop="fieldName" show-overflow-tooltip/>
<el-table-column align="center" label="字段类型" prop="fieldType" show-overflow-tooltip/>
</el-table>
</el-dialog>
</div> </div>
</template> </template>
...@@ -507,7 +528,7 @@ export default { ...@@ -507,7 +528,7 @@ export default {
dataSourceList: [], // 数据源列表 dataSourceList: [], // 数据源列表
tableList: [], // 表列表 tableList: [], // 表列表
fieldDict: [], // 字段字典 fieldDict: [], // 字段字典
metaFieldDict:[], // 元字段字典 metaFieldDict: [], // 元字段字典
yearDialog: { // 年份dialog yearDialog: { // 年份dialog
title: '', title: '',
show: false, show: false,
...@@ -570,7 +591,8 @@ export default { ...@@ -570,7 +591,8 @@ export default {
orgDictDialog: { // 机构字典弹出框 orgDictDialog: { // 机构字典弹出框
loading: false, loading: false,
show: false, show: false,
orgList: [] orgList: [],
areaDict: []
}, },
orgListDialog: { // 模板规则数据 orgListDialog: { // 模板规则数据
show: false, show: false,
...@@ -584,13 +606,19 @@ export default { ...@@ -584,13 +606,19 @@ export default {
title: '', title: '',
data: {} data: {}
}, },
otherYearDialog:{ // 模板重置选择年份数据 otherYearDialog: { // 模板重置选择年份数据
year: '', year: '',
show: false, show: false,
loading: false, loading: false,
list:[], list: [],
type: '' type: ''
}, },
syncFieldDialog:{ // 字段同步
show: false,
loading: false,
list: [],
checked:[]
},
importLoading: false, // 导入数据loading importLoading: false, // 导入数据loading
queryTemplateLoading: false, // 模板查询loading queryTemplateLoading: false, // 模板查询loading
queryTableLoading: false, // 查询数据表loading queryTableLoading: false, // 查询数据表loading
...@@ -664,12 +692,12 @@ export default { ...@@ -664,12 +692,12 @@ export default {
}) })
}, },
// 初始化元字段字典 // 初始化元字段字典
initMetaFieldDict(){ initMetaFieldDict() {
DataField.getMetaFieldDict().then(res=>{ DataField.getMetaFieldDict().then(res => {
this.metaFieldDict = res.data.map(item=>{ this.metaFieldDict = res.data.map(item => {
return { return {
value: item.id, value: item.id,
label: StringUtil.mergeStr(item.fieldName,item.fieldComment) label: StringUtil.mergeStr(item.fieldName, item.fieldComment)
} }
}) })
}) })
...@@ -1123,18 +1151,18 @@ export default { ...@@ -1123,18 +1151,18 @@ export default {
}).finally(_ => this.initTemplateDialog.loading = false) }).finally(_ => this.initTemplateDialog.loading = false)
}, },
// 打开年份选择框 // 打开年份选择框
openSwitchYear(type){ openSwitchYear(type) {
this.otherYearDialog.show = true this.otherYearDialog.show = true
this.otherYearDialog.type = type this.otherYearDialog.type = type
this.otherYearDialog.year = null this.otherYearDialog.year = null
DataTemplate.queryOtherYears(this.fieldDrawer.template) DataTemplate.queryOtherYears(this.fieldDrawer.template)
.then(res=>{ .then(res => {
this.otherYearDialog.list = res.data this.otherYearDialog.list = res.data
}) })
}, },
// 提交同步年份信息 // 提交同步年份信息
submitOtherYear() { submitOtherYear() {
if (this.otherYearDialog.type === 'template'){ if (this.otherYearDialog.type === 'template') {
this.otherYearDialog.loading = true this.otherYearDialog.loading = true
DataField.resetField(this.fieldDrawer.template.excelId, DataField.resetField(this.fieldDrawer.template.excelId,
this.otherYearDialog.year).then(res => { this.otherYearDialog.year).then(res => {
...@@ -1144,8 +1172,8 @@ export default { ...@@ -1144,8 +1172,8 @@ export default {
this.queryFieldList() this.queryFieldList()
} }
}).finally(_ => this.otherYearDialog.loading = false) }).finally(_ => this.otherYearDialog.loading = false)
}else { } else {
if (this.otherYearDialog.year){ if (this.otherYearDialog.year) {
this.otherYearDialog.loading = true this.otherYearDialog.loading = true
DataRule.syncRuleByYear(this.fieldDrawer.template.id, this.otherYearDialog.year).then(res => { DataRule.syncRuleByYear(this.fieldDrawer.template.id, this.otherYearDialog.year).then(res => {
if (res.code === 200) { if (res.code === 200) {
...@@ -1370,11 +1398,23 @@ export default { ...@@ -1370,11 +1398,23 @@ export default {
//this.initOrgList() //this.initOrgList()
this.orgDictDialog.show = true this.orgDictDialog.show = true
this.orgDictDialog.loading = true this.orgDictDialog.loading = true
ExcelData.queryArea(this.queryForm.orgName,this.queryForm.year).then(res => { // 查询机构字典
if (res.code === 200) { DictData.queryDict('area').then(res => {
this.orgDictDialog.orgList = res.data this.orgDictDialog.areaDict = res.data
} ExcelData.queryArea(this.queryForm.orgName, this.queryForm.year).then(res => {
}).finally(_ => this.orgDictDialog.loading = false) if (res.code === 200) {
this.orgDictDialog.orgList = res.data.map(item => {
if (item.AREA_NUMBER_CODE) {
let temp = this.orgDictDialog.areaDict.find(area => area.value === item.AREA_NUMBER_CODE)
if (temp) {
item.AREA = temp.label
}
}
return item
})
}
}).finally(_ => this.orgDictDialog.loading = false)
})
}, },
openAddOrgListDialog() { openAddOrgListDialog() {
this.orgListDialog.title = '新增机构' this.orgListDialog.title = '新增机构'
...@@ -1413,7 +1453,7 @@ export default { ...@@ -1413,7 +1453,7 @@ export default {
submitOrgList() { submitOrgList() {
this.$refs.orgListForm.validate(valid => { this.$refs.orgListForm.validate(valid => {
if (valid) { if (valid) {
let data = { /* let data = {
id: this.orgListDialog.data.id, id: this.orgListDialog.data.id,
type: 'orgList', type: 'orgList',
label: this.orgListDialog.data.label, label: this.orgListDialog.data.label,
...@@ -1438,10 +1478,66 @@ export default { ...@@ -1438,10 +1478,66 @@ export default {
this.orgListDialog.show = false this.orgListDialog.show = false
this.initOrgList() this.initOrgList()
}) })
} } */
ExcelData.updateArea({
...this.orgListDialog.data,
name: this.queryForm.orgName,
year: this.queryForm.year
})
.then(res => {
this.orgListDialog.show = false
this.orgDictDialog.loading = true
// 查询机构字典
ExcelData.queryArea(this.queryForm.orgName, this.queryForm.year).then(res => {
if (res.code === 200) {
this.orgDictDialog.orgList = res.data.map(item => {
if (item.AREA_NUMBER_CODE) {
let temp = this.orgDictDialog.areaDict.find(area => area.value === item.AREA_NUMBER_CODE)
if (temp) {
item.AREA = temp.label
}
}
return item
})
}
}).finally(_ => this.orgDictDialog.loading = false)
})
} }
}) })
} },
// 导出修改后的excel
exportExcel(){
this.orgDictDialog.loading = true
ExcelData.exportExcel(this.queryForm.orgName, this.queryForm.year).then(async res=>{
const isFile = await ExcelData.blobValidate(res)
if (isFile) {
saveAs(res, this.queryForm.orgName+this.queryForm.year+"年.xlsx")
}
}).finally(_=>this.orgDictDialog.loading = false)
},
// 字段同步
querySyncField(){
this.syncFieldDialog.show = true
this.syncFieldDialog.loading = true
this.syncFieldDialog.checked = []
DataField.querySyncField(this.fieldDrawer.template.id).then(res=>{
this.syncFieldDialog.list = res.data
}).finally(_=>this.syncFieldDialog.loading = false)
},
syncField(){
if (this.syncFieldDialog.checked && this.syncFieldDialog.checked.length > 0){
this.syncFieldDialog.loading = true
DataField.syncField(this.syncFieldDialog.checked).then(res=>{
if (res.code === 200){
this.$message.success("新增字段成功")
this.syncFieldDialog.show = false
}
}).finally(_=>this.syncFieldDialog.loading = false)
}
},
handleSelectionChange(val){
this.syncFieldDialog.checked = val
},
} }
} }
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment