From be79ce19df6ea881de516ae0b44bfe527e90e736 Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期三, 29 六月 2022 19:37:24 +0800 Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqtOut --- src/views/contingency/component/dialog.vue | 200 ++++++++ src/views/goalManagement/targetSettings/component/search.vue | 52 ++ src/views/contingency/team/index.vue | 270 +++++++++++ src/views/goalManagement/targetSettings/index.vue | 255 +++++++++++ src/views/goalManagement/targetDecompositionYear/index.vue | 203 ++++++++ src/views/goalManagement/tragetDecompositionMonth/index.vue | 203 ++++++++ src/views/goalManagement/targetSettings/component/dailogAdd.vue | 102 ++++ src/views/goalManagement/targetSettings/component/updata.vue | 90 +++ 8 files changed, 1,368 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 diff --git a/src/views/goalManagement/targetDecompositionYear/index.vue b/src/views/goalManagement/targetDecompositionYear/index.vue new file mode 100644 index 0000000..00576b5 --- /dev/null +++ b/src/views/goalManagement/targetDecompositionYear/index.vue @@ -0,0 +1,203 @@ +<template> + <search></search> + <div class="minCenter"> + <div class="btns"> + <div> + <el-button type="primary" :icon="Plus" @click="openDai">新建</el-button> + <el-button type="warning" :icon="EditPen" plain @click="openDai">修改</el-button> + <el-button type="danger" :icon="Delete" plain>删除</el-button> + </div> + </div> + <el-table + ref="multipleTableRef" + :data="tableData" + style="width: 100%" + @selection-change="handleSelectionChange" + > + <el-table-column + label="序号" + align="center" + type="index" + width="70" + /> + <el-table-column type="selection" align="center" width="55" /> + <el-table-column label="安全目标指标" align="center" sortable> + <template #default="scope">{{ scope.row.date }}</template> + </el-table-column> + <el-table-column + property="name" + align="center" + label="目标指标编号" + sortable + /> + <el-table-column + property="address" + label="年度" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + property="address" + label="指标值" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + label="操作" + align="center" + sortable + show-overflow-tooltip + > + <template #default> + <el-button link type="primary" size="small" :icon="View" @click="handleClick" + >查看</el-button + > + <el-button link type="primary" size="small" :icon="EditPen" @click="handleClick" + >修改</el-button + > + <el-button link type="primary" size="small" :icon="Delete">删除</el-button> + </template> + </el-table-column> + </el-table> + <div class="pages"> + <el-pagination + v-model:currentPage="currentPage4" + v-model:page-size="pageSize4" + :page-sizes="[100, 200, 300, 400]" + :small="small" + :disabled="disabled" + :background="background" + layout="total, sizes, prev, pager, next, jumper" + :total="400" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> + </div> +</template> +<script lang="ts"> +import search from '../targetSettings/component/search.vue' +import { ref, toRefs, reactive, onMounted, defineComponent } from "vue"; +import { + ElMessageBox, + ElMessage, + ElButton, + ElInput, + TabsPaneContext, + FormInstance, +} from "element-plus"; +import { + Plus, + Delete, + Upload, + Download, + Refresh, + View, + EditPen +} from "@element-plus/icons-vue"; +interface User { + date: string; + name: string; + address: string; +} +import type { TableColumnCtx } from "element-plus/es/components/table/src/table-column/defaults"; +export default defineComponent({ + components: { ElButton, ElInput,search}, + setup() { + + + // 下方导航与表格 + const activeName = ref("1"); + const handleClick = (tab: TabsPaneContext, event: Event) => { + console.log(tab, event); + }; + const formatter = (row: User, column: TableColumnCtx<User>) => { + return row.address; + }; + + const tableData: User[] = [ + { + date: "2016-05-03", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-02", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-04", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-01", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-08", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-06", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-07", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + ]; + const currentPage4 = ref(4); + const pageSize4 = ref(100); + const handleSizeChange = (val: number) => { + console.log(`${val} items per page`); + }; + const handleCurrentChange = (val: number) => { + console.log(`current page: ${val}`); + }; + + return { + activeName, + handleClick, + tableData, + formatter, + currentPage4, + pageSize4, + handleSizeChange, + handleCurrentChange, + Plus, + Delete, + Upload, + Download, + Refresh, + View, + EditPen + }; + }, +}); +</script> +<style scoped> +.minCenter { + width: 100%; + background-color: #fff; + margin-top: 10px; + padding: 0 20px; +} +.btns { + padding: 0px 0px 10px 0px; + display: flex; + justify-content: space-between; +} +.pages{ +padding:20px 0; +display: flex; +justify-content: right; +} +</style> \ No newline at end of file diff --git a/src/views/goalManagement/targetSettings/component/dailogAdd.vue b/src/views/goalManagement/targetSettings/component/dailogAdd.vue new file mode 100644 index 0000000..1556e45 --- /dev/null +++ b/src/views/goalManagement/targetSettings/component/dailogAdd.vue @@ -0,0 +1,102 @@ +<template> + <el-dialog v-model="Shows" title="新建目标设定" width="50%"> + <el-form :model="form" label-width="120px"> + <el-row> + <el-col :span="11"> + <el-form-item label="安全目标指标"> + <el-input v-model="form.name" /> + </el-form-item> + </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="目标指标编号"> + <el-input v-model="form.name" /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="11"> + <el-form-item label="年度"> + <el-input v-model="form.name" /> + </el-form-item> + </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="指标值"> + <el-input v-model="form.name" /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="11"> + <el-form-item label="指标级别"> + <el-select + v-model="form.region" + placeholder="please select your zone" + style="width:100%" + > + <el-option label="Zone one" value="shanghai" /> + <el-option label="Zone two" value="beijing" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="完成期限"> + <el-date-picker + v-model="form.date1" + type="date" + placeholder="Pick a date" + width="100%" + /> + </el-form-item> + </el-col> + </el-row> + <el-form-item label="备注信息"> + <el-input v-model="form.desc" type="textarea" /> + </el-form-item> + </el-form> + <template #footer> + <span class="dialog-footer"> + <el-button @click="Shows = false">关闭</el-button> + <el-button type="primary" @click="Shows = false" + >确定</el-button + > + </span> + </template> + </el-dialog> +</template> +<script lang="ts"> +import { ref, toRefs, reactive, onMounted,watch,defineComponent } from "vue"; +import { + ElMessageBox, + ElMessage, + ElButton, + ElInput, + TabsPaneContext, + FormInstance, +} from "element-plus"; +export default defineComponent({ + props: { dialogVisible: Boolean}, + setup(props) { + let Shows=ref(false) + const form = reactive({ + name: "", + region: "", + date1: "", + date2: "", + delivery: false, + type: [], + resource: "", + desc: "", + }) + return { + props, + Shows, + form, + }; + }, +}); +</script> +<style scoped> + .el-row{ + padding:0 0 20px 0; + } +</style> \ No newline at end of file diff --git a/src/views/goalManagement/targetSettings/component/search.vue b/src/views/goalManagement/targetSettings/component/search.vue new file mode 100644 index 0000000..f8c9827 --- /dev/null +++ b/src/views/goalManagement/targetSettings/component/search.vue @@ -0,0 +1,52 @@ +<template> + <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle"> + <el-row> + <el-col :span="4"> + <el-form-item> + <el-input v-model="ruleForm.pass" placeholder="安全目标指标" /> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item> + <el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" /> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item> + <el-button type="primary" @click="submitForm(ruleFormRef)">查询</el-button> + <el-button @click="resetForm(ruleFormRef)">重置</el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> +</template> +<script lang="ts"> +import { ref, reactive, defineComponent } from 'vue'; +import { + FormInstance, +} from "element-plus"; +export default defineComponent({ + setup() { + // 搜索条件 + const ruleForm = reactive({ + pass: '', + checkPass: '', + }); + const resetForm = (formEl: FormInstance | undefined) => { + console.log(!formEl); + if (!formEl) return; + formEl.resetFields(); + }; + return { + ruleForm, + resetForm + }; + }, +}); +</script> +<style scoped> + .topTitle { + background-color: #fff; + padding: 20px 0px 20px 0px; +} +</style> \ No newline at end of file diff --git a/src/views/goalManagement/targetSettings/component/updata.vue b/src/views/goalManagement/targetSettings/component/updata.vue new file mode 100644 index 0000000..8239103 --- /dev/null +++ b/src/views/goalManagement/targetSettings/component/updata.vue @@ -0,0 +1,90 @@ +<template> + <el-dialog + v-model="dialogVisible" + title="导入Excel" + width="50%" + :before-close="handleClose" + > + <el-upload + v-model:file-list="fileList" + class="upload-demo" + action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15" + multiple + :on-preview="handlePreview" + :on-remove="handleRemove" + :before-remove="beforeRemove" + :limit="3" + :on-exceed="handleExceed" + > + <el-button>下载模板</el-button> + <el-button type="primary">点击上传</el-button> + <template #tip> + <div class="el-upload__tip"> + 只允许导入“xls”或“xlsx”格式文件! + </div> + </template> + </el-upload> + </el-dialog> +</template> +<script lang="ts"> +import { ref,toRefs, reactive,defineComponent,computed } from "vue"; +import { ElMessage, ElMessageBox } from "element-plus"; +import type { UploadProps, UploadUserFile } from "element-plus"; +export default defineComponent({ + props:{updata:Boolean}, + setup(props) { + let dialogVisible =ref<boolean>(props.updata) + const fileList = ref<UploadUserFile[]>([ + { + name: "element-plus-logo.svg", + url: "https://element-plus.org/images/element-plus-logo.svg", + }, + { + name: "element-plus-logo2.svg", + url: "https://element-plus.org/images/element-plus-logo.svg", + }, + ]); + + const handleRemove: UploadProps["onRemove"] = (file, uploadFiles) => { + console.log(file, uploadFiles); + }; + + const handlePreview: UploadProps["onPreview"] = (uploadFile) => { + console.log(uploadFile); + }; + + const handleExceed: UploadProps["onExceed"] = (files, uploadFiles) => { + ElMessage.warning( + `The limit is 3, you selected ${ + files.length + } files this time, add up to ${ + files.length + uploadFiles.length + } totally` + ); + }; + + const beforeRemove: UploadProps["beforeRemove"] = ( + uploadFile, + uploadFiles + ) => { + return ElMessageBox.confirm( + `Cancel the transfert of ${uploadFile.name} ?` + ).then( + () => true, + () => false + ); + }; + return { + dialogVisible, + fileList, + handleRemove, + handlePreview, + handleExceed, + beforeRemove, + props + }; + }, +}); +</script> +<style scoped> +</style> \ No newline at end of file diff --git a/src/views/goalManagement/targetSettings/index.vue b/src/views/goalManagement/targetSettings/index.vue new file mode 100644 index 0000000..9df0376 --- /dev/null +++ b/src/views/goalManagement/targetSettings/index.vue @@ -0,0 +1,255 @@ +<template> + <search></search> + <div class="minCenter"> + <el-tabs + v-model="activeName" + class="demo-tabs" + @tab-click="handleClick" + > + <div class="btns"> + <div> + <el-button type="primary" :icon="Plus" @click="openDai">新建</el-button> + <el-button type="danger" :icon="Delete">删除</el-button> + </div> + <div> + <el-button :icon="Upload" @click="upButton"></el-button> + <el-button :icon="Download"></el-button> + <el-button :icon="Refresh"></el-button> + </div> + </div> + <el-tab-pane label="目标定制(年)" name="1"> </el-tab-pane> + <el-tab-pane label="目标定制(月)" name="2"></el-tab-pane> + </el-tabs> + <el-table + ref="multipleTableRef" + :data="tableData" + style="width: 100%" + @selection-change="handleSelectionChange" + > + <el-table-column + label="序号" + align="center" + type="index" + width="70" + /> + <el-table-column type="selection" align="center" width="55" /> + <el-table-column label="安全目标指标" align="center" sortable> + <template #default="scope">{{ scope.row.date }}</template> + </el-table-column> + <el-table-column + property="name" + align="center" + label="目标指标编号" + sortable + /> + <el-table-column + property="address" + label="年度" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + property="address" + label="指标值" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + property="address" + label="指标级别" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + property="address" + label="完成期限" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + property="address" + label="状态" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + property="address" + label="备注信息" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + label="操作" + align="center" + sortable + show-overflow-tooltip + > + <template #default> + <el-button link type="primary" size="small" :icon="View" @click="handleClick" + >查看</el-button + > + <el-button link type="primary" size="small" :icon="Delete">删除</el-button> + </template> + </el-table-column> + </el-table> + <div class="pages"> + <el-pagination + v-model:currentPage="currentPage4" + v-model:page-size="pageSize4" + :page-sizes="[100, 200, 300, 400]" + :small="small" + :disabled="disabled" + :background="background" + layout="total, sizes, prev, pager, next, jumper" + :total="400" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> + <dailogAdd :dialogVisible="Show"></dailogAdd> + <upData :updata="upShow"></upData> + </div> +</template> +<script lang="ts"> +import dailogAdd from './component/dailogAdd.vue' +import upData from './component/updata.vue' +import search from './component/search.vue' +import { ref, toRefs, reactive, onMounted, defineComponent } from "vue"; +import { + ElMessageBox, + ElMessage, + ElButton, + ElInput, + TabsPaneContext, + FormInstance, +} from "element-plus"; +import { + Plus, + Delete, + Upload, + Download, + Refresh, + View +} from "@element-plus/icons-vue"; +interface User { + date: string; + name: string; + address: string; +} +import type { TableColumnCtx } from "element-plus/es/components/table/src/table-column/defaults"; +export default defineComponent({ + components: { ElButton, ElInput,dailogAdd,upData,search}, + setup() { + + + // 下方导航与表格 + const activeName = ref("1"); + const handleClick = (tab: TabsPaneContext, event: Event) => { + console.log(tab, event); + }; + const formatter = (row: User, column: TableColumnCtx<User>) => { + return row.address; + }; + + const tableData: User[] = [ + { + date: "2016-05-03", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-02", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-04", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-01", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-08", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-06", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-07", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + ]; + const currentPage4 = ref(4); + const pageSize4 = ref(100); + const handleSizeChange = (val: number) => { + console.log(`${val} items per page`); + }; + const handleCurrentChange = (val: number) => { + console.log(`current page: ${val}`); + }; + // 弹窗 + let Show=ref(false) + let openDai=()=>{ + Show.value=true + } + // 上传 + const upShow=ref(false) + const upButton=()=>{ + upShow.value=true + } + return { + activeName, + handleClick, + tableData, + formatter, + currentPage4, + pageSize4, + handleSizeChange, + handleCurrentChange, + Show, + openDai, + upShow, + upButton, + Plus, + Delete, + Upload, + Download, + Refresh, + View + }; + }, +}); +</script> +<style scoped> +.minCenter { + width: 100%; + background-color: #fff; + margin-top: 10px; + padding: 0 20px; +} +.btns { + padding: 0px 0px 10px 0px; + display: flex; + justify-content: space-between; +} +.pages{ +padding:20px 0; +display: flex; +justify-content: right; +} +</style> \ No newline at end of file diff --git a/src/views/goalManagement/tragetDecompositionMonth/index.vue b/src/views/goalManagement/tragetDecompositionMonth/index.vue new file mode 100644 index 0000000..00576b5 --- /dev/null +++ b/src/views/goalManagement/tragetDecompositionMonth/index.vue @@ -0,0 +1,203 @@ +<template> + <search></search> + <div class="minCenter"> + <div class="btns"> + <div> + <el-button type="primary" :icon="Plus" @click="openDai">新建</el-button> + <el-button type="warning" :icon="EditPen" plain @click="openDai">修改</el-button> + <el-button type="danger" :icon="Delete" plain>删除</el-button> + </div> + </div> + <el-table + ref="multipleTableRef" + :data="tableData" + style="width: 100%" + @selection-change="handleSelectionChange" + > + <el-table-column + label="序号" + align="center" + type="index" + width="70" + /> + <el-table-column type="selection" align="center" width="55" /> + <el-table-column label="安全目标指标" align="center" sortable> + <template #default="scope">{{ scope.row.date }}</template> + </el-table-column> + <el-table-column + property="name" + align="center" + label="目标指标编号" + sortable + /> + <el-table-column + property="address" + label="年度" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + property="address" + label="指标值" + align="center" + sortable + show-overflow-tooltip + /> + <el-table-column + label="操作" + align="center" + sortable + show-overflow-tooltip + > + <template #default> + <el-button link type="primary" size="small" :icon="View" @click="handleClick" + >查看</el-button + > + <el-button link type="primary" size="small" :icon="EditPen" @click="handleClick" + >修改</el-button + > + <el-button link type="primary" size="small" :icon="Delete">删除</el-button> + </template> + </el-table-column> + </el-table> + <div class="pages"> + <el-pagination + v-model:currentPage="currentPage4" + v-model:page-size="pageSize4" + :page-sizes="[100, 200, 300, 400]" + :small="small" + :disabled="disabled" + :background="background" + layout="total, sizes, prev, pager, next, jumper" + :total="400" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> + </div> +</template> +<script lang="ts"> +import search from '../targetSettings/component/search.vue' +import { ref, toRefs, reactive, onMounted, defineComponent } from "vue"; +import { + ElMessageBox, + ElMessage, + ElButton, + ElInput, + TabsPaneContext, + FormInstance, +} from "element-plus"; +import { + Plus, + Delete, + Upload, + Download, + Refresh, + View, + EditPen +} from "@element-plus/icons-vue"; +interface User { + date: string; + name: string; + address: string; +} +import type { TableColumnCtx } from "element-plus/es/components/table/src/table-column/defaults"; +export default defineComponent({ + components: { ElButton, ElInput,search}, + setup() { + + + // 下方导航与表格 + const activeName = ref("1"); + const handleClick = (tab: TabsPaneContext, event: Event) => { + console.log(tab, event); + }; + const formatter = (row: User, column: TableColumnCtx<User>) => { + return row.address; + }; + + const tableData: User[] = [ + { + date: "2016-05-03", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-02", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-04", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-01", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-08", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-06", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + { + date: "2016-05-07", + name: "Tom", + address: "No. 189, Grove St, Los Angeles", + }, + ]; + const currentPage4 = ref(4); + const pageSize4 = ref(100); + const handleSizeChange = (val: number) => { + console.log(`${val} items per page`); + }; + const handleCurrentChange = (val: number) => { + console.log(`current page: ${val}`); + }; + + return { + activeName, + handleClick, + tableData, + formatter, + currentPage4, + pageSize4, + handleSizeChange, + handleCurrentChange, + Plus, + Delete, + Upload, + Download, + Refresh, + View, + EditPen + }; + }, +}); +</script> +<style scoped> +.minCenter { + width: 100%; + background-color: #fff; + margin-top: 10px; + padding: 0 20px; +} +.btns { + padding: 0px 0px 10px 0px; + display: flex; + justify-content: space-between; +} +.pages{ +padding:20px 0; +display: flex; +justify-content: right; +} +</style> \ No newline at end of file -- Gitblit v1.9.2