From 28d8b44c2a6ef437e7d481bbe84cca771c7dfa9d Mon Sep 17 00:00:00 2001 From: shj <1790240199@qq.com> Date: 星期三, 29 六月 2022 18:14:21 +0800 Subject: [PATCH] 目标 --- src/views/goalManagement/targetSettings/component/search.vue | 52 +++ 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 +++++ 6 files changed, 905 insertions(+), 0 deletions(-) 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