From d3a69cdbd89192b3eb8bc1d5565aad18919ed52d Mon Sep 17 00:00:00 2001
From: shj <1790240199@qq.com>
Date: 星期三, 29 六月 2022 18:14:29 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqtOut
---
src/views/contingency/component/dialog.vue | 200 +++++++++++++++++++++++++
src/views/contingency/team/index.vue | 270 ++++++++++++++++++++++++++++++++
2 files changed, 463 insertions(+), 7 deletions(-)
diff --git a/src/views/contingency/component/dialog.vue b/src/views/contingency/component/dialog.vue
new file mode 100644
index 0000000..add861a
--- /dev/null
+++ b/src/views/contingency/component/dialog.vue
@@ -0,0 +1,200 @@
+<template>
+ <div class="system-add-user-container">
+ <el-dialog title="查看应急队伍管理" v-model="isShowDialog" width="769px">
+ <el-form :model="ruleForm" size="default" label-width="90px">
+ <el-row :gutter="35">
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="账户名称">
+ <el-input v-model="ruleForm.userName" placeholder="请输入账户名称" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="用户昵称">
+ <el-input v-model="ruleForm.userNickname" placeholder="请输入用户昵称" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="关联角色">
+ <el-select v-model="ruleForm.roleSign" placeholder="请选择" clearable class="w100">
+ <el-option label="超级管理员" value="admin"></el-option>
+ <el-option label="普通用户" value="common"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="部门">
+ <el-cascader
+ :options="deptData"
+ :props="{ checkStrictly: true, value: 'deptName', label: 'deptName' }"
+ placeholder="请选择部门"
+ clearable
+ class="w100"
+ v-model="ruleForm.department"
+ >
+ <template #default="{ node, data }">
+ <span>{{ data.deptName }}</span>
+ <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
+ </template>
+ </el-cascader>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="手机号">
+ <el-input v-model="ruleForm.phone" placeholder="请输入手机号" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="邮箱">
+ <el-input v-model="ruleForm.email" placeholder="请输入" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="性别">
+ <el-select v-model="ruleForm.sex" placeholder="请选择" clearable class="w100">
+ <el-option label="男" value="男"></el-option>
+ <el-option label="女" value="女"></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="账户密码">
+ <el-input v-model="ruleForm.password" placeholder="请输入" type="password" clearable></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="账户过期">
+ <el-date-picker v-model="ruleForm.overdueTime" type="date" placeholder="请选择" class="w100"> </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+ <el-form-item label="用户状态">
+ <el-switch v-model="ruleForm.status" inline-prompt active-text="启" inactive-text="禁"></el-switch>
+ </el-form-item>
+ </el-col>
+ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+ <el-form-item label="用户描述">
+ <el-input v-model="ruleForm.describe" type="textarea" placeholder="请输入用户描述" maxlength="150"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="onCancel" size="default">取 消</el-button>
+ <el-button type="primary" @click="onSubmit" size="default">新 增</el-button>
+ </span>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script lang="ts">
+import { reactive, toRefs, onMounted, defineComponent } from 'vue';
+
+// 定义接口来定义对象的类型
+interface DeptData {
+ deptName: string;
+ createTime: string;
+ status: boolean;
+ sort: number | string;
+ describe: string;
+ id: number;
+ children?: DeptData[];
+}
+interface UserState {
+ isShowDialog: boolean;
+ ruleForm: {
+ userName: string;
+ userNickname: string;
+ roleSign: string;
+ department: any;
+ phone: string;
+ email: string;
+ sex: string;
+ password: string;
+ overdueTime: string;
+ status: boolean;
+ describe: string;
+ };
+ deptData: Array<DeptData>;
+}
+
+export default defineComponent({
+ name: 'systemAddUser',
+ setup() {
+ const state = reactive<UserState>({
+ isShowDialog: false,
+ ruleForm: {
+ userName: '', // 账户名称
+ userNickname: '', // 用户昵称
+ roleSign: '', // 关联角色
+ department: [], // 部门
+ phone: '', // 手机号
+ email: '', // 邮箱
+ sex: '', // 性别
+ password: '', // 账户密码
+ overdueTime: '', // 账户过期
+ status: true, // 用户状态
+ describe: '', // 用户描述
+ },
+ deptData: [], // 部门数据
+ });
+ // 打开弹窗
+ const openDialog = () => {
+ state.isShowDialog = true;
+ };
+ // 关闭弹窗
+ const closeDialog = () => {
+ state.isShowDialog = false;
+ };
+ // 取消
+ const onCancel = () => {
+ closeDialog();
+ };
+ // 新增
+ const onSubmit = () => {
+ closeDialog();
+ };
+ // 初始化部门数据
+ const initTableData = () => {
+ state.deptData.push({
+ deptName: 'vueNextAdmin',
+ createTime: new Date().toLocaleString(),
+ status: true,
+ sort: Math.random(),
+ describe: '顶级部门',
+ id: Math.random(),
+ children: [
+ {
+ deptName: 'IT外包服务',
+ createTime: new Date().toLocaleString(),
+ status: true,
+ sort: Math.random(),
+ describe: '总部',
+ id: Math.random(),
+ },
+ {
+ deptName: '资本控股',
+ createTime: new Date().toLocaleString(),
+ status: true,
+ sort: Math.random(),
+ describe: '分部',
+ id: Math.random(),
+ },
+ ],
+ });
+ };
+ // 页面加载时
+ onMounted(() => {
+ initTableData();
+ });
+ return {
+ openDialog,
+ closeDialog,
+ onCancel,
+ onSubmit,
+ ...toRefs(state),
+ };
+ },
+});
+</script>
diff --git a/src/views/contingency/team/index.vue b/src/views/contingency/team/index.vue
index 4bb1816..bb158ac 100644
--- a/src/views/contingency/team/index.vue
+++ b/src/views/contingency/team/index.vue
@@ -1,13 +1,269 @@
<template>
-
+ <div class="system-user-container">
+ <el-card shadow="hover">
+ <div class="system-user-search mb15">
+ <el-input size="default" placeholder="队伍名称" style="max-width: 215px;"> </el-input>
+ <el-select size="default" v-model="value" placeholder="请选择队伍级别" class="ml10" style="max-width: 215px;">
+ <el-option label="公司" value="shanghai"></el-option>
+ <el-option label="分厂-车间" value="beijing"></el-option>
+ <el-option label="工序-班组等" value="beijing"></el-option>
+<!-- <el-option-->
+<!-- v-for="item in options"-->
+<!-- :key="item.value"-->
+<!-- :label="item.label"-->
+<!-- :value="item.value"-->
+<!-- />-->
+ </el-select>
+ <el-button size="default" type="primary" class="ml10">
+ 查询
+ </el-button>
+ <el-button size="default" class="ml10" @click="submitReset">
+ 重置
+ </el-button>
+ </div>
+ <div class="button_Line">
+ <div class="button_Left">
+ <el-button type="primary" @click="onOpenAdd">
+ <el-icon>
+ <Plus />
+ </el-icon>新建
+ </el-button>
+ <el-button type="warning" plain disabled>
+ <el-icon>
+ <Edit />
+ </el-icon>修改
+ </el-button>
+ <el-button type="danger" plain disabled>
+ <el-icon>
+ <Delete />
+ </el-icon>删除
+ </el-button>
+ </div>
+ <div class="button_Right">
+ <el-button>
+ <el-icon>
+ <Upload />
+ </el-icon>
+ </el-button>
+ <el-button>
+ <el-icon>
+ <Download />
+ </el-icon>
+ </el-button>
+ <el-button>
+ <el-icon>
+ <Refresh />
+ </el-icon>
+ </el-button>
+ </div>
+ </div>
+ <el-table :data="tableData.data" style="width: 100%">
+ <el-table-column type="index" label="序号" width="60" />
+ <el-table-column prop="userName" label="队伍名称" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="userNickname" label="队伍级别" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="roleSign" label="队伍描述" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="phone" label="负责人手机" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="email" label="相关附件" show-overflow-tooltip></el-table-column>
+ <el-table-column label="操作" width="200" align="center">
+ <template #default="scope">
+ <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenLink(scope.row)">
+ <el-icon style="margin-right: 5px;">
+ <View />
+ </el-icon>查看
+ </el-button>
+ <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenEditUser(scope.row)">
+ <el-icon style="margin-right: 5px;">
+ <EditPen />
+ </el-icon>修改
+ </el-button>
+ <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onRowDel(scope.row)">
+ <el-icon>
+ <Delete />
+ </el-icon>删除
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <el-pagination
+ @size-change="onHandleSizeChange"
+ @current-change="onHandleCurrentChange"
+ class="mt15"
+ :pager-count="5"
+ :page-sizes="[10, 20, 30]"
+ v-model:current-page="tableData.param.pageNum"
+ background
+ v-model:page-size="tableData.param.pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="tableData.total"
+ >
+ </el-pagination>
+ </el-card>
+ <OpenLink ref="openLinRef" />
+ <EditUser ref="editUserRef" />
+ </div>
</template>
-<script>
-export default {
- name: "index"
+<script lang="ts">
+import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import { Plus,
+ Edit,
+ Delete,
+ Upload,
+ Download,
+ Refresh,
+ View,
+ EditPen,
+} from '@element-plus/icons-vue'
+import AddUer from '/@/views/system/user/component/addUser.vue';
+import EditUser from '/@/views/system/user/component/editUser.vue';
+
+// 定义接口来定义对象的类型
+interface TableDataRow {
+ userName: string;
+ userNickname: string;
+ roleSign: string;
+ department: string[];
+ phone: string;
+ email: string;
+ sex: string;
+ password: string;
+ overdueTime: Date;
+ describe: string;
+ createTime: string;
}
+interface TableDataState {
+ tableData: {
+ data: Array<TableDataRow>;
+ total: number;
+ loading: boolean;
+ param: {
+ pageNum: number;
+ pageSize: number;
+ };
+ };
+}
+
+export default defineComponent({
+ name: 'systemUser',
+ components: { AddUer, EditUser, View, EditPen, Plus, Edit, Delete, Upload, Download, Refresh },
+ setup() {
+ const addUserRef = ref();
+ const editUserRef = ref();
+ const openLinRef = ref();
+ // 选择框
+ // const value = ref('');
+ // const options =
+ // {
+ // value: 'Option1',
+ // label: 'Option1',
+ // };
+ const state = reactive<TableDataState>({
+ tableData: {
+ data: [],
+ total: 0,
+ loading: false,
+ param: {
+ pageNum: 1,
+ pageSize: 10,
+ },
+ },
+ });
+ // 初始化表格数据
+ // const initTableData = () => [
+ // {
+ // userName: '消防抢险组(部门级)',
+ // userNickname: '分厂-车间',
+ // roleSign: 'No. 189, Grove St, Los Angeles',
+ // phone: '11',
+ // email: 'ce',
+ // },
+ // ]
+ const initTableData = () => {
+ const data: Array<TableDataRow> = [];
+ for (let i = 0; i < 2; i++) {
+ data.push({
+ userName: i === 0 ? 'admin' : 'test',
+ userNickname: i === 0 ? '我是管理员' : '我是普通用户',
+ roleSign: i === 0 ? 'admin' : 'common',
+ department: i === 0 ? ['vueNextAdmin', 'IT外包服务'] : ['vueNextAdmin', '资本控股'],
+ phone: '12345678910',
+ email: 'vueNextAdmin@123.com',
+ sex: '女',
+ password: '123456',
+ overdueTime: new Date(),
+ describe: i === 0 ? '不可删除' : '测试用户',
+ createTime: new Date().toLocaleString(),
+ });
+ }
+ state.tableData.data = data;
+ state.tableData.total = state.tableData.data.length;
+ };
+ //查看用户弹窗
+ const OpenLink = () => {
+ openLinRef.value.openDialog();
+ };
+ // 打开新增用户弹窗
+ const onOpenAddUser = () => {
+ addUserRef.value.openDialog();
+ };
+ // 打开修改用户弹窗
+ const onOpenEditUser = (row: TableDataRow) => {
+ editUserRef.value.openDialog(row);
+ };
+ // 删除用户
+ const onRowDel = (row: TableDataRow) => {
+ ElMessageBox.confirm(`此操作将永久删除账户名称:“${row.userName}”,是否继续?`, '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning',
+ })
+ .then(() => {
+ ElMessage.success('删除成功');
+ })
+ .catch(() => {});
+ };
+ // 分页改变
+ const onHandleSizeChange = (val: number) => {
+ state.tableData.param.pageSize = val;
+ };
+ // 分页改变
+ const onHandleCurrentChange = (val: number) => {
+ state.tableData.param.pageNum = val;
+ };
+ // 页面加载时
+ onMounted(() => {
+ initTableData();
+ });
+ return {
+ // value,
+ // options,
+ addUserRef,
+ editUserRef,
+ OpenLink,
+ openLinRef,
+ onOpenAddUser,
+ onOpenEditUser,
+ onRowDel,
+ onHandleSizeChange,
+ onHandleCurrentChange,
+ ...toRefs(state),
+ };
+ },
+});
</script>
-
-<style scoped>
-
+<style scoped lang="scss">
+.table_Box{
+ padding: 20px;
+ background-color: #fff;
+}
+.tableForm{
+ margin-top: 10px;
+}
+/*按钮行*/
+ .button_Line{
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ }
</style>
\ No newline at end of file
--
Gitblit v1.9.2