提交 86fe8b8b 编写于 作者: Z zhaoke

* fix ceate workspace fail

上级 e5860960
......@@ -12,22 +12,19 @@
<script setup lang="ts">
import Button from './Button.vue';
import Icon from './Icon.vue';
import {StateType} from "@/src/views/result/store";
import {useRouter} from "vue-router";
import {StateType} from "@/views/result/store";
import {useStore} from "vuex";
import {computed, onMounted} from "vue";
import {useI18n} from "vue-i18n";
const { t } = useI18n();
const store = useStore<{ Result: StateType }>();
const models = computed<any[]>(() => store.state.Result.queryResult.result)
var model = computed<any[]>(() => models.value.length > 0 ? models.value[0] : {})
const model = computed<any[]>(() => store.state.Result.lastResult)
const list = (page: number) => {
store.dispatch('Result/list', {
page: page});
const latest = () => {
store.dispatch('Result/latest', {});
}
list(1);
latest();
const showDetail = (item) => {
console.log(item)
......
......@@ -7,7 +7,7 @@
class="inline-left"
iconClass="text-green"
v-if="item.fail==0"
:title="item.total > 1 ? 'Workspace 1 (' + item.total + ')' : item.no"
:title="item.total > 1 ? item.workspaceName + '(' + item.total + ')' : item.testScriptName"
trailingTextClass="muted small"
>
</ListItem>
......@@ -16,7 +16,7 @@
class="inline-left"
iconClass="text-red"
v-else
:title="item.total > 1 ? 'Workspace 1 (' + item.total + ')' : item.no"
:title="item.total > 1 ? item.workspaceName + '(' + item.total + ')' : item.testScriptName"
trailingTextClass="muted small"
/>
<span v-if="item.checked == 0 || item.checked == undefined">{{momentTime(item.startTime, 'hh:mm')}}</span>
......
......@@ -14,24 +14,29 @@
@onOk="createNode"
:title="t('pls_name')"
>
<Form labelCol="50px" wrapperCol="60">
<FormItem name="name" :label="t('name')" :info="validateInfos.name">
<input v-model="modelRef.name" class="form-control"/>
<Form labelCol="50px" v-if="currentNode.path==''" wrapperCol="60">
<FormItem name="name" :label="t('name')" :info="wsValidateInfos.name">
<input v-model="wsModelRef.name" class="form-control"/>
</FormItem>
<FormItem v-if="currentNode.path==''" name="path" :label="t('path')" :info="validateInfos.path">
<input v-model="modelRef.path" class="form-control"/>
<FormItem name="path" :label="t('path')" :info="wsValidateInfos.path">
<input v-model="wsModelRef.path" class="form-control"/>
</FormItem>
<FormItem v-if="currentNode.path==''" name="type" :label="t('type')" :info="validateInfos.type">
<select name="type" v-model="modelRef.type" class="form-control">
<FormItem name="type" :label="t('type')" :info="wsValidateInfos.type">
<select name="type" v-model="wsModelRef.type" class="form-control">
<option v-for="item in testTypes" :key="item.value" :value="item.value">{{ item.label }}</option>
</select>
</FormItem>
<FormItem v-if="currentNode.path==''" name="lang" :label="t('default_lang')" :info="validateInfos.lang">
<select name="type" v-model="modelRef.lang" class="form-control">
<FormItem name="lang" :label="t('default_lang')" :info="wsValidateInfos.lang">
<select name="type" v-model="wsModelRef.lang" class="form-control">
<option v-for="item in langs" :key="item.code" :value="item.code">{{ item.name }}</option>
</select>
</FormItem>
</Form>
<Form labelCol="50px" v-else wrapperCol="60">
<FormItem name="name" :label="t('name')" :info="validateInfos.name">
<input v-model="modelRef.name" class="form-control"/>
</FormItem>
</Form>
</ZModal>
</div>
</template>
......@@ -49,7 +54,7 @@ import Tree from "./Tree.vue";
import ZModal from './Modal.vue';
import notification from "@/utils/notification";
import {unitTestTypesDef, ZentaoCasePrefix, ztfTestTypesDef} from "@/utils/const";
import {WorkspaceData} from "@/views/workspace/store";
import {computed, defineExpose, onMounted, onUnmounted, ref, watch, getCurrentInstance} from "vue";
import {Modal} from "ant-design-vue";
......@@ -80,7 +85,6 @@ import {ExecStatus} from "@/store/exec";
import debounce from "lodash.debounce";
import throttle from "lodash.debounce";
import {isInArray} from "@/utils/array";
import {PageType} from "@/store/tabs";
const {t} = useI18n();
......@@ -114,7 +118,7 @@ const isRunning = computed<any>(() => execStore.state.Exec.isRunning);
const store = useStore<{ Script: ScriptData }>();
const treeDataEmpty = computed<boolean>(() => !(treeData.value.length > 0 &&
treeData.value[0] && treeData.value[0].children))
const workspaceStore = useStore<{ Workspace: WorkspaceData }>();
const filerType = ref('')
const filerValue = ref('')
const showModal = ref(false)
......@@ -165,6 +169,15 @@ const rulesRef = ref({
name: [
{required: true, msg: t('pls_name')},
],
})
const {validate, reset, validateInfos} = useForm(modelRef, rulesRef);
const wsModelRef = ref({})
const wsRulesRef = ref({
name: [
{required: true, msg: t('pls_name')},
],
path: [
{required: true, msg: t('pls_workspace_path')},
],
......@@ -175,8 +188,7 @@ const rulesRef = ref({
{required: true, msg: t('pls_workspace_type')},
],
})
const {validate, reset, validateInfos} = useForm(modelRef, rulesRef);
const {validate:wsValidate, reset:wsReset, validateInfos:wsValidateInfos} = useForm(wsModelRef, wsRulesRef);
const treeRef = ref<{ isAllCollapsed: () => boolean, toggleAllCollapsed: () => void }>();
......@@ -511,19 +523,18 @@ const cancelUpdate = (path) => {
}
const createWorkSpace = () => {
if(validate()){
store.dispatch('Workspace/save', modelRef.value).then((response) => {
if (response) {
modelRef.value = {};
notification.success({message: t('save_success')});
showModal.value = false;
if(wsValidate()){
console.log(workspaceStore)
workspaceStore.dispatch('Workspace/save', wsModelRef.value).then((response) => {
if (response) {
wsModelRef.value = {};
notification.success({message: t('save_success')});
showModal.value = false;
}
})
}
})
}
};
const createNode = () => {
if (currentNode.value.path == '') {
createWorkSpace();
......@@ -534,27 +545,29 @@ const createNode = () => {
if (currentNode.value.isLeaf) {
type = 'node';
}
scriptStore.dispatch('Script/createScript', {
name: modelRef.value.name, mode: mode, type: type, target: currentNode.value.path,
workspaceId: currentNode.value.workspaceId, productId: currProduct.value.id,
}).then((result) => {
if (result) {
showModal.value = false;
notification.success({message: t('create_success')});
nameFormVisible.value = false
if (mode == 'child') {
expandedKeys.value.push(rightClickedNode.path)
}
if (type === 'dir') {
expandedKeys.value.push(result)
}
setExpandedKeys(currSite.value.id, currProduct.value.id, expandedKeys.value)
} else {
notification.error({message: t('create_fail')});
}
})
if(validate()){
scriptStore.dispatch('Script/createScript', {
name: modelRef.value.name, mode: mode, type: type, target: currentNode.value.path,
workspaceId: currentNode.value.workspaceId, productId: currProduct.value.id,
}).then((result) => {
if (result) {
showModal.value = false;
notification.success({message: t('create_success')});
nameFormVisible.value = false
if (mode == 'child') {
expandedKeys.value.push(rightClickedNode.path)
}
if (type === 'dir') {
expandedKeys.value.push(result)
}
setExpandedKeys(currSite.value.id, currProduct.value.id, expandedKeys.value)
} else {
notification.error({message: t('create_fail')});
}
})
}
}
const menuClick = (act: string, node: any) => {
......
......@@ -19,6 +19,7 @@ import _ from "lodash";
import mitt, {Emitter} from "@/utils/mitt";
import Toast, { PluginOptions } from "vue-toastification";
import "vue-toastification/dist/index.css";
const app = createApp(App)
app.use(store);
app.use(router)
......
......@@ -4,6 +4,7 @@ import { ResponseData } from '@/utils/request';
import {deleteWorkspace, getWorkspace} from "@/services/workspace";
import {setCache} from "@/utils/localCache";
import settings from '@/config/settings';
import {save} from '@/views/workspace/service';
export interface WorkspaceData {
workspaces: any[]
......@@ -20,6 +21,7 @@ export interface ModuleType extends StoreModuleType<WorkspaceData> {
actions: {
fetchWorkspace: Action<WorkspaceData, WorkspaceData>;
removeWorkspace: Action<WorkspaceData, WorkspaceData>;
save: Action<WorkspaceData, WorkspaceData>;
};
}
......@@ -73,6 +75,14 @@ const StoreModel: ModuleType = {
return false;
}
},
async save({ commit }, payload) {
try {
await save(payload);
return true;
} catch (error) {
return false;
}
},
}
}
......
......@@ -18,6 +18,14 @@ export async function get(params: any): Promise<any> {
});
}
export async function getLastest(params: any): Promise<any> {
return request({
url: `/${apiPath}/latest`,
method: 'get',
params,
});
}
export async function remove(params: any): Promise<any> {
return request({
url: `/${apiPath}`,
......
......@@ -3,12 +3,13 @@ import { StoreModuleType } from "@/utils/store";
import { ResponseData } from '@/utils/request';
import { QueryParams, QueryResult } from '@/types/data.d';
import {
list, get, remove,
list, get, remove,getLastest,
} from './service';
export interface StateType {
queryResult: QueryResult;
detailResult: any;
lastResult: any;
}
export interface ModuleType extends StoreModuleType<StateType> {
......@@ -16,11 +17,13 @@ export interface ModuleType extends StoreModuleType<StateType> {
mutations: {
setQueryResult: Mutation<StateType>;
setDetailResult: Mutation<StateType>;
setLastResult: Mutation<StateType>;
};
actions: {
list: Action<StateType, StateType>;
get: Action<StateType, StateType>;
delete: Action<StateType, StateType>;
latest: Action<StateType, StateType>;
};
}
const initState: StateType = {
......@@ -35,6 +38,7 @@ const initState: StateType = {
},
},
detailResult: {},
lastResult: {},
};
const StoreModel: ModuleType = {
......@@ -50,6 +54,9 @@ const StoreModel: ModuleType = {
setDetailResult(state, payload) {
state.detailResult = payload;
},
setLastResult(state, payload) {
state.lastResult = payload;
},
},
actions: {
async list({ commit }, params: QueryParams ) {
......@@ -79,6 +86,20 @@ const StoreModel: ModuleType = {
await remove(data);
dispatch('list', {})
return true;
} catch (error) {
return false;
}
},
async latest({ commit }, params: QueryParams ) {
try {
const response: ResponseData = await getLastest(params);
if (response.code != 0) {
return;
}
const data = response.data;
commit('setLastResult', data);
return true;
} catch (error) {
return false;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册