nps调研丰富选项、修复创建项目、issue未触发弹窗bug
This commit is contained in:
parent
cab19f6a46
commit
d3cb74b7f6
|
@ -59,7 +59,7 @@ function Details(props){
|
||||||
const permission = props && props.projectDetail && props.projectDetail.permission;
|
const permission = props && props.projectDetail && props.projectDetail.permission;
|
||||||
let colors = ["#1abcb1","#28be6c","#e67e22","#db3d1d"];
|
let colors = ["#1abcb1","#28be6c","#e67e22","#db3d1d"];
|
||||||
|
|
||||||
const {projectDetail , open_blockchain ,current_user } = props;
|
const {projectDetail , open_blockchain ,current_user, showNpsModal } = props;
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
if(pathname === `/${owner}/${projectsId}/issues/${index}/copy`){
|
if(pathname === `/${owner}/${projectsId}/issues/${index}/copy`){
|
||||||
setEdit(true);
|
setEdit(true);
|
||||||
|
@ -284,6 +284,7 @@ function Details(props){
|
||||||
setEdit(false);
|
setEdit(false);
|
||||||
// 刷新操作记录
|
// 刷新操作记录
|
||||||
setCommentReload(Math.random());
|
setCommentReload(Math.random());
|
||||||
|
showNpsModal("submitIssue", 1);
|
||||||
}
|
}
|
||||||
}).catch(error=>{})
|
}).catch(error=>{})
|
||||||
}else{
|
}else{
|
||||||
|
@ -310,6 +311,7 @@ function Details(props){
|
||||||
window.scrollTo(0,0);
|
window.scrollTo(0,0);
|
||||||
props.showNotification("疑修复制成功!");
|
props.showNotification("疑修复制成功!");
|
||||||
props.history.push(`/${owner}/${projectsId}/issues/${result.data.project_issues_index}`);
|
props.history.push(`/${owner}/${projectsId}/issues/${result.data.project_issues_index}`);
|
||||||
|
showNpsModal("createIssue", 1);
|
||||||
}
|
}
|
||||||
}).catch(error=>{})
|
}).catch(error=>{})
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import axios from 'axios';
|
||||||
|
|
||||||
function New(props){
|
function New(props){
|
||||||
// history search 是否含有意见反馈标识
|
// history search 是否含有意见反馈标识
|
||||||
const {location:{search}, projectDetail} = props;
|
const {location:{search}, projectDetail, showNpsModal} = props;
|
||||||
const feedBack = search && search.indexOf('type=feedback') !== -1;
|
const feedBack = search && search.indexOf('type=feedback') !== -1;
|
||||||
// 里程碑id
|
// 里程碑id
|
||||||
const milepostId = props.match.params.milepostId;
|
const milepostId = props.match.params.milepostId;
|
||||||
|
@ -200,6 +200,7 @@ function New(props){
|
||||||
window.scrollTo(0,0);
|
window.scrollTo(0,0);
|
||||||
props.showNotification("疑修创建成功!");
|
props.showNotification("疑修创建成功!");
|
||||||
props.history.push(`/${owner}/${projectsId}/issues/${result.data.project_issues_index}`);
|
props.history.push(`/${owner}/${projectsId}/issues/${result.data.project_issues_index}`);
|
||||||
|
showNpsModal("createIssue", 1);
|
||||||
}
|
}
|
||||||
}).catch(error=>{})
|
}).catch(error=>{})
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Button, Checkbox, Input, Modal } from 'antd';
|
import { Button, Checkbox, Divider, Input, Modal } from 'antd';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
|
|
||||||
|
@ -12,16 +12,20 @@ function NpmModal(props){
|
||||||
// 提交按钮失效
|
// 提交按钮失效
|
||||||
const [disabled, setDisabled] = useState(false);
|
const [disabled, setDisabled] = useState(false);
|
||||||
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
|
||||||
|
const list = [
|
||||||
|
"代码库基本功能", "疑修", "合并请求", "流水线引擎", "维基Wiki", "数据集", "特色专区", "BOT功能", "跨平台同步服务", "代码溯源及扫描服务", "开源软件健康度量服务", "HiAgent", "非常满意,没有需要吐槽的功能"
|
||||||
|
]
|
||||||
|
|
||||||
// 提交意见
|
// 提交意见
|
||||||
function submit(){
|
function submit(){
|
||||||
setDisabled(true);
|
setDisabled(true);
|
||||||
axios.post(`/nps.json`,{
|
const params = {
|
||||||
action_type: npsActionType,
|
action_type: npsActionType,
|
||||||
action_id: npsActionId,
|
action_id: npsActionId,
|
||||||
score: activeGrade,
|
score: activeGrade,
|
||||||
memo:`${checkGroupValue && checkGroupValue.length !== 0 ? checkGroupValue.toString() + "。" : ''}${inputValue ? inputValue : ''}`
|
memo:`${checkGroupValue && checkGroupValue.length !== 0 ? checkGroupValue.toString() + "。" : ''}${inputValue ? inputValue : ''}`
|
||||||
}).then((response) => {
|
}
|
||||||
|
axios.post(`/nps.json`, params).then((response) => {
|
||||||
if (response.data) {
|
if (response.data) {
|
||||||
setVisible(false);
|
setVisible(false);
|
||||||
setSuccess(true);
|
setSuccess(true);
|
||||||
|
@ -44,20 +48,21 @@ function NpmModal(props){
|
||||||
footer={(activeGrade || activeGrade === 0) ? <Button type='primary' style={{width:180}} onClick={submit} disabled={disabled}>提交</Button> : null}
|
footer={(activeGrade || activeGrade === 0) ? <Button type='primary' style={{width:180}} onClick={submit} disabled={disabled}>提交</Button> : null}
|
||||||
>
|
>
|
||||||
<div className='mt40 font-18'>您向朋友或同事推荐GitLink平台的可能性有多大?</div>
|
<div className='mt40 font-18'>您向朋友或同事推荐GitLink平台的可能性有多大?</div>
|
||||||
<div className='gradeBox font-16'>
|
<div className='mt30 font-16'>
|
||||||
<span>不可能</span>
|
<span>不可能</span>
|
||||||
{arr.map(item=>{return <span key={item} className={`oneGradeItem font-18 ml10 ${item<=5? 'grade1' : item<=8? 'grade2' : 'grade3'} ${item === activeGrade ? 'active' : ''}`} onClick={()=>{setActiveGrade(item)}}>{item}</span>})}
|
{arr.map(item=>{return <span key={item} className={`oneGradeItem font-18 ml10 ${item<=5? 'grade1' : item<=8? 'grade2' : 'grade3'} ${item === activeGrade ? 'active' : ''}`} onClick={()=>{setActiveGrade(item)}}>{item}</span>})}
|
||||||
<span className='ml10'>极有可能</span>
|
<span className='ml10'>极有可能</span>
|
||||||
</div>
|
</div>
|
||||||
{(activeGrade || activeGrade === 0) && <div>
|
{(activeGrade || activeGrade === 0) && <div className='npsContent'>
|
||||||
<div className='font-16 mb15'>您觉得以下哪些我们可以做的更好?(选填)</div>
|
<Divider dashed/>
|
||||||
|
<div className='font-16 mb15'>【选填】你最想吐槽GitLink以下的哪个功能?欢迎勾选下方想要吐槽的选项并留言</div>
|
||||||
<Checkbox.Group className='gradeCheckbox' onChange={(e)=>{setCheckGroupValue(e)}}>
|
<Checkbox.Group className='gradeCheckbox' onChange={(e)=>{setCheckGroupValue(e)}}>
|
||||||
<Checkbox value="期待更加丰富的功能">期待更加丰富的功能</Checkbox>
|
{list.map(item=><Checkbox value={item}>{item}</Checkbox>)}
|
||||||
<Checkbox value="部分功能不会用,希望有新手引导">部分功能不会用,希望有新手引导</Checkbox>
|
|
||||||
<Checkbox value="已有的功能模块,用户体验需进一步提升">已有的功能模块,用户体验需进一步提升</Checkbox>
|
|
||||||
<Checkbox value="其他">其他</Checkbox>
|
|
||||||
</Checkbox.Group>
|
</Checkbox.Group>
|
||||||
<Input.TextArea placeholder='欢迎您填写宝贵建议(选填)' autoSize={{minRows: 6}} maxLength={500} className='gradeInput' onChange={(e)=>{setInputValue(e.target.value);}}/>
|
<div className='npsFeedBackBox'>
|
||||||
|
<Input.TextArea autoSize={{minRows: 6}} placeholder='欢迎您填写宝贵建议(选填)' className='gradeInput' maxLength={500} value={inputValue} onChange={(e)=>{setInputValue(e.target.value);}}/>
|
||||||
|
<span className='countNumBox'><span>{(inputValue && inputValue.length) || 0}</span>/500</span>
|
||||||
|
</div>
|
||||||
</div>}
|
</div>}
|
||||||
</Modal>
|
</Modal>
|
||||||
<Modal
|
<Modal
|
||||||
|
|
|
@ -338,9 +338,9 @@ body>.-task-title {
|
||||||
font-size: 22px;
|
font-size: 22px;
|
||||||
}
|
}
|
||||||
.npmModal .ant-modal-content, .npmSuccessModal .ant-modal-content{
|
.npmModal .ant-modal-content, .npmSuccessModal .ant-modal-content{
|
||||||
background-image:linear-gradient(359.37deg,#ebf3ff 0%,#f1f6ff 21.88%,#c1ceff 100%);
|
background: linear-gradient( 359deg, #EBF3FF 0%, #F4F5FE 22%, #F2F4FF 82%, #D4DDFF 100%);
|
||||||
border:1.5px solid#ffffff;
|
border:1.5px solid#ffffff;
|
||||||
min-height: 280px;
|
min-height: 230px;
|
||||||
}
|
}
|
||||||
.npmModal .ant-modal-body, .npmModal .ant-modal-footer, .npmSuccessModal .ant-modal-body, .npmSuccessModal .ant-modal-footer{
|
.npmModal .ant-modal-body, .npmModal .ant-modal-footer, .npmSuccessModal .ant-modal-body, .npmSuccessModal .ant-modal-footer{
|
||||||
background-color: rgba(0, 0, 0, 0);
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
@ -351,9 +351,6 @@ body>.-task-title {
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
color:#202d40;
|
color:#202d40;
|
||||||
}
|
}
|
||||||
.npmSuccessModal .ant-modal-content{
|
|
||||||
background-image:linear-gradient(359.37deg,#ebf3ff 0%,#f1f6ff 21.88%,#c1ceff 100%);
|
|
||||||
}
|
|
||||||
.npmSuccessModal .ant-modal-body{
|
.npmSuccessModal .ant-modal-body{
|
||||||
background-image: url('../../images/nps2.png');
|
background-image: url('../../images/nps2.png');
|
||||||
height: 300px;
|
height: 300px;
|
||||||
|
@ -364,9 +361,6 @@ body>.-task-title {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-bottom: 30px;
|
padding-bottom: 30px;
|
||||||
}
|
}
|
||||||
.gradeBox{
|
|
||||||
margin: 30px 0;
|
|
||||||
}
|
|
||||||
.oneGradeItem{
|
.oneGradeItem{
|
||||||
width:36px;
|
width:36px;
|
||||||
height:36px;
|
height:36px;
|
||||||
|
@ -381,11 +375,16 @@ body>.-task-title {
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
.npmModal .gradeCheckbox{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
.npmModal .gradeCheckbox .ant-checkbox-wrapper{
|
.npmModal .gradeCheckbox .ant-checkbox-wrapper{
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0 0 15px 0;
|
margin: 0 0 15px 0;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: #3f4e64;
|
color: #3f4e64;
|
||||||
|
width: 50%;
|
||||||
}
|
}
|
||||||
.gradeInput{
|
.gradeInput{
|
||||||
background-color:rgba(255, 255, 255, 0.31) !important;
|
background-color:rgba(255, 255, 255, 0.31) !important;
|
||||||
|
@ -417,3 +416,17 @@ body>.-task-title {
|
||||||
font-size: 25px;
|
font-size: 25px;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
.npmModal{
|
||||||
|
.npsFeedBackBox{
|
||||||
|
position: relative;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
|
.countNumBox{
|
||||||
|
position: absolute;
|
||||||
|
bottom: 2px;
|
||||||
|
right: 10px;
|
||||||
|
span{
|
||||||
|
color: #466AFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -259,9 +259,9 @@ export function TPMIndexHOC(WrappedComponent) {
|
||||||
npsActionType:type,
|
npsActionType:type,
|
||||||
npsActionId: index
|
npsActionId: index
|
||||||
})
|
})
|
||||||
|
setTimeout(() => {
|
||||||
const {current_user} = this.state;
|
const {current_user} = this.state;
|
||||||
current_user && current_user.nps && setTimeout(() => {
|
current_user && current_user.nps && this.setState({npsModalVisible: true})
|
||||||
this.setState({npsModalVisible: true})
|
|
||||||
}, 500)
|
}, 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue