From 874daded79db1d93db3704ecdcfbdc09e5846cc2 Mon Sep 17 00:00:00 2001 From: Admin <978517621@qq.com> Date: 星期三, 21 九月 2022 16:09:47 +0800 Subject: [PATCH] Default Changelist --- /dev/null | 349 ---------------------------------------------------------- 1 files changed, 0 insertions(+), 349 deletions(-) diff --git a/src/views/system/personShiftManage/arrangeManage/index.vue b/src/views/system/personShiftManage/arrangeManage/index.vue deleted file mode 100644 index 29689bf..0000000 --- a/src/views/system/personShiftManage/arrangeManage/index.vue +++ /dev/null @@ -1,550 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="8"> - <div class="grid-content topInfo"> - <el-input v-model="searchWord" placeholder="排班方案名称"></el-input> - <el-button type="primary">查询</el-button> - <el-button plain>重置</el-button> - </div> - </el-col> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新增</el-button> -<!-- <el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>--> - <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default"/> - </el-row> - <el-table - ref="multipleTableRef" - :data="tableData" - style="width: 100%" - height="calc(100% - 100px)" - :header-cell-style="{background: '#fafafa'}" - @selection-change="handleSelectionChange" - > - <el-table-column type="selection" width="55" /> - <el-table-column property="name" label="排班方案名称"/> - <el-table-column property="type" label="排班类型"/> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination - v-model:currentPage="currentPage" - v-model:page-size="pageSize" - :page-sizes="[10, 15]" - small=false - background - layout="total, sizes, prev, pager, next, jumper" - :total="100" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="排班方案"> - <el-form :model="details" label-width="120px"> - <el-form-item label="名称"> - <el-input - v-model="details.name" - readonly - /> - </el-form-item> - <el-form-item label="排班类型"> - <el-input - v-model="details.type" - readonly - /> - </el-form-item> - <el-form-item label="自定义循环班" v-if="JSON.parse(JSON.stringify(details.type)) == '循环班'"> - <div> - <div v-for="(item,index) in details.shiftSteps" class="stepItem"> - <div class="stepNum">{{index+1}}</div> - <div class="stepCard"> - <el-card class="box-card" shadow="hover"> - <template #header> - <div class="card-header"> - <div>第<span>{{index+1}}</span>班</div> - </div> - </template> - <div class="text item">排班名称:<span>{{item.name}}</span></div> - <div class="text item">工作天数:<span>{{item.days}}</span></div> - <div class="text item">休息天数:<span>{{item.rest}}</span></div> - <div class="text item">工作时段:<span>{{item.timeRange}}</span></div> - </el-card> - </div> - </div> - </div> - </el-form-item> - <el-form-item label="工作时段" prop="timeRange" v-if="JSON.parse(JSON.stringify(details.type)) == '固定班'"> - <el-input - v-model="details.timeRange" - readonly - /> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="dialogDetails = false" size="default" v-throttle>确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - <el-dialog v-model="dialogAddRecord" title="排班方案编辑" @close="closeAdd"> - <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules"> - <el-form-item label="排班方案名称" prop="name"> - <el-input - v-model="addRecord.name" - > - </el-input> - </el-form-item> - <el-form-item label="排班类型" prop="type"> - <el-select v-model="addRecord.type"> - <el-option label="循环班" value="循环班" /> - <el-option label="固定班" value="固定班" /> - </el-select> - </el-form-item> - <el-form-item label="自定义循环班" v-if="addRecord.type && JSON.parse(JSON.stringify(addRecord.type)) == '循环班'"> - <div style="width: 100%;margin-bottom: 20px"> - <el-button type="primary" size="default" :icon="Plus" @click="dialogAddShift = true">新增排班</el-button> - </div> - <div> - <div v-for="(item,index) in addRecord.shiftSteps" class="stepItem"> - <div class="stepNum">{{index+1}}</div> - <div class="stepCard"> - <el-card class="box-card" shadow="hover"> - <template #header> - <div class="card-header"> - <div>第<span>{{index+1}}</span>班</div> - <div> - <el-button type="primary" size="default" @click="addFlow(index)">新增</el-button> - <el-button type="danger" size="default" @click="deleteFlow(index)">删除</el-button> - </div> - </div> - </template> - <div class="text item">排班名称:<span>{{item.name}}</span></div> - <div class="text item">工作天数:<span>{{item.days}}</span></div> - <div class="text item">休息天数:<span>{{item.rest}}</span></div> - <div class="text item">工作时段:<span>{{item.timeRange}}</span></div> - </el-card> - </div> - </div> - </div> - </el-form-item> - <el-form-item label="工作时段" prop="timeRange" v-if="addRecord.type && JSON.parse(JSON.stringify(addRecord.type)) == '固定班'"> - <el-select v-model="addRecord.timeRange"> - <el-option label="四班三倒早班" value="四班三倒早班" /> - <el-option label="四班三倒中班" value="四班三倒中班" /> - <el-option label="四班三倒夜班" value="四班三倒夜班" /> - <el-option label="常白班" value="常白班" /> - </el-select> - </el-form-item> - <el-form-item> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default" v-throttle>确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear"> - <span>您确定要删除该条记录吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="deleteShiftDialog" title="提示" width="30%" center @close="indexShiftClear"> - <span>您确定要删除该班次吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteShiftDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmShiftDelete" size="default">确认</el-button> - </span> - </template> - </el-dialog> - <el-dialog v-model="dialogAddShift" title="新增排班" @close="closeAddShift"> - <el-form :model="addShift" label-width="120px" ref="addShiftRef" :rules="addShiftRules"> - <el-form-item label="排班方案名称" prop="name"> - <el-input - v-model="addShift.name" - > - </el-input> - </el-form-item> - <el-form-item label="工作天数" prop="days"> - <el-input - v-model="addShift.days" - > - </el-input> - </el-form-item> - <el-form-item label="休息天数" prop="rest"> - <el-input - v-model="addShift.rest" - > - </el-input> - </el-form-item> - <el-form-item label="工作时段" prop="timeRange"> - <el-select v-model="addShift.timeRange"> - <el-option label="三班三倒早班" value="三班三倒早班" /> - <el-option label="三班三倒中班" value="三班三倒中班" /> - <el-option label="三班三倒夜班" value="三班三倒夜班" /> - </el-select> - </el-form-item> - <el-form-item> - <el-button type="warning" @click="dialogAddShift = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddShift(addShiftRef)" size="default" v-throttle>确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - </div> -</template> - -<script lang="ts" setup> - import { toRefs, reactive, ref } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue' - import { ElTable, ElMessage } from 'element-plus' - import { FormInstance, FormRules } from 'element-plus' - let global: any = { - homeChartOne: null, - homeChartTwo: null, - homeCharThree: null, - dispose: [null, '', undefined], - }; - - interface stateType { - homeOne: Array <type> - } - interface type { - - } - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({}); - const currentPage = ref(1) - const pageSize = ref(10) - const chosenIndex = ref(-1) - const chosenShiftIndex = ref(-1) - const handleSizeChange = (val: number) => { - console.log(`${val} items per page`) - } - const handleCurrentChange = (val: number) => { - console.log(`current page: ${val}`) - } - const casProps = { - expandTrigger: 'hover', - } - const tableData = reactive( - [ - { - name: '三班三倒', - type: '循环班', - shiftSteps:[ - { - name: '第一班', - days: '5', - rest: '1', - timeRange: '三班三倒早班' - }, - { - name: '第二班', - days: '5', - rest: '2', - timeRange: '三班三倒中班' - }, - { - name: '第三班', - days: '5', - rest: '3', - timeRange: '三班三倒夜班' - } - ] - }, - { - name: '常白班', - type: '固定班' - } - ] - ) - const handleChange = (value) => { - addRecord.value.content = [] - console.log(JSON.parse(JSON.stringify(value))) - } - const addRef = ref<FormInstance>() - const addShiftRef = ref<FormInstance>() - const addRules = reactive<FormRules>({ - name:[{required: true, message: '该内容不能为空',trigger:'blur'}], - type:[{required: true, message: '该内容不能为空',trigger:'blur'}], - timeRange:[{required: true, message: '该内容不能为空',trigger:'blur'}] - }) - const addShiftRules = reactive<FormRules>({ - name:[{required: true, message: '该内容不能为空',trigger:'blur'}], - days:[{required: true, message: '该内容不能为空',trigger:'blur'}], - rest:[{required: true,message: '该内容不能为空',trigger: 'blur'}], - timeRange:[{required: true, message: '该内容不能为空',trigger:'blur'}] - }) - const dialogDetails = ref(false) - const dialogAddRecord = ref(false) - const deleteDialog = ref(false) - const deleteShiftDialog = ref(false) - const dialogAddShift = ref(false) - const addRecord = ref({}) - const addShift = ref({}) - const details = ref({}) - const viewRecord = (row) =>{ - details.value = JSON.parse(JSON.stringify(row)) - dialogDetails.value = true - } - const deleteRecord = (index) =>{ - chosenIndex.value = index - deleteDialog.value = true - } - const conFirmDelete = ()=> { - tableData.splice(chosenIndex.value,1) - deleteDialog.value = false - } - const confirmAddRecord = async (formEl: FormInstance | undefined) =>{ - if (!formEl) return - await formEl.validate((valid, fields) => { - if (valid) { - if(chosenIndex.value == -1){ - if(addRecord.value.type == '循环班' && (!addRecord.value.shiftSteps || addRecord.value.shiftSteps.length == 0)){ - ElMessage({ - message: '请先设置自定义排班后再提交', - type: 'warning', - }) - return - }else{ - tableData.unshift(addRecord.value) - } - }else{ - if(addRecord.value.type == '循环班' && addRecord.value.shiftSteps.length == 0){ - ElMessage({ - message: '请先设置自定义排班后再提交', - type: 'warning', - }) - return - }else{ - if(addRecord.value.type == '固定班'){delete addRecord.value.shiftSteps} - console.log(addRecord.value,'addRecord') - tableData[chosenIndex.value] = addRecord.value - } - } - dialogAddRecord.value =false - } else { - console.log('error submit!', fields) - } - }) - - } - const closeAdd =()=>{ - addRecord.value={} - chosenIndex.value = -1 - addShift.value={} - chosenShiftIndex.value = -1 - } - const indexClear = ()=>{ - chosenIndex.value = -1 - } - const indexShiftClear = ()=>{ - chosenShiftIndex.value = -1 - } - const editRecord =(index, row)=>{ - dialogAddRecord.value = true - chosenIndex.value = index - addRecord.value = JSON.parse(JSON.stringify(row)) - } - - // 添加删除排班步骤 - const addFlow = (index) => { - dialogAddShift.value = true - chosenShiftIndex.value = index - } - const deleteFlow = (index) => { - deleteShiftDialog.value = true - chosenShiftIndex.value = index - } - const conFirmShiftDelete = () => { - addRecord.value.shiftSteps.splice( chosenShiftIndex.value,1) - deleteShiftDialog.value = false - } - const confirmAddShift = async (formEl: FormInstance | undefined) => { - if (!formEl) return - await formEl.validate((valid, fields) => { - if (valid) { - if(addRecord.value.shiftSteps){ - addRecord.value.shiftSteps.splice(chosenShiftIndex.value+1,0,addShift.value) - }else{ - addRecord.value.shiftSteps = [] - addRecord.value.shiftSteps.unshift(addShift.value) - } - dialogAddShift.value = false - } else { - console.log('error submit!', fields) - } - }) - - } - const closeAddShift =()=>{ - addShift.value={} - chosenShiftIndex.value = -1 - } - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - - .main-card{ - width: 100%; - height: 100%; - .cardTop{ - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - .mainCardBtn{ - margin: 0; - } - } - .pageBtn{ - height: 60px; - display: flex; - align-items: center; - justify-content: right; - - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; - } - .demo-pagination-block .demonstration { - margin-bottom: 16px; - } - } - } - &:last-of-type{ - height: calc(100% - 100px); - } - } - .el-row{ - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content{ - align-items: center; - min-height: 36px; - } - - .topInfo { - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - &>div{ - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .stepItem{ - width: 100%; - display: flex; - align-items: flex-start; - margin-bottom: 30px; - margin-left: 30px; - padding-bottom: 30px; - border-left: 2px solid #ccc; - &:first-of-type{ - margin-top: 30px; - } - &:last-of-type{ - margin-bottom: 0; - border-left: none; - } - .stepNum { - width: 30px; - height: 30px; - border-radius: 15px; - box-sizing: border-box; - color: #333; - border: 1px solid #999; - line-height: 28px; - text-align: center; - margin-right: 20px; - margin-left: -16px; - margin-top: -30px; - } - .stepCard { - width: 100%; - margin-top: -30px; - - .box-card { - width: 100%; - &:deep(.el-card__header){ - padding: 10px 15px - } - .card-header { - width: 100%; - display: flex; - justify-content: space-between; - align-items: center; - &>div:first-of-type{ - margin-right: 80px; - } - span{ - font-weight: bold; - margin: 0 10px; - } - } - } - } - &:hover .card-header{ - color: #0098F5; - } - &:hover .stepNum{ - border: 2px solid #0098F5; - color: #0098F5; - } - } - .el-input{ - width: 100% !important; - } - :deep(.el-date-editor){ - width: 100%; - } - .el-select{ - width: 100%; - } -</style> diff --git a/src/views/system/personShiftManage/generalShiftManagement/index.vue b/src/views/system/personShiftManage/generalShiftManagement/index.vue deleted file mode 100644 index 94d1a9d..0000000 --- a/src/views/system/personShiftManage/generalShiftManagement/index.vue +++ /dev/null @@ -1,395 +0,0 @@ -<template> - <div class="home-container"> - <el-scrollbar height="100%"> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新增排班方案</el-button> -<!-- <el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>--> - <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default"/> - </el-row> - <el-table - ref="multipleTableRef" - :data="tableData" - style="width: 100%" - :header-cell-style="{background: '#fafafa'}" - @selection-change="handleSelectionChange" - > - <el-table-column type="selection" width="55" /> - <el-table-column type="index" label="序号" width="80" /> - <el-table-column property="name" label="名称" width="200" sortable/> - <el-table-column property="shiftType" label="排班类型" width="200" sortable/> - <el-table-column property="createTime" label="创建时间" width="180" /> -<!-- <el-table-column property="checkType" label="检查类型"/>--> -<!-- <el-table-column property="checkContent" label="检查内容" sortable/>--> -<!-- <el-table-column property="judgement" label="参考判断"/>--> -<!-- <el-table-column property="sort" label="排序" sortable/>--> -<!-- <el-table-column property="remark" label="备注"/>--> -<!-- <el-table-column property="updater" label="更新人"/>--> - <el-table-column property="updateTime" label="更新时间" sortable/> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button> - </template> - </el-table-column> - </el-table> - </div> - <div class="pageBtn"> - <el-pagination - v-model:currentPage="currentPage" - v-model:page-size="pageSize" - :page-sizes="[10, 15]" - small=false - background - layout="total, sizes, prev, pager, next, jumper" - :total="100" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </el-scrollbar> - <el-dialog v-model="dialogDetails" title="排班方案"> - <el-form :model="details" label-width="120px"> - <el-form-item label="方案名称"> - <el-input - v-model="details.name" - readonly - /> - </el-form-item> - <el-form-item label="双休节假日"> - <el-input - v-model="details.holiday" - readonly - /> - </el-form-item> - <el-form-item label="排班类型"> - <el-input - v-model="details.shiftType" - readonly - /> - </el-form-item> - <el-form-item v-for="(item,index) in details.timeList" :key="index" :label="index == 0?'上班时间段':item.day + '天后倒'"> - <el-input - v-model="item.timeRange" - readonly - /> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - <el-dialog v-model="dialogAddRecord" title="排班方案编辑" @close="closeAdd"> - <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules"> - <el-form-item label="方案名称" prop="name"> - <el-input - v-model="addRecord.name" - > - </el-input> - </el-form-item> - <el-form-item label="双休节假日" prop="holiday"> - <el-select v-model="addRecord.holiday"> - <el-option label="休假" value="休假" /> - <el-option label="不休假" value="不休假" /> - </el-select> - </el-form-item> - <el-form-item label="排班类型" prop="checkType"> - <el-select v-model="addRecord.shiftType"> - <el-option label="循环班" value="循环班" /> - <el-option label="常白班" value="常白班" /> - </el-select> - </el-form-item> - <el-form-item label="检查内容" prop="checkContent"> - <el-input - v-model="addRecord.checkContent" - type="textarea" - > - </el-input> - </el-form-item> - <el-form-item label="参考判断" prop="judgement"> - <el-radio-group v-model="addRecord.judgement"> - <el-radio label="Y" size="large">Y</el-radio> - <el-radio label="N" size="large">N</el-radio> - </el-radio-group> - </el-form-item> - <el-form-item label="排序值" prop="sort"> - <el-input-number v-model="addRecord.sort" :min="1" :max="100" @change="handleChange" /> - </el-form-item> - <el-form-item label="备注"> - <el-input v-model="addRecord.remark" type="textarea"/> - </el-form-item> - <el-form-item> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default" v-throttle>确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear"> - <span>您确定要删除该条记录吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDelete" size="default" v-throttle>确认</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts" setup> - import { toRefs, reactive, ref } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Upload } from '@element-plus/icons-vue' - import { ElTable } from 'element-plus' - import { FormInstance, FormRules } from 'element-plus' - let global: any = { - homeChartOne: null, - homeChartTwo: null, - homeCharThree: null, - dispose: [null, '', undefined], - }; - - interface stateType { - homeOne: Array <type> - } - interface type { - - } - // export default defineComponent({ - // name: 'workCheckinRecord', - // setup() { - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({}); - const currentPage = ref(1) - const pageSize = ref(10) - const chosenIndex = ref(-1) - const handleSizeChange = (val: number) => { - console.log(`${val} items per page`) - } - const handleCurrentChange = (val: number) => { - console.log(`current page: ${val}`) - } - const tableData = reactive( - [ - { - name: '三班两倒', - holiday: '不休假', - shiftType: '循环班', - timeList:[ - { - timeRange: '15:20 - 18:00' - }, - { - day: 1, - timeRange: '15:20 - 18:00' - }, - { - day: 1, - timeRange: '20:20 - 06:00' - } - ] - }, - { - name: '四班三倒', - holiday: '不休假', - shiftType: '循环班', - timeList:[ - { - timeRange: '15:20 - 18:00' - }, - { - day: 2, - timeRange: '15:20 - 18:00' - }, - { - day: 1, - timeRange: '20:20 - 06:00' - }, - { - day: 1, - timeRange: '08:30 - 18:00' - } - ] - } - ] - ) - const addRef = ref<FormInstance>() - const timeForm = { - hour12: false, - year: 'numeric', - month: '2-digit', - day: '2-digit', - hour: '2-digit', - minute: '2-digit', - second: '2-digit' - } - const addRules = reactive<FormRules>({ - jobType:[{required: true, message: '该内容不能为空',trigger:'blur'}], - type:[{required: true, message: '该内容不能为空',trigger:'blur'}], - checkType:[{required: true, message: '该内容不能为空',trigger:'blur'}], - checkContent:[{required: true, message: '该内容不能为空',trigger:'blur'}], - judgement:[{required: true, message: '该内容不能为空',trigger:'blur'}], - sort:[{required: true, message: '该内容不能为空',trigger:'blur'}] - }) - const dialogDetails = ref(false) - const dialogAddRecord = ref(false) - const deleteDialog = ref(false) - const addRecord = ref({}) - const details = ref({}) - const viewRecord = (row) =>{ - details.value = JSON.parse(JSON.stringify(row)) - dialogDetails.value = true - } - const deleteRecord = (index) =>{ - chosenIndex.value = index - deleteDialog.value = true - } - const conFirmDelete = ()=> { - tableData.splice(chosenIndex.value,1) - deleteDialog.value = false - } - const confirmAddRecord = async (formEl: FormInstance | undefined) =>{ - if (!formEl) return - await formEl.validate((valid, fields) => { - if (valid) { - if(chosenIndex.value == -1){ - addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-') - tableData.push(addRecord.value) - }else{ - addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-') - tableData[chosenIndex.value] = addRecord.value - } - dialogAddRecord.value =false - } else { - console.log('error submit!', fields) - } - }) - - } - const closeAdd =()=>{ - addRecord.value={} - chosenIndex.value = -1 - } - const indexClear = ()=>{ - chosenIndex.value = -1 - } - const editRecord =(index, row)=>{ - dialogAddRecord.value = true - chosenIndex.value = index - addRecord.value = JSON.parse(JSON.stringify(row)) - } - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; - // return { - // renderMenu, - // multipleTableRef, - // tableData, - // currentPage, - // pageSize, - // dialogDetails, - // details, - // deleteDialog, - // dialogAddRecord, - // viewRecord, - // deleteRecord, - // handleSizeChange, - // handleCurrentChange, - // Plus, - // Edit, - // Delete, - // Search, - // Download, - // handleSelectionChange, - // Refresh, - // ...toRefs(state), - // }; - // }, - // }); -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .home-container { - height: 100%; - overflow: hidden; - padding: 20px; - .homeCard{ - width: 100%; - padding: 20px; - background: #fff; - border-radius: 4px; - } - .el-row{ - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content{ - align-items: center; - min-height: 36px; - } - - .topInfo { - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - &>div{ - white-space: nowrap; - margin-right: 20px; - } - } - } - .main-card{ - width: 100%; - .cardTop{ - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - .mainCardBtn{ - margin: 0; - } - } - } - .pageBtn{ - display: flex; - align-items: center; - justify-content: right; - margin-top: 20px; - - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; - } - .demo-pagination-block .demonstration { - margin-bottom: 16px; - } - } - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } -</style> diff --git a/src/views/system/personShiftManage/personArrange/index.vue b/src/views/system/personShiftManage/personArrange/index.vue deleted file mode 100644 index bdb185e..0000000 --- a/src/views/system/personShiftManage/personArrange/index.vue +++ /dev/null @@ -1,349 +0,0 @@ -<template> - <div class="home-container"> - <div style="height: 100%"> - <el-row class="homeCard"> - <el-col :span="8"> - <div class="grid-content topInfo"> - <el-input v-model="searchWord" placeholder="排班名称"></el-input> - <el-button type="primary">查询</el-button> - <el-button plain>重置</el-button> - </div> - </el-col> - </el-row> - <div class="homeCard"> - <div class="main-card"> - <el-row class="cardTop"> - <el-col :span="12" class="mainCardBtn"> - <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新增</el-button> -<!-- <el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>--> - <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button> - </el-col> - <el-button type="primary" :icon="Refresh" size="default"/> - </el-row> - <el-table - ref="multipleTableRef" - :data="tableData" - style="width: 100%" - height="calc(100% - 100px)" - :header-cell-style="{background: '#fafafa'}" - @selection-change="handleSelectionChange" - > - <el-table-column type="selection" width="55" /> - <el-table-column property="schedName" label="排班名称"/> - <el-table-column property="schedPlan" label="排班方案"/> - <el-table-column property="restType" label="休息类型"/> - <el-table-column property="team" label="班组"/> - <el-table-column property="startTime" label="排班开始时间"/> - <el-table-column property="endTime" label="排班结束时间"/> - <el-table-column fixed="right" label="操作" align="center" width="250"> - <template #default="scope"> - <el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button> - <el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button> - <el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button> - </template> - </el-table-column> - </el-table> - <div class="pageBtn"> - <el-pagination - v-model:currentPage="currentPage" - v-model:page-size="pageSize" - :page-sizes="[10, 15]" - small=false - background - layout="total, sizes, prev, pager, next, jumper" - :total="100" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - /> - </div> - </div> - </div> - </div> - <el-dialog v-model="dialogDetails" title="人员排班"> - <el-form :model="details" label-width="120px"> - <el-form-item label="排班名称"> - <el-input - v-model="details.schedName" - readonly - /> - </el-form-item> - <el-form-item label="排班方案"> - <el-input v-model="details.schedPlan" readonly/> - </el-form-item> - <el-form-item label="休息类型"> - <el-input v-model="details.restType" type="textarea" readonly/> - </el-form-item> - <el-form-item label="班组选择"> - <el-input v-model="details.team" readonly/> - </el-form-item> - <el-form-item label="排班开始时间"> - <el-input v-model="details.startTime" readonly/> - </el-form-item> - <el-form-item label="排班结束时间"> - <el-input v-model="details.endTime" readonly/> - </el-form-item> - <el-form-item> - <el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - <el-dialog v-model="dialogAddRecord" title="人员排班编辑" @close="closeAdd"> - <el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules"> - <el-form-item label="排班名称" prop="schedName"> - <el-input - v-model="addRecord.schedName" - > - </el-input> - </el-form-item> - <el-form-item label="排班方案" prop="schedPlan"> - <el-select v-model="addRecord.schedPlan"> - <el-option label="三班三倒" value="三班三倒" /> - <el-option label="常白班" value="常白班" /> - </el-select> - </el-form-item> - <el-form-item label="休息类型" prop="restType"> - <el-select v-model="addRecord.restType" multiple> - <el-option label="每周公休假日" value="每周公休假日" /> - <el-option label="自定义/每月" value="自定义/每月" /> - </el-select> - </el-form-item> - <el-form-item label="班组选择" prop="team"> - <el-select v-model="addRecord.team"> - <el-option label="A车间班组" value="A车间班组" /> - <el-option label="B车间班组" value="B车间班组" /> - </el-select> - </el-form-item> - <el-form-item label="排班时间段" prop="timeRange"> - <el-date-picker - v-model="addRecord.timeRange" - format="YYYY-MM-DD" - value-format="YYYY-MM-DD" - type="daterange" - range-separator="至" - start-placeholder="开始时间" - end-placeholder="结束时间" - size="large" - /> - </el-form-item> - <el-form-item> - <el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button> - <el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button> - </el-form-item> - </el-form> - </el-dialog> - <el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear"> - <span>您确定要删除该条记录吗?</span> - <template #footer> - <span class="dialog-footer"> - <el-button @click="deleteDialog = false" size="default">取消</el-button> - <el-button type="primary" @click="conFirmDelete" size="default">确认</el-button> - </span> - </template> - </el-dialog> - </div> -</template> - -<script lang="ts" setup> - import { toRefs, reactive, ref } from 'vue'; - import { storeToRefs } from 'pinia'; - import { initBackEndControlRoutes } from '/@/router/backEnd'; - import {useUserInfo} from "/@/stores/userInfo"; - import { Session } from '/@/utils/storage'; - import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue' - import { ElTable } from 'element-plus' - import { FormInstance, FormRules } from 'element-plus' - let global: any = { - homeChartOne: null, - homeChartTwo: null, - homeCharThree: null, - dispose: [null, '', undefined], - }; - - interface stateType { - homeOne: Array <type> - } - interface type { - - } - const userInfo = useUserInfo() - const { userInfos } = storeToRefs(userInfo); - const state = reactive<stateType>({}); - const currentPage = ref(1) - const pageSize = ref(10) - const chosenIndex = ref(-1) - const casProps = { - expandTrigger: 'hover', - multiple: true, - emitPath: false, - checkStrictly: false - } - const handleSizeChange = (val: number) => { - console.log(`${val} items per page`) - } - const handleCurrentChange = (val: number) => { - console.log(`current page: ${val}`) - } - const tableData = reactive( - [ - { - schedName: 'A车间三班三倒', - schedPlan: '三班三倒', - restType: ['每周公休假日'], - team: 'A车间班组', - startTime: '2022-07-14', - endTime: '2022-07-16' - }, - { - schedName: 'B车间常白班', - schedPlan: '常白班', - restType: ['自定义休息日/每周'], - team: 'B车间班组', - startTime: '2022-07-16', - endTime: '2022-07-20' - }, - ] - ) - const addRef = ref<FormInstance>() - const addRules = reactive<FormRules>({ - schedName:[{required: true, message: '该内容不能为空',trigger:'blur'}], - schedPlan:[{required: true, message: '该内容不能为空',trigger:'blur'}], - restType:[{required: true, message: '该内容不能为空',trigger:'blur'}], - team:[{required: true, message: '该内容不能为空',trigger:'blur'}], - timeRange:[{required: true, message: '该内容不能为空',trigger:'blur'}] - }) - const dialogDetails = ref(false) - const dialogAddRecord = ref(false) - const deleteDialog = ref(false) - const addRecord = ref({}) - const details = ref({}) - const viewRecord = (row) =>{ - details.value = JSON.parse(JSON.stringify(row)) - dialogDetails.value = true - } - const deleteRecord = (index) =>{ - chosenIndex.value = index - deleteDialog.value = true - } - const conFirmDelete = ()=> { - tableData.splice(chosenIndex.value,1) - deleteDialog.value = false - } - const confirmAddRecord = async (formEl: FormInstance | undefined) =>{ - if (!formEl) return - await formEl.validate((valid, fields) => { - if (valid) { - if(chosenIndex.value == -1){ - addRecord.value.startTime = JSON.parse(JSON.stringify(addRecord.value.timeRange))[0] - addRecord.value.endTime = JSON.parse(JSON.stringify(addRecord.value.timeRange))[1] - tableData.unshift(addRecord.value) - }else{ - addRecord.value.startTime = JSON.parse(JSON.stringify(addRecord.value.timeRange))[0] - addRecord.value.endTimeTime = JSON.parse(JSON.stringify(addRecord.value.timeRange))[1] - tableData[chosenIndex.value] = addRecord.value - } - dialogAddRecord.value =false - } else { - console.log('error submit!', fields) - } - }) - - } - const closeAdd =()=>{ - addRecord.value={} - chosenIndex.value = -1 - } - const indexClear = ()=>{ - chosenIndex.value = -1 - } - const editRecord =(index, row)=>{ - dialogAddRecord.value = true - chosenIndex.value = index - addRecord.value = JSON.parse(JSON.stringify(row)) - addRecord.value.timeRange= [addRecord.value.startTime,addRecord.value.endTime] - } - // 折线图 - const renderMenu = async (value: string) => { - Session.set('projectId',value) - userInfos.value.projectId = value - await initBackEndControlRoutes(); - }; -</script> - -<style scoped lang="scss"> - $homeNavLengh: 8; - .home-container { - height: calc(100vh - 144px); - box-sizing: border-box; - overflow: hidden; - .homeCard{ - width: 100%; - padding: 20px; - box-sizing: border-box; - background: #fff; - border-radius: 4px; - - .main-card{ - width: 100%; - height: 100%; - .cardTop{ - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; - .mainCardBtn{ - margin: 0; - } - } - .pageBtn{ - height: 60px; - display: flex; - align-items: center; - justify-content: right; - - .demo-pagination-block + .demo-pagination-block { - margin-top: 10px; - } - .demo-pagination-block .demonstration { - margin-bottom: 16px; - } - } - } - &:last-of-type{ - height: calc(100% - 100px); - } - } - .el-row{ - display: flex; - align-items: center; - margin-bottom: 20px; - &:last-child { - margin-bottom: 0; - } - .grid-content{ - align-items: center; - min-height: 36px; - } - - .topInfo { - display: flex; - align-items: center; - font-size: 16px; - font-weight: bold; - - &>div{ - white-space: nowrap; - margin-right: 20px; - } - } - } - } - .el-input{ - width: 100% !important; - } - .el-date-editor::v-deep{ - width: 100%; - } - .el-select{ - width: 100%; - } -</style> -- Gitblit v1.9.2