登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
登录
注册
代码拉取完成,页面将自动刷新
开源项目
>
程序开发
>
代码生成器
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
895
Star
6.1K
Fork
2.2K
开源oschina
/
SpringBoot_v2
代码
Issues
12
Pull Requests
0
Wiki
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
列表添加上传功能, 上传成功之后,列表刷新 导致第二次点击再次上传失效
待办的
#I5HG45
--
创建于
2022-07-17 16:43
列表自己练习的时候添加上传功能, 上传成功之后,列表刷新. 调用的table.reload()方法刷新列表, 然后 导致第二次点击再次上传失效 完整代码如下, 感觉是 table.render的毛病, 但是试了几种方法,没有解决掉 ``` <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.pollix.at/thymeleaf/shiro"> <head> <th:block th:include="include :: header('管理列表')"/> </head> <body class="pear-container"> <div class="layui-card"> <div class="layui-card-body"> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">姓名</label> <div class="layui-input-inline"> <input type="text" name="name" placeholder="请输入乘机人姓名" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">证件号</label> <div class="layui-input-inline"> <input type="text" name="idNumber" lay-verify="idNumber" autocomplete="off" placeholder="请输入证件号" class="layui-input"> </div> <button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="draftIssue-update"> <i class="layui-icon layui-icon-ok"></i> 开始注册 </button> </div> </form> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">查询</label> <div class="layui-input-inline"> <input type="text" name="searchText" placeholder="请输入姓名或证件号查询" autocomplete="off" class="layui-input"> </div> <button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="draftIssue-query"> <i class="layui-icon layui-icon-search"></i> 查询 </button> <button type="reset" class="pear-btn pear-btn-md"> <i class="layui-icon layui-icon-refresh"></i> 重置 </button> </div> </form> </div> </div> <div class="layui-card"> <div class="layui-card-body"> <table id="draftIssue-table" lay-filter="draftIssue-table"></table> </div> </div> </body> <script type="text/html" id="draftIssue-toolbar"> <!--<button shiro:hasPermission="gen:draftIssue:add" class="pear-btn pear-btn-primary pear-btn-md" lay-event="add"> <i class="layui-icon layui-icon-add-1"></i> 开始注册 </button>--> <button shiro:hasPermission="gen:draftIssue:remove" class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove"> <i class="layui-icon layui-icon-delete"></i> 删除 </button> <!--<button shiro:hasPermission="gen:draftIssue:add" class="pear-btn pear-btn-danger pear-btn-md" id="test01" onclick="uploads()" lay-data="{accept: 'file'}">上传文件</button>--> <button shiro:hasPermission="gen:draftIssue:add" class="pear-btn pear-btn-danger pear-btn-md" id="test01" lay-data="{accept: 'file'}">上传文件</button> </script> <script type="text/html" id="draftIssue-bar"> <button shiro:hasPermission="gen:draftIssue:edit" class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit" title="修改"><i class="layui-icon layui-icon-edit"></i> </button> <button shiro:hasPermission="gen:draftIssue:remove" class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove" title="删除"><i class="layui-icon layui-icon-delete"></i> </button> </script> <script type="text/javascript" th:inline="javascript"> window.selectDictLabel=function(datas, value) { var actions = []; $.each(datas, function(index, dict) { if (dict.dictValue == ('' + value)) { var listClass = ("default"== dict.listClass) ? "" : "badge badge-" + dict.listClass; actions.push(sprintf("<span class='%s'>%s</span>", listClass, dict.dictLabel)); return false; } }); return actions.join(''); } window.sprintf=function (str) { var args = arguments, flag = true, i = 1; str = str.replace(/%s/g, function () { var arg = args[i++]; if (typeof arg === 'undefined') { flag = false; return ''; } return arg; }); return flag ? str : ''; } </script> <th:block th:include="include :: footer"/> <script> /*$(function () { setInterval(refreshData, 3000); });*/ function refreshData() { layui.use(['table'], function () { let table = layui.table; table.reload("draftIssue-table"); }) } layui.use(['table', 'form', 'jquery','upload'], function () { let table = layui.table; let form = layui.form; let $ = layui.jquery; let MODULE_PATH = rootPath+"/DraftIssueController/"; let cols = [ [ {type: 'checkbox'}, {title: '序号', field: 'id', align: 'center'}, {title: '姓名', field: 'name', align: 'center'}, {title: '证件号', field: 'idNumber', align: 'center'}, //{title: '会员号', field: 'memberNumber', align: 'center'}, //{title: '用户id(做数据权限用)', field: 'userId', align: 'center'}, {title: '账号', field: 'account', align: 'center'}, {title: '密码', field: 'password', align: 'center'}, {title: '注册状态', field: 'isSuccess', align: 'center'}, //{title: '是否删除', field: 'isDelete', align: 'center'}, {title: '错误信息', field: 'content', align: 'center'}, {title: '操作', toolbar: '#draftIssue-bar', align: 'center'} ] ] //table表单列表 table.render({ elem: '#draftIssue-table', url: MODULE_PATH + 'list', page: true, method: 'get', cols: cols, skin: 'line', toolbar: '#draftIssue-toolbar', defaultToolbar: [{ layEvent: 'refresh',title:'刷新', icon: 'layui-icon-refresh', }, 'filter', 'print', 'exports'] , done: function (value, date, endDate) { //重新绑定,upload方法 bindTableToolbarFunction() } }); //table图标事件绑定 table.on('tool(draftIssue-table)', function (obj) { if (obj.event === 'remove') { window.remove(obj); } else if (obj.event === 'edit') { window.edit(obj); } }); //table工具栏绑定 table.on('toolbar(draftIssue-table)', function (obj) { if (obj.event === 'add') { window.add(); } else if (obj.event === 'refresh') { //window.refresh(); table.reload('draftIssue-table'); } else if (obj.event === 'batchRemove') { window.batchRemove(obj); } }); //查询按钮绑定 form.on('submit(draftIssue-query)', function (data) { table.reload('draftIssue-table', {page: {curr: 1}, where: data.field}) return false; }); //添加 window.add = function () { layer.open({ type: 2, title: '新增', shade: 0.1, area: ['500px', '500px'], content: MODULE_PATH + 'add' }); } //修改 window.edit = function (obj) { layer.open({ type: 2, title: '修改', shade: 0.1, area: ['500px', '500px'], content: MODULE_PATH + 'edit/' + obj.data['id'] }); } //删除 window.remove = function (obj) { layer.confirm('确定要删除该数据', {icon: 3, title: '提示'}, function (index) { layer.close(index); let loading = layer.load(); $.ajax({ url: MODULE_PATH + "remove?ids=" + obj.data['id'], dataType: 'json', type: 'delete', success: function (result) { layer.close(loading); if (result.code==200) { layer.msg(result.msg, {icon: 1, time: 1000}, function () { obj.del(); }); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }) }); } //批量删除 window.batchRemove = function (obj) { let data = table.checkStatus(obj.config.id).data; if (data.length === 0) { layer.msg("未选中数据", {icon: 3, time: 1000}); return false; } let ids = ""; for (let i = 0; i < data.length; i++) { ids += data[i].id + ","; } ids = ids.substr(0, ids.length - 1); layer.confirm('确定要删除这些数据', {icon: 3, title: '提示'}, function (index) { layer.close(index); let loading = layer.load(); $.ajax({ url: MODULE_PATH + "remove?ids=" + ids, dataType: 'json', type: 'delete', success: function (result) { layer.close(loading); if (result.code==200) { layer.msg(result.msg, {icon: 1, time: 1000}, function () { table.reload('draftIssue-table'); }); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }) }); } //刷新按钮 window.refresh = function () { table.reload('draftIssue-table'); } //名称验证 form.verify({ idNumber: function(value){ if(value.length < 2){ return '至少得2个字符'; } var msg = ""; $.ajax({ url: MODULE_PATH+'/checkNameUnique', data: "idNumber="+value, dataType: 'json', type: 'post', async:false, success: function (result) { msg=result; } }); if (msg == 1) { return "已存在相同证件号"; } } }); //开始注册 form.on('submit(draftIssue-update)', function (data) { //let loader = layer.load(); $.ajax({ url: MODULE_PATH+'/add', data: data.field, dataType: 'json', contentType: 'application/x-www-form-urlencoded', type: 'post', success: function (result) { if (result.code==200) { layer.msg(result.msg, {icon: 1, time: 1000}, function () { //parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页 //parent.layui.table.reload("draftIssue-table"); table.reload('draftIssue-table'); }); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }) return false; }); }) </script> <script> //定义在外部的变量 //upload所需的options let upload_info_obj; //upload对象 let upload; //用于判断的值 let sort=0; //用于接收upload.render()返回的对象 let renderObj; let UPLOAD_PATH = rootPath+"/FileController"; function doUpload_info() { layui.use(['upload','table','form','jquery'], function () { let table = layui.table; upload = layui.upload; //拖拽上传 upload_info_obj= upload.render({ elem: '#test01' ,field: 'file' //设定文件域的字段名 ,url: UPLOAD_PATH+"/import" ,done: function(result){ if (result.code==200) { layer.msg('上传成功'); table.reload("draftIssue-table"); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } ,error: function(e){ alert("请求异常"+e); } }); }); //接收upload.render()返回的对象 renderObj=upload.render(upload_info_obj); } /*function uploads(){ if (sort == 1) { //如果已选择过,那么需要重新加载-----重点在这!!!! renderObj.reload(upload_info_obj); }else{ //唤起上传控件 doUpload_info(); } }*/ </script> <script> /*layui.use(['table', 'jquery','upload'], function () { let table = layui.table; let upload = layui.upload; let UPLOAD_PATH = rootPath+"/FileController"; //拖拽上传 文档:https://www.layui.com/doc/modules/upload.html upload.render({ elem: '#test01' ,url: UPLOAD_PATH+"/import" //改成您自己的上传接口 ,field: 'file' //设定文件域的字段名 ,done: function(result){ if (result.code==200) { layer.msg('上传成功'); table.reload("draftIssue-table"); bindTableToolbarFunction(); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }); })*/ function bindTableToolbarFunction(){ //这里重新定义 layui.upload layui.use(['table', 'jquery','upload'], function () { let table = layui.table; let upload = layui.upload; let UPLOAD_PATH = rootPath+"/FileController"; //拖拽上传 文档:https://www.layui.com/doc/modules/upload.html let uploadInst = upload.render({ elem: '#test01' ,url: UPLOAD_PATH+"/import" //改成您自己的上传接口 ,field: 'file' //设定文件域的字段名 ,done: function(result){ if (result.code==200) { layer.msg('上传成功'); table.reload("draftIssue-table"); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }); }) } </script> </html> ```
列表自己练习的时候添加上传功能, 上传成功之后,列表刷新. 调用的table.reload()方法刷新列表, 然后 导致第二次点击再次上传失效 完整代码如下, 感觉是 table.render的毛病, 但是试了几种方法,没有解决掉 ``` <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.pollix.at/thymeleaf/shiro"> <head> <th:block th:include="include :: header('管理列表')"/> </head> <body class="pear-container"> <div class="layui-card"> <div class="layui-card-body"> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">姓名</label> <div class="layui-input-inline"> <input type="text" name="name" placeholder="请输入乘机人姓名" autocomplete="off" class="layui-input"> </div> <label class="layui-form-label">证件号</label> <div class="layui-input-inline"> <input type="text" name="idNumber" lay-verify="idNumber" autocomplete="off" placeholder="请输入证件号" class="layui-input"> </div> <button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="draftIssue-update"> <i class="layui-icon layui-icon-ok"></i> 开始注册 </button> </div> </form> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">查询</label> <div class="layui-input-inline"> <input type="text" name="searchText" placeholder="请输入姓名或证件号查询" autocomplete="off" class="layui-input"> </div> <button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="draftIssue-query"> <i class="layui-icon layui-icon-search"></i> 查询 </button> <button type="reset" class="pear-btn pear-btn-md"> <i class="layui-icon layui-icon-refresh"></i> 重置 </button> </div> </form> </div> </div> <div class="layui-card"> <div class="layui-card-body"> <table id="draftIssue-table" lay-filter="draftIssue-table"></table> </div> </div> </body> <script type="text/html" id="draftIssue-toolbar"> <!--<button shiro:hasPermission="gen:draftIssue:add" class="pear-btn pear-btn-primary pear-btn-md" lay-event="add"> <i class="layui-icon layui-icon-add-1"></i> 开始注册 </button>--> <button shiro:hasPermission="gen:draftIssue:remove" class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove"> <i class="layui-icon layui-icon-delete"></i> 删除 </button> <!--<button shiro:hasPermission="gen:draftIssue:add" class="pear-btn pear-btn-danger pear-btn-md" id="test01" onclick="uploads()" lay-data="{accept: 'file'}">上传文件</button>--> <button shiro:hasPermission="gen:draftIssue:add" class="pear-btn pear-btn-danger pear-btn-md" id="test01" lay-data="{accept: 'file'}">上传文件</button> </script> <script type="text/html" id="draftIssue-bar"> <button shiro:hasPermission="gen:draftIssue:edit" class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit" title="修改"><i class="layui-icon layui-icon-edit"></i> </button> <button shiro:hasPermission="gen:draftIssue:remove" class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove" title="删除"><i class="layui-icon layui-icon-delete"></i> </button> </script> <script type="text/javascript" th:inline="javascript"> window.selectDictLabel=function(datas, value) { var actions = []; $.each(datas, function(index, dict) { if (dict.dictValue == ('' + value)) { var listClass = ("default"== dict.listClass) ? "" : "badge badge-" + dict.listClass; actions.push(sprintf("<span class='%s'>%s</span>", listClass, dict.dictLabel)); return false; } }); return actions.join(''); } window.sprintf=function (str) { var args = arguments, flag = true, i = 1; str = str.replace(/%s/g, function () { var arg = args[i++]; if (typeof arg === 'undefined') { flag = false; return ''; } return arg; }); return flag ? str : ''; } </script> <th:block th:include="include :: footer"/> <script> /*$(function () { setInterval(refreshData, 3000); });*/ function refreshData() { layui.use(['table'], function () { let table = layui.table; table.reload("draftIssue-table"); }) } layui.use(['table', 'form', 'jquery','upload'], function () { let table = layui.table; let form = layui.form; let $ = layui.jquery; let MODULE_PATH = rootPath+"/DraftIssueController/"; let cols = [ [ {type: 'checkbox'}, {title: '序号', field: 'id', align: 'center'}, {title: '姓名', field: 'name', align: 'center'}, {title: '证件号', field: 'idNumber', align: 'center'}, //{title: '会员号', field: 'memberNumber', align: 'center'}, //{title: '用户id(做数据权限用)', field: 'userId', align: 'center'}, {title: '账号', field: 'account', align: 'center'}, {title: '密码', field: 'password', align: 'center'}, {title: '注册状态', field: 'isSuccess', align: 'center'}, //{title: '是否删除', field: 'isDelete', align: 'center'}, {title: '错误信息', field: 'content', align: 'center'}, {title: '操作', toolbar: '#draftIssue-bar', align: 'center'} ] ] //table表单列表 table.render({ elem: '#draftIssue-table', url: MODULE_PATH + 'list', page: true, method: 'get', cols: cols, skin: 'line', toolbar: '#draftIssue-toolbar', defaultToolbar: [{ layEvent: 'refresh',title:'刷新', icon: 'layui-icon-refresh', }, 'filter', 'print', 'exports'] , done: function (value, date, endDate) { //重新绑定,upload方法 bindTableToolbarFunction() } }); //table图标事件绑定 table.on('tool(draftIssue-table)', function (obj) { if (obj.event === 'remove') { window.remove(obj); } else if (obj.event === 'edit') { window.edit(obj); } }); //table工具栏绑定 table.on('toolbar(draftIssue-table)', function (obj) { if (obj.event === 'add') { window.add(); } else if (obj.event === 'refresh') { //window.refresh(); table.reload('draftIssue-table'); } else if (obj.event === 'batchRemove') { window.batchRemove(obj); } }); //查询按钮绑定 form.on('submit(draftIssue-query)', function (data) { table.reload('draftIssue-table', {page: {curr: 1}, where: data.field}) return false; }); //添加 window.add = function () { layer.open({ type: 2, title: '新增', shade: 0.1, area: ['500px', '500px'], content: MODULE_PATH + 'add' }); } //修改 window.edit = function (obj) { layer.open({ type: 2, title: '修改', shade: 0.1, area: ['500px', '500px'], content: MODULE_PATH + 'edit/' + obj.data['id'] }); } //删除 window.remove = function (obj) { layer.confirm('确定要删除该数据', {icon: 3, title: '提示'}, function (index) { layer.close(index); let loading = layer.load(); $.ajax({ url: MODULE_PATH + "remove?ids=" + obj.data['id'], dataType: 'json', type: 'delete', success: function (result) { layer.close(loading); if (result.code==200) { layer.msg(result.msg, {icon: 1, time: 1000}, function () { obj.del(); }); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }) }); } //批量删除 window.batchRemove = function (obj) { let data = table.checkStatus(obj.config.id).data; if (data.length === 0) { layer.msg("未选中数据", {icon: 3, time: 1000}); return false; } let ids = ""; for (let i = 0; i < data.length; i++) { ids += data[i].id + ","; } ids = ids.substr(0, ids.length - 1); layer.confirm('确定要删除这些数据', {icon: 3, title: '提示'}, function (index) { layer.close(index); let loading = layer.load(); $.ajax({ url: MODULE_PATH + "remove?ids=" + ids, dataType: 'json', type: 'delete', success: function (result) { layer.close(loading); if (result.code==200) { layer.msg(result.msg, {icon: 1, time: 1000}, function () { table.reload('draftIssue-table'); }); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }) }); } //刷新按钮 window.refresh = function () { table.reload('draftIssue-table'); } //名称验证 form.verify({ idNumber: function(value){ if(value.length < 2){ return '至少得2个字符'; } var msg = ""; $.ajax({ url: MODULE_PATH+'/checkNameUnique', data: "idNumber="+value, dataType: 'json', type: 'post', async:false, success: function (result) { msg=result; } }); if (msg == 1) { return "已存在相同证件号"; } } }); //开始注册 form.on('submit(draftIssue-update)', function (data) { //let loader = layer.load(); $.ajax({ url: MODULE_PATH+'/add', data: data.field, dataType: 'json', contentType: 'application/x-www-form-urlencoded', type: 'post', success: function (result) { if (result.code==200) { layer.msg(result.msg, {icon: 1, time: 1000}, function () { //parent.layer.close(parent.layer.getFrameIndex(window.name));//关闭当前页 //parent.layui.table.reload("draftIssue-table"); table.reload('draftIssue-table'); }); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }) return false; }); }) </script> <script> //定义在外部的变量 //upload所需的options let upload_info_obj; //upload对象 let upload; //用于判断的值 let sort=0; //用于接收upload.render()返回的对象 let renderObj; let UPLOAD_PATH = rootPath+"/FileController"; function doUpload_info() { layui.use(['upload','table','form','jquery'], function () { let table = layui.table; upload = layui.upload; //拖拽上传 upload_info_obj= upload.render({ elem: '#test01' ,field: 'file' //设定文件域的字段名 ,url: UPLOAD_PATH+"/import" ,done: function(result){ if (result.code==200) { layer.msg('上传成功'); table.reload("draftIssue-table"); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } ,error: function(e){ alert("请求异常"+e); } }); }); //接收upload.render()返回的对象 renderObj=upload.render(upload_info_obj); } /*function uploads(){ if (sort == 1) { //如果已选择过,那么需要重新加载-----重点在这!!!! renderObj.reload(upload_info_obj); }else{ //唤起上传控件 doUpload_info(); } }*/ </script> <script> /*layui.use(['table', 'jquery','upload'], function () { let table = layui.table; let upload = layui.upload; let UPLOAD_PATH = rootPath+"/FileController"; //拖拽上传 文档:https://www.layui.com/doc/modules/upload.html upload.render({ elem: '#test01' ,url: UPLOAD_PATH+"/import" //改成您自己的上传接口 ,field: 'file' //设定文件域的字段名 ,done: function(result){ if (result.code==200) { layer.msg('上传成功'); table.reload("draftIssue-table"); bindTableToolbarFunction(); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }); })*/ function bindTableToolbarFunction(){ //这里重新定义 layui.upload layui.use(['table', 'jquery','upload'], function () { let table = layui.table; let upload = layui.upload; let UPLOAD_PATH = rootPath+"/FileController"; //拖拽上传 文档:https://www.layui.com/doc/modules/upload.html let uploadInst = upload.render({ elem: '#test01' ,url: UPLOAD_PATH+"/import" //改成您自己的上传接口 ,field: 'file' //设定文件域的字段名 ,done: function(result){ if (result.code==200) { layer.msg('上传成功'); table.reload("draftIssue-table"); } else { layer.msg(result.msg, {icon: 2, time: 1000}); } } }); }) } </script> </html> ```
评论 (
0
)
登录
后才可以发表评论
状态
待办的
待办的
进行中
已完成
已关闭
负责人
未设置
标签
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (7)
标签 (3)
sa-token
master
mybatis-plus
ccflow
table完整例子
20210101v2
不局部刷新
v4.0
3.1
v2.0.0
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(1)
Java
1
https://gitee.com/bdj/SpringBoot_v2.git
git@gitee.com:bdj/SpringBoot_v2.git
bdj
SpringBoot_v2
SpringBoot_v2
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册