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

* fix ceate workspace fail

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