mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 13:10:26 +08:00 
			
		
		
		
	优化代码
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
				
			|||||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
// +build !plus
 | 
					//go:build !plus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package teaconst
 | 
					package teaconst
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package teaconst
 | 
					package teaconst
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -348,6 +348,10 @@ func (this *RPCClient) RegionCityRPC() pb.RegionCityServiceClient {
 | 
				
			|||||||
	return pb.NewRegionCityServiceClient(this.pickConn())
 | 
						return pb.NewRegionCityServiceClient(this.pickConn())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (this *RPCClient) RegionTownRPC() pb.RegionTownServiceClient {
 | 
				
			||||||
 | 
						return pb.NewRegionTownServiceClient(this.pickConn())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (this *RPCClient) RegionProviderRPC() pb.RegionProviderServiceClient {
 | 
					func (this *RPCClient) RegionProviderRPC() pb.RegionProviderServiceClient {
 | 
				
			||||||
	return pb.NewRegionProviderServiceClient(this.pickConn())
 | 
						return pb.NewRegionProviderServiceClient(this.pickConn())
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package nodelogutils
 | 
					package nodelogutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
// +build linux
 | 
					//go:build linux
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package utils
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -15,7 +15,7 @@ import (
 | 
				
			|||||||
var systemdServiceFile = "/etc/systemd/system/edge-admin.service"
 | 
					var systemdServiceFile = "/etc/systemd/system/edge-admin.service"
 | 
				
			||||||
var initServiceFile = "/etc/init.d/" + teaconst.SystemdServiceName
 | 
					var initServiceFile = "/etc/init.d/" + teaconst.SystemdServiceName
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 安装服务
 | 
					// Install 安装服务
 | 
				
			||||||
func (this *ServiceManager) Install(exePath string, args []string) error {
 | 
					func (this *ServiceManager) Install(exePath string, args []string) error {
 | 
				
			||||||
	if os.Getgid() != 0 {
 | 
						if os.Getgid() != 0 {
 | 
				
			||||||
		return errors.New("only root users can install the service")
 | 
							return errors.New("only root users can install the service")
 | 
				
			||||||
@@ -29,7 +29,7 @@ func (this *ServiceManager) Install(exePath string, args []string) error {
 | 
				
			|||||||
	return this.installSystemdService(systemd, exePath, args)
 | 
						return this.installSystemdService(systemd, exePath, args)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 启动服务
 | 
					// Start 启动服务
 | 
				
			||||||
func (this *ServiceManager) Start() error {
 | 
					func (this *ServiceManager) Start() error {
 | 
				
			||||||
	if os.Getgid() != 0 {
 | 
						if os.Getgid() != 0 {
 | 
				
			||||||
		return errors.New("only root users can start the service")
 | 
							return errors.New("only root users can start the service")
 | 
				
			||||||
@@ -46,7 +46,7 @@ func (this *ServiceManager) Start() error {
 | 
				
			|||||||
	return exec.Command("service", teaconst.ProcessName, "start").Start()
 | 
						return exec.Command("service", teaconst.ProcessName, "start").Start()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 删除服务
 | 
					// Uninstall 删除服务
 | 
				
			||||||
func (this *ServiceManager) Uninstall() error {
 | 
					func (this *ServiceManager) Uninstall() error {
 | 
				
			||||||
	if os.Getgid() != 0 {
 | 
						if os.Getgid() != 0 {
 | 
				
			||||||
		return errors.New("only root users can uninstall the service")
 | 
							return errors.New("only root users can uninstall the service")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
// +build !linux,!windows
 | 
					//go:build !linux && !windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package utils
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
// +build windows
 | 
					//go:build windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package utils
 | 
					package utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package nodeutils
 | 
					package nodeutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package node
 | 
					package node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package clusterutils
 | 
					package clusterutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package providers
 | 
					package providers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,4 @@
 | 
				
			|||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package providers
 | 
					package providers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package servergrouputils
 | 
					package servergrouputils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package locationutils
 | 
					package locationutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package serverutils
 | 
					package serverutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,4 @@
 | 
				
			|||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package settingutils
 | 
					package settingutils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
					// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
//go:build !plus
 | 
					//go:build !plus
 | 
				
			||||||
// +build !plus
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
package helpers
 | 
					package helpers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4325,14 +4325,14 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio
 | 
				
			|||||||
	<tr>
 | 
						<tr>
 | 
				
			||||||
		<td colspan="2"><a href="" @click.prevent="show()"><span v-if="!isVisible">更多选项</span><span v-if="isVisible">收起选项</span><i class="icon angle" :class="{down:!isVisible, up:isVisible}"></i></a></td>
 | 
							<td colspan="2"><a href="" @click.prevent="show()"><span v-if="!isVisible">更多选项</span><span v-if="isVisible">收起选项</span><i class="icon angle" :class="{down:!isVisible, up:isVisible}"></i></a></td>
 | 
				
			||||||
	</tr>
 | 
						</tr>
 | 
				
			||||||
</tbody>`}),Vue.component("download-link",{props:["v-element","v-file","v-value"],created:function(){let e=this;setTimeout(function(){e.url=e.composeURL()},1e3)},data:function(){let e=this.vFile;return{file:e=null!=e&&0!=e.length?e:"unknown-file",url:this.composeURL()}},methods:{composeURL:function(){let e="";if(null!=this.vValue)e=this.vValue;else{var t=document.getElementById(this.vElement);if(null==t)return void teaweb.warn("找不到要下载的内容");null==(e=t.innerText)&&(e=t.textContent)}return Tea.url("/ui/download",{file:this.file,text:e})}},template:'<a :href="url" target="_blank" style="font-weight: normal"><slot></slot></a>'}),Vue.component("values-box",{props:["values","size","maxlength","name","placeholder"],data:function(){let e=this.values;return{vValues:e=null==e?[]:e,isUpdating:!1,isAdding:!1,index:0,value:"",isEditing:!1}},methods:{create:function(){this.isAdding=!0;var e=this;setTimeout(function(){e.$refs.value.focus()},200)},update:function(e){this.cancel(),this.isUpdating=!0,this.index=e,this.value=this.vValues[e];var t=this;setTimeout(function(){t.$refs.value.focus()},200)},confirm:function(){0!=this.value.length&&(this.isUpdating?Vue.set(this.vValues,this.index,this.value):this.vValues.push(this.value),this.cancel(),this.$emit("change",this.vValues))},remove:function(e){this.vValues.$remove(e),this.$emit("change",this.vValues)},cancel:function(){this.isUpdating=!1,this.isAdding=!1,this.value=""},updateAll:function(e){this.vValeus=e},addValue:function(e){this.vValues.push(e)},startEditing:function(){this.isEditing=!this.isEditing}},template:`<div>
 | 
					</tbody>`}),Vue.component("download-link",{props:["v-element","v-file","v-value"],created:function(){let e=this;setTimeout(function(){e.url=e.composeURL()},1e3)},data:function(){let e=this.vFile;return{file:e=null!=e&&0!=e.length?e:"unknown-file",url:this.composeURL()}},methods:{composeURL:function(){let e="";if(null!=this.vValue)e=this.vValue;else{var t=document.getElementById(this.vElement);if(null==t)return void teaweb.warn("找不到要下载的内容");null==(e=t.innerText)&&(e=t.textContent)}return Tea.url("/ui/download",{file:this.file,text:e})}},template:'<a :href="url" target="_blank" style="font-weight: normal"><slot></slot></a>'}),Vue.component("values-box",{props:["values","v-values","size","maxlength","name","placeholder"],data:function(){let e=this.values;return null==e&&(e=[]),{realValues:e=null!=this.vValues&&"object"==typeof this.vValues?this.vValues:e,isUpdating:!1,isAdding:!1,index:0,value:"",isEditing:!1}},methods:{create:function(){this.isAdding=!0;var e=this;setTimeout(function(){e.$refs.value.focus()},200)},update:function(e){this.cancel(),this.isUpdating=!0,this.index=e,this.value=this.realValues[e];var t=this;setTimeout(function(){t.$refs.value.focus()},200)},confirm:function(){0!=this.value.length&&(this.isUpdating?Vue.set(this.realValues,this.index,this.value):this.realValues.push(this.value),this.cancel(),this.$emit("change",this.realValues))},remove:function(e){this.realValues.$remove(e),this.$emit("change",this.realValues)},cancel:function(){this.isUpdating=!1,this.isAdding=!1,this.value=""},updateAll:function(e){this.realValues=e},addValue:function(e){this.realValues.push(e)},startEditing:function(){this.isEditing=!this.isEditing}},template:`<div>
 | 
				
			||||||
	<div v-show="!isEditing && vValues.length > 0">
 | 
						<div v-show="!isEditing && realValues.length > 0">
 | 
				
			||||||
		<div class="ui label tiny basic" v-for="(value, index) in vValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}</div>
 | 
							<div class="ui label tiny basic" v-for="(value, index) in realValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}</div>
 | 
				
			||||||
		<a href="" @click.prevent="startEditing" style="font-size: 0.8em; margin-left: 0.2em">[修改]</a>
 | 
							<a href="" @click.prevent="startEditing" style="font-size: 0.8em; margin-left: 0.2em">[修改]</a>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
	<div v-show="isEditing || vValues.length == 0">
 | 
						<div v-show="isEditing || realValues.length == 0">
 | 
				
			||||||
		<div style="margin-bottom: 1em" v-if="vValues.length > 0">
 | 
							<div style="margin-bottom: 1em" v-if="realValues.length > 0">
 | 
				
			||||||
			<div class="ui label tiny basic" v-for="(value, index) in vValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}
 | 
								<div class="ui label tiny basic" v-for="(value, index) in realValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}
 | 
				
			||||||
				<input type="hidden" :name="name" :value="value"/>
 | 
									<input type="hidden" :name="name" :value="value"/>
 | 
				
			||||||
				  <a href="" @click.prevent="update(index)" title="修改"><i class="icon pencil small" ></i></a> 
 | 
									  <a href="" @click.prevent="update(index)" title="修改"><i class="icon pencil small" ></i></a> 
 | 
				
			||||||
				<a href="" @click.prevent="remove(index)" title="删除"><i class="icon remove"></i></a> 
 | 
									<a href="" @click.prevent="remove(index)" title="删除"><i class="icon remove"></i></a> 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12695,14 +12695,19 @@ Vue.component("download-link", {
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Vue.component("values-box", {
 | 
					Vue.component("values-box", {
 | 
				
			||||||
	props: ["values", "size", "maxlength", "name", "placeholder"],
 | 
						props: ["values", "v-values", "size", "maxlength", "name", "placeholder"],
 | 
				
			||||||
	data: function () {
 | 
						data: function () {
 | 
				
			||||||
		let values = this.values;
 | 
							let values = this.values;
 | 
				
			||||||
		if (values == null) {
 | 
							if (values == null) {
 | 
				
			||||||
			values = [];
 | 
								values = [];
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (this.vValues != null && typeof this.vValues == "object") {
 | 
				
			||||||
 | 
								values = this.vValues
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
			"vValues": values,
 | 
								"realValues": values,
 | 
				
			||||||
			"isUpdating": false,
 | 
								"isUpdating": false,
 | 
				
			||||||
			"isAdding": false,
 | 
								"isAdding": false,
 | 
				
			||||||
			"index": 0,
 | 
								"index": 0,
 | 
				
			||||||
@@ -12722,7 +12727,7 @@ Vue.component("values-box", {
 | 
				
			|||||||
			this.cancel()
 | 
								this.cancel()
 | 
				
			||||||
			this.isUpdating = true;
 | 
								this.isUpdating = true;
 | 
				
			||||||
			this.index = index;
 | 
								this.index = index;
 | 
				
			||||||
			this.value = this.vValues[index];
 | 
								this.value = this.realValues[index];
 | 
				
			||||||
			var that = this;
 | 
								var that = this;
 | 
				
			||||||
			setTimeout(function () {
 | 
								setTimeout(function () {
 | 
				
			||||||
				that.$refs.value.focus();
 | 
									that.$refs.value.focus();
 | 
				
			||||||
@@ -12734,16 +12739,16 @@ Vue.component("values-box", {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (this.isUpdating) {
 | 
								if (this.isUpdating) {
 | 
				
			||||||
				Vue.set(this.vValues, this.index, this.value);
 | 
									Vue.set(this.realValues, this.index, this.value);
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				this.vValues.push(this.value);
 | 
									this.realValues.push(this.value);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			this.cancel()
 | 
								this.cancel()
 | 
				
			||||||
			this.$emit("change", this.vValues)
 | 
								this.$emit("change", this.realValues)
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		remove: function (index) {
 | 
							remove: function (index) {
 | 
				
			||||||
			this.vValues.$remove(index)
 | 
								this.realValues.$remove(index)
 | 
				
			||||||
			this.$emit("change", this.vValues)
 | 
								this.$emit("change", this.realValues)
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		cancel: function () {
 | 
							cancel: function () {
 | 
				
			||||||
			this.isUpdating = false;
 | 
								this.isUpdating = false;
 | 
				
			||||||
@@ -12751,10 +12756,10 @@ Vue.component("values-box", {
 | 
				
			|||||||
			this.value = "";
 | 
								this.value = "";
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		updateAll: function (values) {
 | 
							updateAll: function (values) {
 | 
				
			||||||
			this.vValeus = values
 | 
								this.realValues = values
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		addValue: function (v) {
 | 
							addValue: function (v) {
 | 
				
			||||||
			this.vValues.push(v)
 | 
								this.realValues.push(v)
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		startEditing: function () {
 | 
							startEditing: function () {
 | 
				
			||||||
@@ -12762,13 +12767,13 @@ Vue.component("values-box", {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	template: `<div>
 | 
						template: `<div>
 | 
				
			||||||
	<div v-show="!isEditing && vValues.length > 0">
 | 
						<div v-show="!isEditing && realValues.length > 0">
 | 
				
			||||||
		<div class="ui label tiny basic" v-for="(value, index) in vValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}</div>
 | 
							<div class="ui label tiny basic" v-for="(value, index) in realValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}</div>
 | 
				
			||||||
		<a href="" @click.prevent="startEditing" style="font-size: 0.8em; margin-left: 0.2em">[修改]</a>
 | 
							<a href="" @click.prevent="startEditing" style="font-size: 0.8em; margin-left: 0.2em">[修改]</a>
 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
	<div v-show="isEditing || vValues.length == 0">
 | 
						<div v-show="isEditing || realValues.length == 0">
 | 
				
			||||||
		<div style="margin-bottom: 1em" v-if="vValues.length > 0">
 | 
							<div style="margin-bottom: 1em" v-if="realValues.length > 0">
 | 
				
			||||||
			<div class="ui label tiny basic" v-for="(value, index) in vValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}
 | 
								<div class="ui label tiny basic" v-for="(value, index) in realValues" style="margin-top:0.4em;margin-bottom:0.4em">{{value}}
 | 
				
			||||||
				<input type="hidden" :name="name" :value="value"/>
 | 
									<input type="hidden" :name="name" :value="value"/>
 | 
				
			||||||
				  <a href="" @click.prevent="update(index)" title="修改"><i class="icon pencil small" ></i></a> 
 | 
									  <a href="" @click.prevent="update(index)" title="修改"><i class="icon pencil small" ></i></a> 
 | 
				
			||||||
				<a href="" @click.prevent="remove(index)" title="删除"><i class="icon remove"></i></a> 
 | 
									<a href="" @click.prevent="remove(index)" title="删除"><i class="icon remove"></i></a> 
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user