| | |
| | | `ffmpeg_cmd_key` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, |
| | | `rtp_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, |
| | | `mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, |
| | | `enable_hls` bit(1) DEFAULT NULL, |
| | | `enable_audio` bit(1) DEFAULT NULL, |
| | | `enable_mp4` bit(1) DEFAULT NULL, |
| | | `enable` bit(1) NOT NULL, |
| | | `status` bit(1) NOT NULL, |
| | |
| | | |
| | | alter table device |
| | | modify hostAddress varchar(50) null; |
| | | |
| | | alter table stream_proxy |
| | | change enable_hls enable_audio bit null; |
| | | |
| | | |
| | |
| | | package com.genersoft.iot.vmp.conf; |
| | | |
| | | import com.genersoft.iot.vmp.conf.exception.ControllerException; |
| | | import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEventListener; |
| | | import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; |
| | | import com.genersoft.iot.vmp.vmanager.bean.WVPResult; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.security.authentication.BadCredentialsException; |
| | | import org.springframework.web.bind.annotation.ExceptionHandler; |
| | | import org.springframework.web.bind.annotation.ResponseStatus; |
| | |
| | | */ |
| | | @ExceptionHandler(ControllerException.class) |
| | | @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) |
| | | public WVPResult<String> exceptionHandler(ControllerException e) { |
| | | return WVPResult.fail(e.getCode(), e.getMsg()); |
| | | public ResponseEntity<WVPResult<String>> exceptionHandler(ControllerException e) { |
| | | return new ResponseEntity<>(WVPResult.fail(e.getCode(), e.getMsg()), HttpStatus.OK); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ExceptionHandler(BadCredentialsException.class) |
| | | @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) |
| | | public WVPResult<String> exceptionHandler(BadCredentialsException e) { |
| | | return WVPResult.fail(ErrorCode.ERROR100.getCode(), e.getMessage()); |
| | | public ResponseEntity<WVPResult<String>> exceptionHandler(BadCredentialsException e) { |
| | | return new ResponseEntity<>(WVPResult.fail(ErrorCode.ERROR100.getCode(), e.getMessage()), HttpStatus.OK); |
| | | } |
| | | } |
| | |
| | | // 修改数据
|
| | | streamProxyService.stop(param.getApp(), param.getStream());
|
| | | }else {
|
| | | // 无人观看不做处理
|
| | | ret.put("close", false);
|
| | | }
|
| | | return ret;
|
| | |
| | | } |
| | | |
| | | public JSONObject addFFmpegSource(MediaServerItem mediaServerItem, String src_url, String dst_url, String timeout_ms, |
| | | boolean enable_hls, boolean enable_mp4, String ffmpeg_cmd_key){ |
| | | boolean enable_audio, boolean enable_mp4, String ffmpeg_cmd_key){ |
| | | logger.info(src_url); |
| | | logger.info(dst_url); |
| | | Map<String, Object> param = new HashMap<>(); |
| | | param.put("src_url", src_url); |
| | | param.put("dst_url", dst_url); |
| | | param.put("timeout_ms", timeout_ms); |
| | | param.put("enable_hls", enable_hls); |
| | | param.put("enable_mp4", enable_mp4); |
| | | param.put("ffmpeg_cmd_key", ffmpeg_cmd_key); |
| | | return sendPost(mediaServerItem, "addFFmpegSource",param, null); |
| | |
| | | return sendPost(mediaServerItem, "restartServer",null, null); |
| | | } |
| | | |
| | | public JSONObject addStreamProxy(MediaServerItem mediaServerItem, String app, String stream, String url, boolean enable_hls, boolean enable_mp4, String rtp_type) { |
| | | public JSONObject addStreamProxy(MediaServerItem mediaServerItem, String app, String stream, String url, boolean enable_audio, boolean enable_mp4, String rtp_type) { |
| | | Map<String, Object> param = new HashMap<>(); |
| | | param.put("vhost", "__defaultVhost__"); |
| | | param.put("app", app); |
| | | param.put("stream", stream); |
| | | param.put("url", url); |
| | | param.put("enable_hls", enable_hls?1:0); |
| | | param.put("enable_mp4", enable_mp4?1:0); |
| | | param.put("enable_rtmp", 1); |
| | | param.put("enable_fmp4", 1); |
| | | param.put("enable_audio", 1); |
| | | param.put("enable_rtsp", 1); |
| | | param.put("add_mute_audio", 1); |
| | | param.put("enable_audio", enable_audio?1:0); |
| | | param.put("rtp_type", rtp_type); |
| | | return sendPost(mediaServerItem, "addStreamProxy",param, null); |
| | | } |
| | |
| | | private String rtp_type; |
| | | @Schema(description = "是否启用") |
| | | private boolean enable; |
| | | @Schema(description = "是否启用HLS") |
| | | private boolean enable_hls; |
| | | @Schema(description = "是否启用音频") |
| | | private boolean enable_audio; |
| | | @Schema(description = "是否启用MP4") |
| | | private boolean enable_mp4; |
| | | @Schema(description = "是否 无人观看时删除") |
| | |
| | | |
| | | @Schema(description = "是否 无人观看时自动停用") |
| | | private boolean enable_disable_none_reader; |
| | | @Schema(description = "上级平台国标ID") |
| | | private String platformGbId; |
| | | @Schema(description = "创建时间") |
| | | private String createTime; |
| | | |
| | |
| | | this.enable = enable; |
| | | } |
| | | |
| | | public boolean isEnable_hls() { |
| | | return enable_hls; |
| | | } |
| | | |
| | | public void setEnable_hls(boolean enable_hls) { |
| | | this.enable_hls = enable_hls; |
| | | } |
| | | |
| | | public boolean isEnable_mp4() { |
| | | return enable_mp4; |
| | | } |
| | |
| | | this.enable_mp4 = enable_mp4; |
| | | } |
| | | |
| | | |
| | | public String getPlatformGbId() { |
| | | return platformGbId; |
| | | } |
| | | |
| | | public void setPlatformGbId(String platformGbId) { |
| | | this.platformGbId = platformGbId; |
| | | } |
| | | |
| | | @Override |
| | | public String getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | @Override |
| | | public void setCreateTime(String createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | |
| | | public void setEnable_disable_none_reader(boolean enable_disable_none_reader) { |
| | | this.enable_disable_none_reader = enable_disable_none_reader; |
| | | } |
| | | |
| | | public boolean isEnable_audio() { |
| | | return enable_audio; |
| | | } |
| | | |
| | | public void setEnable_audio(boolean enable_audio) { |
| | | this.enable_audio = enable_audio; |
| | | } |
| | | } |
| | |
| | | import com.genersoft.iot.vmp.common.StreamInfo; |
| | | import com.genersoft.iot.vmp.conf.UserSetting; |
| | | import com.genersoft.iot.vmp.conf.exception.ControllerException; |
| | | import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
| | | import com.genersoft.iot.vmp.gb28181.event.EventPublisher; |
| | | import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent; |
| | | import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; |
| | | import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam; |
| | | import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; |
| | | import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; |
| | | import com.genersoft.iot.vmp.media.zlm.dto.hook.OnStreamChangedHookParam; |
| | | import com.genersoft.iot.vmp.service.IGbStreamService; |
| | | import com.genersoft.iot.vmp.service.IMediaServerService; |
| | | import com.genersoft.iot.vmp.service.IMediaService; |
| | | import com.genersoft.iot.vmp.service.IStreamProxyService; |
| | | import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
| | | import com.genersoft.iot.vmp.storager.IVideoManagerStorage; |
| | | import com.genersoft.iot.vmp.storager.dao.GbStreamMapper; |
| | | import com.genersoft.iot.vmp.storager.dao.ParentPlatformMapper; |
| | | import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper; |
| | | import com.genersoft.iot.vmp.storager.dao.StreamProxyMapper; |
| | | import com.genersoft.iot.vmp.service.IStreamProxyService; |
| | | import com.genersoft.iot.vmp.utils.DateUtil; |
| | | import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; |
| | | import com.genersoft.iot.vmp.vmanager.bean.ResourceBaceInfo; |
| | |
| | | import org.springframework.transaction.TransactionStatus; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import java.util.*; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 视频代理业务 |
| | |
| | | param.getStream() ); |
| | | param.setDst_url(dstUrl); |
| | | StringBuffer resultMsg = new StringBuffer(); |
| | | boolean streamLive = false; |
| | | param.setMediaServerId(mediaInfo.getId()); |
| | | boolean saveResult; |
| | | // 更新 |
| | |
| | | if (param.isEnable()) { |
| | | JSONObject jsonObject = addStreamProxyToZlm(param); |
| | | if (jsonObject == null || jsonObject.getInteger("code") != 0) { |
| | | streamLive = false; |
| | | resultMsg.append(", 但是启用失败,请检查流地址是否可用"); |
| | | param.setEnable(false); |
| | | // 直接移除 |
| | |
| | | updateStreamProxy(param); |
| | | } |
| | | |
| | | |
| | | }else { |
| | | streamLive = true; |
| | | resultForStreamInfo = mediaService.getStreamInfoByAppAndStream( |
| | | mediaInfo, param.getApp(), param.getStream(), null, null); |
| | | |
| | | } |
| | | } |
| | | if ( !ObjectUtils.isEmpty(param.getPlatformGbId()) && streamLive) { |
| | | List<GbStream> gbStreams = new ArrayList<>(); |
| | | gbStreams.add(param); |
| | | if (gbStreamService.addPlatformInfo(gbStreams, param.getPlatformGbId(), param.getCatalogId())){ |
| | | return resultForStreamInfo; |
| | | }else { |
| | | resultMsg.append(", 关联国标平台[ " + param.getPlatformGbId() + " ]失败"); |
| | | throw new ControllerException(ErrorCode.ERROR100.getCode(), resultMsg.toString()); |
| | | } |
| | | }else { |
| | | if (!streamLive) { |
| | | throw new ControllerException(ErrorCode.ERROR100.getCode(), resultMsg.toString()); |
| | | } |
| | | } |
| | | return resultForStreamInfo; |
| | |
| | | } |
| | | if ("default".equals(param.getType())){ |
| | | result = zlmresTfulUtils.addStreamProxy(mediaServerItem, param.getApp(), param.getStream(), param.getUrl(), |
| | | param.isEnable_hls(), param.isEnable_mp4(), param.getRtp_type()); |
| | | param.isEnable_audio(), param.isEnable_mp4(), param.getRtp_type()); |
| | | }else if ("ffmpeg".equals(param.getType())) { |
| | | result = zlmresTfulUtils.addFFmpegSource(mediaServerItem, param.getSrc_url(), param.getDst_url(), |
| | | param.getTimeout_ms() + "", param.isEnable_hls(), param.isEnable_mp4(), |
| | | param.getTimeout_ms() + "", param.isEnable_audio(), param.isEnable_mp4(), |
| | | param.getFfmpeg_cmd_key()); |
| | | } |
| | | return result; |
| | |
| | | public interface StreamProxyMapper { |
| | | |
| | | @Insert("INSERT INTO stream_proxy (type, name, app, stream,mediaServerId, url, src_url, dst_url, " + |
| | | "timeout_ms, ffmpeg_cmd_key, rtp_type, enable_hls, enable_mp4, enable, status, enable_remove_none_reader, enable_disable_none_reader, createTime) VALUES" + |
| | | "timeout_ms, ffmpeg_cmd_key, rtp_type, enable_audio, enable_mp4, enable, status, enable_remove_none_reader, enable_disable_none_reader, createTime) VALUES" + |
| | | "('${type}','${name}', '${app}', '${stream}', '${mediaServerId}','${url}', '${src_url}', '${dst_url}', " + |
| | | "'${timeout_ms}', '${ffmpeg_cmd_key}', '${rtp_type}', ${enable_hls}, ${enable_mp4}, ${enable}, ${status}, " + |
| | | "'${timeout_ms}', '${ffmpeg_cmd_key}', '${rtp_type}', ${enable_audio}, ${enable_mp4}, ${enable}, ${status}, " + |
| | | "${enable_remove_none_reader}, ${enable_disable_none_reader}, '${createTime}' )") |
| | | int add(StreamProxyItem streamProxyDto); |
| | | |
| | |
| | | "timeout_ms=#{timeout_ms}, " + |
| | | "ffmpeg_cmd_key=#{ffmpeg_cmd_key}, " + |
| | | "rtp_type=#{rtp_type}, " + |
| | | "enable_hls=#{enable_hls}, " + |
| | | "enable_audio=#{enable_audio}, " + |
| | | "enable=#{enable}, " + |
| | | "status=#{status}, " + |
| | | "enable_remove_none_reader=#{enable_remove_none_reader}, " + |
| | |
| | | <el-table-column label="类型" width="100" > |
| | | <template slot-scope="scope"> |
| | | <div slot="reference" class="name-wrapper"> |
| | | <el-tag size="medium">{{scope.row.type}}</el-tag> |
| | | <el-tag size="medium">{{scope.row.type === "default"? "直接代理":"FFMPEG代理"}}</el-tag> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" label="创建时间" min-width="150" show-overflow-tooltip/> |
| | | <el-table-column label="转HLS" min-width="120" > |
| | | <el-table-column label="音频" min-width="120" > |
| | | <template slot-scope="scope"> |
| | | <div slot="reference" class="name-wrapper"> |
| | | <el-tag size="medium" v-if="scope.row.enable_hls">已启用</el-tag> |
| | | <el-tag size="medium" type="info" v-if="!scope.row.enable_hls">未启用</el-tag> |
| | | <el-tag size="medium" v-if="scope.row.enable_audio">已启用</el-tag> |
| | | <el-tag size="medium" type="info" v-if="!scope.row.enable_audio">未启用</el-tag> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="MP4录制" min-width="120" > |
| | | <el-table-column label="录制" min-width="120" > |
| | | <template slot-scope="scope"> |
| | | <div slot="reference" class="name-wrapper"> |
| | | <el-tag size="medium" v-if="scope.row.enable_mp4">已启用</el-tag> |
| | |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="无人观看自动删除" min-width="160" > |
| | | <el-table-column label="无人观看" min-width="160" > |
| | | <template slot-scope="scope"> |
| | | <div slot="reference" class="name-wrapper"> |
| | | <el-tag size="medium" v-if="scope.row.enable_remove_none_reader">已启用</el-tag> |
| | | <el-tag size="medium" type="info" v-if="!scope.row.enable_remove_none_reader">未启用</el-tag> |
| | | <el-tag size="medium" v-if="scope.row.enable_remove_none_reader">移除</el-tag> |
| | | <el-tag size="medium" v-if="scope.row.enable_disable_none_reader">停用</el-tag> |
| | | <el-tag size="medium" type="info" v-if="!scope.row.enable_remove_none_reader && !scope.row.enable_disable_none_reader">不做处理</el-tag> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | currentPage:1, |
| | | count:15, |
| | | total:0, |
| | | getListLoading: false, |
| | | startBtnLoading: false |
| | | }; |
| | | }, |
| | |
| | | }, |
| | | mounted() { |
| | | this.initData(); |
| | | this.updateLooper = setInterval(this.initData, 1000); |
| | | this.startUpdateList() |
| | | }, |
| | | destroyed() { |
| | | this.$destroy('videojs'); |
| | |
| | | methods: { |
| | | initData: function() { |
| | | this.getStreamProxyList(); |
| | | }, |
| | | stopUpdateList: function (){ |
| | | window.clearInterval(this.updateLooper) |
| | | }, |
| | | startUpdateList: function (){ |
| | | this.updateLooper = setInterval(this.initData, 1000); |
| | | }, |
| | | currentChange: function(val){ |
| | | this.currentPage = val; |
| | |
| | | }, |
| | | getStreamProxyList: function() { |
| | | let that = this; |
| | | this.getListLoading = true; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/api/proxy/list`, |
| | |
| | | } |
| | | that.streamProxyList = res.data.data.list; |
| | | } |
| | | that.getListLoading = false; |
| | | }).catch(function (error) { |
| | | console.log(error); |
| | | that.getListLoading = false; |
| | | }); |
| | | }, |
| | | addStreamProxy: function(){ |
| | | this.$refs.streamProxyEdit.openDialog(null, this.initData) |
| | | }, |
| | | addOnvif: function(){ |
| | | this.getListLoading = true; |
| | | this.getListLoading = true; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/api/onvif/search?timeout=3000`, |
| | | }).then((res) =>{ |
| | | this.getListLoading = false; |
| | | if (res.data.code === 0 ){ |
| | | if (res.data.data.length > 0) { |
| | | this.$refs.onvifEdit.openDialog(res.data.data, (url)=>{ |
| | |
| | | } |
| | | |
| | | }).catch((error)=> { |
| | | this.getListLoading = false; |
| | | this.$message.error(error.response.data.msg); |
| | | }); |
| | | |
| | |
| | | }, |
| | | play: function(row){ |
| | | let that = this; |
| | | this.getListLoading = true; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/api/push/getPlayUrl`, |
| | |
| | | mediaServerId: row.mediaServerId |
| | | } |
| | | }).then(function (res) { |
| | | that.getListLoading = false; |
| | | if (res.data.code === 0) { |
| | | that.$refs.devicePlayer.openDialog("streamPlay", null, null, { |
| | | streamInfo: res.data.data, |
| | |
| | | |
| | | }).catch(function (error) { |
| | | console.log(error); |
| | | that.getListLoading = false; |
| | | }); |
| | | |
| | | }, |
| | | deleteStreamProxy: function(row){ |
| | | let that = this; |
| | | this.getListLoading = true; |
| | | that.$axios({ |
| | | method:"delete", |
| | | url:"/api/proxy/del", |
| | |
| | | stream: row.stream |
| | | } |
| | | }).then((res)=>{ |
| | | that.getListLoading = false; |
| | | that.initData() |
| | | }).catch(function (error) { |
| | | console.log(error); |
| | | that.getListLoading = false; |
| | | }); |
| | | }, |
| | | start: function(row){ |
| | | let that = this; |
| | | this.getListLoading = true; |
| | | this.stopUpdateList() |
| | | this.$set(row, 'startBtnLoading', true) |
| | | this.$axios({ |
| | | method: 'get', |
| | |
| | | app: row.app, |
| | | stream: row.stream |
| | | } |
| | | }).then(function (res) { |
| | | that.getListLoading = false; |
| | | that.$set(row, 'startBtnLoading', false) |
| | | }).then((res)=> { |
| | | if (res.data.code === 0){ |
| | | that.initData() |
| | | this.initData() |
| | | }else { |
| | | that.$message({ |
| | | this.$message({ |
| | | showClose: true, |
| | | message: "保存失败,请检查地址是否可用!", |
| | | message: "启动失败,请检查地址是否可用!", |
| | | type: "error", |
| | | }); |
| | | } |
| | | |
| | | }).catch(function (error) { |
| | | this.$set(row, 'startBtnLoading', false) |
| | | this.startUpdateList() |
| | | }).catch((error)=> { |
| | | console.log(error); |
| | | that.getListLoading = false; |
| | | that.$set(row, 'startBtnLoading', false) |
| | | this.$message({ |
| | | showClose: true, |
| | | message: "启动失败,请检查地址是否可用!", |
| | | type: "error", |
| | | }); |
| | | this.$set(row, 'startBtnLoading', false) |
| | | this.startUpdateList() |
| | | }); |
| | | }, |
| | | stop: function(row){ |
| | | let that = this; |
| | | this.getListLoading = true; |
| | | this.$axios({ |
| | | method: 'get', |
| | | url:`/api/proxy/stop`, |
| | |
| | | stream: row.stream |
| | | } |
| | | }).then(function (res) { |
| | | that.getListLoading = false; |
| | | that.initData() |
| | | }).catch(function (error) { |
| | | console.log(error); |
| | | that.getListLoading = false; |
| | | }); |
| | | }, |
| | | refresh: function (){ |
| | |
| | | <el-option label="组播" value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="国标平台"> |
| | | <el-form-item label="无人观看" prop="rtp_type" > |
| | | <el-select |
| | | v-model="proxyParam.platformGbId" |
| | | @change="noneReaderHandler" |
| | | v-model="proxyParam.none_reader" |
| | | style="width: 100%" |
| | | placeholder="请选择国标平台" |
| | | placeholder="请选择无人观看的处理方式" |
| | | > |
| | | <el-option |
| | | v-for="item in platformList" |
| | | :key="item.name" |
| | | :label="item.name" |
| | | :value="item.serverGBId"> |
| | | <span style="float: left">{{ item.name }}</span> |
| | | <span style="float: right; color: #8492a6; font-size: 13px">{{ item.serverGBId }}</span> |
| | | </el-option> |
| | | <el-option label="不做处理" value="0"></el-option> |
| | | <el-option label="停用" value="1"></el-option> |
| | | <el-option label="移除" value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="其他选项"> |
| | | <div style="float: left;"> |
| | | <el-checkbox label="启用" v-model="proxyParam.enable" ></el-checkbox> |
| | | <el-checkbox label="转HLS" v-model="proxyParam.enable_hls" ></el-checkbox> |
| | | <el-checkbox label="MP4录制" v-model="proxyParam.enable_mp4" ></el-checkbox> |
| | | <el-checkbox label="无人观看自动删除" v-model="proxyParam.enable_remove_none_reader" @change="removeNoneReader"></el-checkbox> |
| | | <el-checkbox label="无人观看停止拉流" v-model="proxyParam.enable_disable_none_reader" @change="disableNoneReaderHandType"></el-checkbox> |
| | | |
| | | <el-checkbox label="开启音频" v-model="proxyParam.enable_audio" ></el-checkbox> |
| | | <el-checkbox label="录制" v-model="proxyParam.enable_mp4" ></el-checkbox> |
| | | </div> |
| | | |
| | | </el-form-item> |
| | |
| | | gbId: null, |
| | | rtp_type: null, |
| | | enable: true, |
| | | enable_hls: true, |
| | | enable_audio: true, |
| | | enable_mp4: false, |
| | | none_reader: null, |
| | | enable_remove_none_reader: false, |
| | | enable_disable_none_reader: true, |
| | | enable_disable_none_reader: false, |
| | | platformGbId: null, |
| | | mediaServerId: null, |
| | | }, |
| | |
| | | this.listChangeCallback = callback; |
| | | if (proxyParam != null) { |
| | | this.proxyParam = proxyParam; |
| | | this.proxyParam.none_reader = null; |
| | | } |
| | | |
| | | let that = this; |
| | |
| | | }, |
| | | onSubmit: function () { |
| | | this.dialogLoading = true; |
| | | var that = this; |
| | | that.$axios({ |
| | | this.noneReaderHandler(); |
| | | this.$axios({ |
| | | method: 'post', |
| | | url:`/api/proxy/save`, |
| | | data: that.proxyParam |
| | | }).then(function (res) { |
| | | that.dialogLoading = false; |
| | | data: this.proxyParam |
| | | }).then((res)=> { |
| | | this.dialogLoading = false; |
| | | if (typeof (res.data.code) != "undefined" && res.data.code === 0) { |
| | | that.$message({ |
| | | this.$message({ |
| | | showClose: true, |
| | | message: res.data.msg, |
| | | type: "success", |
| | | }); |
| | | that.showDialog = false; |
| | | if (that.listChangeCallback != null) { |
| | | that.listChangeCallback(); |
| | | that.dialogLoading = false; |
| | | this.showDialog = false; |
| | | if (this.listChangeCallback != null) { |
| | | this.listChangeCallback(); |
| | | this.dialogLoading = false; |
| | | } |
| | | } |
| | | }).catch(function (error) { |
| | | }).catch((error) =>{ |
| | | console.log(error); |
| | | this.dialogLoading = false; |
| | | }); |
| | |
| | | this.platform.expires = "300"; |
| | | } |
| | | }, |
| | | removeNoneReader: function(checked) { |
| | | this.proxyParam.enable_disable_none_reader = !checked; |
| | | }, |
| | | disableNoneReaderHandType: function(checked) { |
| | | this.proxyParam.enable_remove_none_reader = !checked; |
| | | noneReaderHandler: function() { |
| | | if (this.proxyParam.none_reader === null || this.proxyParam.none_reader === "0") { |
| | | this.proxyParam.enable_disable_none_reader = false; |
| | | this.proxyParam.enable_remove_none_reader = false; |
| | | }else if (this.proxyParam.none_reader === "1"){ |
| | | this.proxyParam.enable_disable_none_reader = true; |
| | | this.proxyParam.enable_remove_none_reader = false; |
| | | }else if (this.proxyParam.none_reader ==="2"){ |
| | | this.proxyParam.enable_disable_none_reader = false; |
| | | this.proxyParam.enable_remove_none_reader = true; |
| | | } |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |