Merge remote-tracking branch 'origin/dev_third_stage' into dev_third_stage

This commit is contained in:
wangzhijiang
2022-06-22 16:34:01 +08:00
17 changed files with 1091 additions and 194 deletions
@@ -953,9 +953,9 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
ParamsCollectManifestEO paramsCollectManifestEO = getById(paramsCollectManifestIdStr[i]);
ParamsCollectManifestEO updateEO = new ParamsCollectManifestEO();
updateEO.setId(paramsCollectManifestIdStr[i]);
if (CollectManifestStateEnum.SDT_BACK.equals(paramsCollectManifestEO.getState())
|| CollectManifestStateEnum.DRE_BACK.equals(paramsCollectManifestEO.getState())
|| CollectManifestStateEnum.CERT_BACK.equals(paramsCollectManifestEO.getState())) {
if (CollectManifestStateEnum.SDT_BACK.getValue().equals(paramsCollectManifestEO.getState())
|| CollectManifestStateEnum.DRE_BACK.getValue().equals(paramsCollectManifestEO.getState())
|| CollectManifestStateEnum.CERT_BACK.getValue().equals(paramsCollectManifestEO.getState())) {
updateEO.setState(String.valueOf(Integer.parseInt(paramsCollectManifestEO.getState()) - 2)); // 设置对应状态
@@ -11,8 +11,8 @@ import java.util.Map;
* @Date: Created in 11:29 2022/5/18
*/
public enum ExportTemplateStateEnum {
ENABLE("启用","0","enable"),
DISABLE("禁用","1","disable");
ENABLE("启用","0","Enable"),
DISABLE("禁用","1","Disable");
String name;
String value;
@@ -734,7 +734,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
}
return Result.error(resultMsg);
}
String path = uploadpath + File.separator + "modal" + File.separator + filenameorg;
String path = uploadpath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis();
File saveDirectory = new File(path);
if(!saveDirectory.isDirectory()){
saveDirectory.mkdir();
@@ -742,7 +742,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path +File.separator+ file.getOriginalFilename()));
try{
//解压缩
String zipEntryName = FileUnZip.unZipFiles(path +File.separator+ file.getOriginalFilename(),path);
String zipEntryName = FileUnZip.unZipFiles2(path +File.separator+ file.getOriginalFilename(), path);
// 数据相关处理,
// 1.获取其中的Excel,
List<File> excelfilelist = FileUnZip.readExcelFile(zipEntryName);
@@ -76,6 +76,55 @@ public class FileUnZip {
return orgMkdirs;
}
/**
* 解压zip文件
* 解决解压文件下有多个文件夹时,读不到orgMkdirs问题
* @param sourceFile,待解压的zip文件; descDir,解压后的存放路径
* @throws Exception
* @author gaoyan
**/
public static String unZipFiles2(String sourceFile, String descDir) throws IOException {
File zipFile = new File(sourceFile);
File pathFile = new File(descDir);
if (!pathFile.exists()) {
pathFile.mkdirs();
}
ZipFile zip = new ZipFile(zipFile,"gbk");
String orgMkdirsLast = "";
for (Enumeration entries = zip.getEntries(); entries.hasMoreElements(); ) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String zipEntryName = entry.getName();
String outPath = (descDir + "/" + zipEntryName).replaceAll("\\*", "/");
orgMkdirsLast = zipEntryName.substring(0, zipEntryName.indexOf('/'));
//判断路径是否存在,不存在则创建文件路径
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if (!file.exists()) {
file.mkdirs();
}
//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
if (new File(outPath).isDirectory()) {
continue;
}
//输出文件路径信息
// InputStream in = null;
// OutputStream out = null;
try(InputStream in =zip.getInputStream(entry);
OutputStream out =new FileOutputStream(outPath)){
byte[] buf1 = new byte[1024];
int len;
while ((len = in.read(buf1)) > 0) {
out.write(buf1, 0, len);
}
}catch(IOException e){
logger.error(e.getMessage(),e);
}
}
zip.close();
String orgMkdirs = descDir + "/" + orgMkdirsLast;
return orgMkdirs;
}
/**
* 递归删除文件及文件夹
*
@@ -1484,7 +1484,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
}
return Result.error(resultMsg);
}
String path = uploadpath + "/modal/"+filenameorg;
String path = uploadpath + File.separator + "modal" + File.separator + filenameorg + System.currentTimeMillis();
File saveDirectory = new File(path);
if(!saveDirectory.isDirectory()){
saveDirectory.mkdir();
@@ -1492,7 +1492,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path +File.separator+ file.getOriginalFilename()));
try{
//解压缩
String zipEntryName = FileUnZip.unZipFiles(path +File.separator+ file.getOriginalFilename(),path);
String zipEntryName = FileUnZip.unZipFiles2(path +File.separator+ file.getOriginalFilename(), path);
// 数据相关处理,
// 1.获取其中的Excel,
List<File> excelfilelist = FileUnZip.readExcelFile(zipEntryName);
@@ -143,7 +143,7 @@ spring:
# password: 123456
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://121.36.69.172:3307/laws_weilai?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
url: jdbc:mysql://121.36.69.172:3307/laws_weilai_stand?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:mysql://121.36.69.172:3307/laws_weilai?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: hzwlsoft.com
driver-class-name: com.mysql.cj.jdbc.Driver
+18 -1
View File
@@ -962,6 +962,23 @@ module.exports = {
releaseStatus:'Release status',
uploadedBy:'Uploaded by',
uploadMonthly:'Upload monthly',
chapterContents:'Chapter contents',
chineseTitle:'Chinese title',
englishTitle:'English title',
regulatoryContact:'Regulatory contact',
exportStatus:'Export status',
monthlyTitleTemplate:'Monthly title template',
monthlyIntegrationAndExport:'Monthly integration and export',
addContent:'Add content',
editContent:'Edit content',
viewContent:'View content',
fillInTheMonth:'Fill in the month',
monthSelection:'Month selection',
bringInStandardInformation:'Bring in standard information',
contentTemplate:'Content template',
moveUp:'Move up',
moveDown:'Move down',
// 上报库
Enable: '启用',
Enable: 'Enable',
Latestupdatetime: 'Latest update time',
}
+28 -12
View File
@@ -727,7 +727,7 @@ module.exports = {
// 认证状态
timeoperation: '才有权限操作此按钮',
NiOnumberis: 'NIO编号为',
NoOperationPermissionForthisbutton:'没有此按钮的操作权限',
NoOperationPermissionForthisbutton: '没有此按钮的操作权限',
Attentionfreeze: '冻结后该冻结配置内容不可进行编辑',
Filledperson: '工程接口人没有填写,请填写完工程接口人再进行下发收集',
Datastatusis: '数据状态为',
@@ -956,18 +956,34 @@ module.exports = {
documentLibraryDetails: '文档库详情',
question: '催办',
ConfirmQuestion: '确认催办',
OnlyOrTaskconfirmationOut:'只有清单确认状态或任务确认状态为待确认时才可以进行催办',
disableInput:'禁止输入',
OnlyOrTaskconfirmationOut: '只有清单确认状态或任务确认状态为待确认时才可以进行催办',
disableInput: '禁止输入',
or: '或',
warningTime:'预警时间',
RegulationMonthlyManagement:'法规月报管理',
RegulationMonthlyFill:'法规月报填写',
RegulationMonthlyName:'法规月报名称',
monthlyLanguage:'月报语种',
releaseStatus:'发布状态',
uploadedBy:'上传人',
uploadMonthly:'上传月报',
warningTime: '预警时间',
RegulationMonthlyManagement: '法规月报管理',
RegulationMonthlyFill: '法规月报填写',
RegulationMonthlyName: '法规月报名称',
monthlyLanguage: '月报语种',
releaseStatus: '发布状态',
uploadedBy: '上传人',
uploadMonthly: '上传月报',
chapterContents: '章节目录',
chineseTitle: '中文标题',
englishTitle: '英文标题',
regulatoryContact:'法规联系人',
exportStatus:'导出状态',
monthlyTitleTemplate:'月报标题模板',
monthlyIntegrationAndExport:'月报整合导出',
addContent:'新增内容',
editContent:'编辑内容',
viewContent:'查看内容',
monthSelection:'月份选择',
fillInTheMonth:'填写月份',
contentTemplate:'内容模板',
bringInStandardInformation:'带入标准信息',
moveUp:'上移',
moveDown:'下移',
// 上报库
Enable: '启用',
Latestupdatetime: '最新更新时间',
}
@@ -26,7 +26,7 @@
<span slot="operationbtn" slot-scope="record">
<span v-if='currentPersonRole === "homo"'>
<!-- 认证工程师 -->
<span v-if='record.state == "待发起收集" || record.state == "工程接口人退回" || record.state == "变更"'>
<span v-if='record.state == "待发起收集" || record.state == "工程接口人退回" || record.state == "变更" || record.state == "Wait Collect" || record.state == "Sdt Back" || record.state == "Change"'>
<span
@click='ondataValueTobeinitiated(record)'>{{ (record.dataValue == null || record.dataValue == 'undefined')? '--': record.dataValue}}</span>
</span>
@@ -5,11 +5,12 @@
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('RegulationMonthlyName')">
<span>{{$t('RegulationMonthlyName')}}</span>
<div class="title-text" :title="$t('monthSelection')">
<span>{{$t('monthSelection')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('RegulationMonthlyName')"
v-model="queryParam.RegulationMonthlyName"></j-input>
<a-month-picker class="box-input"
v-model="queryParam.monthSelection"
:placeholder="$t('monthSelection')"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
@@ -22,9 +23,17 @@
</a-form>
</div>
<div class="table-operator">
<div @click="uploadMonthlyClick" class="operator-text">
<a-icon type="cloud-upload"/>
{{$t('uploadMonthly')}}
<div @click="monthlyTitleTemplateClick" class="operator-text">
<a-icon type="apartment"/>
{{$t('monthlyTitleTemplate')}}
</div>
<div @click="monthlyIntegrationAndExportClick" class="operator-text">
<a-icon type="import"/>
{{$t('monthlyIntegrationAndExport')}}
</div>
<div @click="addContentClick" class="operator-text">
<a-icon type="plus"/>
{{$t('addContent')}}
</div>
<div @click="BatchDeleteClick" class="operator-text">
<a-icon type="delete"/>
@@ -43,6 +52,11 @@
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns"
>
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="viewClick(record)">{{$t('view')}}</a>
<a class="text-operation" @click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation" @click="deleteLib(record)">{{$t('deleteLib')}}</a>
</span>
</a-table>
<div class="page" v-if="dataSource && dataSource.length > 0">
<a-pagination
@@ -56,16 +70,28 @@
/>
</div>
</div>
<fillTable ref="fillTableRef"/>
<fillAdd ref="fillAddRef" @fillAddForm="fillAddForm"/>
</a-card>
</template>
<script>
import { getAction, postAction, downloadFile } from '@/api/manage'
import fillTable from './modules/fillTable'
import fillAdd from './modules/fillAdd'
export default {
name: 'RegulationMonthlyFill',
components: {
fillTable,
fillAdd
},
data() {
return {
//url传参严格按照当前命名
url: {},
url: {
deleteBatch: ''
},
loading: false,
dataSource: [],
selectedRowKeys: [],
@@ -75,37 +101,44 @@
queryParam: {},
columns: [
{
title: this.$t('RegulationMonthlyName'),
title: this.$t('chapterContents'),
align: 'center',
dataIndex: 'RegulationMonthlyName',
dataIndex: 'chapterContents',
width: 170
},
{
title: this.$t('monthlyLanguage'),
title: this.$t('chineseTitle'),
align: 'center',
dataIndex: 'monthlyLanguage',
dataIndex: 'chineseTitle',
width: 170
},
{
title: this.$t('releaseStatus'),
align: 'center',
width: 140,
ellipsis: true,
dataIndex: 'releaseStatus'
},
{
title: this.$t('uploadTime'),
title: this.$t('englishTitle'),
align: 'center',
width: 170,
ellipsis: true,
dataIndex: 'uploadTime'
dataIndex: 'englishTitle'
},
{
title: this.$t('uploadedBy'),
title: this.$t('regulatoryContact'),
align: 'center',
width: 170,
ellipsis: true,
dataIndex: 'regulatoryContact'
},
{
title: this.$t('completedBy'),
align: 'center',
ellipsis: true,
width: 170,
dataIndex: 'uploadedBy'
dataIndex: 'completedBy'
},
{
title: this.$t('exportStatus'),
align: 'center',
ellipsis: true,
width: 170,
dataIndex: 'exportStatus'
},
{
title: this.$t('operation'),
@@ -122,10 +155,13 @@
},
methods: {
searchQuery() {
this.pageNo = 1
this.getList()
},
searchReset() {
this.queryParam = {}
this.pageNo = 1
this.getList()
},
onSelectChange(value) {
this.selectedRowKeys = value
@@ -133,26 +169,75 @@
handleCompare() {
},
handleExport() {
pageOnChange(page) {
this.pageNo = page
this.getList()
},
clearSelected() {
SizeChange(pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()
},
pageOnChange() {
},
SizeChange() {
fillAddForm() {
this.pageNo = 1
this.getList()
},
getList() {
},
uploadMonthlyClick() {
monthlyTitleTemplateClick() {
this.$refs.fillTableRef.getData()
},
monthlyIntegrationAndExportClick() {
},
addContentClick() {
this.$refs.fillAddRef.add()
},
viewClick(row) {
this.$refs.fillAddRef.view(JSON.parse(JSON.stringify(row)))
},
edit(row) {
this.$refs.fillAddRef.edit(JSON.parse(JSON.stringify(row)))
},
//删除
deleteLib(val) {
let _this = this
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
getAction(_this.url.deleteBatch, { ids: val.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
}
})
},
BatchDeleteClick() {
if (this.selectedRowKeys.length > 0) {
let _this = this
this.$confirm({
content: _this.$t('ConfirmBatchDeletion'),
onOk() {
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
getAction(_this.url.deleteBatch, { ids: idList.join(',') }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
}
}
}
@@ -162,6 +247,10 @@
.RegulationMonthly .ant-card-body {
padding: 10px 0 0 0 !important;
}
.box-input .ant-calendar-picker-input {
height: 38px;
}
</style>
<style scoped>
@import '~@assets/less/common.less';
@@ -0,0 +1,121 @@
<template>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('fillInTheMonth')">{{$t('fillInTheMonth')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-month-picker class="box-input"
v-model="formInline.fillInTheMonth"
:placeholder="$t('fillInTheMonth')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12" style="text-align: right">
<div style="text-align: right">
<a-button class="button-text" type="primary">{{$t('bringInStandardInformation')}}</a-button>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('chapterContents')">{{$t('chapterContents')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-select :placeholder="$t('PleaseSelect')+$t('chapterContents')"
:disabled="disabled"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="formInline.chapterContents">
<a-select-option v-for="(item, key) in chapterContentsList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('contentTemplate')">{{$t('contentTemplate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-select :placeholder="$t('PleaseSelect')+$t('contentTemplate')"
:disabled="disabled"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="formInline.chapterContents">
<a-select-option v-for="(item, key) in contentTemplateList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</template>
<script>
export default {
name: 'defaultTemplate',
data(){
return{
rules: {
name: [
{
required: true,
message: this.$t('VirtualListName') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 100,
message: this.$t('VirtualListName') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
useExplain: [
{
required: true,
message: this.$t('instructionForUse') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 500,
message: this.$t('instructionForUse') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
]
},
formInline:{},
}
},
methods:{
},
mounted() {
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,245 @@
<template>
<div>
<a-drawer
:title="title"
:maskClosable="false"
:width="900"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('fillInTheMonth')">{{$t('fillInTheMonth')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-month-picker class="box-input"
v-model="formInline.fillInTheMonth"
:placeholder="$t('fillInTheMonth')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12" style="text-align: right">
<div style="text-align: right">
<a-button class="button-text" type="primary">{{$t('bringInStandardInformation')}}</a-button>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('chapterContents')">{{$t('chapterContents')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-select :placeholder="$t('PleaseSelect')+$t('chapterContents')"
:disabled="disabled"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="formInline.chapterContents">
<a-select-option v-for="(item, key) in chapterContentsList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('contentTemplate')">{{$t('contentTemplate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-select :placeholder="$t('PleaseSelect')+$t('contentTemplate')"
:disabled="disabled"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="formInline.chapterContents">
<a-select-option v-for="(item, key) in contentTemplateList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
</div>
</template>
<script>
export default {
name: 'fillAdd',
data() {
return {
rules: {
name: [
{
required: true,
message: this.$t('VirtualListName') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 100,
message: this.$t('VirtualListName') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
useExplain: [
{
required: true,
message: this.$t('instructionForUse') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 500,
message: this.$t('instructionForUse') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
]
},
visible: false,
formInline: {},
confirmLoading: false,
title: '',
disabled: false,
chapterContentsList: [],
contentTemplateList: []
}
},
mounted() {
},
methods: {
add() {
this.title = this.$t('addContent')
this.visible = true
this.disabled = false
this.$nextTick(() => {
this.formInline = {}
this.$refs.ruleForm.clearValidate()
})
},
edit(row) {
this.title = this.$t('editContent')
this.visible = true
this.disabled = false
this.$nextTick(() => {
this.formInline = row
this.$refs.ruleForm.clearValidate()
})
},
view(row) {
this.title = this.$t('viewContent')
this.visible = true
this.disabled = true
this.$nextTick(() => {
this.formInline = row
this.$refs.ruleForm.clearValidate()
})
},
handleCancel() {
this.visible = false
},
handleSubmit() {
}
}
}
</script>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
}
.title-text {
width: 114px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 42px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
.Required {
color: red;
margin-right: 4px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index: 100;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
.button-text {
height: 38px;
margin-top: 4px;
}
</style>
@@ -0,0 +1,155 @@
<template>
<div>
<a-modal
:title="$t('monthlyTitleTemplate')"
:width="1200"
:visible="visible"
:confirm-loading="confirmLoading"
:maskClosable="false"
@cancel="visible = false"
>
<template slot="footer">
<a-button key="back" @click="visible = false">
{{$t('cancel')}}
</a-button>
</template>
<div class="table-operator-right">
<div @click="newlyAddedClick" class="operator-text">
<a-icon type="plus"/>
{{$t('newlyAdded')}}
</div>
</div>
<a-table
ref="table"
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%'}"
:data-source="dataSource"
:columns="columns"
>
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="moveUpClick(record)">{{$t('moveUp')}}</a>
<a class="text-operation" @click="moveDownClick(record)">{{$t('moveDown')}}</a>
<a class="text-operation" @click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation" @click="deleteLib(record)">{{$t('deleteLib')}}</a>
</span>
</a-table>
<div class="page" v-if="dataSource.length > 0">
<a-pagination
:show-total="total => $t('total')+`${total}`+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize "
:total="total"
@change="onChange"
@showSizeChange="SizeChange"
/>
</div>
</a-modal>
<fillTableAdd ref="fillTableAddRef" @fillTableAddForm="fillTableAddForm"/>
</div>
</template>
<script>
import fillTableAdd from './fillTableAdd'
export default {
name: 'fillTable',
components: {
fillTableAdd
},
data() {
return {
visible: false,
confirmLoading: false,
loading: false,
dataSource: [],
pageNo: 1,
pageSize: 10,
total: 0,
columns: [
{
title: this.$t('number'),
align: 'center',
width: 70,
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
{
title: this.$t('chineseTitle'),
align: 'center',
dataIndex: 'chineseTitle',
width: 210
},
{
title: this.$t('englishTitle'),
align: 'center',
width: 210,
ellipsis: true,
dataIndex: 'englishTitle'
},
{
title: this.$t('operation'),
align: 'center',
fixed: 'right',
width: 180,
scopedSlots: { customRender: 'operation' }
}
]
}
},
mounted() {
},
methods: {
edit() {
},
getData() {
this.visible = true
this.getList()
},
onChange(page, pageSize) {
this.pageNo = page
this.getList()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.getList()
},
fillTableAddForm() {
this.pageNo = 1
this.getList()
},
getList() {
},
moveUpClick() {
},
moveDownClick() {
},
deleteLib() {
},
newlyAddedClick() {
this.$refs.fillTableAddRef.add()
}
}
}
</script>
<style scoped>
.page {
text-align: right;
margin-top: 20px;
}
.table-operator-right {
text-align: right;
margin-bottom: 16px;
}
</style>
@@ -0,0 +1,198 @@
<template>
<div>
<a-modal
:title="title"
:width="800"
:visible="visible"
:confirm-loading="confirmLoading"
:maskClosable="false"
@ok="handleOk"
@cancel="handleCancel"
>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('chineseTitle')">{{$t('chineseTitle')}}</span>
</div>
<a-form-model-item class="itemModel" prop="chineseTitle">
<a-input class="box-input"
v-model="formInline.chineseTitle"
:placeholder="$t('PleaseEnter')+$t('chineseTitle')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('englishTitle')">{{$t('englishTitle')}}</span>
</div>
<a-form-model-item class="itemModel" prop="englishTitle">
<a-input class="box-input"
v-model="formInline.englishTitle"
:placeholder="$t('PleaseEnter')+$t('englishTitle')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('ParentName')">{{$t('ParentName')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-input class="box-input"
v-model="formInline.ParentName"
:placeholder="$t('PleaseEnter')+$t('ParentName')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-modal>
</div>
</template>
<script>
export default {
name: 'fillTableAdd',
data() {
return {
visible: false,
confirmLoading: false,
formInline: {},
rules: {},
title: ''
}
},
mounted() {
},
methods: {
add() {
this.title = this.$t('newlyAdded')
this.visible = true
this.$nextTick(() => {
this.formInline = {}
this.$refs.ruleForm.clearValidate()
})
},
edit(row) {
this.title = this.$t('edit')
this.visible = true
this.$nextTick(() => {
this.formInline = row
this.$refs.ruleForm.clearValidate()
})
},
handleOk() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
}
})
},
handleCancel() {
this.visible = false
}
}
}
</script>
<style>
.formAdd .ant-form-item-label {
width: 130px;
}
.formAdd .ant-form-item-control-wrapper {
display: inline-block;
width: 100%;
}
/*.formAdd .ant-form-item {*/
/* margin-bottom: 20px;*/
/*}*/
.itemModel .ant-form-item-control-wrapper {
width: 100%;
}
.box-input .ant-select-selection--single {
height: 38px;
}
.box-input .ant-select-selection--multiple {
height: 38px;
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
height: 38px;
}
.box-input .ant-select-selection--multiple .ant-select-selection__rendered > ul > li {
margin-top: 6px;
}
.box-input .ant-calendar-picker {
line-height: 38px;
height: 38px;
}
.box-input .ant-calendar-picker-input {
height: 38px;
}
.box-input .ant-input-number-input-wrap {
line-height: 38px;
height: 38px;
}
.box-input .ant-calendar-picker-input {
padding: 4px 30px 4px 11px;
}
</style>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
}
.title-text {
width:100px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 42px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
</style>
@@ -1,100 +1,105 @@
<template>
<a-drawer
:title="title"
:maskClosable="false"
:width="1000"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('parameterTemplate')">{{$t('parameterTemplate')}}</span>
<div>
<a-drawer
:title="title"
:maskClosable="false"
:width="1000"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('parameterTemplate')">{{$t('parameterTemplate')}}</span>
</div>
<a-form-model-item class="itemModel" prop="templateName">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.templateName"
:placeholder="$t('PleaseEnter')+$t('templateName')"/>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="templateName">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.templateName"
:placeholder="$t('PleaseEnter')+$t('templateName')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('status')">{{$t('status')}}</span>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('status')">{{$t('status')}}</span>
</div>
<a-form-model-item class="itemModel" prop="state">
<a-select allowClear :placeholder="$t('PleaseSelect')+$t('status')" v-model='formInline.state'>
<a-select-option :key="'0'" :value="'0'">{{$t('Enable')}}
</a-select-option>
<a-select-option :key="'1'" :value="'1'">{{$t('disable')}}
</a-select-option>
</a-select>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="status">
<a-select allowClear :placeholder="$t('PleaseSelect')+$t('status')" v-model='formInline.status'>
<a-select-option :key="'0'" :value="'0'">{{$t('Enable')}}
</a-select-option>
<a-select-option :key="'1'" :value="'1'">{{$t('disable')}}
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('contentDescription')">{{$t('contentDescription')}}</span>
</div>
<a-form-model-item class="itemModel" prop="description">
<a-input class="box-input add-input"
type="textarea"
:disabled="disabled"
v-model="formInline.description"
:placeholder="$t('PleaseEnter')+$t('contentDescription')"/>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="description">
<a-input class="box-input add-input"
type="textarea"
:disabled="disabled"
v-model="formInline.description"
:placeholder="$t('PleaseEnter')+$t('contentDescription')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('parameterTemplate')">{{$t('parameterTemplate')}}</span>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('attachmentTemplate')">{{$t('attachmentTemplate')}}</span>
</div>
<a-form-model-item class="itemModel" prop="paramsTemplateName">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('fileTemplateConnectId')">
{{ (formInline.fileConnectId === 'null' || formInline.fileConnectId === '' ||
formInline.fileConnectId == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
</a-button>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="templateName">
<a-input class="box-input"
:disabled="disabled"
v-model="formInline.templateName"
:placeholder="$t('PleaseEnter')+$t('templateName')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-form>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
</a-col>
</a-row>
</a-form-model>
</a-form>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
<uploadFileChange ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFileChange>
</div>
</template>
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import uploadFileChange from '@/components/uploadFileChange/file'
export default {
name: 'addModel',
components: {
uploadFileChange,
PersonnelSelection
},
props: ['url'],
@@ -124,6 +129,28 @@ export default {
this.getNameList()
},
methods: {
uploadSuccess(data) {
let attIdList = []
if (data && data.length > 0) {
data.map(item => {
attIdList.push(item.id || data.name)
})
}
this.$refs.uploadFile.visible = false
/** 赋值给当前对应的表单文件 */
this.formInline.fileConnectId = attIdList.join(',')
this.formInline = { ...this.formInline }
},
clickButtonToUpload(item) {
this.$refs.uploadFile.visible = true
getAction('sys/common/getFileInfos', { id: this.formInline[item] }).then((res) => {
if (res.success) {
this.$refs.uploadFile.perentHandleFunc(res.result)
} else {
this.$refs.uploadFile.perentHandleFunc()
}
})
},
getNameList() {
getAction('project/projectNameInfoEO/list', {}).then((res) => {
if (res.success) {
@@ -137,7 +164,7 @@ export default {
this.visible = true
this.title = '新增'
this.formInline = {}
this.formInline.status = '0'
this.formInline.state = '0'
this.formInline = {...this.formInline}
this.$nextTick(() => {
this.$refs['ruleForm'].clearValidate()
@@ -24,10 +24,6 @@
<a-icon type="plus"/>
{{$t('newlyAdded')}}
</div>
<div @click="handlecody" class="operator-text" v-has="'params:template:copy'">
<a-icon type="copy"/>
{{$t('copy')}}
</div>
<div @click="handleDel" class="operator-text" v-has="'params:template:delete'">
<a-icon type="delete"/>
{{$t('BatchDelete')}}
@@ -46,12 +42,7 @@
:columns="columns"
>
<span slot="projectName" slot-scope="text,record" :title="text">
<a @click="entryNameClick(record)">
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
</a>
</span>
<span slot="titleName" slot-scope="text,record" :title="text">
{{ text && text.length > 30 ? text.slice(0, 29) + '...' : text }}
{{ text && text.length > 100 ? text.slice(0, 99) + '...' : text }}
</span>
<span slot="operation" slot-scope="text,record">
<a class="text-operation" v-has="'params:template:edit'" @click="edit(record)">{{$t('edit')}}</a>
@@ -138,17 +129,17 @@ export default {
pageNo: 1,
title: '新增',
columns: [
{
title: this.$t('serialNumber'),
dataIndex: '',
key: 'rowIndex',
width: 50,
ellipsis: true,
align: 'center',
customRender: function(t, r, index) {
return parseInt(index) + 1
}
},
// {
// title: this.$t('serialNumber'),
// dataIndex: '',
// key: 'rowIndex',
// width: 50,
// ellipsis: true,
// align: 'center',
// customRender: function(t, r, index) {
// return parseInt(index) + 1
// }
// },
{
title: this.$t('templateName'),
align: 'center',
@@ -158,22 +149,22 @@ export default {
title: this.$t('contentDescription'),
align: 'center',
dataIndex: 'description',
scopedSlots: { customRender: 'titleName' }
scopedSlots: { customRender: 'projectName' }
},
{
title: this.$t('status'),
align: 'center',
width: '5%',
dataIndex: 'createTime'
dataIndex: 'state'
},
{
title: this.$t('createTime'),
title: this.$t('creater'),
align: 'center',
width: '10%',
dataIndex: 'createTime'
dataIndex: 'createBy'
},
{
title: this.$t('updateTime'),
title: this.$t('Latestupdatetime'),
align: 'center',
width: '10%',
dataIndex: 'updateTime'
@@ -228,17 +219,6 @@ export default {
handleAdd() {
this.$refs.addModelRef.addModel()
},
// 复制
handlecody(){
if (this.selectedRowKeys.length > 1) {
this.$message.warning(this.$t('OnlyOneSelected'))
} else if(this.selectedRowKeys.length == 0){
this.$message.warning(this.$t('pleaseSelectData'))
} else {
this.areaVisible=true
this.formInline = {}
}
},
hideModal(){
this.visible = false;
},
@@ -253,7 +233,7 @@ export default {
content: _this.$t('ConfirmBatchDeletion'),
onOk() {
axios({
url: '/jero-boot/params/template/deleteBatch',
url: '/jero-boot/report/exportTemplate/deleteBatch',
method: 'post',
data: param,
transformRequest: [function (data) {
@@ -276,7 +276,7 @@
</div>
<!-- 认证工程师-提示-->
<div style='font-size: 16px;color: red;display: flex;justify-content: center' v-if='NoEngineer === 1'>
{{ currentPersonRole =='homo'? '认证工程师': (currentPersonRole =='sdt'? '工程接口人': '填写人') }}{{$t('Datastatusis')}}
{{ currentPersonRole =='homo'? $t('certifiedEngineer'): (currentPersonRole =='sdt'? $t('engineeringInterfacePerson'): $t('completedBy')) }}{{$t('Datastatusis')}}
<!-- 下发收集时-->
<span v-if='jurisdiction === "HOMOZFSJ"'>
'{{$t('CollectionInitiated')}}'、'{{$t('ReturnedPerson')}}'{{$t('or')}}'{{$t('alteration')}}'
@@ -519,7 +519,7 @@ export default {
} else {
this.selectedRowKeysValue.forEach((item, index) => {
// 状态不符合,不能下发收集
if(item.state !== '待发起收集' && item.state !== '工程接口人退回' && item.state !== '变更') {
if(item.state !== '待发起收集' && item.state !== '工程接口人退回' && item.state !== '变更' && item.state !== 'Wait Collect' && item.state !== 'Sdt Back' && item.state !== 'Change') {
this.NotSelectedRowKeysValue.push(item)
flag = 0
}
@@ -546,7 +546,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '已提交') {
if(item.state !== '已提交'&& item.state !== 'Submit') {
this.NotSelectedRowKeysValue.push(item)
this.jurisdiction = 'homoTH'
flag = 0
@@ -564,7 +564,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待工程接口人处理' && item.state !== '填写人退回') {
if(item.state !== '待工程接口人处理' && item.state !== '填写人退回' && item.state !== 'Wait Sdt' && item.state !== 'Dre Back') {
this.NotSelectedRowKeysValue.push(item)
this.jurisdiction = 'sdtTH'
flag = 0
@@ -582,7 +582,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待填写' && item.state !== '认证工程师退回') {
if(item.state !== '待填写' && item.state !== '认证工程师退回' && item.state !== 'Wait Fill' && item.state !== 'Cert Back') {
this.NotSelectedRowKeysValue.push(item)
this.jurisdiction = 'dreTH'
flag = 0
@@ -603,7 +603,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待发起收集' && item.state !== '工程接口人退回' && item.state !== '变更') {
if(item.state !== '待发起收集' && item.state !== '工程接口人退回' && item.state !== '变更' && item.state !== 'Wait Collect' && item.state !== 'Sdt Back' && item.state !== 'Change') {
this.NotSelectedRowKeysValue.push(item)
flag = 0
}
@@ -622,7 +622,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '已提交' && item.state !== '变更') {
if(item.state !== '已提交' && item.state !== '变更'&& item.state !== 'Submit' && item.state !== 'Change') {
this.NotSelectedRowKeysValue.push(item)
flag = 0
}
@@ -641,7 +641,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待发起收集') {
if(item.state !== '待发起收集'&& item.state !== 'Wait Collect') {
this.NotSelectedRowKeysValue.push(item)
flag = 0
}
@@ -662,7 +662,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待工程接口人处理' && item.state !== '填写人退回') {
if(item.state !== '待工程接口人处理' && item.state !== '填写人退回'&&item.state !== 'Wait Sdt' && item.state !== 'Dre Back') {
this.NotSelectedRowKeysValue.push(item)
this.jurisdiction = 'homoQZTH'
flag = 0
@@ -681,7 +681,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待填写') {
if(item.state !== '待填写'&&item.state !== 'Wait Fill') {
this.NotSelectedRowKeysValue.push(item)
this.jurisdiction = 'sdtQZTH'
flag = 0
@@ -699,7 +699,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '已提交') {
if(item.state !== '已提交'&&item.state !== 'Submit') {
this.NotSelectedRowKeysValue.push(item)
this.jurisdiction = 'dreQZTH'
flag = 0
@@ -720,7 +720,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待工程接口人处理' && item.state !== '填写人退回') {
if(item.state !== '待工程接口人处理' && item.state !== '填写人退回'&&item.state !== 'Wait Sdt' && item.state !== 'Dre Back') {
this.NotSelectedRowKeysValue.push(item)
flag = 0
}
@@ -739,7 +739,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待填写' && item.state !== '认证工程师退回') {
if(item.state !== '待填写' && item.state !== '认证工程师退回'&&item.state !== 'Wait Fill' && item.state !== 'Cert Back') {
this.NotSelectedRowKeysValue.push(item)
flag = 0
}
@@ -757,7 +757,7 @@ export default {
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待填写' && item.state !== '认证工程师退回') {
if(item.state !== '待填写' && item.state !== '认证工程师退回'&&item.state !== 'Wait Fill' && item.state !== 'Cert Back') {
this.NotSelectedRowKeysValue.push(item)
flag = 0
}