Commit 376059d0 authored by Wallen姚文辉's avatar Wallen姚文辉

暂存加审核

parent dbd59f52
.layout{border:1px solid #d7dde4;background:#f5f7f9;position:relative;border-radius:4px;overflow:hidden}.layout-logo{width:100px;height:30px;background:#5b6270;border-radius:3px;float:left;position:relative;top:15px;left:20px}.layout-nav{margin:0 auto;display:flex}.card{height:300px;background:rgba(103,176,185,.7);transform:translateY(90%);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:30px 5px 15px 5px;text-align:center}.login{max-width:400px;margin:0 auto!important;transform:translateY(40%)}.vertical-center-modal{display:flex;align-items:center;justify-content:center}.vertical-center-modal .ivu-modal{top:0}.chart{height:100vh}.info-card{margin:10px 5px 10px 5px;background-color:#fff;border-radius:8px;box-shadow:0 0 8px 0 hsla(0,0%,71%,.58)}#my_table{text-align:left;width:90%;margin:0 10px 10px 10px;margin-right:auto;margin-left:auto}#my-table td:first-child{width:80%}#my-table td:nth-child(2){width:10%}.header_style{border-bottom:1px solid #dcdee2}.center_style{width:90%;margin:auto}.background_sytle{background-color:#f8f8f9;padding-top:.5px;padding-bottom:.5px;border-radius:8px;margin-top:2px;margin-bottom:2px}.near_left{width:25%;display:inline-block;height:100%}.near_right{width:75%;display:inline-block}.fontstyle{text-align:left}@keyframes changDeg{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.demo-spin-icon-load{color:#2b85e4;animation:changDeg 2s linear .2s infinite}
\ No newline at end of file
.layout{border:1px solid #d7dde4;background:#f5f7f9;position:relative;border-radius:4px;overflow:hidden}.layout-logo{width:100px;height:30px;background:#5b6270;border-radius:3px;float:left;position:relative;top:15px;left:20px}.layout-nav{margin:0 auto;display:flex}.card{height:300px;background:rgba(103,176,185,.7);transform:translateY(90%);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border-radius:30px 5px 15px 5px;text-align:center}.login{max-width:400px;margin:0 auto!important;transform:translateY(40%)}.chart{height:100vh}.info-card{margin:10px 5px 10px 5px;background-color:#fff;border-radius:8px;box-shadow:0 0 8px 0 hsla(0,0%,71%,.58)}#my_table{text-align:left;width:90%;margin:0 10px 10px 10px;margin-right:auto;margin-left:auto}#my-table td:first-child{width:80%}#my-table td:nth-child(2){width:10%}.header_style{border-bottom:1px solid #dcdee2}.center_style{width:90%;margin:auto}.background_sytle{background-color:#f8f8f9;padding-top:.5px;padding-bottom:.5px;border-radius:8px;margin-top:2px;margin-bottom:2px}.near_left{width:25%;display:inline-block;height:100%}.near_right{width:75%;display:inline-block}.fontstyle{text-align:left}@keyframes changDeg{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.demo-spin-icon-load{color:#2b85e4;animation:changDeg 2s linear .2s infinite}.vertical-center-modal{display:flex;align-items:center;justify-content:center}.vertical-center-modal .ivu-modal{top:0}
\ No newline at end of file
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>yinhe_test</title><script defer="defer" src="/js/chunk-vendors.822ae491.js"></script><script defer="defer" src="/js/app.d3aac078.js"></script><link href="/css/chunk-vendors.187ae3e6.css" rel="stylesheet"><link href="/css/app.787b06e3.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but yinhe_test doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>yinhe_test</title><script defer="defer" src="/js/chunk-vendors.822ae491.js"></script><script defer="defer" src="/js/app.1bba1e9d.js"></script><link href="/css/chunk-vendors.187ae3e6.css" rel="stylesheet"><link href="/css/app.6955fc17.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but yinhe_test doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -11,6 +11,8 @@ import VncShow from '@/views/VncShow.vue';
import EmailCenter from '@/views/systemview/EmailCenter';
import UploadCae from '@/views/tool/UploadCae.vue';
import TestReport from '@/views/tool/TestReport';
import ReportLsit from '@/views/tool/ReportLsit';
import AduitReportList from '@/views/tool/AduitReportList';
import Echarts from "vue-echarts";
import 'echarts';
import ViewUIPlus from 'view-ui-plus';
......@@ -66,6 +68,14 @@ const routers = [
path: 'uploadcase',
name: 'uploadcase',
component: UploadCae
}, {
path: 'reportlsit',
name: 'reportlsit',
component: ReportLsit
}, {
path: 'aduitreportlist',
name: 'aduitreportlist',
component: AduitReportList
}
]
......
......@@ -2,6 +2,7 @@ import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '@/views/HomeView.vue'
import Login from '@/views/Login.vue'
import UserInfo from '@/views/systemview/UserInfo.vue'
import TestReport from '@/views/tool/TestReport';
......@@ -21,6 +22,11 @@ const routes = [
path: 'userinfo',
name: 'userinfo',
component: UserInfo,
},
{
path: 'report',
name: 'report',
component: TestReport
},]
}, {
name: 'login',
......
......@@ -126,7 +126,7 @@ export default {
}
)
} else {
const index = this.columns.findIndex(ele => { return ele.title == 'Action' })
const index = this.columns.findIndex(ele => { return ele.title == '禁用' })
index != -1 && this.columns.splice(index, 1)
}
}
......
<template>
<PageHeader :title="title">
<template #action>
<Button v-if="elements.indexOf('6-1') != -1" type="primary" @click="aduitorShow = true">配置审核人员</Button>
</template>
<template #content>
<Space>
<Input v-model="searchinfo.project" placeholder="请输入项目名" style="width: 260px" />
<Input v-model="searchinfo.story" placeholder="请输入迭代名" style="width: 260px" />
<Input v-model="searchinfo.remark" placeholder="请输入备注" style="width: 260px" />
<Button type="primary" @click="getreport()">搜索</Button>
</Space>
</template>
</PageHeader>
<div style="margin-top: 8px">
<Table :columns="columns" :data="reports">
<template #audit_status="{ row }">
<Strong :style="getcolor(row.audit_status)">{{
row.audit_status == 0 ? '待审核' : row.audit_status == 1 ? '通过' : '驳回' }}</Strong>
</template>
<template #report_status="{ row }">
<Strong>{{ row.report_status == 0 ? '未发送' : '已发送' }}</Strong>
</template>
<template #see="{ row }">
<a @click="goreport(3, row.id)">查看
</a>
</template>
<template v-if="elements.indexOf('6-2') != -1" #audit="{ row }">
<Button v-if="!row.audit_status" type="info" ghost
@click="this.choiceportid = row.id; this.aduitShow = true">审核</Button>
</template>
</Table>
<Page :total="totals" :page-size="searchinfo.page_size" v-model="searchinfo.page_num" @on-change="getreport()"
show-total style="margin-top: 20px;" />
</div>
<Space wrap>
<Modal v-model="aduitShow">
<template #header>
<p style="color:#2d8cf0;text-align:center">
<span>审核</span>
</p>
</template>
<div style="text-align:center">
<Input v-model="value2" type="textarea" :rows="4" placeholder="备注" />
</div>
<template #footer>
<div style="text-align: center;">
<Button type="success" @click="aduit(choiceportid, 1)">通过</Button>
<Button type="error" @click="aduit(choiceportid, 2)">驳回</Button>
</div>
</template>
</Modal>
<Modal title="配置审核人员" v-model="aduitorShow" class-name="vertical-center-modal" @on-cancel="closeShow()">
<Select filterable v-model="choiceaduitor" multiple style="width:260px;margin-bottom: 15px"
placeholder="审核人员">
<Option v-for="item in alluser" :value="item.id" :key="item.id">{{ item.name }}</Option>
</Select>
<template #footer>
<Button @click="closeShow()">取消</Button>
<Button type="primary" @click="setaduitor()">确认</Button>
</template>
</Modal>
</Space>
</template>
<script>
export default {
props: ['isCollapsed',],
data() {
return {
page_id: 23,
title: "报告审核",
aduitShow: false,
aduitorShow: false,
searchinfo: {
page_size: 10,
page_num: 1,
project: null,
story: null,
remark: null
},
choiceportid: null,
remark: null,
totals: 0,
alluser: [],
choiceaduitor: [],
reports: [],
columns: [
{
title: '项目',
key: 'project',
align: 'center'
},
{
title: '迭代',
key: 'story',
align: 'center'
}, {
title: '提交时间',
key: 'create_time',
align: 'center'
}, {
title: '提交人',
key: 'create_user_name',
align: 'center'
}, {
title: '备注',
key: 'audit_remark',
align: 'center'
},
{
title: '审核状态',
slot: 'audit_status',
align: 'center'
},
{
title: '审核人',
key: 'audit_user_name',
align: 'center'
},
{
title: '发送状态',
slot: 'report_status',
align: 'center'
}
, {
title: '查看',
slot: 'see',
align: 'center'
}
],
elements: []
}
},
methods: {
getreport() {
this.$request("get", "/tool/testport/reportauditlist", this.searchinfo, this, (data) => { this.reports = data.data.rows; this.totals = data.data.total })
},
closeShow() {
this.aduitorShow = false
},
getaduitor() {
this.$request("get", "/tool/testport/getauditors", null, this, (data) => { this.choiceaduitor = data.data })
},
getalluser() {
this.$request("get", "/user/user_list?page_size=100&page_num=1", null, this, (data) => { this.alluser = data.data.rows })
},
setaduitor() {
this.$request("post", "/tool/testport/setauditor", { ids: this.choiceaduitor }, this, () => { this.aduitorShow = false })
},
aduit(id, status) {
this.$request("post", "/tool/testport/audit", { id, audit_status: status }, this, () => { this.getreport(); this.choiceportid = null; this.aduitShow = false })
},
getcolor(status) {
return "color:" + (status == 0 ? "#c5c8ce" : status == 1 ? "#19be6b" : "#ff9900")
},
goreport(pagestatus, id) {
localStorage.setItem('pagestatus', pagestatus)
localStorage.setItem('reportid', id ? id : 0)
const a = this.$router.resolve({
name: 'report'
})
window.open(a.href, '_blank')
}
},
watch: {
elements(value) {
if (value.indexOf('6-2') != -1 && this.columns.findIndex(each => { return each.title == '审核' }) == -1) {
this.columns.push({
title: '审核',
slot: 'audit',
align: 'center'
}
)
} else {
const index = this.columns.findIndex(ele => { return ele.title == '审核' })
index != -1 && this.columns.splice(index, 1)
}
},
aduitorShow(value) {
if (value) {
if (this.alluser) this.getalluser()
this.getaduitor()
}
}
},
created() {
this.$getElements(this.page_id, this, (data) => this.elements = data.data);
this.getalluser();
this.getreport();
}
};
</script>
<style>
.vertical-center-modal {
display: flex;
align-items: center;
justify-content: center;
}
.vertical-center-modal .ivu-modal {
top: 0;
}
</style>
\ No newline at end of file
<template>
<PageHeader :title="title">
<template #action>
<Button type="primary" @click="goreport(0, null)">制作测试报告</Button>
</template>
<template #content>
<Space>
<Input v-model="searchinfo.project" placeholder="请输入项目名" style="width: 260px" />
<Input v-model="searchinfo.story" placeholder="请输入迭代名" style="width: 260px" />
<Input v-model="searchinfo.remark" placeholder="请输入备注" style="width: 260px" />
<Button type="primary" @click="getreport()">搜索</Button>
</Space>
</template>
</PageHeader>
<div style="margin-top: 8px">
<Table row-key="id" :columns="columns" :data="reports" show-context-menu>
<template #status="{ row }">
<p>{{ row.report_status ? '已发送' : '未发送' }}</p>
</template>
<template #edit="{ row }">
<Button size="small" v-if="!row.status" type="info" ghost @click="goreport(1, row.id)">编辑</Button>
<Button size="small" style="margin-left: 5px;" type="error" ghost @click="delreport(row.id)">删除</Button>
</template>
</Table>
<Page :total="totals" :page-size="searchinfo.page_size" v-model="searchinfo.page_num" @on-change="getreport()"
show-total style="margin-top: 20px;" />
</div>
</template>
<script>
export default {
props: ['isCollapsed',],
data() {
return {
page_id: 22,
title: "测试报告",
searchinfo: {
page_size: 10,
page_num: 1,
project: null,
story: null,
remark: null
},
totals: 0,
reports: [],
columns: [
{
title: '项目',
key: 'project',
align: 'center'
}, {
title: '迭代',
key: 'story',
align: 'center'
}, {
title: '更新时间',
key: 'update_time',
align: 'center'
}, {
title: '备注',
key: 'save_remark',
align: 'center'
},
{
title: '状态',
slot: 'status',
align: 'center'
}
, {
title: '编辑',
slot: 'edit',
align: 'center'
}
],
elements: []
}
},
methods: {
getreport() {
this.$request("get", "/tool/testport/reportlist", this.searchinfo, this, (data) => { this.reports = data.data.rows; this.totals = data.data.total })
},
goreport(pagestatus, id) {
localStorage.setItem('pagestatus', pagestatus)
localStorage.setItem('reportid', id ? id : 0)
const a = this.$router.resolve({
name: 'report'
})
window.open(a.href, '_blank')
},
delreport(id) {
this.$request('delete', '/tool/testport/delreport/' + id, null, this, () => { this.getreport() })
}
},
created() {
this.getreport();
}
};
</script>
<style>
.vertical-center-modal {
display: flex;
align-items: center;
justify-content: center;
}
.vertical-center-modal .ivu-modal {
top: 0;
}
</style>
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment