|
@@ -91,194 +91,226 @@
|
|
|
<el-dialog class="networkComponent-dialog" :title='dialogTitle' width="540px" append-to-body
|
|
|
:visible.sync="dialogType" v-if="dialogType" @close="dialogOff()"
|
|
|
:close-on-click-modal="false" :close-on-press-escape="false">
|
|
|
- <el-form :model="dialogForm" ref="dialogForm" label-width="110px"
|
|
|
- :inline="true" :rules="dialogLookType?rules:dialogRules">
|
|
|
- <el-form-item label="名称:" prop="moduleName">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.moduleName"
|
|
|
- maxLength="20"
|
|
|
- placeholder="请输入名称"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="类型:" prop="moduleType">
|
|
|
- <el-select v-model="dialogForm.moduleType"
|
|
|
- placeholder="请选类型"
|
|
|
- :disabled="dialogLookType"
|
|
|
- clearable style="width:360px;">
|
|
|
- <el-option
|
|
|
- v-for="dict in options"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <div v-if="dialogForm.moduleType == 1 || dialogForm.moduleType == 2 || dialogForm.moduleType == 3">
|
|
|
- <el-form-item label="本地地址:" prop="localIp">
|
|
|
+ <div class="networkComponent-dialog-box scrollbar-box">
|
|
|
+ <el-form :model="dialogForm" ref="dialogForm" label-width="110px"
|
|
|
+ :inline="true" :rules="dialogLookType?rules:dialogRules">
|
|
|
+ <el-form-item label="名称:" prop="moduleName">
|
|
|
<el-input
|
|
|
:disabled="dialogLookType"
|
|
|
- v-model="dialogForm.localIp"
|
|
|
+ v-model="dialogForm.moduleName"
|
|
|
maxLength="20"
|
|
|
- placeholder="请输入地址"
|
|
|
+ placeholder="请输入名称"
|
|
|
style="width:360px;"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="本地端口:" prop="localPort">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.localPort"
|
|
|
- maxLength="10"
|
|
|
- placeholder="请输入端口"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="公网地址:" prop="publicIp">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.publicIp"
|
|
|
- maxLength="50"
|
|
|
- placeholder="请输入地址"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="公网端口:" prop="publicPort">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.publicPort"
|
|
|
- maxLength="10"
|
|
|
- placeholder="请输入端口"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div v-if="dialogForm.moduleType == 1">
|
|
|
- <el-form-item label="认证key:" prop="authKey">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.authKey"
|
|
|
- maxLength="200"
|
|
|
- placeholder="请输入认证key"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="密匙:" prop="authPassword">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.authPassword"
|
|
|
- maxLength="200"
|
|
|
- placeholder="请输入密匙"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div v-if="dialogForm.moduleType == 2">
|
|
|
- <el-form-item label="粘拆包:" prop="dataPacket">
|
|
|
- <el-select v-model="dialogForm.dataPacket"
|
|
|
+ <el-form-item label="类型:" prop="moduleType">
|
|
|
+ <el-select v-model="dialogForm.moduleType"
|
|
|
+ placeholder="请选类型"
|
|
|
:disabled="dialogLookType"
|
|
|
- placeholder="请选择粘拆包类型"
|
|
|
clearable style="width:360px;">
|
|
|
- <el-option label="不处理" :value="0"></el-option>
|
|
|
- <el-option label="分隔符" :value="1"></el-option>
|
|
|
- <el-option label="自定义脚本" :value="2"></el-option>
|
|
|
- <el-option label="固定长度" :value="3"></el-option>
|
|
|
- <el-option label="长度字段" :value="4"></el-option>
|
|
|
+ <el-option
|
|
|
+ v-for="dict in options"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ ></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item v-if="dialogForm.dataPacket != 0" label="粘拆包字符:" prop="dataPacketContent">
|
|
|
+ <div v-if="dialogForm.moduleType == 1 || dialogForm.moduleType == 2 || dialogForm.moduleType == 3">
|
|
|
+ <el-form-item label="本地地址:" prop="localIp">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.localIp"
|
|
|
+ maxLength="20"
|
|
|
+ placeholder="请输入地址"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="本地端口:" prop="localPort">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.localPort"
|
|
|
+ maxLength="10"
|
|
|
+ placeholder="请输入端口"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="公网地址:" prop="publicIp">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.publicIp"
|
|
|
+ maxLength="50"
|
|
|
+ placeholder="请输入地址"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="公网端口:" prop="publicPort">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.publicPort"
|
|
|
+ maxLength="10"
|
|
|
+ placeholder="请输入端口"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div v-if="dialogForm.moduleType == 1">
|
|
|
+ <el-form-item label="认证key:" prop="authKey">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.authKey"
|
|
|
+ maxLength="200"
|
|
|
+ placeholder="请输入认证key"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="密匙:" prop="authPassword">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.authPassword"
|
|
|
+ maxLength="200"
|
|
|
+ placeholder="请输入密匙"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div v-if="dialogForm.moduleType == 2">
|
|
|
+ <el-form-item label="粘拆包:" prop="dataPacket">
|
|
|
+ <el-select v-model="dialogForm.dataPacket"
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ placeholder="请选择粘拆包类型"
|
|
|
+ clearable style="width:360px;">
|
|
|
+ <el-option label="不处理" :value="0"></el-option>
|
|
|
+ <el-option label="分隔符" :value="1"></el-option>
|
|
|
+ <el-option label="自定义脚本" :value="2"></el-option>
|
|
|
+ <el-option label="固定长度" :value="3"></el-option>
|
|
|
+ <el-option label="长度字段" :value="4"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="dialogForm.dataPacket != 0" label="粘拆包字符:" prop="dataPacketContent">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.dataPacketContent"
|
|
|
+ maxLength="200"
|
|
|
+ placeholder="请输入粘拆包字符"
|
|
|
+ :show-word-limit="true"
|
|
|
+ style="width:360px;"
|
|
|
+ type="textarea"
|
|
|
+ resize="none"
|
|
|
+ :rows="2"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div v-if="dialogForm.moduleType == 4">
|
|
|
+ <el-form-item label="远程地址:" prop="publicIp">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.publicIp"
|
|
|
+ maxLength="50"
|
|
|
+ placeholder="请输入地址"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="远程端口:" prop="publicPort">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.publicPort"
|
|
|
+ maxLength="10"
|
|
|
+ placeholder="请输入端口"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="clientId:" prop="clientId">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.clientId"
|
|
|
+ maxLength="30"
|
|
|
+ placeholder="请输入clientId"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="用户名:" prop="username">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.username"
|
|
|
+ maxLength="30"
|
|
|
+ placeholder="请输入用户名"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="密码:" prop="password">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.password"
|
|
|
+ maxLength="20"
|
|
|
+ placeholder="请输入密码"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="订阅前缀:" prop="prefix">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="dialogForm.prefix"
|
|
|
+ maxLength="30"
|
|
|
+ placeholder="请输入订阅前缀"
|
|
|
+ style="width:360px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div v-if="dialogForm.moduleType == 3 || dialogForm.moduleType == 4">
|
|
|
+ <el-form-item label="消息长度:" prop="messageLength">
|
|
|
+ <el-input-number v-model="dialogForm.messageLength"
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ clearable style="width:360px;"
|
|
|
+ controls-position="right"
|
|
|
+ :min="10" :max="1000"></el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <!--<el-form-item label="自定义参数:">-->
|
|
|
+ <div class="for-params-max-box">
|
|
|
+ <p class="for-params-title-p">自定义参数:</p>
|
|
|
+ <div class="for-params-big-box">
|
|
|
+ <div class='for-params-box' v-for="(item,index) in dialogForm.params">
|
|
|
+ <el-form-item label="" :prop="'params.'+index+'.key'" :rules="dialogRules.key">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="item.key"
|
|
|
+ maxLength="30"
|
|
|
+ placeholder="请输入键"
|
|
|
+ style="width:140px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="" :prop="'params.'+index+'.value'" :rules="dialogRules.value">
|
|
|
+ <el-input
|
|
|
+ :disabled="dialogLookType"
|
|
|
+ v-model="item.value"
|
|
|
+ maxLength="30"
|
|
|
+ placeholder="请输入值"
|
|
|
+ style="width:140px;"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <span class="el-icon-remove del-span" @click="delItem(index)" v-if="!dialogLookType"></span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <span class="null-span" v-if="!dialogForm.params[0]">未配置</span>
|
|
|
+ <span class="el-icon-circle-plus add-span" @click="addItem" v-if="!dialogLookType && !dialogForm.params[4]"></span>
|
|
|
+ </div>
|
|
|
+ <!--</el-form-item>-->
|
|
|
+ <el-form-item label="说明:" prop="remark">
|
|
|
<el-input
|
|
|
:disabled="dialogLookType"
|
|
|
- v-model="dialogForm.dataPacketContent"
|
|
|
+ v-model="dialogForm.remark"
|
|
|
maxLength="200"
|
|
|
- placeholder="请输入粘拆包字符"
|
|
|
+ placeholder="请输入说明"
|
|
|
:show-word-limit="true"
|
|
|
style="width:360px;"
|
|
|
type="textarea"
|
|
|
resize="none"
|
|
|
- :rows="2"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <div v-if="dialogForm.moduleType == 4">
|
|
|
- <el-form-item label="远程地址:" prop="publicIp">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.publicIp"
|
|
|
- maxLength="50"
|
|
|
- placeholder="请输入地址"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="远程端口:" prop="publicPort">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.publicPort"
|
|
|
- maxLength="10"
|
|
|
- placeholder="请输入端口"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="clientId:" prop="clientId">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.clientId"
|
|
|
- maxLength="30"
|
|
|
- placeholder="请输入clientId"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="用户名:" prop="username">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.username"
|
|
|
- maxLength="30"
|
|
|
- placeholder="请输入用户名"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="密码:" prop="password">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.password"
|
|
|
- maxLength="20"
|
|
|
- placeholder="请输入密码"
|
|
|
- style="width:360px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="订阅前缀:" prop="prefix">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.prefix"
|
|
|
- maxLength="30"
|
|
|
- placeholder="请输入订阅前缀"
|
|
|
- style="width:360px;"
|
|
|
+ :rows="4"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- </div>
|
|
|
- <div v-if="dialogForm.moduleType == 3 || dialogForm.moduleType == 4">
|
|
|
- <el-form-item label="消息长度:" prop="messageLength">
|
|
|
- <el-input-number v-model="dialogForm.messageLength"
|
|
|
- :disabled="dialogLookType"
|
|
|
- clearable style="width:360px;"
|
|
|
- controls-position="right"
|
|
|
- :min="10" :max="1000"></el-input-number>
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- <el-form-item label="说明:" prop="remark">
|
|
|
- <el-input
|
|
|
- :disabled="dialogLookType"
|
|
|
- v-model="dialogForm.remark"
|
|
|
- maxLength="200"
|
|
|
- placeholder="请输入说明"
|
|
|
- :show-word-limit="true"
|
|
|
- style="width:360px;"
|
|
|
- type="textarea"
|
|
|
- resize="none"
|
|
|
- :rows="4"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
<div slot="footer" class="dialog-footer dialog-footer-box">
|
|
|
<p class="dialog-footer-button-null"></p>
|
|
|
<p class="dialog-footer-button-info" @click="dialogOff()">{{dialogLookType?'关闭':'取消'}}</p>
|
|
@@ -369,6 +401,14 @@
|
|
|
{ required: true, message: "请输入消息长度", trigger: "blur" },
|
|
|
{ required: true, message: "请输入消息长度", validator: this.spaceJudgment, trigger: "blur" }
|
|
|
],
|
|
|
+ key: [
|
|
|
+ { required: true, message: "请输入键", trigger: "blur" },
|
|
|
+ { required: true, message: "请输入键", validator: this.spaceJudgment, trigger: "blur" }
|
|
|
+ ],
|
|
|
+ value: [
|
|
|
+ { required: true, message: "请输入值", trigger: "blur" },
|
|
|
+ { required: true, message: "请输入值", validator: this.spaceJudgment, trigger: "blur" }
|
|
|
+ ],
|
|
|
},
|
|
|
dialogLookType:false,
|
|
|
rules:{},
|
|
@@ -403,6 +443,7 @@
|
|
|
password:'',
|
|
|
prefix:'',
|
|
|
messageLength:'',
|
|
|
+ params:[],
|
|
|
remark:'',
|
|
|
});
|
|
|
this.$set(this,'dialogTitle','新增');
|
|
@@ -413,7 +454,7 @@
|
|
|
dialogSubmit(){
|
|
|
this.$refs["dialogForm"].validate(valid => {
|
|
|
if (valid) {
|
|
|
- let obj = this.dataProcessing(this.dialogForm);
|
|
|
+ let obj = this.dataProcessing(this.dialogForm,'set');
|
|
|
if(obj.id){
|
|
|
iotNetworkUpdate(obj).then(response => {
|
|
|
this.$set(this,'dialogType',false);
|
|
@@ -455,12 +496,12 @@
|
|
|
tableButton(type,row){
|
|
|
let self = this;
|
|
|
if(type == 2){
|
|
|
- this.$set(this,'dialogForm',this.dataProcessing(row));
|
|
|
+ this.$set(this,'dialogForm',this.dataProcessing(row,'get'));
|
|
|
this.$set(this,'dialogTitle','详情');
|
|
|
this.$set(this,'dialogLookType',true);
|
|
|
this.$set(this,'dialogType',true);
|
|
|
}else if(type == 3){
|
|
|
- this.$set(this,'dialogForm',this.dataProcessing(row));
|
|
|
+ this.$set(this,'dialogForm',this.dataProcessing(row,'get'));
|
|
|
this.$set(this,'dialogTitle','编辑');
|
|
|
this.$set(this,'dialogLookType',false);
|
|
|
this.$set(this,'dialogType',true);
|
|
@@ -480,7 +521,7 @@
|
|
|
}
|
|
|
},
|
|
|
//数据处理
|
|
|
- dataProcessing(data){
|
|
|
+ dataProcessing(data,type){
|
|
|
let newData = {
|
|
|
moduleName:data.moduleName,
|
|
|
moduleType:data.moduleType,
|
|
@@ -499,11 +540,24 @@
|
|
|
prefix:data.moduleType == 4 ?data.prefix:'',
|
|
|
messageLength:data.moduleType == 3 || data.moduleType == 4 ?data.messageLength:'',
|
|
|
}
|
|
|
+ if(type == 'get'){
|
|
|
+ newData.params = data.params?JSON.parse(data.params):[];
|
|
|
+ }else if(type == 'set'){
|
|
|
+ newData.params = data.params[0]?JSON.stringify(data.params):'';
|
|
|
+ }
|
|
|
if(data.id){
|
|
|
newData.id = data.id;
|
|
|
}
|
|
|
return JSON.parse(JSON.stringify(newData))
|
|
|
},
|
|
|
+ //添加自定义项
|
|
|
+ addItem(){
|
|
|
+ this.dialogForm.params.push({key:'',value:''})
|
|
|
+ },
|
|
|
+ //删除自定义项
|
|
|
+ delItem(index){
|
|
|
+ this.dialogForm.params.splice(index,1);
|
|
|
+ },
|
|
|
},
|
|
|
}
|
|
|
</script>
|
|
@@ -517,9 +571,49 @@
|
|
|
</style>
|
|
|
<style lang="scss">
|
|
|
.networkComponent-dialog{
|
|
|
- .el-input__inner,.el-textarea__inner{
|
|
|
- cursor: default!important;
|
|
|
- color:#666!important;
|
|
|
+ .networkComponent-dialog-box{
|
|
|
+ height:660px;
|
|
|
+ .for-params-max-box{
|
|
|
+ display: flex;
|
|
|
+ .for-params-title-p{
|
|
|
+ line-height:40px;
|
|
|
+ text-align: right;
|
|
|
+ font-size:14px;
|
|
|
+ color:#333;
|
|
|
+ width:100px;
|
|
|
+ margin:0 12px 20px 0;
|
|
|
+ }
|
|
|
+ .for-params-big-box{
|
|
|
+ .for-params-box{
|
|
|
+ .del-span{
|
|
|
+ font-size:18px;
|
|
|
+ color:#FF6666;
|
|
|
+ line-height:40px;
|
|
|
+ width:30px;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .add-span{
|
|
|
+ font-size:18px;
|
|
|
+ color:#0183FA;
|
|
|
+ line-height:40px;
|
|
|
+ height:40px;
|
|
|
+ width:30px;
|
|
|
+ text-align: center;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .null-span{
|
|
|
+ font-size:14px;
|
|
|
+ line-height:40px;
|
|
|
+ height:40px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-input__inner,.el-textarea__inner{
|
|
|
+ cursor: default!important;
|
|
|
+ color:#666!important;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</style>
|