导入实体功能修改

dev^2
mqh 1 year ago
parent f84d5ef57e
commit 837b544f2d
  1. 185
      ant-design-vue-jeecg/src/views/modulex/ModulexList.vue
  2. 87
      ant-design-vue-jeecg/src/views/modulex/modules/ModulexImport.vue
  3. 62
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/tablex/controller/TablexController.java
  4. 2
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/tablex/service/impl/TablexServiceImpl.java

@ -52,7 +52,7 @@
<a-col :xl="6" :lg="7" :md="8" :sm="24"> <a-col :xl="6" :lg="7" :md="8" :sm="24">
<a-form-item label="责任人"> <a-form-item label="责任人">
<j-select-user-by-dep placeholder="请选择责任人" v-model="queryParam.managerUsers" /> <j-select-user-by-dep placeholder="请选择责任人" v-model="queryParam.managerUsers"/>
</a-form-item> </a-form-item>
</a-col> </a-col>
@ -72,7 +72,8 @@
<a-button @click="handleAdd" type="primary" icon="plus">新增</a-button> <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
<!-- <a-button type="primary" @click="showModal1()"></a-button> --> <!-- <a-button type="primary" @click="showModal1()"></a-button> -->
<a-button type="primary" icon="import" @click="showModalImport()">导入模块</a-button> <a-button type="primary" icon="import" @click="showModalImport()">导入模块</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"
@change="handleImportExcel">
<a-modal <a-modal
title="正在上传..." title="正在上传..."
:visible="ModalData.isVisible==='true'" :visible="ModalData.isVisible==='true'"
@ -93,10 +94,12 @@
</a-modal> </a-modal>
<a-button type="primary" icon="import" @click="showProcess">导入模块</a-button> <a-button type="primary" icon="import" @click="showProcess">导入模块</a-button>
</a-upload> </a-upload>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="functionImportExcelUrl" @change="handleImportExcel"> <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
:action="functionImportExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import">导入功能</a-button> <a-button type="primary" icon="import">导入功能</a-button>
</a-upload> </a-upload>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="ruleImportExcelUrl" @change="handleImportExcel"> <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
:action="ruleImportExcelUrl" @change="handleImportExcel">
<a-button type="primary" icon="import" @click="showProcess">导入规则</a-button> <a-button type="primary" icon="import" @click="showProcess">导入规则</a-button>
<a-modal <a-modal
@ -119,9 +122,10 @@
</a-modal> </a-modal>
</a-upload> </a-upload>
<a-upload name="file" :showUploadList="false" :multiple="false" <!-- <a-upload name="file" :showUploadList="false" :multiple="false"
:headers="tokenHeader" :action="tablexImportExcelUrl" @change="handleImportExcel"> :headers="tokenHeader" :action="tablexImportExcelUrl" @change="handleImportExcel">-->
<a-button type="primary" icon="import" @click="showProcess">导入实体</a-button> <a-button type="primary" icon="import" @click="showProcess()">导入实体</a-button>
<!-- <a-button type="primary" icon="import" @click="showModalImport()">导入实体</a-button>-->
<a-modal <a-modal
title="正在上传..." title="正在上传..."
:visible="ModalData.isVisible==='true'" :visible="ModalData.isVisible==='true'"
@ -140,12 +144,13 @@
title="上传进度:" title="上传进度:"
status="active" :steps="ModalData.records"/> status="active" :steps="ModalData.records"/>
</a-modal> </a-modal>
</a-upload> <!-- </a-upload>-->
<a-button @click="fanhui" type="primary" icon="rollback">返回</a-button> <a-button @click="fanhui" type="primary" icon="rollback">返回</a-button>
<a-button type="primary" icon="download" @click="exportxsxl('模块,功能,规则表')">导出综合表</a-button> <a-button type="primary" icon="download" @click="exportxsxl('模块,功能,规则表')">导出综合表</a-button>
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrlf" @change="handleImportExcel"> <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrlf"
@change="handleImportExcel">
<a-button type="primary" icon="import">导入字段</a-button> <a-button type="primary" icon="import">导入字段</a-button>
</a-upload> </a-upload>
</div> </div>
@ -176,27 +181,27 @@
<!-- 管理 公用部分--> <!-- 管理 公用部分-->
<span slot="htmlSlot" slot-scope="text, record"> <span slot="htmlSlot" slot-scope="text, record">
<a @click="functionManage(record)">功能</a> <a @click="functionManage(record)">功能</a>
<a-divider type="vertical" /> <a-divider type="vertical"/>
<a @click="tablexManage(record)">实体</a> <a @click="tablexManage(record)">实体</a>
<!-- <a-divider type="vertical" /> --> <!-- <a-divider type="vertical" /> -->
<br /> <br/>
<a @click="viewVid(record)">字段</a> <a @click="viewVid(record)">字段</a>
</span> </span>
<!--功能 管理员--> <!--功能 管理员-->
<span slot="actionManage" slot-scope="text, record" v-if="userRole1 === '1'"> <span slot="actionManage" slot-scope="text, record" v-if="userRole1 === '1'">
<a @click="fabu(record)">发布</a> <a @click="fabu(record)">发布</a>
<a-divider type="vertical" /> <a-divider type="vertical"/>
<a @click="tijiao(record)">提交</a> <a @click="tijiao(record)">提交</a>
<a-divider type="vertical" /> <a-divider type="vertical"/>
<a @click="kaishi(record)">开始</a> <a @click="kaishi(record)">开始</a>
<br /> <br/>
<a @click="chehui(record)">撤回</a> <a @click="chehui(record)">撤回</a>
<a-divider type="vertical" /> <a-divider type="vertical"/>
<a @click="bugfankui(record)">BUG反馈</a> <a @click="bugfankui(record)">BUG反馈</a>
<br /> <br/>
<!-- <a @click="shenhe(record)">审核</a>--> <!-- <a @click="shenhe(record)">审核</a>-->
<!-- <a-divider type="vertical"/>--> <!-- <a-divider type="vertical"/>-->
</span> </span>
@ -218,13 +223,13 @@
<!--操作 --> <!--操作 -->
<span slot="action1" slot-scope="text, record"> <span slot="action1" slot-scope="text, record">
<a @click="fuzhiProject(record)">复制</a> <a @click="fuzhiProject(record)">复制</a>
<a-divider type="vertical" /> <a-divider type="vertical"/>
<a @click="handleEdit(record)">编辑</a> <a @click="handleEdit(record)">编辑</a>
<!-- <a-divider type="vertical" /> --> <!-- <a-divider type="vertical" /> -->
<br /> <br/>
<a @click="handleDetail(record)">详情</a> <a @click="handleDetail(record)">详情</a>
<a-divider type="vertical" /> <a-divider type="vertical"/>
<a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)"> <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
<a>删除</a> <a>删除</a>
@ -233,7 +238,7 @@
<span slot="filterDropdown"> <span slot="filterDropdown">
<a-card> <a-card>
<!-- /* 多选框 options:指定可选项 defaultValue:默认选中的选项 change:变化时回调 */ --> <!-- /* 多选框 options:指定可选项 defaultValue:默认选中的选项 change:变化时回调 */ -->
<a-checkbox-group :options="checkColumn" :defaultValue="checkColumn" @change="checkChange" /> <a-checkbox-group :options="checkColumn" :defaultValue="checkColumn" @change="checkChange"/>
</a-card> </a-card>
</span> </span>
</a-table> </a-table>
@ -251,17 +256,18 @@
<script> <script>
import '@assets/less/TableExpand.less' import '@assets/less/TableExpand.less'
import { mixinDevice } from '@/utils/mixin' import {mixinDevice} from '@/utils/mixin'
import { JeecgListMixin } from '@/mixins/JeecgListMixin' import {JeecgListMixin} from '@/mixins/JeecgListMixin'
import ModulexModal from './modules/ModulexModal' import ModulexModal from './modules/ModulexModal'
import ModulexImport from './modules/ModulexImport.vue' import ModulexImport from './modules/ModulexImport.vue'
import { getAction } from "@api/manage" import {getAction} from "@api/manage"
import BugxModal from "@views/modulex/modules/BugxModal" import BugxModal from "@views/modulex/modules/BugxModal"
import store from "@/store" import store from "@/store"
import { filterObj } from "@/utils/util" import {filterObj} from "@/utils/util"
import FieldxList from "@views/fieldx/FieldxList.vue" import FieldxList from "@views/fieldx/FieldxList.vue"
import TablexList from "@views/tablex/TablexList.vue" import TablexList from "@views/tablex/TablexList.vue"
import axios from 'axios'; import axios from 'axios';
export default { export default {
name: 'ModulexList', name: 'ModulexList',
mixins: [JeecgListMixin, mixinDevice], mixins: [JeecgListMixin, mixinDevice],
@ -272,15 +278,15 @@ export default {
ModulexModal, ModulexModal,
ModulexImport ModulexImport
}, },
data () { data() {
return { return {
ModalData:{ ModalData: {
uploaded: '0', uploaded: '0',
isVisible: 'false', isVisible: 'false',
records: '0', records: '0',
status: '判断文件结构' status: '判断文件结构'
}, },
visible:false, visible: false,
moduleximport: false, moduleximport: false,
description: '模块管理管理页面', description: '模块管理管理页面',
// //
@ -435,7 +441,7 @@ export default {
align: "center", align: "center",
fixed: "right", fixed: "right",
width: 98, width: 98,
scopedSlots: { customRender: 'htmlSlot' }, scopedSlots: {customRender: 'htmlSlot'},
// customCell: () => { // customCell: () => {
// return { // return {
// style: { // style: {
@ -450,7 +456,7 @@ export default {
align: "center", align: "center",
fixed: "right", fixed: "right",
width: 140, width: 140,
scopedSlots: { customRender: 'actionManage' }, scopedSlots: {customRender: 'actionManage'},
customCell: () => { customCell: () => {
return { return {
style: { style: {
@ -466,7 +472,7 @@ export default {
align: "center", align: "center",
fixed: "right", fixed: "right",
width: 100, width: 100,
scopedSlots: { customRender: 'action1', filterDropdown: 'filterDropdown' } scopedSlots: {customRender: 'action1', filterDropdown: 'filterDropdown'}
} }
], ],
url: { url: {
@ -488,7 +494,7 @@ export default {
loadRouteType: false, loadRouteType: false,
} }
}, },
created () { created() {
// columnsfilterColumns // columnsfilterColumns
this.filterColumn = this.columns this.filterColumn = this.columns
let usercode = store.getters.userInfo.id let usercode = store.getters.userInfo.id
@ -509,10 +515,10 @@ export default {
checkColumn: function () { checkColumn: function () {
return this.columns.map(item => item.title) return this.columns.map(item => item.title)
}, },
functionImportExcelUrl: function(){ functionImportExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.functionImportExcelUrl}`; return `${window._CONFIG['domianURL']}/${this.url.functionImportExcelUrl}`;
}, },
tablexImportExcelUrl: function(){ tablexImportExcelUrl: function () {
return `${window._CONFIG['domianURL']}/${this.url.tablexImportExcelUrl}`; return `${window._CONFIG['domianURL']}/${this.url.tablexImportExcelUrl}`;
}, },
ruleImportExcelUrl: function () { ruleImportExcelUrl: function () {
@ -521,27 +527,30 @@ export default {
}, },
methods: { methods: {
showModalImport(){ showModalImport() {
this.$refs.moduleximport.edit(); this.$refs.moduleximport.edit(this.ModalData);
// this.$refs.moduleximport.title = "111111"; // this.$refs.moduleximport.title = "111111";
this.$refs.moduleximport.disableSubmit = false; this.$refs.moduleximport.disableSubmit = false;
}, },
// //
showProcess(){ showProcess() {
let userId = store.getters.userInfo.id let userId = store.getters.userInfo.id
let base_url = window._CONFIG['domianURL'] let base_url = window._CONFIG['domianURL']
base_url = base_url.replace('http', 'ws') base_url = base_url.replace('http', 'ws')
let ws = new WebSocket(`${base_url}/uploadProcess/${userId}`) let ws = new WebSocket(`${base_url}/uploadProcess/${userId}`)
ws.onmessage = (e) =>{ this.$refs.moduleximport.show(this.tablexImportExcelUrl,'');
this.ModalData=JSON.parse(e.data) ws.onmessage = (e) => {
if (this.visible===false) { // this.ModalData = JSON.parse(e.data)
// this.getList() this.$refs.moduleximport.edit(JSON.parse(e.data));
console.log("重新获取列表") // if (JSON.parse(e.data).isVisible === 'false') {
} // this.$refs.moduleximport.close();
// // this.getList()
// console.log("")
// }
} }
}, },
// //
checkChange (checked) { checkChange(checked) {
// name // name
console.log(checked) // ['age','address','action'] console.log(checked) // ['age','address','action']
const columns = this.columns const columns = this.columns
@ -558,14 +567,14 @@ export default {
this.filterColumn = filterValue this.filterColumn = filterValue
}, },
fanhui () { fanhui() {
this.$router.push({ this.$router.push({
/*返回产品*/ /*返回产品*/
path: '/src/views/projectx/ProjectxList',/*在引号中填写返回vue*/ path: '/src/views/projectx/ProjectxList',/*在引号中填写返回vue*/
}) })
}, },
loginRole (id) { loginRole(id) {
getAction('functionx/functionx/loginrole', { id: id }).then((res) => { getAction('functionx/functionx/loginrole', {id: id}).then((res) => {
if (res.success) { if (res.success) {
// //
this.userRole1 = res.result this.userRole1 = res.result
@ -573,8 +582,8 @@ export default {
} }
}) })
}, },
shenhe (record) { shenhe(record) {
getAction('/modulex/modulex/shenhe', { id: record.id }).then((res) => { getAction('/modulex/modulex/shenhe', {id: record.id}).then((res) => {
if (res.success) { if (res.success) {
// //
this.$message.success(res.result) this.$message.success(res.result)
@ -584,10 +593,10 @@ export default {
} }
}) })
}, },
viewVid (record) { viewVid(record) {
// console.log(record) // console.log(record)
let s = null let s = null
getAction('/tablex/tablex/list', { moduleId: record.id }).then((res) => { getAction('/tablex/tablex/list', {moduleId: record.id}).then((res) => {
s = res.result.records s = res.result.records
console.log(s) console.log(s)
if (s[0] == null) { if (s[0] == null) {
@ -605,8 +614,8 @@ export default {
this.$refs.BugxModal.title = "BUG反馈" this.$refs.BugxModal.title = "BUG反馈"
this.$refs.BugxModal.disableSubmit = false this.$refs.BugxModal.disableSubmit = false
}, },
chehui (record) { chehui(record) {
getAction('/modulex/modulex/cehui', { id: record.id }).then((res) => { getAction('/modulex/modulex/cehui', {id: record.id}).then((res) => {
if (res.success) { if (res.success) {
// //
this.$message.success(res.result) this.$message.success(res.result)
@ -616,8 +625,8 @@ export default {
} }
}) })
}, },
tijiao (record) { tijiao(record) {
getAction('/modulex/modulex/tijiao', { id: record.id }).then((res) => { getAction('/modulex/modulex/tijiao', {id: record.id}).then((res) => {
if (res.success) { if (res.success) {
// //
this.$message.success(res.result) this.$message.success(res.result)
@ -627,8 +636,8 @@ export default {
} }
}) })
}, },
kaishi (record) { kaishi(record) {
getAction('/modulex/modulex/kaishi', { id: record.id }).then((res) => { getAction('/modulex/modulex/kaishi', {id: record.id}).then((res) => {
if (res.success) { if (res.success) {
// //
this.$message.success(res.result) this.$message.success(res.result)
@ -638,8 +647,8 @@ export default {
} }
}) })
}, },
fabu (record) { fabu(record) {
getAction('/modulex/modulex/fabu', { id: record.id }).then((res) => { getAction('/modulex/modulex/fabu', {id: record.id}).then((res) => {
if (res.success) { if (res.success) {
// //
this.$message.success(res.result) this.$message.success(res.result)
@ -647,7 +656,7 @@ export default {
} }
}) })
}, },
functionManage (record) { functionManage(record) {
this.$router.push({ this.$router.push({
path: '/src/views/functionx/FunctionxList', path: '/src/views/functionx/FunctionxList',
query: { query: {
@ -657,7 +666,7 @@ export default {
// query: {id: '123456'} // query: {id: '123456'}
}) })
}, },
tablexManage (record) { tablexManage(record) {
this.$refs.TablexList.showModal() this.$refs.TablexList.showModal()
this.$refs.TablexList.edit(record) this.$refs.TablexList.edit(record)
this.$refs.TablexList.disableSubmit = false this.$refs.TablexList.disableSubmit = false
@ -666,34 +675,34 @@ export default {
// query: {moduleid: record.id,project:this.$route.query.project} // query: {moduleid: record.id,project:this.$route.query.project}
// }) // })
}, },
initDictConfig () { initDictConfig() {
}, },
getSuperFieldList () { getSuperFieldList() {
let fieldList = [] let fieldList = []
fieldList.push({ type: 'string', value: 'pid', text: '上级模块id', dictCode: '' }) fieldList.push({type: 'string', value: 'pid', text: '上级模块id', dictCode: ''})
fieldList.push({ type: 'string', value: 'projectId', text: '项目id', dictCode: '' }) fieldList.push({type: 'string', value: 'projectId', text: '项目id', dictCode: ''})
fieldList.push({ type: 'string', value: 'moduleName', text: '中文名称', dictCode: '' }) fieldList.push({type: 'string', value: 'moduleName', text: '中文名称', dictCode: ''})
fieldList.push({ type: 'string', value: 'moduleEnName', text: '英文名称', dictCode: '' }) fieldList.push({type: 'string', value: 'moduleEnName', text: '英文名称', dictCode: ''})
fieldList.push({ type: 'string', value: 'moduleCode', text: '模块编码', dictCode: '' }) fieldList.push({type: 'string', value: 'moduleCode', text: '模块编码', dictCode: ''})
fieldList.push({ type: 'string', value: 'pmDescribe', text: '内容描述', dictCode: '' }) fieldList.push({type: 'string', value: 'pmDescribe', text: '内容描述', dictCode: ''})
fieldList.push({ type: 'string', value: 'managerUsers', text: '责任人', dictCode: '' }) fieldList.push({type: 'string', value: 'managerUsers', text: '责任人', dictCode: ''})
fieldList.push({ type: 'int', value: 'workLevel', text: '任务等级', dictCode: '' }) fieldList.push({type: 'int', value: 'workLevel', text: '任务等级', dictCode: ''})
fieldList.push({ type: 'int', value: 'workStatus', text: '任务状态', dictCode: '' }) fieldList.push({type: 'int', value: 'workStatus', text: '任务状态', dictCode: ''})
fieldList.push({ type: 'date', value: 'publishTime', text: '发布时间' }) fieldList.push({type: 'date', value: 'publishTime', text: '发布时间'})
fieldList.push({ type: 'double', value: 'duration', text: '任务时长', dictCode: '' }) fieldList.push({type: 'double', value: 'duration', text: '任务时长', dictCode: ''})
fieldList.push({ type: 'date', value: 'startTime', text: '开始时间' }) fieldList.push({type: 'date', value: 'startTime', text: '开始时间'})
fieldList.push({ type: 'date', value: 'submitTime', text: '提交时间' }) fieldList.push({type: 'date', value: 'submitTime', text: '提交时间'})
fieldList.push({ type: 'double', value: 'realDuration', text: '实际时长', dictCode: '' }) fieldList.push({type: 'double', value: 'realDuration', text: '实际时长', dictCode: ''})
fieldList.push({ type: 'string', value: 'userRole', text: '用户角色', dictCode: '' }) fieldList.push({type: 'string', value: 'userRole', text: '用户角色', dictCode: ''})
fieldList.push({ type: 'string', value: 'relatedBean', text: '关联实体', dictCode: '' }) fieldList.push({type: 'string', value: 'relatedBean', text: '关联实体', dictCode: ''})
fieldList.push({ type: 'string', value: 'prototypes', text: '原型图', dictCode: '' }) fieldList.push({type: 'string', value: 'prototypes', text: '原型图', dictCode: ''})
fieldList.push({ type: 'string', value: 'diagrams', text: '分析图', dictCode: '' }) fieldList.push({type: 'string', value: 'diagrams', text: '分析图', dictCode: ''})
fieldList.push({ type: 'int', value: 'status', text: '模块状态', dictCode: '' }) fieldList.push({type: 'int', value: 'status', text: '模块状态', dictCode: ''})
fieldList.push({ type: 'int', value: 'verisonStatus', text: '版本状态', dictCode: '' }) fieldList.push({type: 'int', value: 'verisonStatus', text: '版本状态', dictCode: ''})
fieldList.push({ type: 'int', value: 'verison', text: '版本号', dictCode: '' }) fieldList.push({type: 'int', value: 'verison', text: '版本号', dictCode: ''})
this.superFieldList = fieldList this.superFieldList = fieldList
}, },
loadParameter () { loadParameter() {
if (this.loadRouteType === false) { if (this.loadRouteType === false) {
this.projectIdx = this.$route.query.project this.projectIdx = this.$route.query.project
// console.log('aaaaaaaaa',this.projectIdx) // console.log('aaaaaaaaa',this.projectIdx)
@ -701,7 +710,7 @@ export default {
this.loadRouteType = true this.loadRouteType = true
} }
}, },
loadData (arg) { loadData(arg) {
if (!this.url.list) { if (!this.url.list) {
this.$message.error("请设置url.list属性!") this.$message.error("请设置url.list属性!")
return return
@ -730,7 +739,7 @@ export default {
this.loading = false this.loading = false
}) })
}, },
getQueryParams () { getQueryParams() {
// //
let sqp = {} let sqp = {}
if (this.superQueryParams) { if (this.superQueryParams) {
@ -742,7 +751,7 @@ export default {
param.pageNo = this.ipagination.current param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize param.pageSize = this.ipagination.pageSize
// 使 // 使
if(param.projectId==null) if (param.projectId == null)
param.projectId = this.$route.query.project; param.projectId = this.$route.query.project;
//param.id=this.id; //param.id=this.id;
//!!!!!!! //!!!!!!!
@ -750,7 +759,7 @@ export default {
// console.log('paaaaaaaaaaaaaaaaaaaaa') // console.log('paaaaaaaaaaaaaaaaaaaaa')
return filterObj(param) return filterObj(param)
}, },
searchReset () { searchReset() {
this.queryParam = '' this.queryParam = ''
this.loadData() this.loadData()
}, },

@ -8,25 +8,36 @@
@cancel="handleCancel" @cancel="handleCancel"
cancelText="关闭"> cancelText="关闭">
<a-alert message="请下载" type="info" show-icon style="margin-bottom: 20px;"/> <a-alert message="请下载" type="info" show-icon style="margin-bottom: 20px;"/>
<a-form :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 16 }" > <a-form :form="form" :label-col="{ span: 5 }" :wrapper-col="{ span: 16 }">
<!-- <a-alert message="请下载" type="info" show-icon /> --> <!-- <a-alert message="请下载" type="info" show-icon /> -->
<a-form-item label="下载标准表格"> <a-form-item label="下载标准表格">
<div class="standB"><a-button type="primary" icon="download" @click="handleDownload"/></div> <div class="standB">
<div class="standBu"> <a-alert <a-button type="primary" icon="download" @click="handleDownload"/>
</div>
<div class="standBu">
<a-alert
message="必须下载标准表格,否则审核不通过" message="必须下载标准表格,否则审核不通过"
type="error" type="error"
closable closable
@close="onClose" @close="onClose"
/></div> />
</div>
</a-form-item> </a-form-item>
<a-form-item label="上传标准表格"> <a-form-item label="上传标准表格">
<!-- @click="showProcess" --> <!-- @click="showProcess" -->
<a-upload <!-- <a-upload
:multiple="false" :multiple="false"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76" :action="url.uploadUrl"
@change="handleChange"> @change="handleChange"
<a-button type="primary" icon="upload" ></a-button> >-->
<!-- <div> <a-upload name="file"
:multiple="false"
:action="url.uploadUrl"
@change="handleChange"
:showUploadList="false"
:headers="tokenHeader">
<a-button type="primary" icon="upload"></a-button>
<div v-if="ModalData.isVisible==='true'">
<p>当前状态{{ ModalData.status }}</p> <p>当前状态{{ ModalData.status }}</p>
<p>总记录数{{ ModalData.records }}</p> <p>总记录数{{ ModalData.records }}</p>
<p>已上传{{ ModalData.uploaded }}</p> <p>已上传{{ ModalData.uploaded }}</p>
@ -35,12 +46,33 @@
title="上传进度:" title="上传进度:"
status="active" status="active"
:steps="ModalData.records"/> :steps="ModalData.records"/>
</div> --> </div>
</a-upload> </a-upload>
</a-form-item> </a-form-item>
<!-- <a-modal-->
<!-- title="正在上传..."-->
<!-- :visible="ModalData.isVisible==='true'"-->
<!-- :confirm-loading="false"-->
<!-- :mask="true"-->
<!-- :maskClosable="false"-->
<!-- :keyboard="false"-->
<!-- :closable="false"-->
<!-- :footer="false"-->
<!-- >-->
<!-- <p>当前状态{{ ModalData.status }}</p>-->
<!-- <p>总记录数{{ ModalData.records }}</p>-->
<!-- <p>已上传{{ ModalData.uploaded }}</p>-->
<!-- <a-progress-->
<!-- :percent="parseInt(String(ModalData.uploaded/ModalData.records*100))"-->
<!-- title="上传进度:"-->
<!-- status="active" :steps="ModalData.records"/>-->
<!-- </a-modal>-->
<a-form-model-item label="注意事项" v-if="uploadFinished"> <a-form-model-item label="注意事项" v-if="uploadFinished">
<a-list size="small" :data-source="datas"> <a-list size="small" :data-source="datas">
<a-list-item slot="renderItem" slot-scope="item,index" style="border-bottom:0px ;"> {{ index+1 }} . {{ item }}</a-list-item> <a-list-item slot="renderItem" slot-scope="item,index" style="border-bottom:0px ;"> {{ index + 1 }} . {{
item
}}
</a-list-item>
</a-list> </a-list>
</a-form-model-item> </a-form-model-item>
</a-form> </a-form>
@ -50,14 +82,16 @@
<script> <script>
import getAction from '@api/manage' import getAction from '@api/manage'
import store from '@/store' import store from '@/store'
import {JeecgListMixin} from '@/mixins/JeecgListMixin'
import {mixinDevice} from '@/utils/mixin'
export default { export default {
name: 'ModelTest', name: 'ModelTest',
comments: { mixins: [JeecgListMixin, mixinDevice],
comments: {},
},
data() { data() {
return { return {
title: '导入xxxxxx', title: '',
visible: false, visible: false,
model: {}, model: {},
// //
@ -72,7 +106,8 @@ export default {
form: this.$form.createForm(this), form: this.$form.createForm(this),
url: url:
{ {
downfile: '' downfile: '',
uploadUrl: ''
}, },
datas: [ datas: [
'Racing car sprays burning fuel into crowd.', 'Racing car sprays burning fuel into crowd.',
@ -85,12 +120,11 @@ export default {
}, },
created() { created() {
}, },
computed: { computed: {},
},
methods: { methods: {
// //
// //
showProcess() { /* showProcess() {
let userId = store.getters.userInfo.id let userId = store.getters.userInfo.id
let baseUrl = window._CONFIG['domianURL'] let baseUrl = window._CONFIG['domianURL']
baseUrl = baseUrl.replace('http', 'ws') baseUrl = baseUrl.replace('http', 'ws')
@ -98,7 +132,7 @@ export default {
ws.onmessage = (e) => { ws.onmessage = (e) => {
this.ModalData = JSON.parse(e.data) this.ModalData = JSON.parse(e.data)
} }
}, },*/
// //
handleChange(info) { handleChange(info) {
if (info.file.status !== 'uploading') { if (info.file.status !== 'uploading') {
@ -133,9 +167,15 @@ export default {
add() { add() {
}, },
edit(record) { show(uploadUrl, downUrl) {
this.url.uploadUrl = uploadUrl
this.url.downfile = downUrl
this.visible = true this.visible = true
}, },
edit(record) {
// this.visible = true
this.ModalData = record
},
close() { close() {
this.$emit('close') this.$emit('close')
@ -157,11 +197,12 @@ export default {
</script> </script>
<style scoped> <style scoped>
.standB{ .standB {
width: 15%; width: 15%;
float: left; float: left;
} }
.standBu{
.standBu {
width: 85%; width: 85%;
float: right; float: right;
} }

@ -1,5 +1,7 @@
package org.jeecg.modules.tablex.controller; package org.jeecg.modules.tablex.controller;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.io.IOException; import java.io.IOException;
@ -40,10 +42,13 @@ import org.jeecg.modules.tablex.vo.TablexVo;
import org.jeecg.modules.tablex.ws.WebSocketUtils; import org.jeecg.modules.tablex.ws.WebSocketUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.def.TemplateExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.entity.TemplateExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecgframework.poi.excel.view.JeecgTemplateExcelView;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -291,7 +296,7 @@ public class TablexController extends JeecgController<Tablex, ITablexService> {
if (StringUtils.isBlank(originalFilename) || if (StringUtils.isBlank(originalFilename) ||
(!originalFilename.endsWith("xls") && (!originalFilename.endsWith("xls") &&
!originalFilename.endsWith("xlsx"))) { !originalFilename.endsWith("xlsx"))) {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("文件格式不正确"); return Result.error("文件格式不正确");
} }
@ -308,13 +313,13 @@ public class TablexController extends JeecgController<Tablex, ITablexService> {
//读取excel数据 //读取excel数据
list = ExcelImportUtil.importExcel(file.getInputStream(), TablexVo.class, params); list = ExcelImportUtil.importExcel(file.getInputStream(), TablexVo.class, params);
} catch (Exception e) { } catch (Exception e) {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("文件读取失败"); return Result.error("文件读取失败");
} }
//判断文件中是否存在数据 //判断文件中是否存在数据
if (list == null || list.size() == 0) { if (list == null || list.size() == 0) {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("Excel数据为空"); return Result.error("Excel数据为空");
} }
@ -338,7 +343,7 @@ public class TablexController extends JeecgController<Tablex, ITablexService> {
//判断版本号长度 //判断版本号长度
String verison = tablexVo.getVerison(); String verison = tablexVo.getVerison();
if (verison.length() > 5) { if (verison.length() > 5) {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("预读入失败,版本号格式错误"); return Result.error("预读入失败,版本号格式错误");
} }
@ -352,7 +357,7 @@ public class TablexController extends JeecgController<Tablex, ITablexService> {
tablexVoService.removeAll(voList); tablexVoService.removeAll(voList);
if (voList.size() == 0) { if (voList.size() == 0) {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("导入失败,数据为空"); return Result.error("导入失败,数据为空");
} }
@ -366,7 +371,7 @@ public class TablexController extends JeecgController<Tablex, ITablexService> {
String moduleId = voList.get(i).getModuleId(); String moduleId = voList.get(i).getModuleId();
if (moduleId == null || moduleId.equals("")){ if (moduleId == null || moduleId.equals("")){
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("对应模块填写不能为空"); return Result.error("对应模块填写不能为空");
} }
@ -374,7 +379,7 @@ public class TablexController extends JeecgController<Tablex, ITablexService> {
queryWrapper.eq(Modulex::getId,moduleId); queryWrapper.eq(Modulex::getId,moduleId);
Modulex modulex = modulexService.getOne(queryWrapper); Modulex modulex = modulexService.getOne(queryWrapper);
if(modulex == null){ if(modulex == null){
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("对应模块填写错误"); return Result.error("对应模块填写错误");
} }
@ -416,43 +421,70 @@ public class TablexController extends JeecgController<Tablex, ITablexService> {
tablexService.saveSingleBatch(tablexList,loginUser,message); tablexService.saveSingleBatch(tablexList,loginUser,message);
} else { } else {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("导入失败,第" + i + 1 + "行的版本号填写错误!"); return Result.error("导入失败,第" + i + 1 + "行的版本号填写错误!");
} }
} else { } else {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("导入失败,第" + i + 1 + "行的版本状态填写错误!"); return Result.error("导入失败,第" + i + 1 + "行的版本状态填写错误!");
} }
} else { } else {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("导入失败,第" + i + 1 + "行的实体状态填写错误!"); return Result.error("导入失败,第" + i + 1 + "行的实体状态填写错误!");
} }
} else { } else {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("导入失败,第" + i + 1 + "行的英文名称填写错误!"); return Result.error("导入失败,第" + i + 1 + "行的英文名称填写错误!");
} }
} else { } else {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("导入失败,第" + i + 1 + "行的中文名称填写错误!"); return Result.error("导入失败,第" + i + 1 + "行的中文名称填写错误!");
} }
} else { } else {
message.put("isVisible", "false"); /*message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("导入失败,第" + i + 1 + "行的对应模块填写错误!"); return Result.error("导入失败,第" + i + 1 + "行的对应模块填写错误!");
} }
} }
} catch (Exception e) { } catch (Exception e) {
message.put("isVisible", "false"); /* message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("文件导入失败"); return Result.error("文件导入失败");
} }
message.put("isVisible", "false"); /*message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.ok("文件导入成功!"); return Result.ok("文件导入成功!");
} }
/* //导出实体标准模板
@RequestMapping(value = "/templateExcel")
public ModelAndView wbsExcelTemplate(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> map = new HashMap<String, Object>();
//设置导出文件名称
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date(System.currentTimeMillis());
String currTime = formatter.format(date);
String fileName = currTime + "-" + "模板.xlsx";
try {
String url = getClass().getClassLoader().getResource("static").getPath();
// 模板存放地址 这里写的地址根本拿不到 在其他人的电脑上
String templateUrl = wordPath + File.separator + "实体表模板.xls";
TemplateExportParams params = new TemplateExportParams(
templateUrl);
ModelAndView mv = new ModelAndView(new JeecgTemplateExcelView());
mv.addObject(TemplateExcelConstants.FILE_NAME, fileName);
mv.addObject(TemplateExcelConstants.PARAMS, params);
// 添加模板参数
mv.addObject(TemplateExcelConstants.MAP_DATA, map); //data
return mv;
} catch (Exception e) {
log.error("下载模板异常--》{}", e);
}
return null;
}*/
} }

@ -48,7 +48,7 @@ public class TablexServiceImpl extends ServiceImpl<TablexMapper, Tablex> impleme
this.save(tablexList.get(i)); this.save(tablexList.get(i));
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
} catch (InterruptedException e) { } catch (InterruptedException e) {
message.put("isVisible", "false"); /*message.put("isVisible", "false");*/
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }

Loading…
Cancel
Save