feat: 1.15 关注优化初版完成
This commit is contained in:
parent
0926947cb8
commit
4efff28bc2
|
@ -137,4 +137,10 @@ public class TestCaseReviewController {
|
||||||
public List<TestReviewDTOWithMetric> listRelateAll(@RequestBody ReviewRelateRequest request) {
|
public List<TestReviewDTOWithMetric> listRelateAll(@RequestBody ReviewRelateRequest request) {
|
||||||
return testCaseReviewService.listRelateAll(request);
|
return testCaseReviewService.listRelateAll(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/edit/follows")
|
||||||
|
@RequiresPermissions(PermissionConstants.PROJECT_TRACK_PLAN_READ_EDIT)
|
||||||
|
public void editTestFollows(@RequestBody SaveTestCaseReviewRequest testCaseReview) {
|
||||||
|
testCaseReviewService.editCaseRevieweFollow(testCaseReview);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -263,7 +263,7 @@ public class TestCaseReviewService {
|
||||||
testCaseReviewUsersMapper.deleteByExample(example);
|
testCaseReviewUsersMapper.deleteByExample(example);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void editCaseRevieweFollow(SaveTestCaseReviewRequest testCaseReview) {
|
public void editCaseRevieweFollow(SaveTestCaseReviewRequest testCaseReview) {
|
||||||
// 要更新的follows
|
// 要更新的follows
|
||||||
List<String> follows = testCaseReview.getFollowIds();
|
List<String> follows = testCaseReview.getFollowIds();
|
||||||
if (CollectionUtils.isNotEmpty(follows)) {
|
if (CollectionUtils.isNotEmpty(follows)) {
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
|
|
||||||
<!--操作按钮-->
|
<!--操作按钮-->
|
||||||
<div class="ms-opt-btn">
|
<div class="ms-opt-btn">
|
||||||
|
<el-tooltip :content="$t('commons.follow')" placement="bottom" effect="dark">
|
||||||
|
<i class="el-icon-star-off" style="color: #783987; font-size: 25px; margin-right: 15px;cursor: pointer;position: relative; top: 5px; " @click="saveFollow" v-if="!showFollow"/>
|
||||||
|
<i class="el-icon-star-on" style="color: #783987; font-size: 28px; margin-right: 15px;cursor: pointer;position: relative; top: 5px; " @click="saveFollow" v-if="showFollow"/>
|
||||||
|
</el-tooltip>
|
||||||
<el-link type="primary" style="margin-right: 20px" @click="openHis" v-if="path === '/api/automation/update'">{{ $t('operating_log.change_history') }}</el-link>
|
<el-link type="primary" style="margin-right: 20px" @click="openHis" v-if="path === '/api/automation/update'">{{ $t('operating_log.change_history') }}</el-link>
|
||||||
|
|
||||||
<el-button id="inputDelay" type="primary" size="small" v-prevent-re-click @click="editScenario"
|
<el-button id="inputDelay" type="primary" size="small" v-prevent-re-click @click="editScenario"
|
||||||
|
@ -58,7 +62,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="7">
|
<!-- <el-col :span="7">
|
||||||
<el-form-item :label="$t('api_test.automation.follow_people')" prop="followPeople">
|
<el-form-item :label="$t('api_test.automation.follow_people')" prop="followPeople">
|
||||||
<el-select v-model="currentScenario.follows"
|
<el-select v-model="currentScenario.follows"
|
||||||
clearable multiple
|
clearable multiple
|
||||||
|
@ -72,7 +76,7 @@
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>-->
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="7">
|
<el-col :span="7">
|
||||||
|
@ -337,7 +341,7 @@ import {
|
||||||
strMapToObj,
|
strMapToObj,
|
||||||
handleCtrlSEvent,
|
handleCtrlSEvent,
|
||||||
getCurrentProjectID,
|
getCurrentProjectID,
|
||||||
handleCtrlREvent, hasLicense
|
handleCtrlREvent, hasLicense, getCurrentUser
|
||||||
} from "@/common/js/utils";
|
} from "@/common/js/utils";
|
||||||
import "@/common/css/material-icons.css"
|
import "@/common/css/material-icons.css"
|
||||||
import OutsideClick from "@/common/js/outside-click";
|
import OutsideClick from "@/common/js/outside-click";
|
||||||
|
@ -459,6 +463,7 @@ export default {
|
||||||
plugins: [],
|
plugins: [],
|
||||||
clearMessage: "",
|
clearMessage: "",
|
||||||
runScenario: undefined,
|
runScenario: undefined,
|
||||||
|
showFollow:false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
|
@ -519,6 +524,9 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
currentUser: () => {
|
||||||
|
return getCurrentUser();
|
||||||
|
},
|
||||||
setDomain(flag) {
|
setDomain(flag) {
|
||||||
if (this.projectEnvMap && this.projectEnvMap.size > 0) {
|
if (this.projectEnvMap && this.projectEnvMap.size > 0) {
|
||||||
let scenario = {
|
let scenario = {
|
||||||
|
@ -1400,6 +1408,12 @@ export default {
|
||||||
this.$get('/api/automation/follow/' + this.currentScenario.id, response => {
|
this.$get('/api/automation/follow/' + this.currentScenario.id, response => {
|
||||||
// this.$set(this.currentScenario, 'follows', response.data);
|
// this.$set(this.currentScenario, 'follows', response.data);
|
||||||
this.currentScenario.follows = response.data;
|
this.currentScenario.follows = response.data;
|
||||||
|
for (let i = 0; i < response.data.length; i++) {
|
||||||
|
if(response.data[i]===this.currentUser().id){
|
||||||
|
this.showFollow = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.loading = false;
|
this.loading = false;
|
||||||
|
@ -1601,6 +1615,21 @@ export default {
|
||||||
},
|
},
|
||||||
showHistory() {
|
showHistory() {
|
||||||
this.$refs.taskCenter.openScenarioHistory(this.currentScenario.id);
|
this.$refs.taskCenter.openScenarioHistory(this.currentScenario.id);
|
||||||
|
},
|
||||||
|
saveFollow(){
|
||||||
|
if(this.showFollow){
|
||||||
|
this.showFollow = false;
|
||||||
|
for (let i = 0; i < this.currentScenario.follows.length; i++) {
|
||||||
|
if(this.currentScenario.follows[i]===this.currentUser().id){
|
||||||
|
this.currentScenario.follows.splice(i,1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
this.showFollow = true;
|
||||||
|
this.currentScenario.follows.push(this.currentUser().id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="16">
|
<el-col :span="16">
|
||||||
<div class="tag-item" @click.stop>
|
<div class="tag-item" @click.stop>
|
||||||
<el-select v-model="apiCase.follows" multiple clearable
|
<!-- <el-select v-model="apiCase.follows" multiple clearable
|
||||||
:placeholder="$t('api_test.automation.follow_people')" filterable size="small"
|
:placeholder="$t('api_test.automation.follow_people')" filterable size="small"
|
||||||
@change="saveTestCase(apiCase,true)" style="width: 100%" :disabled="loaded">
|
@change="saveTestCase(apiCase,true)" style="width: 100%" :disabled="loaded">
|
||||||
<el-option
|
<el-option
|
||||||
|
@ -59,7 +59,9 @@
|
||||||
:label="item.id + ' (' + item.name + ')'"
|
:label="item.id + ' (' + item.name + ')'"
|
||||||
:value="item.id">
|
:value="item.id">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>-->
|
||||||
|
<i class="el-icon-star-off" style="color: #783987; font-size: 25px; margin-top: 2px; margin-right: 15px;cursor: pointer " @click="saveFollow" v-if="!showFollow"/>
|
||||||
|
<i class="el-icon-star-on" style="color: #783987; font-size: 28px; margin-top: 2px; margin-right: 15px;cursor: pointer " @click="saveFollow" v-if="showFollow"/>
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
@ -145,7 +147,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {_getBodyUploadFiles, getCurrentProjectID, getUUID} from "@/common/js/utils";
|
import {_getBodyUploadFiles, getCurrentProjectID, getCurrentUser, getUUID} from "@/common/js/utils";
|
||||||
import {API_STATUS, PRIORITY} from "../../model/JsonData";
|
import {API_STATUS, PRIORITY} from "../../model/JsonData";
|
||||||
import MsTag from "../../../../common/components/MsTag";
|
import MsTag from "../../../../common/components/MsTag";
|
||||||
import MsTipButton from "../../../../common/components/MsTipButton";
|
import MsTipButton from "../../../../common/components/MsTipButton";
|
||||||
|
@ -224,6 +226,7 @@ export default {
|
||||||
isShowInput: false,
|
isShowInput: false,
|
||||||
methodColorMap: new Map(API_METHOD_COLOUR),
|
methodColorMap: new Map(API_METHOD_COLOUR),
|
||||||
saveLoading: false,
|
saveLoading: false,
|
||||||
|
showFollow:false,
|
||||||
beforeRequest: {},
|
beforeRequest: {},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -268,8 +271,15 @@ export default {
|
||||||
this.isXpack = true;
|
this.isXpack = true;
|
||||||
}
|
}
|
||||||
if (this.apiCase && this.apiCase.id) {
|
if (this.apiCase && this.apiCase.id) {
|
||||||
|
this.showFollow = false;
|
||||||
this.$get('/api/testcase/follow/' + this.apiCase.id, response => {
|
this.$get('/api/testcase/follow/' + this.apiCase.id, response => {
|
||||||
this.apiCase.follows = response.data;
|
this.apiCase.follows = response.data;
|
||||||
|
for (let i = 0; i < response.data.length; i++) {
|
||||||
|
if(response.data[i]===this.currentUser().id){
|
||||||
|
this.showFollow = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (this.currentApi && this.currentApi.request) {
|
if (this.currentApi && this.currentApi.request) {
|
||||||
|
@ -277,6 +287,9 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
currentUser: () => {
|
||||||
|
return getCurrentUser();
|
||||||
|
},
|
||||||
hasPermission,
|
hasPermission,
|
||||||
openHis(row) {
|
openHis(row) {
|
||||||
this.$refs.changeHistory.open(row.id, ["接口定义用例", "接口定義用例", "Api definition case"]);
|
this.$refs.changeHistory.open(row.id, ["接口定义用例", "接口定義用例", "Api definition case"]);
|
||||||
|
@ -499,6 +512,20 @@ export default {
|
||||||
showHistory(id) {
|
showHistory(id) {
|
||||||
this.$emit("showHistory", id);
|
this.$emit("showHistory", id);
|
||||||
},
|
},
|
||||||
|
saveFollow(){
|
||||||
|
if(this.showFollow){
|
||||||
|
this.showFollow = false;
|
||||||
|
for (let i = 0; i < this.apiCase.follows.length; i++) {
|
||||||
|
if(this.apiCase.follows[i]===this.currentUser().id){
|
||||||
|
this.apiCase.follows.splice(i,1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
this.showFollow = true;
|
||||||
|
this.apiCase.follows.push(this.currentUser().id)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -5,6 +5,10 @@
|
||||||
<el-form :model="httpForm" :rules="rule" ref="httpForm" label-width="80px" label-position="right">
|
<el-form :model="httpForm" :rules="rule" ref="httpForm" label-width="80px" label-position="right">
|
||||||
<!-- 操作按钮 -->
|
<!-- 操作按钮 -->
|
||||||
<div style="float: right;margin-right: 20px" class="ms-opt-btn">
|
<div style="float: right;margin-right: 20px" class="ms-opt-btn">
|
||||||
|
<el-tooltip :content="$t('commons.follow')" placement="bottom" effect="dark">
|
||||||
|
<i class="el-icon-star-off" style="color: #783987; font-size: 25px; margin-right: 5px; position: relative; top: 5px; cursor: pointer " @click="saveFollow" v-if="!showFollow"/>
|
||||||
|
<i class="el-icon-star-on" style="color: #783987; font-size: 28px; margin-right: 5px; position: relative; top: 5px; cursor: pointer " @click="saveFollow" v-if="showFollow"/>
|
||||||
|
</el-tooltip>
|
||||||
<el-link type="primary" style="margin-right: 20px" @click="openHis" v-if="httpForm.id">
|
<el-link type="primary" style="margin-right: 20px" @click="openHis" v-if="httpForm.id">
|
||||||
{{ $t('operating_log.change_history') }}
|
{{ $t('operating_log.change_history') }}
|
||||||
</el-link>
|
</el-link>
|
||||||
|
@ -69,7 +73,7 @@
|
||||||
<ms-input-tag :currentScenario="httpForm" ref="tag"/>
|
<ms-input-tag :currentScenario="httpForm" ref="tag"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item :label="$t('api_test.automation.follow_people')" prop="followPeople">
|
<el-form-item :label="$t('api_test.automation.follow_people')" prop="followPeople">
|
||||||
<el-select v-model="httpForm.follows"
|
<el-select v-model="httpForm.follows"
|
||||||
clearable multiple
|
clearable multiple
|
||||||
|
@ -83,7 +87,7 @@
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>-->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item :label="$t('commons.description')" prop="description">
|
<el-form-item :label="$t('commons.description')" prop="description">
|
||||||
<el-input class="ms-http-textarea"
|
<el-input class="ms-http-textarea"
|
||||||
|
@ -144,7 +148,7 @@
|
||||||
import MsJsr233Processor from "../../../automation/scenario/component/Jsr233Processor";
|
import MsJsr233Processor from "../../../automation/scenario/component/Jsr233Processor";
|
||||||
import MsSelectTree from "../../../../common/select-tree/SelectTree";
|
import MsSelectTree from "../../../../common/select-tree/SelectTree";
|
||||||
import MsChangeHistory from "../../../../history/ChangeHistory";
|
import MsChangeHistory from "../../../../history/ChangeHistory";
|
||||||
import {getCurrentProjectID, getUUID} from "@/common/js/utils";
|
import {getCurrentProjectID, getCurrentUser, getUUID} from "@/common/js/utils";
|
||||||
import MsFormDivider from "@/business/components/common/components/MsFormDivider";
|
import MsFormDivider from "@/business/components/common/components/MsFormDivider";
|
||||||
import ApiOtherInfo from "@/business/components/api/definition/components/complete/ApiOtherInfo";
|
import ApiOtherInfo from "@/business/components/api/definition/components/complete/ApiOtherInfo";
|
||||||
|
|
||||||
|
@ -177,6 +181,7 @@
|
||||||
},
|
},
|
||||||
httpForm: {environmentId: "", path: "", tags: []},
|
httpForm: {environmentId: "", path: "", tags: []},
|
||||||
isShowEnable: true,
|
isShowEnable: true,
|
||||||
|
showFollow:false,
|
||||||
maintainerOptions: [],
|
maintainerOptions: [],
|
||||||
currentModule: {},
|
currentModule: {},
|
||||||
reqOptions: REQ_METHOD,
|
reqOptions: REQ_METHOD,
|
||||||
|
@ -304,6 +309,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
currentUser: () => {
|
||||||
|
return getCurrentUser();
|
||||||
|
},
|
||||||
openHis(){
|
openHis(){
|
||||||
this.$refs.changeHistory.open(this.httpForm.id,["接口定义" , "接口定義" , "Api definition"]);
|
this.$refs.changeHistory.open(this.httpForm.id,["接口定义" , "接口定義" , "Api definition"]);
|
||||||
},
|
},
|
||||||
|
@ -402,6 +410,21 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
saveFollow(){
|
||||||
|
if(this.showFollow){
|
||||||
|
this.showFollow = false;
|
||||||
|
for (let i = 0; i < this.httpForm.follows.length; i++) {
|
||||||
|
if(this.httpForm.follows[i]===this.currentUser().id){
|
||||||
|
this.httpForm.follows.splice(i,1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
this.showFollow = true;
|
||||||
|
this.httpForm.follows.push(this.currentUser().id)
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
created() {
|
created() {
|
||||||
|
@ -412,6 +435,12 @@
|
||||||
this.httpForm = JSON.parse(JSON.stringify(this.basisData));
|
this.httpForm = JSON.parse(JSON.stringify(this.basisData));
|
||||||
this.$get('/api/definition/follow/' + this.basisData.id, response => {
|
this.$get('/api/definition/follow/' + this.basisData.id, response => {
|
||||||
this.httpForm.follows = response.data;
|
this.httpForm.follows = response.data;
|
||||||
|
for (let i = 0; i < response.data.length; i++) {
|
||||||
|
if(response.data[i]===this.currentUser().id){
|
||||||
|
this.showFollow = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
this.initMockEnvironment();
|
this.initMockEnvironment();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<ms-main-container>
|
<ms-main-container>
|
||||||
<el-card v-loading="result.loading">
|
<el-card v-loading="result.loading">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="6">
|
<el-col :span="12">
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
<el-form-item :label="$t('load_test.name') ">
|
<el-form-item :label="$t('load_test.name') ">
|
||||||
<el-input :disabled="isReadOnly" :placeholder="$t('load_test.input_name')" v-model="test.name"
|
<el-input :disabled="isReadOnly" :placeholder="$t('load_test.input_name')" v-model="test.name"
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<!-- <el-col :span="6">
|
||||||
<el-form>
|
<el-form>
|
||||||
<el-form-item :label="$t('api_test.automation.follow_people')">
|
<el-form-item :label="$t('api_test.automation.follow_people')">
|
||||||
<el-select v-model="test.follows"
|
<el-select v-model="test.follows"
|
||||||
|
@ -29,8 +29,12 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
</el-col>
|
</el-col>-->
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
<el-tooltip :content="$t('commons.follow')" placement="bottom" effect="dark">
|
||||||
|
<i class="el-icon-star-off" style="color: #783987; font-size: 25px; margin-right: 15px;cursor: pointer;position: relative; top: 5px; " @click="saveFollow" v-if="!showFollow"/>
|
||||||
|
<i class="el-icon-star-on" style="color: #783987; font-size: 28px; margin-right: 15px;cursor: pointer;position: relative; top: 5px; " @click="saveFollow" v-if="showFollow"/>
|
||||||
|
</el-tooltip>
|
||||||
<el-link type="primary" size="small" style="margin-right: 20px" @click="openHis" v-if="test.id">
|
<el-link type="primary" size="small" style="margin-right: 20px" @click="openHis" v-if="test.id">
|
||||||
{{ $t('operating_log.change_history') }}
|
{{ $t('operating_log.change_history') }}
|
||||||
</el-link>
|
</el-link>
|
||||||
|
@ -90,7 +94,7 @@ import PerformancePressureConfig from "./components/PerformancePressureConfig";
|
||||||
import PerformanceAdvancedConfig from "./components/PerformanceAdvancedConfig";
|
import PerformanceAdvancedConfig from "./components/PerformanceAdvancedConfig";
|
||||||
import MsContainer from "../../common/components/MsContainer";
|
import MsContainer from "../../common/components/MsContainer";
|
||||||
import MsMainContainer from "../../common/components/MsMainContainer";
|
import MsMainContainer from "../../common/components/MsMainContainer";
|
||||||
import {getCurrentProjectID, getCurrentWorkspaceId, hasPermission} from "@/common/js/utils";
|
import {getCurrentProjectID, getCurrentUser, getCurrentWorkspaceId, hasPermission} from "@/common/js/utils";
|
||||||
import MsScheduleConfig from "../../common/components/MsScheduleConfig";
|
import MsScheduleConfig from "../../common/components/MsScheduleConfig";
|
||||||
import MsChangeHistory from "../../history/ChangeHistory";
|
import MsChangeHistory from "../../history/ChangeHistory";
|
||||||
import MsTableOperatorButton from "@/business/components/common/components/MsTableOperatorButton";
|
import MsTableOperatorButton from "@/business/components/common/components/MsTableOperatorButton";
|
||||||
|
@ -123,6 +127,7 @@ export default {
|
||||||
active: '0',
|
active: '0',
|
||||||
testId: '',
|
testId: '',
|
||||||
isReadOnly: false,
|
isReadOnly: false,
|
||||||
|
showFollow:false,
|
||||||
tabs: [{
|
tabs: [{
|
||||||
title: this.$t('load_test.basic_config'),
|
title: this.$t('load_test.basic_config'),
|
||||||
id: '0',
|
id: '0',
|
||||||
|
@ -165,6 +170,9 @@ export default {
|
||||||
this.getMaintainerOptions();
|
this.getMaintainerOptions();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
currentUser: () => {
|
||||||
|
return getCurrentUser();
|
||||||
|
},
|
||||||
getMaintainerOptions() {
|
getMaintainerOptions() {
|
||||||
this.$post('/user/project/member/tester/list', {projectId: getCurrentProjectID()}, response => {
|
this.$post('/user/project/member/tester/list', {projectId: getCurrentProjectID()}, response => {
|
||||||
this.maintainerOptions = response.data;
|
this.maintainerOptions = response.data;
|
||||||
|
@ -248,6 +256,8 @@ export default {
|
||||||
},
|
},
|
||||||
getTest(testId) {
|
getTest(testId) {
|
||||||
if (testId) {
|
if (testId) {
|
||||||
|
this.test.follows = [];
|
||||||
|
this.showFollow = false;
|
||||||
this.testId = testId;
|
this.testId = testId;
|
||||||
this.result = this.$get('/performance/get/' + testId, response => {
|
this.result = this.$get('/performance/get/' + testId, response => {
|
||||||
if (response.data) {
|
if (response.data) {
|
||||||
|
@ -257,6 +267,12 @@ export default {
|
||||||
}
|
}
|
||||||
this.$get('/performance/test/follow/' + testId, response => {
|
this.$get('/performance/test/follow/' + testId, response => {
|
||||||
this.$set(this.test, 'follows', response.data);
|
this.$set(this.test, 'follows', response.data);
|
||||||
|
for (let i = 0; i < this.test.follows.length; i++) {
|
||||||
|
if(this.test.follows[i]===this.currentUser().id){
|
||||||
|
this.showFollow = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -463,6 +479,21 @@ export default {
|
||||||
if (tab.index === '1') {
|
if (tab.index === '1') {
|
||||||
this.$refs.pressureConfig.calculateTotalChart();
|
this.$refs.pressureConfig.calculateTotalChart();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
saveFollow(){
|
||||||
|
if(this.showFollow){
|
||||||
|
this.showFollow = false;
|
||||||
|
for (let i = 0; i < this.test.follows.length; i++) {
|
||||||
|
if(this.test.follows[i]===this.currentUser().id){
|
||||||
|
this.test.follows.splice(i,1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}else {
|
||||||
|
this.showFollow = true;
|
||||||
|
this.test.follows.push(this.currentUser().id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<el-form-item :label="$t('commons.phone')" prop="phone">
|
<el-form-item :label="$t('commons.phone')" prop="phone">
|
||||||
<el-input v-model="form.phone" autocomplete="off"/>
|
<el-input v-model="form.phone" autocomplete="off"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属工作空间" v-if="workspaceList.length>0">
|
<!-- <el-form-item label="所属工作空间" v-if="workspaceList.length>0">
|
||||||
<span v-for="(item,index) in workspaceList" :key = item.id >
|
<span v-for="(item,index) in workspaceList" :key = item.id >
|
||||||
<span>{{item.name}}</span><span v-if="index<workspaceList.length-1"> | </span>
|
<span>{{item.name}}</span><span v-if="index<workspaceList.length-1"> | </span>
|
||||||
</span>
|
</span>
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
<span v-for="(item,index) in projectList" :key = item.id >
|
<span v-for="(item,index) in projectList" :key = item.id >
|
||||||
<span>{{item.name}}</span><span v-if="index<projectList.length-1"> | </span>
|
<span>{{item.name}}</span><span v-if="index<projectList.length-1"> | </span>
|
||||||
</span>
|
</span>
|
||||||
</el-form-item>
|
</el-form-item>-->
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="cancel">{{$t('commons.cancel')}}</el-button>
|
<el-button @click="cancel">{{$t('commons.cancel')}}</el-button>
|
||||||
<el-button type="primary" @click="updateUser('updateUserForm')" @keydown.enter.native.prevent>{{$t('commons.confirm')}}</el-button>
|
<el-button type="primary" @click="updateUser('updateUserForm')" @keydown.enter.native.prevent>{{$t('commons.confirm')}}</el-button>
|
||||||
|
|
|
@ -96,21 +96,23 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
min-width="100"
|
min-width="120"
|
||||||
:label="$t('commons.operating')">
|
:label="$t('commons.operating')">
|
||||||
<template slot="header">
|
<template slot="header">
|
||||||
<header-label-operate @exec="customHeader"/>
|
<header-label-operate @exec="customHeader"/>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:default="scope">
|
<template v-slot:default="scope">
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<ms-table-operator :edit-permission="['PROJECT_TRACK_REVIEW:READ+EDIT']"
|
<ms-table-operator :edit-permission="['PROJECT_TRACK_REVIEW:READ+EDIT']"
|
||||||
:delete-permission="['PROJECT_TRACK_REVIEW:READ+DELETE']"
|
:delete-permission="['PROJECT_TRACK_REVIEW:READ+DELETE']"
|
||||||
@editClick="handleEdit(scope.row)"
|
@editClick="handleEdit(scope.row)"
|
||||||
@deleteClick="handleDelete(scope.row)">
|
@deleteClick="handleDelete(scope.row)">
|
||||||
</ms-table-operator>
|
</ms-table-operator>
|
||||||
|
<el-tooltip :content="$t('commons.follow')" placement="bottom" effect="dark" >
|
||||||
|
<i v-if="!scope.row.showFollow" class="el-icon-star-off" style="color: #783987; font-size: 25px; padding-left: 5px;top: 5px; position: relative; cursor: pointer;width: 28px;height: 28px;" @click="saveFollow(scope.row)"></i>
|
||||||
|
<i v-if="scope.row.showFollow" class="el-icon-star-on" style="color: #783987; font-size: 30px;padding-left: 5px; top: 5px; position: relative; cursor: pointer;width: 28px;height: 28px; " @click="saveFollow(scope.row)"></i>
|
||||||
|
</el-tooltip>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<header-custom ref="headerCustom" :initTableData="initTableData" :optionalFields=headerItems
|
<header-custom ref="headerCustom" :initTableData="initTableData" :optionalFields=headerItems
|
||||||
|
@ -132,7 +134,7 @@ import MsDialogFooter from "../../../common/components/MsDialogFooter";
|
||||||
import MsTableHeader from "../../../common/components/MsTableHeader";
|
import MsTableHeader from "../../../common/components/MsTableHeader";
|
||||||
import MsCreateBox from "../../../settings/CreateBox";
|
import MsCreateBox from "../../../settings/CreateBox";
|
||||||
import MsTablePagination from "../../../common/pagination/TablePagination";
|
import MsTablePagination from "../../../common/pagination/TablePagination";
|
||||||
import {getCurrentProjectID, getCurrentWorkspaceId} from "@/common/js/utils";
|
import {getCurrentProjectID, getCurrentUser, getCurrentWorkspaceId} from "@/common/js/utils";
|
||||||
import {_filter, _sort, deepClone, getLabel, getLastTableSortField,saveLastTableSortField} from "@/common/js/tableUtils";
|
import {_filter, _sort, deepClone, getLabel, getLastTableSortField,saveLastTableSortField} from "@/common/js/tableUtils";
|
||||||
import PlanStatusTableItem from "../../common/tableItems/plan/PlanStatusTableItem";
|
import PlanStatusTableItem from "../../common/tableItems/plan/PlanStatusTableItem";
|
||||||
import {Test_Case_Review} from "@/business/components/common/model/JsonData";
|
import {Test_Case_Review} from "@/business/components/common/model/JsonData";
|
||||||
|
@ -196,6 +198,9 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
currentUser: () => {
|
||||||
|
return getCurrentUser();
|
||||||
|
},
|
||||||
customHeader() {
|
customHeader() {
|
||||||
const list = deepClone(this.tableLabel);
|
const list = deepClone(this.tableLabel);
|
||||||
this.$refs.headerCustom.open(list);
|
this.$refs.headerCustom.open(list);
|
||||||
|
@ -235,8 +240,17 @@ export default {
|
||||||
let arr = res.data;
|
let arr = res.data;
|
||||||
let follow = arr.map(data => data.name).join("、");
|
let follow = arr.map(data => data.name).join("、");
|
||||||
let followIds = arr.map(data => data.id);
|
let followIds = arr.map(data => data.id);
|
||||||
|
let showFollow = false;
|
||||||
|
if (arr) {
|
||||||
|
arr.forEach(d => {
|
||||||
|
if(this.currentUser().id===d.id){
|
||||||
|
showFollow = true;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
this.$set(this.tableData[i], "follow", follow);
|
this.$set(this.tableData[i], "follow", follow);
|
||||||
this.$set(this.tableData[i], "followIds", followIds);
|
this.$set(this.tableData[i], "followIds", followIds);
|
||||||
|
this.$set(this.tableData[i], "showFollow", showFollow);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -284,6 +298,33 @@ export default {
|
||||||
saveSortField(key,orders){
|
saveSortField(key,orders){
|
||||||
saveLastTableSortField(key,JSON.stringify(orders));
|
saveLastTableSortField(key,JSON.stringify(orders));
|
||||||
},
|
},
|
||||||
|
saveFollow(row){
|
||||||
|
let param = {};
|
||||||
|
param.id = row.id;
|
||||||
|
if(row.showFollow){
|
||||||
|
row.showFollow = false;
|
||||||
|
for (let i = 0; i < row.followIds.length; i++) {
|
||||||
|
if(row.followIds[i]===this.currentUser().id){
|
||||||
|
row.followIds.splice(i,1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
param.followIds = row.followIds
|
||||||
|
this.$post('/test/case/review/edit/follows', param,() => {
|
||||||
|
this.initTableData();
|
||||||
|
});
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(!row.showFollow){
|
||||||
|
row.showFollow = true;
|
||||||
|
row.followIds.push(this.currentUser().id);
|
||||||
|
param.followIds = row.followIds
|
||||||
|
this.$post('/test/case/review/edit/follows', param,() => {
|
||||||
|
this.initTableData();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue