| | |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-width="68px" |
| | | label-position="left" |
| | | > |
| | | <el-row type="flex" justify="left"> |
| | | <el-col :span="6"> |
| | | <el-row type="flex" justify="left" :gutter="20"> |
| | | <el-col :span="5"> |
| | | <el-form-item label="日历描述" prop="description"> |
| | | <el-input |
| | | style="width: 140px" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12" style="text-align: right"> |
| | | <el-col :span="13" style="text-align: right"> |
| | | <el-form-item class="column-with-margin"> |
| | | <el-button type="primary" icon="Search" @click="handleQuery" |
| | | >查询</el-button |
| | |
| | | </div> |
| | | </template> |
| | | <template #buttons="{ row }"> |
| | | <vxe-button |
| | | mode="text" |
| | | <el-button |
| | | type="primary" |
| | | size="small" |
| | | @click="handleUpdate(row)" |
| | | v-hasPermi="['aps:calendar:update']" |
| | | >修改</vxe-button |
| | | >修改</el-button |
| | | > |
| | | <vxe-button |
| | | mode="text" |
| | | <el-button |
| | | type="warning" |
| | | size="small" |
| | | @click="handleSetHolidays(row)" |
| | | v-hasPermi="['aps:calendar:remove']" |
| | | >设置节假日</el-button |
| | | > |
| | | <el-button |
| | | type="danger" |
| | | size="small" |
| | | @click="handleDelete(row)" |
| | | v-hasPermi="['aps:calendar:remove']" |
| | | >删除</vxe-button |
| | | >删除</el-button |
| | | > |
| | | </template> |
| | | </HxlhTable> |
| | |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <div v-if="form.type === '1'"> |
| | | <div> |
| | | <div class="title_bar_line"> |
| | | <div class="line_short"></div> |
| | | <div>周工作设置</div> |
| | |
| | | prop="applicableFactory" |
| | | class="factory_use_item" |
| | | > --> |
| | | <div class="select_factory">适用工厂/车间/工序</div> |
| | | <div class="select_factory select_factory_dis">适用工厂/车间/工序</div> |
| | | <!-- <el-row :gutter="20" class="select_factory"> --> |
| | | <div |
| | | class="select_factory" |
| | | class="select_factory_dis" |
| | | v-for="(item, index) in applicableSettingList" |
| | | :key="index" |
| | | > |
| | |
| | | v-for="plant in aps_factory" |
| | | :key="plant.value" |
| | | :label="plant.label" |
| | | :value="plant.value" |
| | | :value="`${plant.value};${plant.label}`" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | |
| | | v-for="shop in shopList" |
| | | :key="shop.id" |
| | | :label="shop.shopName" |
| | | :value="shop.id" |
| | | :value="`${shop.id};${shop.shopName}`" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | |
| | | > |
| | | <el-option |
| | | v-for="process in processList" |
| | | :key="process.id" |
| | | :key="process.processNumber" |
| | | :label="process.processName" |
| | | :value="process.processName" |
| | | :value="`${process.processNumber};${process.processName}`" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | |
| | | <el-button |
| | | class="select_content" |
| | | type="primary" |
| | | :icon="Plus" |
| | | icon="Plus" |
| | | @click="handleAddFactory(item)" |
| | | circle |
| | | size="small" |
| | | /> |
| | | <el-button |
| | | v-if="applicableSettingList.length > 1" |
| | | class="select_content" |
| | | type="primary" |
| | | icon="Minus" |
| | | @click="handleMinusFactory(item)" |
| | | circle |
| | | size="small" |
| | | /> |
| | |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | <el-dialog |
| | | title="设置节假日" |
| | | v-model="openSetHolidays" |
| | | width="80%" |
| | | style="height: 570px" |
| | | append-to-body |
| | | > |
| | | <div class="height_dialog"> |
| | | <div class="height_dialog_scroll"> |
| | | <div class="grey_bg"> |
| | | <div v-if="expand"> |
| | | <div class="flex_item"> |
| | | <div>工作日历: </div> |
| | | <div>{{ form.description }}</div> |
| | | </div> |
| | | <div class="flex_item"> |
| | | <div>生效时间: </div> |
| | | <div>{{ form.effectiveDate }}</div> |
| | | </div> |
| | | <div class="flex_item"> |
| | | <div>失效时间: </div> |
| | | <div>{{ form.expiringDate }}</div> |
| | | </div> |
| | | <div class="flex_item"> |
| | | <div>适用工厂: </div> |
| | | <div class="flex_item_dis"> |
| | | <div |
| | | v-for="(item, index) in form.applicableTranslate" |
| | | :key="index" |
| | | > |
| | | {{ item.factory }} - {{ item.workshop }} - {{ item.process }} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="flex_item_expand_end" @click="handleToggleExpand"> |
| | | <el-icon :size="18" v-if="expand"><ArrowUpBold /></el-icon> |
| | | <el-icon v-else><ArrowDownBold /></el-icon> |
| | | </div> |
| | | </div> |
| | | <div class="title_flex"> |
| | | <div class="holiday_title">节假日列表</div> |
| | | <el-button type="primary" size="small" @click="hanldeAddHolidays" |
| | | >添加节假日</el-button |
| | | > |
| | | </div> |
| | | <div class="grey_bg"> |
| | | <el-form |
| | | class="mart10" |
| | | ref="holidaysRef" |
| | | :model="formHolidays" |
| | | :rules="holidayRules" |
| | | :inline="true" |
| | | label-width="105px" |
| | | > |
| | | <template v-for="(item, index) in formHolidays" :key="index"> |
| | | <el-form-item label="节假日描述" prop="description"> |
| | | <el-input |
| | | style="width: 130px" |
| | | v-model="item.describe" |
| | | placeholder="请输入描述" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="开始时间" prop="startdate"> |
| | | <el-date-picker |
| | | style="width: 130px" |
| | | clearable |
| | | v-model="item.startdate" |
| | | type="date" |
| | | :disabled-date="handleDisabledDate" |
| | | :default-value="form.effectiveDate" |
| | | placeholder="选择日期" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="结束时间" prop="enddate"> |
| | | <el-date-picker |
| | | style="width: 130px" |
| | | clearable |
| | | v-model="item.enddate" |
| | | type="date" |
| | | placeholder="选择日期" |
| | | :disabled-date="handleDisabledDate" |
| | | :default-value="form.expiringDate" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="" prop=""> |
| | | <el-button v-if="formHolidays.length>1" type="danger" size="small" @click="handleDelSettingHolidays(item)">删除</el-button> |
| | | </el-form-item> |
| | | </template> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button @click="openSetHolidays = false">取 消</el-button> |
| | | <el-button type="primary" @click="handleSaveHolidaysForm" |
| | | >保存</el-button |
| | | > |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup name="Calendar"> |
| | | import { Plus } from "@element-plus/icons-vue"; |
| | | import moment from "moment"; |
| | | import HxlhTable from "@/components/HxlhTable"; |
| | | import { |
| | | listCalendar, |
| | |
| | | import { listAll_plant, listByWorkShop } from "@/api/basicData/plant"; |
| | | import { listAll_shop, listAps_shop } from "@/api/basicData/shop"; |
| | | import { selectProcessNameList } from "@/api/basicData/processRoute.js"; |
| | | import { ElMessage } from "element-plus"; |
| | | const { proxy } = getCurrentInstance(); |
| | | const { aps_factory } = proxy.useDict("aps_factory"); |
| | | const tableRef = ref(); |
| | | const calendarList = ref([]); |
| | | const open = ref(false); |
| | | const openSetHolidays = ref(false); |
| | | const expand = ref(true); |
| | | const loading = ref(true); |
| | | const showSearch = ref(true); |
| | | const ids = ref([]); |
| | |
| | | }, |
| | | ], |
| | | }, |
| | | formHolidays: [ |
| | | { |
| | | enddate: "", |
| | | startdate: "", |
| | | describe: "", |
| | | }, |
| | | ], |
| | | queryParams: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | applicableFactory: [ |
| | | }, |
| | | holidayRules: { |
| | | describe: [ |
| | | { |
| | | required: true, |
| | | message: "请选择适用工厂", |
| | | message: "请输入节假日描述", |
| | | trigger: "blur", |
| | | }, |
| | | ], |
| | | }, |
| | | }); |
| | | const { queryParams, form, rules } = toRefs(data); |
| | | const { queryParams, form, rules, formHolidays, holidayRules } = toRefs(data); |
| | | const dateType = ref("周工作"); |
| | | const dateTypeList = ref([ |
| | | { |
| | |
| | | ]); |
| | | const typeRadioNumber = ref(1); |
| | | const applicableSettingList = ref([ |
| | | { factory: "", workshop: "", process: "" }, |
| | | { factory: "", workshop: "", process: "", id: 0 }, |
| | | ]); |
| | | const weekDaysSettingList = ref([ |
| | | { |
| | |
| | | }, |
| | | { |
| | | title: "操作", |
| | | width: 100, |
| | | width: 270, |
| | | fixed: "right", |
| | | slots: { default: "buttons" }, |
| | | align: "center", |
| | |
| | | // 取消按钮 |
| | | function cancel() { |
| | | open.value = false; |
| | | reset(); |
| | | } |
| | | |
| | | // 表单重置 |
| | | function reset() { |
| | | form.value = { |
| | | id: null, |
| | | description: null, |
| | | type: "1", |
| | | effectiveDate: null, |
| | | expiringDate: null, |
| | | content: null, |
| | | applicableFactory: null, |
| | | applicableWorkshop: null, |
| | | applicableProcess: null, |
| | | createBy: null, |
| | | createTime: null, |
| | | updateBy: null, |
| | | updateTime: null, |
| | | applicable: [ |
| | | { |
| | | factory: "", |
| | | workshop: "", |
| | | process: "", |
| | | }, |
| | | ], |
| | | }; |
| | | proxy.resetForm("calendarRef"); |
| | | } |
| | | |
| | | /** 搜索按钮操作 */ |
| | |
| | | |
| | | /** 新增按钮操作 */ |
| | | async function handleAdd() { |
| | | reset(); |
| | | open.value = true; |
| | | form.value = { |
| | | applicable: [ |
| | |
| | | /** 选择工厂后事件 加载车间 和 工序 **/ |
| | | function changePlant(plant) { |
| | | console.log(plant); |
| | | listAps_shop({ plantCode: plant }).then((response) => { |
| | | listAps_shop({ plantCode: plant.split(";")[0] }).then((response) => { |
| | | shopList.value = response.rows; |
| | | }); |
| | | // selectProcessNameList({ orgCode: plant }).then((response) => { |
| | |
| | | // }); |
| | | } |
| | | function changeWorkshop(workShop) { |
| | | console.log(workShop.split(";")[0]); |
| | | listByWorkShop({ workShop: "气柜" }).then((res) => { |
| | | console.log(res, "workShop"); |
| | | processList.value = res.rows; |
| | | }); |
| | | } |
| | | function handleAddFactory(row) { |
| | | applicableSettingList.value.push(row); |
| | | console.log(row); |
| | | applicableSettingList.value.push({ ...row, id: ++row.id }); |
| | | } |
| | | function handleMinusFactory(row) { |
| | | applicableSettingList.value = applicableSettingList.value.filter( |
| | | (item, index) => item !== row |
| | | ); |
| | | } |
| | | /** 修改按钮操作 */ |
| | | function handleUpdate(row) { |
| | | reset(); |
| | | const _id = row.id || ids.value; |
| | | getCalendar(_id).then((response) => { |
| | | form.value = response.data; |
| | |
| | | title.value = "修改日历管理"; |
| | | }); |
| | | } |
| | | |
| | | // 设置节假日 |
| | | function handleSetHolidays(row) { |
| | | form.value = { |
| | | ...row, |
| | | applicableTranslate: JSON.parse(row.applicableTranslate), |
| | | }; |
| | | if (!row.holidays) { |
| | | formHolidays.value = [ |
| | | { |
| | | enddate: "", |
| | | startdate: "", |
| | | describe: "", |
| | | }, |
| | | ]; |
| | | } else { |
| | | formHolidays.value = JSON.parse(row.holidays.value); |
| | | } |
| | | openSetHolidays.value = true; |
| | | } |
| | | // 禁用日期 |
| | | function handleDisabledDate(date) { |
| | | const targetDate = moment(date).valueOf(); |
| | | const startDate = moment(form.value.effectiveDate).valueOf(); |
| | | const endDate = moment(form.value.expiringDate).valueOf(); |
| | | console.log(targetDate, startDate, endDate, "handleDisabledDate"); |
| | | return targetDate < startDate || targetDate > endDate; |
| | | } |
| | | // 删除节假日设置 |
| | | function handleDelSettingHolidays(row) { |
| | | formHolidays.value = formHolidays.value.filter(item=>{ |
| | | return item != row |
| | | }) |
| | | } |
| | | // 添加节假日 |
| | | function hanldeAddHolidays() { |
| | | formHolidays.value.push({ |
| | | enddate: "", |
| | | startdate: "", |
| | | describe: "", |
| | | }); |
| | | } |
| | | function handleToggleExpand() { |
| | | expand.value = !expand.value; |
| | | } |
| | | // 提交节假日 |
| | | function handleSaveHolidaysForm() { |
| | | proxy.$refs["holidaysRef"].validate((valid) => { |
| | | if (valid) { |
| | | updateCalendar({ |
| | | id: form.value.id, |
| | | // content: { |
| | | // weekdays: weekDaysSettingList.value, |
| | | // }, |
| | | holidays: formHolidays.value.map((item) => { |
| | | return { |
| | | startdate: moment(item.startdate).format("YY-MM-DD"), |
| | | enddate: moment(item.enddate).format("YY-MM-DD"), |
| | | }; |
| | | }), |
| | | // applicable: applicableSettingList.value.map((item) => { |
| | | // return { |
| | | // factory: item.factory.split(";")[0], |
| | | // process: item.process.split(";")[0], |
| | | // workshop: item.workshop.split(";")[0], |
| | | // }; |
| | | // }), |
| | | // applicableTranslate: JSON.stringify( |
| | | // applicableSettingList.value.map((item) => { |
| | | // return { |
| | | // factory: item.factory.split(";")[1], |
| | | // process: item.process.split(";")[1], |
| | | // workshop: item.workshop.split(";")[1], |
| | | // }; |
| | | // }) |
| | | //), |
| | | // applicableCn: |
| | | //}, |
| | | }).then((response) => { |
| | | proxy.$modal.msgSuccess("新增成功"); |
| | | open.value = false; |
| | | getList(); |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | /** 提交按钮 */ |
| | | function submitForm() { |
| | | proxy.$refs["calendarRef"].validate((valid) => { |
| | | if (valid) { |
| | | if (applicableSettingList.value[0].factory === "") { |
| | | ElMessage({ |
| | | type: "error", |
| | | message: "至少选择一个适用工厂", |
| | | }); |
| | | return; |
| | | } |
| | | if (form.value.id != null) { |
| | | // if (form.value.type === "1") { |
| | | // updateCalendar({ |
| | |
| | | content: { |
| | | holidays: holidays.value, |
| | | }, |
| | | applicableWorkshop: form.value.applicableWorkshop, |
| | | applicableWorkshop: form.value.applicableWorkshop.map((item) => { |
| | | return { |
| | | factory: item.factory.split(";")[0], |
| | | process: item.process.split(";")[0], |
| | | workshop: item.workshop.split(";")[0], |
| | | }; |
| | | }), |
| | | applicableProcess: form.value.applicableProcess, |
| | | }).then((response) => { |
| | | proxy.$modal.msgSuccess("修改成功"); |
| | |
| | | content: { |
| | | weekdays: weekDaysSettingList.value, |
| | | }, |
| | | holidays: holidays.value, |
| | | applicable: applicableSettingList.value, |
| | | // holidays: holidays.value, |
| | | applicable: applicableSettingList.value.map((item) => { |
| | | return { |
| | | factory: item.factory.split(";")[0], |
| | | process: item.process.split(";")[0], |
| | | workshop: item.workshop.split(";")[0], |
| | | }; |
| | | }), |
| | | applicableTranslate: JSON.stringify( |
| | | applicableSettingList.value.map((item) => { |
| | | return { |
| | | factory: item.factory.split(";")[1], |
| | | process: item.process.split(";")[1], |
| | | workshop: item.workshop.split(";")[1], |
| | | }; |
| | | }) |
| | | ), |
| | | // applicableCn: |
| | | //}, |
| | | }).then((response) => { |
| | | proxy.$modal.msgSuccess("新增成功"); |
| | |
| | | margin-top: 10px; |
| | | } |
| | | .select_factory { |
| | | margin-left: 34px; |
| | | font-weight: 800; |
| | | font-size: 14px; |
| | | color: #606266; |
| | | } |
| | | .select_factory_dis { |
| | | margin-left: 34px; |
| | | } |
| | | .select_content { |
| | | margin-right: 10px; |
| | |
| | | .auto-height-grid .xe-body .xe-body--row { |
| | | height: auto; /* 或者使用 min-height */ |
| | | } |
| | | .mart10 { |
| | | margin-top: 20px; |
| | | } |
| | | .h300 { |
| | | } |
| | | .height_dialog{ |
| | | height: 400px; |
| | | overflow: hidden; |
| | | .height_dialog_scroll{ |
| | | height: 100%; |
| | | overflow: auto; |
| | | } |
| | | } |
| | | .grey_bg { |
| | | background: #f1f1f1; |
| | | width: 100%; |
| | | padding: 10px; |
| | | box-sizing: border-box; |
| | | .flex_item { |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | align-items: center; |
| | | margin-top: 10px; |
| | | .flex_item_dis { |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: center; |
| | | align-items: flex-start; |
| | | & div { |
| | | margin-bottom: 5px; |
| | | } |
| | | } |
| | | } |
| | | .flex_item_expand_end { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | align-items: center; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | .title_flex { |
| | | margin-top: 20px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | margin-bottom: 20px; |
| | | .holiday_title { |
| | | font-size: 15px; |
| | | font-weight: 500; |
| | | } |
| | | } |
| | | </style> |