From 80f27f1672467e91ff3d4fd7f30a817f6f11d5c0 Mon Sep 17 00:00:00 2001 From: CD配唱片 <CD配唱片> Date: 星期五, 25 四月 2025 22:55:48 +0800 Subject: [PATCH] Merge branch 'dev' of http://192.168.50.149:8085/r/aps-kj-web into dev --- src/views/basicData/calendar/index.vue | 275 +++++++++++++++++++++++++++++++----------------------- 1 files changed, 159 insertions(+), 116 deletions(-) diff --git a/src/views/basicData/calendar/index.vue b/src/views/basicData/calendar/index.vue index 456114a..073b58d 100644 --- a/src/views/basicData/calendar/index.vue +++ b/src/views/basicData/calendar/index.vue @@ -8,67 +8,26 @@ v-show="showSearch" label-width="68px" > - <el-row type="flex" justify="right"> - <el-form-item label="鏃ュ巻鎻忚堪" prop="description"> - <el-input - style="width: 140px" - v-model="queryParams.description" - placeholder="璇疯緭鍏ユ弿杩板叧閿瘝" - clearable - @keyup.enter="handleQuery" - /> - </el-form-item> - <el-form-item label="鏃ュ巻绫诲瀷" prop="effectiveDate"> - <el-select clearable v-model="dateType" style="width: 90px"> - <el-option - v-for="(item, index) of dateTypeList" - :key="index" - :label="item.name" - :value="item.name" - >{{ item.name }}</el-option + <el-row type="flex" justify="left"> + <el-col :span="6"> + <el-form-item label="鏃ュ巻鎻忚堪" prop="description"> + <el-input + style="width: 140px" + v-model="queryParams.description" + placeholder="璇疯緭鍏ユ弿杩板叧閿瘝" + clearable + @keyup.enter="handleQuery" + /> + </el-form-item> + </el-col> + <el-col :span="18" style="text-align: right"> + <el-form-item class="column-with-margin"> + <el-button type="primary" icon="Search" @click="handleQuery" + >鏌ヨ</el-button > - </el-select> - </el-form-item> - <el-form-item label="鐢熸晥鏃ユ湡" prop="effectiveDate"> - <el-date-picker - clearable - v-model="queryParams.effectiveDate" - type="date" - value-format="YYYY-MM-DD" - placeholder="閫夋嫨鏃ユ湡" - > - </el-date-picker> - </el-form-item> - <el-form-item label="閫傜敤宸ュ巶" prop="expiringDate"> - <!-- <el-date-picker clearable - v-model="queryParams.expiringDate" - type="date" - value-format="YYYY-MM-DD" - placeholder="璇烽�夋嫨澶辨晥鏃ユ湡"> - </el-date-picker> --> - <el-input - style="width: 180px" - v-model="queryParams.description" - placeholder="璇疯緭鍏ュ伐鍘傚叧閿瘝" - clearable - @keyup.enter="handleQuery" - /> - </el-form-item> - </el-row> - <el-row type="flex" justify="end"> - <el-form-item class="column-with-margin"> - <el-button type="primary" icon="Search" @click="handleQuery" - >鏌ヨ</el-button - > - <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> - <!-- <el-button - type="success" - icon="Plus" - @click="handleAdd" - v-hasPermi="['core:calendar:add']" - >鏂板鏃ュ巻</el-button - > --> - </el-form-item> + <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-col> </el-row> </el-form> @@ -79,7 +38,7 @@ plain icon="Plus" @click="handleAdd" - v-hasPermi="['core:calendar:add']" + v-hasPermi="['aps:calendar:update']" >鏂板</el-button > </el-col> @@ -90,7 +49,7 @@ icon="Edit" :disabled="single" @click="handleUpdate" - v-hasPermi="['core:calendar:edit']" + v-hasPermi="['aps:calendar:update']" >淇敼</el-button > </el-col> @@ -101,11 +60,11 @@ icon="Delete" :disabled="multiple" @click="handleDelete" - v-hasPermi="['core:calendar:remove']" + v-hasPermi="['aps:calendar:remove']" >鍒犻櫎</el-button > </el-col> - <el-col :span="1.5"> + <!-- <el-col :span="1.5"> <el-button type="warning" plain @@ -114,7 +73,7 @@ v-hasPermi="['core:calendar:export']" >瀵煎嚭</el-button > - </el-col> + </el-col> --> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList" @@ -126,17 +85,35 @@ :data="calendarList" :loading="loading" :height="height" + ref="tableRef" :page="page" @changePageNo="changePageNo" @changePageSize="changePageSize" @on-checkbox="handleCheckboxChange" + class="auto-height-grid" > <template #status="{ row }"> <vxe-tag v-if="row.type === '1'" status="primary">鍛ㄥ伐浣滄棩</vxe-tag> <vxe-tag v-if="row.type === '2'" status="success">鑺傚亣鏃�</vxe-tag> </template> - <template #content="{ row }"> - <vxe-tag>鍛ㄥ伐浣滄棩</vxe-tag> + <template #mark="{ row }"> + <div v-if="row.type === '1'"> + <span v-for="(item, index) in JSON.parse(row.content.value).weekdays" :key="index"> + <span v-if="item.work==='y'" status="success" class="mart5">{{item.chineseName}}: 宸ヤ綔鏃�; </span> + <span v-if="item.work==='n'" status="info" class="mart5">{{item.chineseName}}: 闈炲伐浣滄棩; </span> + </span> + <!-- <div v-for="(item, index) in JSON.parse(row.content.value).weekdays" :key="index"> + <vxe-tag v-if="item.work==='y'" status="success" class="mart5">{{item.chineseName}}: 宸ヤ綔鏃�; </vxe-tag> + <vxe-tag v-if="item.work==='n'" status="info" class="mart5">{{item.chineseName}}: 闈炲伐浣滄棩; </vxe-tag> + </div> --> + </div> + <div v-if="row.type === '2'"> + <div>{{JSON.parse(row.content.value).holidays.startdate}}鑷硔{JSON.parse(row.content.value).holidays.enddate}}</div> + </div> + </template> + <template #buttons="{row}"> + <vxe-button mode="text" @click="handleUpdate(row)" v-hasPermi="['aps:calendar:update']" >淇敼</vxe-button> + <vxe-button mode="text" @click="handleDelete(row)" v-hasPermi="['aps:calendar:remove']" >鍒犻櫎</vxe-button> </template> </HxlhTable> @@ -153,8 +130,8 @@ </el-form-item> <el-form-item label="鏃ュ巻绫诲瀷" prop="type"> <el-radio-group v-model="form.type" @change="handleSwitchType"> - <el-radio :label="1">鍛ㄥ伐浣�</el-radio> - <el-radio :label="2">鑺傚亣鏃�</el-radio> + <el-radio :label="'1'">鍛ㄥ伐浣�</el-radio> + <el-radio :label="'2'">鑺傚亣鏃�</el-radio> </el-radio-group> </el-form-item> <el-form-item label="鐢熸晥鏃堕棿" prop="effectiveDate"> @@ -177,7 +154,7 @@ > </el-date-picker> </el-form-item> - <div v-if="form.type === 1"> + <div v-if="form.type === '1'"> <div class="title_bar_line"> <div class="line_short"></div> <div>鍛ㄥ伐浣滆缃�</div> @@ -197,7 +174,7 @@ </div> </div> </div> - <div v-if="form.type === 2"> + <div v-if="form.type === '2'"> <div class="title_bar_line"> <div class="line_short"></div> <div>鑺傚亣鏃ヨ缃�</div> @@ -311,10 +288,12 @@ addCalendar, updateCalendar, } from "@/api/basicData/calendar"; +import axios from "axios"; import { listAll_plant } from "@/api/basicData/plant"; import { listAll_shop, listAps_shop } from "@/api/basicData/shop"; import { selectProcessNameList } from "@/api/basicData/processRoute.js"; const { proxy } = getCurrentInstance(); +const tableRef = ref() const calendarList = ref([]); const open = ref(false); const loading = ref(true); @@ -325,7 +304,9 @@ const total = ref(0); const title = ref(""); const data = reactive({ - form: {}, + form: { + type: "1", + }, queryParams: { pageNum: 1, pageSize: 10, @@ -381,9 +362,11 @@ const dateTypeList = ref([ { name: "鍛ㄥ伐浣�", + label: "1", }, { name: "鑺傚亣鏃�", + label: "2", }, ]); const typeRadioNumber = ref(1); @@ -432,7 +415,7 @@ const shopList = ref([]); const allShopList = ref([]); const processList = ref([]); -const height = ref(document.documentElement.clientHeight - 260 + "px;"); +const height = ref(document.documentElement.clientHeight - 220 + "px;"); // 琛ㄦ牸閰嶇疆-鍒楄〃 const columns = ref([ { type: "checkbox", width: 60, align: "center" }, @@ -445,28 +428,28 @@ { title: "鏃ュ巻绫诲瀷", field: "type", - width: 150, + width: 200, align: "center", slots: { default: "status" }, }, { title: "鏃ュ巻鐢熸晥鏃堕棿", field: "effectiveDate", - width: 100, + width: 200, align: "center", }, { title: "鏃ュ巻澶辨晥鏃堕棿", field: "expiringDate", - width: 150, + width: 200, align: "center", }, { title: "鏃ュ巻鍐呭", field: "content", - width: 200, + width: 230, align: "center", - slots: { default: "content" }, + slots: { default: "mark" }, }, { title: "閫傜敤宸ュ巶", @@ -489,41 +472,42 @@ }, }, { - title: "閫傜敤杞﹂棿", - field: "applicableWorkshop", - width: 90, - align: "center", - formatter: ({ cellValue, row, column }) => { - console.log(row.applicableFactory, "llll"); - listAps_shop({ plantCode: row.applicableFactory }).then((response) => { - console.log(response.rows, "閫傜敤杞﹂棿"); - shopList.value = response.rows; - }); - for (let i = 0; i < shopList.value.length; i++) { - if (cellValue === shopList.value[i].id) { - return shopList.value[i].shopName; + title: '閫傜敤杞﹂棿', + field: 'applicableWorkshop', + width: 200, + align: 'center', + formatter: (({ cellValue, row, column }) => { + + if (cellValue) { + for(let i=0;i<shopList.value.length;i++){ + if(cellValue===shopList.value[i].id){ + console.log(cellValue,'cellValue') + return shopList.value[i].shopName + } } } - }, + return ''; + }) }, { title: "閫傜敤宸ュ簭", field: "applicableProcess", - width: 90, + width: 200, align: "center", }, { title: "鍒涘缓鑰�", field: "createBy", - width: 90, + width: 200, align: "center", }, { title: "鍒涘缓鏃堕棿", field: "createTime", - width: 90, + width: 200, align: "center", }, + { title: '鎿嶄綔', width: 100, fixed:"right", slots: { default: 'buttons' }, align: 'center' } ]); // 鍒嗛〉灞炴�� const page = ref({ @@ -533,15 +517,28 @@ }); /** 鏌ヨ鏃ュ巻绠$悊鍒楄〃 */ -async function getList() { +function getList() { loading.value = true; listCalendar(queryParams.value).then((response) => { calendarList.value = response.rows; - total.value = response.total; + page.value.total = response.total; loading.value = false; }); - const res = await listAll_plant({}); - plantList.value = res.data; + axios.all([ + /** 鏌ヨ宸ュ巶鍒楄〃 */ + listAll_plant({}), + /** 鏌ヨ杞﹂棿鍒楄〃 */ + listAll_shop({}), + ]) + .then(axios.spread((response1, response2) => { + plantList.value = response1.data; + shopList.value = response2.data; + loading.value = false; + })) + .catch(error => { + console.error('璇锋眰鍑洪敊:', error); + }); + } // 鍙栨秷鎸夐挳 @@ -555,7 +552,7 @@ form.value = { id: null, description: null, - type: null, + type: "1", effectiveDate: null, expiringDate: null, content: null, @@ -594,8 +591,8 @@ reset(); open.value = true; title.value = "娣诲姞鏃ュ巻绠$悊"; - const res = await listAll_plant({}); - plantList.value = res.data; + // const res = await listAll_plant({}); + // plantList.value = res.data; console.log(res, "sjchhscwhciwhcwi"); } @@ -615,6 +612,20 @@ const _id = row.id || ids.value; getCalendar(_id).then((response) => { form.value = response.data; + console.log( + form.value, + JSON.parse(response.data.content.value), + "hushchsuch" + ); + // form.value.content = JSON.parse(response.data.content.value); + if (form.value.type === "1") { + weekDaysSettingList.value = JSON.parse( + response.data.content.value + ).weekdays; + } else if (form.value.type === "2") { + holidays.value = JSON.parse(response.data.content.value).holidays; + } + open.value = true; title.value = "淇敼鏃ュ巻绠$悊"; }); @@ -625,13 +636,36 @@ proxy.$refs["calendarRef"].validate((valid) => { if (valid) { if (form.value.id != null) { - updateCalendar(form.value).then((response) => { - proxy.$modal.msgSuccess("淇敼鎴愬姛"); - open.value = false; - getList(); - }); + console.log(form.value, "淇敼鏃ュ巻==="); + if (form.value.type === "1") { + updateCalendar({ + ...form.value, + content: { + weekdays: weekDaysSettingList.value, + }, + applicableWorkshop: form.value.applicableWorkshop, + applicableProcess: form.value.applicableProcess, + }).then((response) => { + proxy.$modal.msgSuccess("淇敼鎴愬姛"); + open.value = false; + getList(); + }); + } else if (form.value.type === "2") { + updateCalendar({ + ...form.value, + content: { + holidays: holidays.value, + }, + applicableWorkshop: form.value.applicableWorkshop, + applicableProcess: form.value.applicableProcess, + }).then((response) => { + proxy.$modal.msgSuccess("淇敼鎴愬姛"); + open.value = false; + getList(); + }); + } } else { - if (typeRadioNumber.value === 1) { + if (form.value.type === "1") { addCalendar({ ...form.value, content: { @@ -642,7 +676,7 @@ open.value = false; getList(); }); - }else if(typeRadioNumber.value === 2){ + } else if (form.value.type === "2") { addCalendar({ ...form.value, content: { @@ -687,6 +721,7 @@ function handleSwitchType(e) { console.log(e, "鏃ユ湡绫诲瀷鍒囨崲"); typeRadioNumber.value = e; + form.value.type = e; form.value.effectiveDate = null; form.value.expiringDate = null; form.value.content = null; @@ -709,13 +744,12 @@ queryParams.value.pageSize = pageSize; getList(); } -// function formatType(type) { -// if(type===1){ -// return "鍛ㄥ伐浣�" -// }else{ -// return "鑺傚亣鏃�" -// } -// } +// 澶氶�夋閫変腑鏁版嵁 +const handleCheckboxChange = (data) => { + ids.value = data.records.map((item) => item.id); + single.value = data.records.length !== 1; + multiple.value = !data.records.length; +}; onMounted(() => { getList(); }); @@ -766,4 +800,13 @@ .factory_use_item { margin-top: 10px; } +.mart5{ + margin-top:5px; +} +.custom-height { + height: 200px; /* 鎴栬�呬娇鐢� min-height */ +} +.auto-height-grid .xe-body .xe-body--row { + height: auto; /* 鎴栬�呬娇鐢� min-height */ +} </style> -- Gitblit v1.9.3