commit
43dafdc95b
@ -0,0 +1,363 @@
|
|||||||
|
class PullRequestsController < ApplicationController
|
||||||
|
before_action :require_login
|
||||||
|
before_action :set_project
|
||||||
|
before_action :find_pull_request, except: [:index, :new, :create]
|
||||||
|
include TagChosenHelper
|
||||||
|
include ApplicationHelper
|
||||||
|
|
||||||
|
|
||||||
|
def index
|
||||||
|
# @issues = Gitea::PullRequest::ListService.new(@user,@repository.try(:identifier)).call #通过gitea获取
|
||||||
|
issues = @project.issues.issue_pull_request.includes(:user,:tracker, :priority, :version, :issue_status, :journals, :issue_times)
|
||||||
|
issues = issues.where(is_private: false) unless current_user.present? && (current_user.admin? || @project.member?(current_user))
|
||||||
|
@all_issues_size = issues.size
|
||||||
|
@open_issues_size = issues.where.not(status_id: 5).size
|
||||||
|
@close_issues_size = issues.where(status_id: 5).size
|
||||||
|
@assign_to_me_size = issues.where(assigned_to_id: current_user&.id).size
|
||||||
|
@my_published_size = issues.where(author_id: current_user&.id).size
|
||||||
|
|
||||||
|
status_type = params[:status_type].to_s #issue状态的选择
|
||||||
|
search_name = params[:search].to_s
|
||||||
|
start_time = params[:start_date]
|
||||||
|
end_time = params[:due_date]
|
||||||
|
|
||||||
|
if status_type.to_s == "1" #表示开启中的
|
||||||
|
issues = issues.where.not(status_id: 5)
|
||||||
|
elsif status_type.to_s == "2" #表示关闭中的
|
||||||
|
issues = issues.where(status_id: 5)
|
||||||
|
end
|
||||||
|
|
||||||
|
if search_name.present?
|
||||||
|
issues = issues.where("subject like ?", "%#{search_name}%")
|
||||||
|
end
|
||||||
|
|
||||||
|
if start_time&.present? || end_time&.present?
|
||||||
|
issues = issues.where("start_date between ? and ?",start_time&.present? ? start_time.to_date : Time.now.to_date, end_time&.present? ? end_time.to_date : Time.now.to_date)
|
||||||
|
end
|
||||||
|
|
||||||
|
issues = issues.where(author_id: params[:author_id]) if params[:author_id].present?
|
||||||
|
issues = issues.where(assigned_to_id: params[:assigned_to_id]) if params[:assigned_to_id].present?
|
||||||
|
issues = issues.where(tracker_id: params[:tracker_id]) if params[:tracker_id].present?
|
||||||
|
issues = issues.where(status_id: params[:status_id]) if params[:status_id].present?
|
||||||
|
issues = issues.where(priority_id: params[:priority_id]) if params[:priority_id].present?
|
||||||
|
issues = issues.where(fixed_version_id: params[:fixed_version_id]) if params[:fixed_version_id].present?
|
||||||
|
issues = issues.where(done_ratio: params[:done_ratio].to_i) if params[:done_ratio].present?
|
||||||
|
issues = issues.where(issue_type: params[:issue_type]) if params[:issue_type].present?
|
||||||
|
issues = issues.joins(:issue_tags).where(issue_tags: {id: params[:issue_tag_id].to_i}) if params[:issue_tag_id].present?
|
||||||
|
|
||||||
|
order_type = params[:order_type] || "desc" #或者"asc"
|
||||||
|
order_name = params[:order_name] || "created_on" #或者"updated_on"
|
||||||
|
|
||||||
|
@page = params[:page]
|
||||||
|
@limit = params[:limit] || 15
|
||||||
|
@issues = issues.order("#{order_name} #{order_type}")
|
||||||
|
@issues_size = issues.size
|
||||||
|
@issues = issues.order("#{order_name} #{order_type}").page(@page).per(@limit)
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@all_branches = []
|
||||||
|
get_all_branches = Gitea::Repository::BranchesService.new(@user, @repository.try(:identifier)).call
|
||||||
|
if get_all_branches && get_all_branches.size > 0
|
||||||
|
get_all_branches.each do |b|
|
||||||
|
@all_branches.push(b["name"])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
@project_tags = @project.issue_tags&.select(:id,:name, :color).as_json
|
||||||
|
@project_versions = @project.versions&.select(:id,:name, :status).as_json
|
||||||
|
@project_members = @project.members_user_infos
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
|
||||||
|
if params[:title].nil?
|
||||||
|
normal_status(-1, "名称不能为空")
|
||||||
|
elsif params[:issue_tag_ids].nil?
|
||||||
|
normal_status(-1, "标签不能为空")
|
||||||
|
else
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
begin
|
||||||
|
local_params = {
|
||||||
|
title: params[:title], #标题
|
||||||
|
body: params[:body], #内容
|
||||||
|
head: params[:head], #源分支
|
||||||
|
base: params[:base], #目标分支
|
||||||
|
milestone: params[:fixed_version_id].to_i, #里程碑
|
||||||
|
}
|
||||||
|
requests_params = local_params.merge({
|
||||||
|
assignee: current_user.try(:login),
|
||||||
|
assignees: ["#{params[:assigned_login].to_s}"],
|
||||||
|
labels: params[:issue_tag_ids],
|
||||||
|
due_date: Time.now
|
||||||
|
})
|
||||||
|
issue_params = {
|
||||||
|
author_id: current_user.id,
|
||||||
|
project_id: @project.id,
|
||||||
|
subject: params[:title],
|
||||||
|
description: params[:body],
|
||||||
|
assigned_to_id: params[:assigned_to_id].to_s,
|
||||||
|
fixed_version_id: params[:fixed_version_id],
|
||||||
|
issue_tags_value: params[:issue_tag_ids].present? ? params[:issue_tag_ids].join(",") : "",
|
||||||
|
issue_classify: "pull_request",
|
||||||
|
tracker_id: 2,
|
||||||
|
status_id: 1,
|
||||||
|
priority_id: 1
|
||||||
|
}
|
||||||
|
pull_issue = Issue.new(issue_params)
|
||||||
|
if pull_issue.save!
|
||||||
|
local_requests = PullRequest.new(local_params.merge(user_id: current_user.try(:id), project_id: @project.id, issue_id: pull_issue.id))
|
||||||
|
if local_requests.save
|
||||||
|
gitea_request = Gitea::PullRequest::CreateService.new(current_user, @repository.try(:identifier), requests_params).call
|
||||||
|
if gitea_request && local_requests.update_attributes(gpid: gitea_request["number"])
|
||||||
|
if params[:issue_tag_ids].present?
|
||||||
|
params[:issue_tag_ids].each do |tag|
|
||||||
|
IssueTagsRelate.create!(issue_id: pull_issue.id, issue_tag_id: tag)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if params[:attachment_ids].present?
|
||||||
|
params[:attachment_ids].each do |id|
|
||||||
|
attachment = Attachment.select(:id, :container_id, :container_type)&.find_by_id(id)
|
||||||
|
unless attachment.blank?
|
||||||
|
attachment.container = pull_issue
|
||||||
|
attachment.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if params[:assigned_to_id].present?
|
||||||
|
Tiding.create!(user_id: params[:assigned_to_id], trigger_user_id: current_user.id,
|
||||||
|
container_id: local_requests.id, container_type: 'PullRequest',
|
||||||
|
parent_container_id: @project.id, parent_container_type: "Project",
|
||||||
|
tiding_type: 'pull_request', status: 0)
|
||||||
|
end
|
||||||
|
local_requests.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "create")
|
||||||
|
if params[:title].to_s.include?("WIP:")
|
||||||
|
pull_issue.custom_journal_detail("WIP", "", "这个合并请求被标记为尚未完成的工作。完成后请从标题中移除WIP:前缀。")
|
||||||
|
end
|
||||||
|
normal_status(0, "PullRequest创建成功")
|
||||||
|
else
|
||||||
|
normal_status(-1, "PullRequest创建失败")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
normal_status(-1, "PullRequest创建失败")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
rescue => e
|
||||||
|
normal_status(-1, e.message)
|
||||||
|
raise ActiveRecord::Rollback
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@issue_chosen = issue_left_chosen(@project, @issue.id)
|
||||||
|
@issue_attachments = @issue.attachments
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
if params[:title].nil?
|
||||||
|
normal_status(-1, "名称不能为空")
|
||||||
|
elsif params[:issue_tag_ids].nil?
|
||||||
|
normal_status(-1, "标签不能为空")
|
||||||
|
else
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
begin
|
||||||
|
local_params = {
|
||||||
|
title: params[:title], #标题
|
||||||
|
body: params[:body], #内容
|
||||||
|
head: params[:head], #源分支
|
||||||
|
base: params[:base], #目标分支
|
||||||
|
milestone: params[:fixed_version_id].to_i, #里程碑
|
||||||
|
}
|
||||||
|
requests_params = local_params.merge({
|
||||||
|
assignee: current_user.try(:login),
|
||||||
|
assignees: ["#{params[:assigned_login].to_s}"],
|
||||||
|
labels: params[:issue_tag_ids]
|
||||||
|
})
|
||||||
|
issue_params = {
|
||||||
|
subject: params[:title],
|
||||||
|
description: params[:body],
|
||||||
|
assigned_to_id: params[:assigned_to_id].to_s,
|
||||||
|
fixed_version_id: params[:fixed_version_id],
|
||||||
|
issue_tags_value: params[:issue_tag_ids].present? ? params[:issue_tag_ids].join(",") : "",
|
||||||
|
}
|
||||||
|
if @issue.update_attributes(issue_params)
|
||||||
|
if @pull_request.update_attributes(local_params)
|
||||||
|
gitea_request = Gitea::PullRequest::UpdateService.new(current_user, @repository.try(:identifier), requests_params, @pull_request.try(:gpid)).call
|
||||||
|
if gitea_request
|
||||||
|
issue_files = params[:attachment_ids]
|
||||||
|
change_files = false
|
||||||
|
issue_file_ids = []
|
||||||
|
if issue_files.present?
|
||||||
|
issue_attachments = @issue&.attachments
|
||||||
|
issue_file_ids = issue_attachments&.pluck(:id)
|
||||||
|
left_file_ids = issue_file_ids - issue_files
|
||||||
|
new_file_ids = issue_files - issue_file_ids
|
||||||
|
if left_file_ids.size > 0
|
||||||
|
change_files = true
|
||||||
|
issue_attachments.where(id: left_file_ids).delete_all
|
||||||
|
end
|
||||||
|
if new_file_ids.size > 0
|
||||||
|
change_files = true
|
||||||
|
new_file_ids.each do |id|
|
||||||
|
attachment = Attachment.select(:id, :container_id, :container_type)&.find_by_id(id)
|
||||||
|
unless attachment.blank?
|
||||||
|
attachment.container = @issue
|
||||||
|
attachment.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if params[:issue_tag_ids].present?
|
||||||
|
issue_current_tags = @issue&.issue_tags&.select(:id)&.pluck(:id)
|
||||||
|
new_tag_ids = params[:issue_tag_ids] - issue_current_tags
|
||||||
|
old_tag_ids = issue_current_tags - params[:issue_tag_ids]
|
||||||
|
if old_tag_ids.size > 0
|
||||||
|
@issue.issue_tags_relates.where(issue_tag_id: old_tag_ids).delete_all
|
||||||
|
end
|
||||||
|
if new_tag_ids.size > 0
|
||||||
|
new_tag_ids.each do |tag|
|
||||||
|
IssueTagsRelate.create(issue_id: @issue.id, issue_tag_id: tag)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if params[:status_id].to_i == 5
|
||||||
|
@issue.issue_times.update_all(end_time: Time.now)
|
||||||
|
end
|
||||||
|
@issue.create_journal_detail(change_files, issue_files, issue_file_ids)
|
||||||
|
normal_status(0, "PullRequest更新成功")
|
||||||
|
else
|
||||||
|
normal_status(-1, "PullRequest更新失败")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
normal_status(-1, "PullRequest更新失败")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
rescue => e
|
||||||
|
normal_status(-1, e.message)
|
||||||
|
raise ActiveRecord::Rollback
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@user_permission = current_user.present? && (!@issue.is_lock || @project.member?(current_user) || current_user.admin? || @issue.user == current_user)
|
||||||
|
@issue_attachments = @issue.attachments
|
||||||
|
@issue_user = @issue.user
|
||||||
|
@issue_assign_to = @issue.get_assign_user
|
||||||
|
@join_users = join_users(@issue)
|
||||||
|
#总耗时
|
||||||
|
cost_time(@issue)
|
||||||
|
|
||||||
|
#被依赖
|
||||||
|
@be_depended_issues_array = be_depended_issues(@issue)
|
||||||
|
|
||||||
|
#依赖于
|
||||||
|
depended_issues(@issue)
|
||||||
|
end
|
||||||
|
|
||||||
|
def pr_merge
|
||||||
|
if params[:do].blank?
|
||||||
|
normal_status(-1, "请选择合并方式")
|
||||||
|
else
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
begin
|
||||||
|
requests_params = {
|
||||||
|
do: params[:do],
|
||||||
|
MergeMessageField: params[:body],
|
||||||
|
MergeTitleField: params[:title]
|
||||||
|
}
|
||||||
|
merge_pr = Gitea::PullRequest::MergeService.new(current_user, @repository.try(:identifier), @pull_request.try(:gpid), requests_params).call
|
||||||
|
if @pull_request.update_attribute(:status, 1) && merge_pr
|
||||||
|
@pull_request.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "merge")
|
||||||
|
@issue.custom_journal_detail("merge", "", "该合并请求已被合并")
|
||||||
|
normal_status(1, "合并成功")
|
||||||
|
else
|
||||||
|
normal_status(-1, "合并失败")
|
||||||
|
end
|
||||||
|
rescue => e
|
||||||
|
normal_status(-1, e.message)
|
||||||
|
raise ActiveRecord::Rollback
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#评审
|
||||||
|
def check_merge
|
||||||
|
notes = params[:content]
|
||||||
|
pull_request_status = params[:status]
|
||||||
|
if notes.blank?
|
||||||
|
normal_status(-1, "评论内容不能为空")
|
||||||
|
else
|
||||||
|
if @pull_request.status > 0
|
||||||
|
normal_status(-1, "已合并,不能评审")
|
||||||
|
else
|
||||||
|
if pull_request_status.to_i == 1
|
||||||
|
message = "评审通过:"
|
||||||
|
elsif pull_request_status.to_i == 2
|
||||||
|
message = "评审请求变更:"
|
||||||
|
else
|
||||||
|
message = ""
|
||||||
|
end
|
||||||
|
journal_params = {
|
||||||
|
journalized_id: @issue.id ,
|
||||||
|
journalized_type: "Issue",
|
||||||
|
user_id: current_user.id ,
|
||||||
|
notes: message + notes.to_s.strip
|
||||||
|
}
|
||||||
|
journal = Journal.new journal_params
|
||||||
|
if journal.save
|
||||||
|
if pull_request_status.present?
|
||||||
|
@pull_request.update_attribute(:status, pull_request_status.to_i)
|
||||||
|
end
|
||||||
|
if pull_request_status.to_i == 1
|
||||||
|
requests_params = {
|
||||||
|
do: "merge",
|
||||||
|
MergeMessageField: notes,
|
||||||
|
MergeTitleField: "Merge PullRequest ##{@pull_request.gpid}"
|
||||||
|
}
|
||||||
|
merge_pr = Gitea::PullRequest::MergeService.new(current_user, @repository.try(:identifier), @pull_request.try(:gpid), requests_params).call
|
||||||
|
if merge_pr
|
||||||
|
@pull_request.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "merge")
|
||||||
|
@issue.custom_journal_detail("merge", "", "该合并请求已被合并")
|
||||||
|
normal_status(1, "评审成功")
|
||||||
|
else
|
||||||
|
normal_status(-1, "评审失败")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
normal_status(0, "评审成功")
|
||||||
|
else
|
||||||
|
normal_status(-1, "评审失败")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_project
|
||||||
|
@project = Project.find_by_id(params[:project_id])
|
||||||
|
@repository = @project.repository
|
||||||
|
@user = @project.owner
|
||||||
|
normal_status(-1, "项目不存在") unless @project.present?
|
||||||
|
normal_status(-1, "仓库不存在") unless @repository.present?
|
||||||
|
normal_status(-1, "用户不存在") unless @user.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_pull_request
|
||||||
|
@pull_request = PullRequest.find_by_id(params[:id])
|
||||||
|
@issue = @pull_request.issue
|
||||||
|
if @pull_request.blank?
|
||||||
|
normal_status(-1, "合并请求不存在")
|
||||||
|
elsif @issue.is_lock &&!(@project.member?(current_user) || current_user.admin?)
|
||||||
|
normal_status(-1, "您没有权限")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,205 @@
|
|||||||
|
module TagChosenHelper
|
||||||
|
|
||||||
|
def issue_left_chosen(project,issue_id)
|
||||||
|
issue_info = Array.new(11)
|
||||||
|
use_tags = []
|
||||||
|
issue_comment_users_array = []
|
||||||
|
cost_time_array = []
|
||||||
|
all_cost_time = 0
|
||||||
|
be_depended_issues_array = []
|
||||||
|
depended_issues_array = []
|
||||||
|
all_issues = []
|
||||||
|
depended_issues_id = []
|
||||||
|
if issue_id.present?
|
||||||
|
issue = Issue.find(issue_id)
|
||||||
|
use_tags = issue.issue_tags.select(:id).pluck(:id)
|
||||||
|
select_arrays = [:assigned_to_id, :tracker_id, :status_id, :priority_id, :fixed_version_id, :start_date, :due_date, :estimated_hours, :done_ratio, :issue_type, :token]
|
||||||
|
issue_info = Issue.select(select_arrays).where(id: issue_id).pluck(select_arrays)
|
||||||
|
issue_info = issue_info[0]
|
||||||
|
|
||||||
|
issue_comment_users_array = join_users(issue)
|
||||||
|
#总耗时
|
||||||
|
cost_time(issue)
|
||||||
|
cost_time_array = @cost_time_array
|
||||||
|
all_cost_time = @all_cost_time
|
||||||
|
|
||||||
|
#被依赖
|
||||||
|
be_depended_issues_array = be_depended_issues(issue)
|
||||||
|
|
||||||
|
#依赖于
|
||||||
|
depended_issues(issue)
|
||||||
|
depended_issues_array = @depended_issues_array
|
||||||
|
depended_issues_id = @depended_issues_id
|
||||||
|
|
||||||
|
end
|
||||||
|
project_members = project.members_user_infos
|
||||||
|
project_members_info = [] #指派给
|
||||||
|
project_members.each do |member|
|
||||||
|
user = member.user
|
||||||
|
real_name = user.try(:show_real_name)
|
||||||
|
user_id = member[0]
|
||||||
|
is_chosen = ((user.id.to_s == issue_info[0].to_s) ? "1" : "0")
|
||||||
|
member_info = {id: user_id, name: real_name,avatar_url: url_to_avatar(user),is_chosen: is_chosen}
|
||||||
|
project_members_info.push(member_info)
|
||||||
|
end
|
||||||
|
|
||||||
|
tracker_info = project.trackers&.pluck(:id, :name, :position)
|
||||||
|
new_tracker_info = [] #类型
|
||||||
|
if tracker_info.size > 0
|
||||||
|
tracker_info.each do |t|
|
||||||
|
is_chosen = (t[0] == issue_info[1]) ? "1" : "0"
|
||||||
|
new_tracker = {id: t[0], name: t[1], position: t[2], is_chosen: is_chosen}
|
||||||
|
new_tracker_info.push(new_tracker)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
issue_status = IssueStatus&.pluck(:id,:name,:position)
|
||||||
|
new_status_info = [] #缺陷类型
|
||||||
|
if issue_status.size > 0
|
||||||
|
issue_status.each do |t|
|
||||||
|
is_chosen = (t[0] == issue_info[2]) ? "1" : "0"
|
||||||
|
new_issue = {id: t[0], name: t[1], position: t[2], is_chosen: is_chosen}
|
||||||
|
new_status_info.push(new_issue)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
issue_priority = IssuePriority&.pluck(:id,:name, :position)
|
||||||
|
new_priority_info = [] #优先度
|
||||||
|
if issue_priority.size > 0
|
||||||
|
issue_priority.each do |t|
|
||||||
|
is_chosen = (t[0] == issue_info[3]) ? "1" : "0"
|
||||||
|
new_issue = {id: t[0], name: t[1], position: t[2], is_chosen: is_chosen}
|
||||||
|
new_priority_info.push(new_issue)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
issue_versions = project.versions&.pluck(:id,:name, :status)
|
||||||
|
new_version_info = [] #issue里程碑
|
||||||
|
if issue_versions.size > 0
|
||||||
|
issue_versions.each do |t|
|
||||||
|
is_chosen = (t[0] == issue_info[4]) ? "1" : "0"
|
||||||
|
new_issue = {id: t[0], name: t[1], status: t[2], is_chosen: is_chosen}
|
||||||
|
new_version_info.push(new_issue)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
issue_done_ratio = %w(0 10 20 30 40 50 60 70 80 90 100)
|
||||||
|
new_done_info = [] #完成度
|
||||||
|
if issue_done_ratio.size > 0
|
||||||
|
issue_done_ratio.each do |t|
|
||||||
|
is_chosen = (t == issue_info[8].to_s) ? "1" : "0"
|
||||||
|
new_issue = {id:t.to_i, ratio: (t.to_s + "%"), is_chosen: is_chosen}
|
||||||
|
new_done_info.push(new_issue)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
issue_tags = project.issue_tags&.pluck(:id,:name, :color)
|
||||||
|
new_tags_info = [] #issue标签
|
||||||
|
if issue_tags.size > 0
|
||||||
|
issue_tags.each do |t|
|
||||||
|
is_chosen = (use_tags.size > 0 && use_tags.include?(t[0])) ? "1" : "0"
|
||||||
|
new_issue = {id: t[0], name: t[1], color: t[2], is_chosen: is_chosen}
|
||||||
|
new_tags_info.push(new_issue)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
issue_types = %w(普通 悬赏)
|
||||||
|
new_types_info = [] #issue标签
|
||||||
|
issue_types.each_with_index do |i, index|
|
||||||
|
is_chosen = (issue_info[9] == "#{index+1}") ? "1" : "0"
|
||||||
|
is_token = (index.to_s == "1") ? issue_info[10] : nil
|
||||||
|
new_type_info = {id: index+1, name: i, token: is_token, is_chosen: is_chosen}
|
||||||
|
new_types_info.push(new_type_info)
|
||||||
|
end
|
||||||
|
|
||||||
|
depend_other_issues = project.issues.issue_issue.where.not(id: issue_id)&.pluck(:id, :subject)
|
||||||
|
if depend_other_issues.size > 0
|
||||||
|
depend_other_issues.each do |t|
|
||||||
|
is_chosen = depended_issues_id.include?(t[0]) ? "1" : "0"
|
||||||
|
new_issue = {id: t[0], subject: t[1], is_chosen: is_chosen}
|
||||||
|
all_issues.push(new_issue)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"assign_user": project_members_info,
|
||||||
|
"tracker": new_tracker_info,
|
||||||
|
"issue_status": new_status_info,
|
||||||
|
"priority": new_priority_info,
|
||||||
|
"issue_version": new_version_info,
|
||||||
|
"start_date": issue_info[5],
|
||||||
|
"due_date": issue_info[6],
|
||||||
|
"joins_users": issue_comment_users_array,
|
||||||
|
"cost_time_users": cost_time_array,
|
||||||
|
"total_cost_time": Time.at(all_cost_time).utc.strftime('%H h %M min %S s'),
|
||||||
|
"be_depended_issues": be_depended_issues_array,
|
||||||
|
"depended_issues":depended_issues_array,
|
||||||
|
"estimated_hours": issue_info[7],
|
||||||
|
"done_ratio": new_done_info,
|
||||||
|
"issue_tag": new_tags_info,
|
||||||
|
"issue_type": new_types_info,
|
||||||
|
"all_issues": all_issues
|
||||||
|
}
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def join_users(issue)
|
||||||
|
#协作者
|
||||||
|
issue_comment_users_array = []
|
||||||
|
issue_comment_users = issue.journals.select(:user_id).distinct
|
||||||
|
if issue.present? && issue_comment_users.size > 0
|
||||||
|
issue_comment_users.each do |j|
|
||||||
|
user_avatar = url_to_avatar(j.user)
|
||||||
|
issue_comment_users_array.push({login: j.user.try(:login), avatar_url: user_avatar})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
issue_comment_users_array
|
||||||
|
end
|
||||||
|
|
||||||
|
def cost_time(issue)
|
||||||
|
#总耗时
|
||||||
|
@cost_time_array = []
|
||||||
|
@all_cost_time = 0
|
||||||
|
all_issue_times = issue.issue_times.includes(:user).where.not(end_time: nil)
|
||||||
|
if issue.present? && all_issue_times.size > 0
|
||||||
|
all_issue_times.each do |time|
|
||||||
|
cost_time = time.end_time.to_i - time.start_time.to_i
|
||||||
|
cost_time = cost_time > 0 ? cost_time : 0
|
||||||
|
@all_cost_time = @all_cost_time + cost_time
|
||||||
|
set_cost_time = Time.at(cost_time).utc.strftime('%H h %M min %S s')
|
||||||
|
@cost_time_array.push({login: time.user.try(:login), avatar_url: url_to_avatar(time.user), cost_time: set_cost_time})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def depended_issues(issue)
|
||||||
|
#依赖于
|
||||||
|
@depended_issues_id = []
|
||||||
|
@depended_issues_array = []
|
||||||
|
depended_issues = issue.issue_depends.pluck(:id,:depend_issue_id).uniq
|
||||||
|
if issue.present? && depended_issues.size > 0
|
||||||
|
depended_issues.each do |de|
|
||||||
|
@depended_issues_id.push(de[1])
|
||||||
|
issues = Issue.select(:id, :subject).where(id: de[1]).as_json
|
||||||
|
issues = issues.first.merge(depend_id: de[0])
|
||||||
|
@depended_issues_array.push(issues)
|
||||||
|
end
|
||||||
|
@depended_issues_id.delete(issue.id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def be_depended_issues(issue)
|
||||||
|
be_depended_issues_array = []
|
||||||
|
be_depended_issues = IssueDepend.where(depend_issue_id: issue.id).pluck(:id,:issue_id).uniq
|
||||||
|
if issue.present? && be_depended_issues.size > 0
|
||||||
|
be_depended_issues.each do |de|
|
||||||
|
d_issues = Issue.select(:id, :subject).where(id: de[1]).as_json
|
||||||
|
d_issues = d_issues.first.merge(depend_id: de[0])
|
||||||
|
be_depended_issues_array.push(d_issues)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
be_depended_issues_array
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -0,0 +1,9 @@
|
|||||||
|
class PullRequest < ApplicationRecord
|
||||||
|
#status 0 默认未合并, 1表示合并, 2表示请求拒绝
|
||||||
|
belongs_to :issue
|
||||||
|
belongs_to :user
|
||||||
|
belongs_to :project
|
||||||
|
has_many :pull_request_assigns, foreign_key: :pull_request_id
|
||||||
|
has_many :pull_request_tags, foreign_key: :pull_request_id
|
||||||
|
has_many :project_trends, as: :trend, dependent: :destroy
|
||||||
|
end
|
@ -0,0 +1,4 @@
|
|||||||
|
class PullRequestAssign < ApplicationRecord
|
||||||
|
belongs_to :user
|
||||||
|
belongs_to :pull_request
|
||||||
|
end
|
@ -0,0 +1,4 @@
|
|||||||
|
class PullRequestTag < ApplicationRecord
|
||||||
|
belongs_to :issue_tag
|
||||||
|
belongs_to :pull_request
|
||||||
|
end
|
@ -0,0 +1,29 @@
|
|||||||
|
class Gitea::Labels::CreateService < Gitea::ClientService
|
||||||
|
attr_reader :user, :repo, :params
|
||||||
|
|
||||||
|
# params ex:
|
||||||
|
# {
|
||||||
|
# name: 'pull request title',
|
||||||
|
# description: 'pull request content',
|
||||||
|
# color: '#ffff',
|
||||||
|
# }
|
||||||
|
# repo: 仓库名称
|
||||||
|
def initialize(user, repo, params={})
|
||||||
|
@user = user
|
||||||
|
@repo = repo
|
||||||
|
@params = params
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
post(url, request_params)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def url
|
||||||
|
"/repos/#{user.login}/#{repo}/labels".freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
def request_params
|
||||||
|
Hash.new.merge(token: user.gitea_token, data: params)
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,34 @@
|
|||||||
|
class Gitea::Labels::DeleteService < Gitea::ClientService
|
||||||
|
attr_reader :user, :repo_name,:label_id
|
||||||
|
|
||||||
|
def initialize(user, repo_name, label_id)
|
||||||
|
@user = user
|
||||||
|
@repo_name = repo_name
|
||||||
|
@label_id = label_id
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
response = delete(url, params)
|
||||||
|
render_result(response)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def params
|
||||||
|
Hash.new.merge(token: user.gitea_token)
|
||||||
|
end
|
||||||
|
|
||||||
|
def url
|
||||||
|
"/repos/#{user.login}/#{repo_name}/labels/#{label_id}".freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_result(response)
|
||||||
|
body = JSON.parse(response.body)
|
||||||
|
case response.status
|
||||||
|
when 204
|
||||||
|
body
|
||||||
|
else
|
||||||
|
{status: -1, message: "#{body['message']}"}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,32 @@
|
|||||||
|
class Gitea::Labels::ListService < Gitea::ClientService
|
||||||
|
attr_reader :user, :repo_name
|
||||||
|
|
||||||
|
|
||||||
|
def initialize(user, repo_name)
|
||||||
|
@user = user
|
||||||
|
@repo_name = repo_name
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
response = get(url, params)
|
||||||
|
render_result(response)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def params
|
||||||
|
Hash.new.merge(token: user.gitea_token)
|
||||||
|
end
|
||||||
|
|
||||||
|
def url
|
||||||
|
"/repos/#{user.login}/#{repo_name}/labels".freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_result(response)
|
||||||
|
body = JSON.parse(response.body)
|
||||||
|
case response.status
|
||||||
|
when 200 then body
|
||||||
|
else
|
||||||
|
{status: -1, message: "#{body['message']}"}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,30 @@
|
|||||||
|
class Gitea::Labels::UpdateService < Gitea::ClientService
|
||||||
|
attr_reader :user, :repo,:label_id, :params
|
||||||
|
|
||||||
|
# params ex:
|
||||||
|
# {
|
||||||
|
# name: 'pull request title',
|
||||||
|
# description: 'pull request content',
|
||||||
|
# color: '#ffff',
|
||||||
|
# }
|
||||||
|
# repo: 仓库名称
|
||||||
|
def initialize(user, repo,label_id, params={})
|
||||||
|
@user = user
|
||||||
|
@repo = repo
|
||||||
|
@params = params
|
||||||
|
@label_id = label_id
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
update(url, request_params)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def url
|
||||||
|
"/repos/#{user.login}/#{repo}/labels/#{label_id}".freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
def request_params
|
||||||
|
Hash.new.merge(token: user.gitea_token, data: params)
|
||||||
|
end
|
||||||
|
end
|
@ -1,7 +1,34 @@
|
|||||||
# List a repo's pull requests
|
# Get a list of all commits from a repository
|
||||||
class Gitea::PullRequest::ListService < Gitea::ClientService
|
class Gitea::PullRequest::ListService < Gitea::ClientService
|
||||||
|
attr_reader :user, :repo
|
||||||
|
|
||||||
|
# sha: SHA or branch to start listing commits from (usually 'master')
|
||||||
|
def initialize(user, repo)
|
||||||
|
@user = user
|
||||||
|
@repo = repo
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
response = get(url, params)
|
||||||
|
render_result(response)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def params
|
||||||
|
Hash.new.merge(token: user.gitea_token)
|
||||||
|
end
|
||||||
|
|
||||||
def url
|
def url
|
||||||
"/repos/{owner}/{repo}/pulls"
|
"/repos/#{@user.try(:login)}/#{@repo}/pulls".freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
def render_result(response)
|
||||||
|
body = JSON.parse(response.body)
|
||||||
|
case response.status
|
||||||
|
when 200
|
||||||
|
body
|
||||||
|
else
|
||||||
|
{status: -1, message: "#{body['message']}"}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -0,0 +1,26 @@
|
|||||||
|
class Gitea::PullRequest::UpdateService < Gitea::ClientService
|
||||||
|
attr_reader :user, :repo, :params,:pull_request_id
|
||||||
|
|
||||||
|
|
||||||
|
def initialize(user, repo, params,pull_request_id)
|
||||||
|
@user = user
|
||||||
|
@repo = repo
|
||||||
|
@params = params
|
||||||
|
@pull_request_id = pull_request_id
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
update(url, request_params)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def request_params
|
||||||
|
Hash.new.merge(token: @user.gitea_token, data: @params)
|
||||||
|
end
|
||||||
|
|
||||||
|
def url
|
||||||
|
"/repos/#{@user.try(:login)}/#{@repo}/pulls/#{@pull_request_id}".freeze
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
@ -1,2 +1,2 @@
|
|||||||
json.partial! "commons/success"
|
json.partial! "commons/success"
|
||||||
json.extract! @issue_tag, :id, :name, :description, :color,:project_id
|
json.extract! @issue_tag, :id, :name, :description, :color,:project_id, :gid, :gitea_url
|
@ -1,2 +1,3 @@
|
|||||||
json.partial! "commons/success"
|
json.partial! "commons/success"
|
||||||
|
json.branches @all_branches
|
||||||
json.issue_chosen @issue_chosen
|
json.issue_chosen @issue_chosen
|
@ -0,0 +1,18 @@
|
|||||||
|
json.partial! "commons/success"
|
||||||
|
json.pull_request do
|
||||||
|
json.extract! @pull_request, :id,:base, :head, :status
|
||||||
|
end
|
||||||
|
|
||||||
|
json.issue do
|
||||||
|
json.extract! @issue, :id,:subject,:description,:is_private,:assigned_to_id,:tracker_id,:status_id,:priority_id,:fixed_version_id,
|
||||||
|
:start_date,:due_date,:estimated_hours, :issue_type, :token,:issue_classify, :branch_name
|
||||||
|
json.done_ratio @issue.done_ratio.to_s + "%"
|
||||||
|
json.issue_tags @issue.get_issue_tags
|
||||||
|
json.issue_chosen @issue_chosen
|
||||||
|
end
|
||||||
|
|
||||||
|
json.attachments do
|
||||||
|
json.array! @issue_attachments do |attachment|
|
||||||
|
json.partial! "attachments/attachment_simple", locals: {attachment: attachment}
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,39 @@
|
|||||||
|
json.partial! "commons/success"
|
||||||
|
json.all_count @all_issues_size
|
||||||
|
json.open_count @open_issues_size
|
||||||
|
json.close_count @close_issues_size
|
||||||
|
json.assign_me_count @assign_to_me_size
|
||||||
|
json.my_published_count @my_published_size
|
||||||
|
json.search_count @issues_size
|
||||||
|
json.limit @limit
|
||||||
|
|
||||||
|
json.issues do
|
||||||
|
json.array! @issues.to_a do |issue|
|
||||||
|
cost_time(issue)
|
||||||
|
json.pull_request_id issue.pull_request.id
|
||||||
|
json.pull_request_status issue.pull_request.status
|
||||||
|
json.id issue.id
|
||||||
|
json.name issue.subject
|
||||||
|
json.format_time format_time(issue.created_on)
|
||||||
|
json.created_at time_from_now(issue.created_on)
|
||||||
|
json.updated_at format_time(issue.updated_on)
|
||||||
|
json.assign_user_name issue.get_assign_user.try(:show_real_name)
|
||||||
|
json.assign_user_login issue.get_assign_user.try(:login)
|
||||||
|
json.author_name issue.user.try(:show_real_name)
|
||||||
|
json.author_login issue.user.try(:login)
|
||||||
|
json.tracker issue.tracker.try(:name)
|
||||||
|
json.issue_status issue.issue_status.try(:name)
|
||||||
|
json.priority issue.priority.try(:title)
|
||||||
|
json.version issue.version.try(:title)
|
||||||
|
json.done_ratio issue.done_ratio.to_s + "%"
|
||||||
|
json.journals_count issue.get_journals_size
|
||||||
|
json.issue_tags issue.get_issue_tags
|
||||||
|
json.issue_type issue.issue_type == "1" ? "普通" : "悬赏"
|
||||||
|
json.token issue.issue_type == "2" ? issue.token : ""
|
||||||
|
json.issue_classify issue.issue_classify
|
||||||
|
json.branch_name issue.branch_name
|
||||||
|
json.cost_time @all_cost_time
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# json.issues @issues
|
@ -0,0 +1,13 @@
|
|||||||
|
json.partial! "commons/success"
|
||||||
|
json.branches @all_branches
|
||||||
|
json.issue_tags @project_tags
|
||||||
|
json.issue_versions @project_versions
|
||||||
|
|
||||||
|
json.members do
|
||||||
|
json.array! @project_members.to_a.each do |member|
|
||||||
|
json.id member.user_id
|
||||||
|
json.login member.user.try(:login)
|
||||||
|
json.name member.user.try(:show_real_name)
|
||||||
|
json.avatar_url url_to_avatar(member.user)
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,40 @@
|
|||||||
|
json.partial! "commons/success"
|
||||||
|
json.pull_request do
|
||||||
|
json.extract! @pull_request, :id,:base, :head, :status, :gpid
|
||||||
|
end
|
||||||
|
|
||||||
|
json.issue do
|
||||||
|
json.extract! @issue, :id,:subject,:is_lock,:description,:is_private, :start_date,:due_date,:estimated_hours,:issue_classify, :branch_name
|
||||||
|
|
||||||
|
json.user_permission @user_permission
|
||||||
|
json.closed_on @issue.closed_on.present? ? format_time(@issue.closed_on) : ""
|
||||||
|
json.created_at format_time(@issue.created_on)
|
||||||
|
json.assign_user_name @issue_assign_to.try(:show_real_name)
|
||||||
|
json.assign_user_login @issue_assign_to.try(:login)
|
||||||
|
json.author_name @issue_user.try(:show_real_name)
|
||||||
|
json.author_login @issue_user.try(:login)
|
||||||
|
json.author_picture url_to_avatar(@issue_user)
|
||||||
|
json.tracker @issue.tracker.try(:name)
|
||||||
|
json.issue_status @issue.issue_status.try(:name)
|
||||||
|
json.priority @issue.priority.try(:name)
|
||||||
|
json.version @issue.version.try(:title)
|
||||||
|
json.issue_tags @issue.get_issue_tags
|
||||||
|
json.done_ratio @issue.done_ratio.to_s + "%"
|
||||||
|
json.issue_type @issue.issue_type == "1" ? "普通" : "悬赏"
|
||||||
|
json.token @issue.issue_type == "2" ? @issue.token : ""
|
||||||
|
json.join_users @join_users
|
||||||
|
json.cost_time @cost_time_array
|
||||||
|
json.total_cost_time Time.at(@all_cost_time).utc.strftime('%H h %M min %S s')
|
||||||
|
json.be_depended_issues @be_depended_issues_array
|
||||||
|
json.depended_issues @depended_issues_array
|
||||||
|
end
|
||||||
|
|
||||||
|
json.attachments do
|
||||||
|
json.array! @issue_attachments do |attachment|
|
||||||
|
json.partial! "attachments/attachment_simple", locals: {attachment: attachment}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
|||||||
|
class AddColumnToIssueTags < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :issue_tags, :gid, :integer
|
||||||
|
add_column :issue_tags, :gitea_url, :string
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,10 @@
|
|||||||
|
class CreatePullRequestTags < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
create_table :pull_request_tags do |t|
|
||||||
|
t.integer :issue_tag_id
|
||||||
|
t.integer :pull_request_id
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
add_index :pull_request_tags, [:issue_tag_id, :pull_request_id]
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,10 @@
|
|||||||
|
class CreatePullRequestAssigns < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
create_table :pull_request_assigns do |t|
|
||||||
|
t.integer :user_id
|
||||||
|
t.integer :pull_request_id
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
add_index :pull_request_assigns, [:user_id, :pull_request_id]
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,8 @@
|
|||||||
|
class AddColumnToPullRequests < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :pull_requests, :version_id, :integer
|
||||||
|
add_column :pull_requests, :body, :text
|
||||||
|
add_column :pull_requests, :from_ref, :string
|
||||||
|
add_column :pull_requests, :to_ref, :string
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,14 @@
|
|||||||
|
class ChangePullRequestsColumns < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
remove_column :pull_request_assigns, :user_id
|
||||||
|
add_column :pull_request_assigns, :user_login, :string
|
||||||
|
|
||||||
|
add_index :pull_request_assigns, [:user_login]
|
||||||
|
|
||||||
|
rename_column :pull_requests, :version_id, :milestone
|
||||||
|
rename_column :pull_requests, :from_ref, :head
|
||||||
|
rename_column :pull_requests, :to_ref, :base
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,6 @@
|
|||||||
|
class AddColumnsToPullRequests < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :pull_requests, :issue_id, :integer
|
||||||
|
add_column :issues, :issue_classify, :string
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,6 @@
|
|||||||
|
class AddIssuesRefNameAndBranchName < ActiveRecord::Migration[5.2]
|
||||||
|
def change
|
||||||
|
add_column :issues, :ref_name, :string
|
||||||
|
add_column :issues, :branch_name, :string
|
||||||
|
end
|
||||||
|
end
|
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2019-12-20 11:40:56
|
||||||
|
* @LastEditTime : 2019-12-20 13:38:49
|
||||||
|
* @LastEditors : Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /notebook/Users/yangshuming/Desktop/new__educode/educoder/public/react/public/js/jupyter.js
|
||||||
|
*/
|
||||||
|
window.onload=function(){
|
||||||
|
require(["base/js/namespace"],function(Jupyter) {
|
||||||
|
Jupyter.notebook.save_checkpoint();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// //子目标父窗口接收子窗口发送的消息
|
||||||
|
// let message = {type: 'open', link:'需要发送的消息'};
|
||||||
|
//子窗口向父窗口发送消息,消息中包含我们想跳转的链接
|
||||||
|
window.parent.postMessage('jupytermessage','需要发送的消息');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// //目标父窗口接收子窗口发送的消息
|
||||||
|
// window.addEventListener('message', (e)=>{
|
||||||
|
// let origin = event.origin || event.originalEvent.origin;
|
||||||
|
// if (origin !== '需要发送的消息') {
|
||||||
|
// return;
|
||||||
|
// }else {
|
||||||
|
// //更换iframe的src,实现iframe页面跳转
|
||||||
|
// 执行方法
|
||||||
|
// }
|
||||||
|
// },false);
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue