我负责的项目页面完善对话框

This commit is contained in:
GUjiYN 2024-04-17 15:44:51 +08:00
parent 35354344e4
commit 4d2c6c65e8
4 changed files with 132 additions and 10 deletions

6
components.d.ts vendored
View File

@ -20,6 +20,8 @@ declare module '@vue/runtime-core' {
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
ElCard: typeof import('element-plus/es')['ElCard'] ElCard: typeof import('element-plus/es')['ElCard']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol'] ElCol: typeof import('element-plus/es')['ElCol']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
@ -37,6 +39,8 @@ declare module '@vue/runtime-core' {
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElProgress: typeof import('element-plus/es')['ElProgress'] ElProgress: typeof import('element-plus/es')['ElProgress']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
@ -45,7 +49,9 @@ declare module '@vue/runtime-core' {
ElTable: typeof import('element-plus/es')['ElTable'] ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTag: typeof import('element-plus/es')['ElTag'] ElTag: typeof import('element-plus/es')['ElTag']
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElUpload: typeof import('element-plus/es')['ElUpload']
ErrorLog: typeof import('./src/components/ErrorLog/index.vue')['default'] ErrorLog: typeof import('./src/components/ErrorLog/index.vue')['default']
GithubCorner: typeof import('./src/components/GithubCorner/index.vue')['default'] GithubCorner: typeof import('./src/components/GithubCorner/index.vue')['default']
Hamburger: typeof import('./src/components/Hamburger/index.vue')['default'] Hamburger: typeof import('./src/components/Hamburger/index.vue')['default']

View File

@ -15,7 +15,7 @@ export function isExternal(path) {
* @returns {Boolean} * @returns {Boolean}
*/ */
export function validUsername(str) { export function validUsername(str) {
const valid_map = ['admin', 'editor', 'teacher_user', 'teacher_demo', 'demo', 'xiao_lfeng', 'yangna']; const valid_map = ['console_user', 'developer_user', 'principal_user'];
return valid_map.indexOf(str.trim()) >= 0; return valid_map.indexOf(str.trim()) >= 0;
} }

View File

@ -113,8 +113,8 @@ export default defineComponent({
}; };
return { return {
loginForm: { loginForm: {
username: 'teacher_user', username: 'principal_user',
password: '123456' password: 'jsl_nbxt'
}, },
loginRules: { loginRules: {
username: [{ required: true, trigger: 'blur', validator: validateUsername }], username: [{ required: true, trigger: 'blur', validator: validateUsername }],

View File

@ -37,16 +37,21 @@
<template #header> <template #header>
<div class="card-header" style="display: flex; justify-content: space-between; align-items: center;"> <div class="card-header" style="display: flex; justify-content: space-between; align-items: center;">
<span>项目列表</span> <span>项目列表</span>
<div> <div style="display: flex;">
<el-upload
multiple
style=" margin-right: 13px;"
>
<el-button type="success"> <el-button type="success">
<el-icon><UploadFilled /></el-icon> <el-icon><UploadFilled /></el-icon>
上传文档 上传文档
</el-button> </el-button>
<el-button type="primary"> </el-upload>
<el-button type="primary" @click="toggleAddDialog()">
<el-icon><Plus /></el-icon> <el-icon><Plus /></el-icon>
新增 新增
</el-button> </el-button>
<el-button type="danger"> <el-button type="danger" @click="toggleDeleteDialog()">
<el-icon><DeleteFilled /></el-icon> <el-icon><DeleteFilled /></el-icon>
删除 删除
</el-button> </el-button>
@ -105,6 +110,103 @@
<el-pagination background layout="prev, pager, next" :total="1000" /> <el-pagination background layout="prev, pager, next" :total="1000" />
</div> </div>
</el-card> </el-card>
<!--新增项目对话框-->
<el-dialog v-model="AddDialogVisible" title="新增项目" width="500">
<el-form label-width="auto" style="max-width: 600px">
<el-form-item
label="项目名称"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'blur',
}"
>
<el-input />
</el-form-item>
<el-form-item
label="周期"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'blur',
}"
>
<el-input />
</el-form-item>
<el-form-item
label="工作量"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'blur',
}"
>
<el-input />
</el-form-item>
<el-form-item
label="项目描述"
:rules="{
required: true,
message: 'domain can not be null',
trigger: 'blur',
}"
>
<el-input type="textarea" />
</el-form-item>
<el-form-item>
<el-row>
<el-col :span="20">
<el-form-item
label="状态"
:rules="{
required: true,
message: 'Please select a status',
trigger: 'blur',
}"
>
<el-select placeholder="Please select a zone">
<el-option label="Zone No.1" value="shanghai" />
<el-option label="Zone No.2" value="beijing" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<el-button type="success">
<el-icon><UploadFilled /></el-icon>
上传文档
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="CancelAdd()">取消</el-button>
<el-button type="primary">
确认
</el-button>
</div>
</template>
</el-dialog>
<!--删除项目对话框-->
<el-dialog
title="删除项目"
width="450"
align-center
v-model="DeleteDialogVisible"
>
<span>确认删除该项目吗?</span>
<template #footer>
<div class="dialog-footer">
<el-button type="danger">删除</el-button>
<el-button @click="CancelDelete()">取消</el-button>
</div>
</template>
</el-dialog>
</template> </template>
<script> <script>
import { Plus, UploadFilled, Delete, DeleteFilled, RefreshRight, Search } from '@element-plus/icons-vue'; import { Plus, UploadFilled, Delete, DeleteFilled, RefreshRight, Search } from '@element-plus/icons-vue';
@ -120,6 +222,8 @@ export default defineComponent({
components: { RefreshRight, DeleteFilled, Delete, UploadFilled, Plus, Search }, components: { RefreshRight, DeleteFilled, Delete, UploadFilled, Plus, Search },
data() { data() {
return { return {
AddDialogVisible:false,
DeleteDialogVisible:false,
tableData:[], tableData:[],
listLoading: false, listLoading: false,
token: getToken(), token: getToken(),
@ -146,6 +250,18 @@ export default defineComponent({
this.listLoading = false; this.listLoading = false;
}); });
}, },
toggleAddDialog() {
this.AddDialogVisible = !this.AddDialogVisible;
},
CancelAdd() {
this.AddDialogVisible = false;
},
toggleDeleteDialog() {
this.DeleteDialogVisible = !this.DeleteDialogVisible;
},
CancelDelete() {
this.DeleteDialogVisible = false;
}
}, },
}) })
</script> </script>