|
|
|
@@master_page.html
|
|
|
|
<style>
|
|
|
|
.filed-container {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
background-color: #fff;
|
|
|
|
padding: 20px;
|
|
|
|
position: relative;
|
|
|
|
display: flex;
|
|
|
|
flex-flow: column nowrap;
|
|
|
|
gap: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.filed-container::before {
|
|
|
|
content: "";
|
|
|
|
position: absolute;
|
|
|
|
top: 0;
|
|
|
|
left: 50%;
|
|
|
|
width: 2px;
|
|
|
|
height: 100%;
|
|
|
|
background-image: linear-gradient(to bottom, #e6f3ff, #fff7e6);
|
|
|
|
border-radius: 50%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-container {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-item {
|
|
|
|
flex: 1;
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
flex-flow: column;
|
|
|
|
gap: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.footer {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
|
|
|
|
.footer-item {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
gap: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-item-title {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 16px;
|
|
|
|
display: flex;
|
|
|
|
gap: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-item-upload {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
gap: 5px;
|
|
|
|
cursor: pointer;
|
|
|
|
font-weight: initial;
|
|
|
|
font-size: 14px;
|
|
|
|
color: #419ff8;
|
|
|
|
border-bottom: 1px solid #419ff8;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-item-input-container {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
gap: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-item-input {
|
|
|
|
width: 200px;
|
|
|
|
height: 32px;
|
|
|
|
padding: 4px 11px;
|
|
|
|
border: 1px solid #d9d9d9;
|
|
|
|
border-radius: 4px;
|
|
|
|
transition: all 0.3s;
|
|
|
|
font-size: 14px;
|
|
|
|
color: #333;
|
|
|
|
outline: none;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-form-container {
|
|
|
|
display: flex;
|
|
|
|
flex-flow: row nowrap;
|
|
|
|
align-items: center;
|
|
|
|
gap: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table {
|
|
|
|
width: 100%;
|
|
|
|
table-layout: fixed;
|
|
|
|
border-collapse: collapse;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table th,
|
|
|
|
.table td {
|
|
|
|
overflow: hidden;
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table th:nth-child(1),
|
|
|
|
.table td:nth-child(1) {
|
|
|
|
width: 70px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table th:nth-child(2),
|
|
|
|
.table td:nth-child(2),
|
|
|
|
.table th:nth-child(6),
|
|
|
|
.table td:nth-child(6) {
|
|
|
|
width: 125px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table th:nth-child(3),
|
|
|
|
.table td:nth-child(3),
|
|
|
|
.table th:nth-child(7),
|
|
|
|
.table td:nth-child(7) {
|
|
|
|
width: 120px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table th:nth-child(4),
|
|
|
|
.table td:nth-child(4),
|
|
|
|
.table th:nth-child(8),
|
|
|
|
.table td:nth-child(8) {
|
|
|
|
width: 100px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table th:nth-child(5),
|
|
|
|
.table td:nth-child(5),
|
|
|
|
.table th:nth-child(9),
|
|
|
|
.table td:nth-child(9) {
|
|
|
|
width: 100px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table th:nth-child(10),
|
|
|
|
.table td:nth-child(10) {
|
|
|
|
width: 70px;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.footer-item-button {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
padding: 8px 16px;
|
|
|
|
border-radius: 999px;
|
|
|
|
font-size: 14px;
|
|
|
|
cursor: pointer;
|
|
|
|
transition: all 0.3s;
|
|
|
|
border: none;
|
|
|
|
color: #333;
|
|
|
|
gap: 5px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table-row {
|
|
|
|
display: flex;
|
|
|
|
flex-flow: row nowrap;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.local-park,
|
|
|
|
.third-park {
|
|
|
|
width: 100%;
|
|
|
|
flex: 1;
|
|
|
|
display: flex;
|
|
|
|
flex-flow: row nowrap;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
}
|
|
|
|
|
|
|
|
.local-park th,
|
|
|
|
.third-park th {
|
|
|
|
flex: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
.table-item-input {
|
|
|
|
width: 100%;
|
|
|
|
padding: 8px 12px;
|
|
|
|
border-radius: 4px;
|
|
|
|
border: none;
|
|
|
|
font-size: 14px;
|
|
|
|
color: #606266;
|
|
|
|
background-color: #fff;
|
|
|
|
transition: border-color 0.2s ease;
|
|
|
|
outline: none;
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
&:disabled {
|
|
|
|
background-color: #f5f7fa;
|
|
|
|
border-color: #e4e7ed;
|
|
|
|
color: #c0c4cc;
|
|
|
|
cursor: not-allowed;
|
|
|
|
}
|
|
|
|
|
|
|
|
&::placeholder {
|
|
|
|
color: #c0c4cc;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.table-item-select {
|
|
|
|
width: 100%;
|
|
|
|
padding: 8px 12px;
|
|
|
|
border: 1px solid #dcdfe6;
|
|
|
|
border-radius: 4px;
|
|
|
|
font-size: 14px;
|
|
|
|
color: #606266;
|
|
|
|
outline: none;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border: none;
|
|
|
|
|
|
|
|
&:disabled {
|
|
|
|
background-color: #f5f7fa;
|
|
|
|
border-color: #e4e7ed;
|
|
|
|
color: #c0c4cc;
|
|
|
|
cursor: not-allowed;
|
|
|
|
}
|
|
|
|
|
|
|
|
&::placeholder {
|
|
|
|
color: #c0c4cc;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.table-item-button {
|
|
|
|
display: inline-flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
border-radius: 50%;
|
|
|
|
border: none;
|
|
|
|
padding: 8px;
|
|
|
|
background-color: transparent;
|
|
|
|
color: #606266;
|
|
|
|
cursor: pointer;
|
|
|
|
transition: all 0.2s ease;
|
|
|
|
height: 32px;
|
|
|
|
width: 32px;
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
background-color: #f2f6fc;
|
|
|
|
color: #409eff;
|
|
|
|
}
|
|
|
|
|
|
|
|
&:active {
|
|
|
|
background-color: #ecf5ff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.mdi {
|
|
|
|
font-size: 20px;
|
|
|
|
}
|
|
|
|
|
|
|
|
&[title="保存"] {
|
|
|
|
color: #67c23a;
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
background-color: #f0f9eb;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&[title="取消"] {
|
|
|
|
color: #909399;
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
background-color: #f4f4f5;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&[title="删除"] {
|
|
|
|
color: #f56c6c;
|
|
|
|
|
|
|
|
&:hover {
|
|
|
|
background-color: #fef0f0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.info-item-upload-name {
|
|
|
|
color: #01c853;
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
<div id="apibox" class="card">
|
|
|
|
<section class="filed-container">
|
|
|
|
<section class="info-container">
|
|
|
|
<section class="info-item">
|
|
|
|
<section class="info-item-title">
|
|
|
|
本地表
|
|
|
|
<section class="info-item-upload-name" v-show="localJosnName">
|
|
|
|
{{`(${localJosnName})`}}
|
|
|
|
</section>
|
|
|
|
<section class="info-item-upload" @click="uploadLocalFile">
|
|
|
|
<input
|
|
|
|
type="file"
|
|
|
|
style="opacity: 0; display: none"
|
|
|
|
id="localFile"
|
|
|
|
accept=".json"
|
|
|
|
/>
|
|
|
|
<i class="mdi mdi-cloud-upload"></i>
|
|
|
|
导入本地表
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section class="info-form-container">
|
|
|
|
<section class="info-item-input-container">
|
|
|
|
表名<input
|
|
|
|
type="text"
|
|
|
|
class="info-item-input"
|
|
|
|
v-model="cachesData.SYSTEM_TABLE_NAME"
|
|
|
|
placeholder="请输入表名"
|
|
|
|
/>
|
|
|
|
</section>
|
|
|
|
<section class="info-item-input-container">
|
|
|
|
表注释<input
|
|
|
|
type="text"
|
|
|
|
class="info-item-input"
|
|
|
|
v-model="cachesData.SYSTEM_TABLE_CNNAME"
|
|
|
|
placeholder="请输入表注释"
|
|
|
|
/>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section class="info-item">
|
|
|
|
<section class="info-item-title">
|
|
|
|
三方表
|
|
|
|
<section class="info-item-upload-name" v-show="thirdJsonName">
|
|
|
|
({{thirdJsonName}})
|
|
|
|
</section>
|
|
|
|
<section class="info-item-upload" @click="uploadThirdFile">
|
|
|
|
<input
|
|
|
|
type="file"
|
|
|
|
style="opacity: 0; display: none"
|
|
|
|
id="thirdFile"
|
|
|
|
accept=".json"
|
|
|
|
/>
|
|
|
|
<i class="mdi mdi-cloud-upload"></i>
|
|
|
|
导入三方表
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<section class="info-form-container">
|
|
|
|
<section class="info-item-input-container">
|
|
|
|
表名<input
|
|
|
|
type="text"
|
|
|
|
class="info-item-input"
|
|
|
|
v-model="cachesData.OBJECT_TABLE_NAME"
|
|
|
|
placeholder="请输入表名"
|
|
|
|
/>
|
|
|
|
</section>
|
|
|
|
<section class="info-item-input-container">
|
|
|
|
表注释<input
|
|
|
|
type="text"
|
|
|
|
class="info-item-input"
|
|
|
|
v-model="cachesData.OBJECT_TABLE_CNNAME"
|
|
|
|
placeholder="请输入表注释"
|
|
|
|
/>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
<table class="table">
|
|
|
|
<thead>
|
|
|
|
<tr>
|
|
|
|
<th>序号</th>
|
|
|
|
<th style="background-color: #e6f3ff">字段名</th>
|
|
|
|
<th style="background-color: #e6f3ff">字段注释</th>
|
|
|
|
<th style="background-color: #e6f3ff">字段类型</th>
|
|
|
|
<th style="background-color: #e6f3ff">字典名称</th>
|
|
|
|
<th style="background-color: #fff7e6">字段名</th>
|
|
|
|
<th style="background-color: #fff7e6">字段注释</th>
|
|
|
|
<th style="background-color: #fff7e6">字段类型</th>
|
|
|
|
<th style="background-color: #fff7e6">字典名称</th>
|
|
|
|
<th>操作</th>
|
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody>
|
|
|
|
<tr v-for="(item, index) in data" :key="index">
|
|
|
|
<td style="width: 150px">{{index + 1}}</td>
|
|
|
|
<td style="background-color: #f5f9ff; position: relative">
|
|
|
|
{{item.SYSTEM_FIELD}}
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #f5f9ff">{{item.SYSTEM_NAME}}</td>
|
|
|
|
<td style="background-color: #f5f9ff">{{item.SYSTEM_FIELD_TYPE}}</td>
|
|
|
|
<td style="background-color: #f5f9ff">{{item.SYSTEM_DICT_NAME}}</td>
|
|
|
|
<td style="background-color: #fffbf2">{{item.INTERFACE_FIELD}}</td>
|
|
|
|
<td style="background-color: #fffbf2">{{item.INTERFACE_NAME}}</td>
|
|
|
|
<td style="background-color: #fffbf2">{{item.OBJECT_FIELD_TYPE}}</td>
|
|
|
|
<td style="background-color: #fffbf2">{{item.OBJECT_DICT_NAME}}</td>
|
|
|
|
<td>
|
|
|
|
<button
|
|
|
|
@click="deleteField(index)"
|
|
|
|
class="table-item-button"
|
|
|
|
title="删除"
|
|
|
|
>
|
|
|
|
<i class="mdi mdi-delete"></i>
|
|
|
|
</button>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<tr v-show="isEditing">
|
|
|
|
<td style="width: 150px">{{data.length + 1}}</td>
|
|
|
|
<td style="background-color: #f5f9ff; position: relative">
|
|
|
|
<input
|
|
|
|
v-model="submitData.SYSTEM_FIELD"
|
|
|
|
class="table-item-select"
|
|
|
|
placeholder="请输入字段名"
|
|
|
|
style="
|
|
|
|
z-index: 1;
|
|
|
|
position: absolute;
|
|
|
|
top: 50%;
|
|
|
|
left: 0%;
|
|
|
|
width: 80%;
|
|
|
|
border: none;
|
|
|
|
transform: translateY(-50%) translateX(10%);
|
|
|
|
"
|
|
|
|
/>
|
|
|
|
<select
|
|
|
|
id="localSelect"
|
|
|
|
class="table-item-select"
|
|
|
|
style="
|
|
|
|
position: absolute;
|
|
|
|
z-index: 0;
|
|
|
|
top: 50%;
|
|
|
|
left: 0%;
|
|
|
|
width: 90%;
|
|
|
|
transform: translateY(-50%) translateX(10%);
|
|
|
|
"
|
|
|
|
title="请选择字段名称"
|
|
|
|
@change="localChange"
|
|
|
|
>
|
|
|
|
<option
|
|
|
|
v-for="(type,index) in Object.keys(localJsonData)"
|
|
|
|
:key="index"
|
|
|
|
:value="type"
|
|
|
|
>
|
|
|
|
<section>{{type}}</section>
|
|
|
|
</option>
|
|
|
|
</select>
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #f5f9ff">
|
|
|
|
<input
|
|
|
|
v-model="submitData.SYSTEM_NAME"
|
|
|
|
class="table-item-input"
|
|
|
|
placeholder="请输入字段名"
|
|
|
|
/>
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #f5f9ff">
|
|
|
|
<select
|
|
|
|
v-model="submitData.SYSTEM_FIELD_TYPE"
|
|
|
|
class="table-item-input"
|
|
|
|
placeholder="请选择字段类型"
|
|
|
|
>
|
|
|
|
<option
|
|
|
|
v-for="type in dict.filedType"
|
|
|
|
:key="type.VALUE"
|
|
|
|
:value="type.VALUE"
|
|
|
|
>
|
|
|
|
{{type.LABEL}}
|
|
|
|
</option>
|
|
|
|
</select>
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #f5f9ff">
|
|
|
|
<input
|
|
|
|
v-model="submitData.SYSTEM_DICT_NAME"
|
|
|
|
class="table-item-input"
|
|
|
|
placeholder="请输入字典名称"
|
|
|
|
:style="{display: submitData.SYSTEM_FIELD_TYPE == 'dict' ? 'block' : 'none'}"
|
|
|
|
/>
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #fffbf2; position: relative">
|
|
|
|
<input
|
|
|
|
v-model="submitData.INTERFACE_FIELD"
|
|
|
|
class="table-item-select"
|
|
|
|
placeholder="请输入字段名"
|
|
|
|
style="
|
|
|
|
z-index: 1;
|
|
|
|
position: absolute;
|
|
|
|
top: 50%;
|
|
|
|
left: 0%;
|
|
|
|
width: 80%;
|
|
|
|
border: none;
|
|
|
|
transform: translateY(-50%) translateX(10%);
|
|
|
|
"
|
|
|
|
/>
|
|
|
|
<select
|
|
|
|
id="thridSelect"
|
|
|
|
class="table-item-select"
|
|
|
|
style="
|
|
|
|
position: absolute;
|
|
|
|
z-index: 0;
|
|
|
|
top: 50%;
|
|
|
|
left: 0%;
|
|
|
|
width: 90%;
|
|
|
|
transform: translateY(-50%) translateX(10%);
|
|
|
|
"
|
|
|
|
title="请选择字段名称"
|
|
|
|
@change="thridChange"
|
|
|
|
>
|
|
|
|
<option
|
|
|
|
v-for="(type,index) in Object.keys(thirdJsonData)"
|
|
|
|
:key="index"
|
|
|
|
:value="type"
|
|
|
|
>
|
|
|
|
{{type}}
|
|
|
|
</option>
|
|
|
|
</select>
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #fffbf2">
|
|
|
|
<input
|
|
|
|
v-model="submitData.INTERFACE_NAME"
|
|
|
|
class="table-item-input"
|
|
|
|
placeholder="请输入字段注释"
|
|
|
|
/>
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #fffbf2">
|
|
|
|
<select
|
|
|
|
v-model="submitData.OBJECT_FIELD_TYPE"
|
|
|
|
class="table-item-input"
|
|
|
|
placeholder="请选择字段类型"
|
|
|
|
>
|
|
|
|
<option
|
|
|
|
v-for="type in dict.filedType"
|
|
|
|
:key="type.VALUE"
|
|
|
|
:value="type.VALUE"
|
|
|
|
>
|
|
|
|
{{type.LABEL}}
|
|
|
|
</option>
|
|
|
|
</select>
|
|
|
|
</td>
|
|
|
|
<td style="background-color: #fffbf2">
|
|
|
|
<input
|
|
|
|
v-model="submitData.OBJECT_DICT_NAME"
|
|
|
|
class="table-item-input"
|
|
|
|
placeholder="请输入字典名称"
|
|
|
|
:style="{display: submitData.OBJECT_FIELD_TYPE == 'dict' ? 'block' : 'none'}"
|
|
|
|
/>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
|
|
<button
|
|
|
|
@click="saveField(index)"
|
|
|
|
class="table-item-button"
|
|
|
|
title="保存"
|
|
|
|
>
|
|
|
|
<i class="mdi mdi-content-save"></i>
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
@click="cancelField(index)"
|
|
|
|
class="table-item-button"
|
|
|
|
title="取消"
|
|
|
|
>
|
|
|
|
<i class="mdi mdi-cancel"></i>
|
|
|
|
</button>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
<section class="footer">
|
|
|
|
<section class="footer-item">
|
|
|
|
<button
|
|
|
|
class="footer-item-button"
|
|
|
|
style="background-color: #419ff8; color: #fff"
|
|
|
|
@click="addNewField"
|
|
|
|
>
|
|
|
|
<i class="mdi mdi-plus"></i> 新增字段
|
|
|
|
</button>
|
|
|
|
</section>
|
|
|
|
<section class="footer-item">
|
|
|
|
<button
|
|
|
|
class="footer-item-button"
|
|
|
|
style="background-color: #ff8903; color: #fff"
|
|
|
|
@click="cancelAll"
|
|
|
|
>
|
|
|
|
<i class="mdi mdi-close"></i>取消
|
|
|
|
</button>
|
|
|
|
<button
|
|
|
|
class="footer-item-button"
|
|
|
|
style="background-color: #01c853; color: #fff"
|
|
|
|
@click="saveAll"
|
|
|
|
>
|
|
|
|
<i class="mdi mdi-check"></i>保存
|
|
|
|
</button>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</section>
|
|
|
|
</div>
|
|
|
|
<script>
|
|
|
|
var vueObj = new Vue({
|
|
|
|
el: "#apibox",
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
dict: {
|
|
|
|
filedType: [],
|
|
|
|
},
|
|
|
|
isEditing: true,
|
|
|
|
data: [
|
|
|
|
|
|
|
|
|
|
|
|
],
|
|
|
|
localJsonData: {},
|
|
|
|
localJosnName: "",
|
|
|
|
thirdJsonData: {},
|
|
|
|
thirdJsonName: "",
|
|
|
|
submitData: {
|
|
|
|
SYSTEM_NAME: "",
|
|
|
|
SYSTEM_FIELD: "",
|
|
|
|
INTERFACE_NAME: "",
|
|
|
|
INTERFACE_FIELD: "",
|
|
|
|
SYSTEM_FIELD_TYPE: "value",
|
|
|
|
SYSTEM_DICT_NAME: "",
|
|
|
|
OBJECT_FIELD_TYPE: "value",
|
|
|
|
OBJECT_DICT_NAME: "",
|
|
|
|
},
|
|
|
|
cachesData: {
|
|
|
|
|
|
|
|
OBJECT_TABLE_NAME: "",
|
|
|
|
OBJECT_TABLE_CNNAME: "",
|
|
|
|
SYSTEM_TABLE_CNNAME: "",
|
|
|
|
SYSTEM_TABLE_NAME: "",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
this.getDictOption();
|
|
|
|
},
|
|
|
|
mounted() {},
|
|
|
|
methods: {
|
|
|
|
getDictOption() {
|
|
|
|
axios
|
|
|
|
.get("/dict_data/simpleList?type=std_filed_type", jwHeader)
|
|
|
|
.then((res) => {
|
|
|
|
this.dict.filedType = res.data;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
uploadLocalFile() {
|
|
|
|
document.getElementById("localFile").click();
|
|
|
|
document.getElementById("localFile").onchange = () => {
|
|
|
|
const file = document.getElementById("localFile").files[0];
|
|
|
|
this.localJosnName = file.name;
|
|
|
|
const reader = new FileReader();
|
|
|
|
reader.readAsText(file);
|
|
|
|
reader.onload = () => {
|
|
|
|
this.localJsonData = JSON.parse(reader.result);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
},
|
|
|
|
uploadThirdFile() {
|
|
|
|
document.getElementById("thirdFile").click();
|
|
|
|
document.getElementById("thirdFile").onchange = () => {
|
|
|
|
const file = document.getElementById("thirdFile").files[0];
|
|
|
|
this.thirdJsonName = file.name;
|
|
|
|
const reader = new FileReader();
|
|
|
|
reader.readAsText(file);
|
|
|
|
reader.onload = () => {
|
|
|
|
this.thirdJsonData = JSON.parse(reader.result);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
},
|
|
|
|
addNewField() {
|
|
|
|
this.submitData = {
|
|
|
|
SYSTEM_NAME: "",
|
|
|
|
SYSTEM_FIELD: "",
|
|
|
|
INTERFACE_NAME: "",
|
|
|
|
INTERFACE_FIELD: "",
|
|
|
|
SYSTEM_FIELD_TYPE: "value",
|
|
|
|
SYSTEM_DICT_NAME: "",
|
|
|
|
OBJECT_FIELD_TYPE: "value",
|
|
|
|
OBJECT_DICT_NAME: "",
|
|
|
|
};
|
|
|
|
this.isEditing = true;
|
|
|
|
},
|
|
|
|
saveField(index) {
|
|
|
|
this.data.push(this.submitData);
|
|
|
|
this.isEditing = false;
|
|
|
|
},
|
|
|
|
cancelField(index) {
|
|
|
|
this.submitData = {
|
|
|
|
SYSTEM_NAME: "",
|
|
|
|
SYSTEM_FIELD: "",
|
|
|
|
INTERFACE_NAME: "",
|
|
|
|
INTERFACE_FIELD: "",
|
|
|
|
SYSTEM_FIELD_TYPE: "value",
|
|
|
|
SYSTEM_DICT_NAME: "",
|
|
|
|
OBJECT_FIELD_TYPE: "value",
|
|
|
|
OBJECT_DICT_NAME: "",
|
|
|
|
};
|
|
|
|
this.isEditing = false;
|
|
|
|
},
|
|
|
|
deleteField(index) {
|
|
|
|
this.data.splice(index, 1);
|
|
|
|
},
|
|
|
|
thridChange(e) {
|
|
|
|
this.submitData.INTERFACE_FIELD = e.target.value;
|
|
|
|
},
|
|
|
|
localChange(e) {
|
|
|
|
this.submitData.SYSTEM_FIELD = e.target.value;
|
|
|
|
},
|
|
|
|
saveAll() {
|
|
|
|
if (
|
|
|
|
this.cachesData.SYSTEM_TABLE_NAME === "" ||
|
|
|
|
this.cachesData.OBJECT_TABLE_NAME === ""
|
|
|
|
) {
|
|
|
|
tools.alert("请输入表名");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (this.data.length === 0) {
|
|
|
|
tools.alert("请输入字段");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
const data = this.data.map((i) => {
|
|
|
|
return {
|
|
|
|
...this.cachesData,
|
|
|
|
...i,
|
|
|
|
};
|
|
|
|
});
|
|
|
|
console.log(data);
|
|
|
|
axios
|
|
|
|
.post(
|
|
|
|
`/api/200100/stdobjectmappingcontroller/insertlist`,
|
|
|
|
{ list: data },
|
|
|
|
jwHeader
|
|
|
|
)
|
|
|
|
.then((res) => {
|
|
|
|
tools.highlightErrorFields(res.data);
|
|
|
|
// window.location.href = './std_filed_map.html'
|
|
|
|
})
|
|
|
|
.catch((error) => {
|
|
|
|
tools.alert(error.message);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
cancelAll() {
|
|
|
|
window.location.href = "./std_filed_map.html";
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
</script>
|