CD配唱片
2025-04-23 0109f273556b57c703677cf2198b05adb4974990
提交日历管理
已修改5个文件
541 ■■■■ 文件已修改
.env.staging 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/HxlhTable/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/calendar/index.vue 530 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/processRoute/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.staging
@@ -1,5 +1,5 @@
# 页面标题
VITE_APP_TITLE = 若依管理系统
VITE_APP_TITLE = APS
# 生产环境配置
VITE_APP_ENV = 'staging'
package.json
@@ -8,7 +8,7 @@
  "scripts": {
    "dev:local": "vite --mode dev",
    "dev": "vite --mode development",
    "dev:stage":"vite --mode staging",
    "dev:stage": "vite --mode staging",
    "build:prod": "vite build --mode production",
    "build:dev": "vite build --mode development",
    "build:stage": "vite build --mode staging",
@@ -39,7 +39,6 @@
    "vue-router": "4.4.0",
    "vuedraggable": "4.1.0",
    "vxe-pc-ui": "4.5.15",
    "vxe-table": "4.12.5",
    "xlsx": "^0.18.5"
  },
  "devDependencies": {
@@ -49,6 +48,8 @@
    "unplugin-vue-setup-extend-plus": "1.0.1",
    "vite": "5.3.2",
    "vite-plugin-compression": "0.5.1",
    "vite-plugin-svg-icons": "2.0.1"
    "vite-plugin-svg-icons": "2.0.1",
    "vxe-table": "^4.13.8",
    "xe-utils": "^3.7.4"
  }
}
src/components/HxlhTable/index.vue
@@ -48,7 +48,6 @@
  </template>
  
<script setup>
// 获取 Vuex 存储实例
// const useStore = useStore();
src/views/basicData/calendar/index.vue
@@ -61,18 +61,18 @@
            >查询</el-button
          >
          <el-button icon="Refresh" @click="resetQuery">重置</el-button>
          <el-button
          <!-- <el-button
            type="success"
            icon="Plus"
            @click="handleAdd"
            v-hasPermi="['core:calendar:add']"
            >新增日历</el-button
          >
          > -->
        </el-form-item>
      </el-row>
    </el-form>
    <!-- <el-row :gutter="10" class="mb8">
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="primary"
@@ -119,99 +119,26 @@
        v-model:showSearch="showSearch"
        @queryTable="getList"
      ></right-toolbar>
    </el-row> -->
    <el-table
      v-loading="loading"
    </el-row>
    <HxlhTable
      style="width: 100%"
      :columns="columns"
      :data="calendarList"
      @selection-change="handleSelectionChange"
      :loading="loading"
      :height="height"
      :page="page"
      @changePageNo="changePageNo"
      @changePageSize="changePageSize"
      @on-checkbox="handleCheckboxChange"
    >
      <!-- <el-table-column type="selection" width="55" align="center" /> -->
      <!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
      <el-table-column label="日历描述" align="center" prop="description" />
      <el-table-column label="日历类型" align="center" prop="type">
        <template #default="scope">
          <!-- <dict-tag :options="sys_normal_disable" :value="scope.row.status" /> -->
          <el-tag
          :type="scope.row.type === '1' ? '' : 'success'"
          disable-transitions
          >{{ scope.row.type }}</el-tag
        >
        </template>
      </el-table-column>
      <el-table-column
        label="日历生效时间"
        align="center"
        prop="effectiveDate"
        width="180"
      >
        <template #default="scope">
          <span>{{ parseTime(scope.row.effectiveDate, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column
        label="日历失效时间"
        align="center"
        prop="expiringDate"
        width="180"
      >
        <template #default="scope">
          <span>{{ parseTime(scope.row.expiringDate, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column label="日历内容" align="center" prop="content" />
      <el-table-column
        label="适用工厂"
        align="center"
        prop="applicableFactory"
      />
      <!-- 适用车间 -->
      <el-table-column
        label="适用车间"
        align="center"
        prop="applicableWorkshop"
      />
      <!-- 适用工序 -->
      <el-table-column
        label="适用工序"
        align="center"
        prop="applicableProcess"
      />
      <el-table-column label="创建者" align="center" prop="createBy" />
      <el-table-column label="创建时间" align="center" prop="createTime" />
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
      >
        <template #default="scope">
          <el-button
            link
            type="primary"
            icon="Edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['core:calendar:edit']"
            >修改</el-button
          >
          <el-button
            link
            type="danger"
            icon="Delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['core:calendar:remove']"
            >删除</el-button
          >
        </template>
      </el-table-column>
    </el-table>
    <pagination
      v-show="total > 0"
      :total="total"
      v-model:page="queryParams.pageNum"
      v-model:limit="queryParams.pageSize"
      @pagination="getList"
    />
      <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>
    </HxlhTable>
    <!-- 添加或修改日历管理对话框 -->
    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@@ -219,13 +146,13 @@
        ref="calendarRef"
        :model="form"
        :rules="rules"
        label-width="80px"
        label-width="105px"
      >
        <el-form-item label="日历描述" prop="description">
          <el-input v-model="form.description" placeholder="请输入描述" />
        </el-form-item>
        <el-form-item label="日历类型" prop="type">
          <el-radio-group v-model="typeRadioNumber" @change="handleSwitchType">
          <el-radio-group v-model="form.type" @change="handleSwitchType">
            <el-radio :label="1">周工作</el-radio>
            <el-radio :label="2">节假日</el-radio>
          </el-radio-group>
@@ -250,78 +177,59 @@
          >
          </el-date-picker>
        </el-form-item>
        <div class="title_bar_line">
          <div class="line_short"></div>
          <div>周工作设置</div>
          <div class="line_long"></div>
        </div>
        <div
          class="week_flex"
          v-for="(item, index) in weekDaysSettingList"
          :key="index"
        >
          <div class="week_flex_item">{{item.chineseName}}</div>
          <div class="week_flex_item">
            <el-radio-group v-model="item.work" @change="handleSetWorkDays">
              <el-radio :label="'y'">工作日</el-radio>
              <el-radio :label="'n'">非工作日</el-radio>
            </el-radio-group>
        <div v-if="form.type === 1">
          <div class="title_bar_line">
            <div class="line_short"></div>
            <div>周工作设置</div>
            <div class="line_long"></div>
          </div>
          <div
            class="week_flex"
            v-for="(item, index) in weekDaysSettingList"
            :key="index"
          >
            <div class="week_flex_item">{{ item.chineseName }}</div>
            <div class="week_flex_item">
              <el-radio-group v-model="item.work" @change="handleSetWorkDays">
                <el-radio :label="'y'">工作日</el-radio>
                <el-radio :label="'n'">非工作日</el-radio>
              </el-radio-group>
            </div>
          </div>
        </div>
        <!-- <div class="week_flex">
          <div class="week_flex_item">星期二</div>
          <div class="week_flex_item">
            <el-radio-group v-model="tueType">
              <el-radio :label="1">工作日</el-radio>
              <el-radio :label="2">非工作日</el-radio>
            </el-radio-group>
        <div v-if="form.type === 2">
          <div class="title_bar_line">
            <div class="line_short"></div>
            <div>节假日设置</div>
            <div class="line_long"></div>
          </div>
          <div class="week_flex mt20">
            <div class="week_flex_item">节日开始时间</div>
            <div class="week_flex_item">
              <el-date-picker
                clearable
                v-model="holidays.startdate"
                type="date"
                value-format="YYYY-MM-DD"
                placeholder="选择日期"
              >
              </el-date-picker>
            </div>
          </div>
          <div class="week_flex mt20">
            <div class="week_flex_item">节日结束时间</div>
            <div class="week_flex_item">
              <el-date-picker
                clearable
                v-model="holidays.enddate"
                type="date"
                value-format="YYYY-MM-DD"
                placeholder="选择日期"
              >
              </el-date-picker>
            </div>
          </div>
        </div>
        <div class="week_flex">
          <div class="week_flex_item">星期三</div>
          <div class="week_flex_item">
            <el-radio-group v-model="wedType">
              <el-radio :label="1">工作日</el-radio>
              <el-radio :label="2">非工作日</el-radio>
            </el-radio-group>
          </div>
        </div>
        <div class="week_flex">
          <div class="week_flex_item">星期四</div>
          <div class="week_flex_item">
            <el-radio-group v-model="thuType">
              <el-radio :label="1">工作日</el-radio>
              <el-radio :label="2">非工作日</el-radio>
            </el-radio-group>
          </div>
        </div>
        <div class="week_flex">
          <div class="week_flex_item">星期五</div>
          <div class="week_flex_item">
            <el-radio-group v-model="friType">
              <el-radio :label="1">工作日</el-radio>
              <el-radio :label="2">非工作日</el-radio>
            </el-radio-group>
          </div>
        </div>
        <div class="week_flex">
          <div class="week_flex_item">星期六</div>
          <div class="week_flex_item">
            <el-radio-group v-model="satType">
              <el-radio :label="1">工作日</el-radio>
              <el-radio :label="2">非工作日</el-radio>
            </el-radio-group>
          </div>
        </div>
        <div class="week_flex">
          <div class="week_flex_item">星期日</div>
          <div class="week_flex_item">
            <el-radio-group v-model="sunType">
              <el-radio :label="1">工作日</el-radio>
              <el-radio :label="2">非工作日</el-radio>
            </el-radio-group>
          </div>
        </div> -->
        <el-form-item
          label="适用工厂"
          prop="applicableFactory"
@@ -329,17 +237,18 @@
        >
          <el-select
            clearable
            v-model="dateType"
            v-model="form.applicableFactory"
            style="width: 160px"
            placeholder="请输入适用工厂"
            @change="changePlant($event)"
          >
            <el-option
              v-for="(item, index) of dateTypeList"
              :key="index"
              :label="item.name"
              :value="item.name"
              >{{ item.name }}</el-option
              v-for="plant in plantList"
              :key="plant.id"
              :label="plant.plantName"
              :value="plant.plantCode"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
@@ -349,17 +258,17 @@
        >
          <el-select
            clearable
            v-model="dateType"
            v-model="form.applicableWorkshop"
            style="width: 160px"
            placeholder="请输入适用车间"
          >
            <el-option
              v-for="(item, index) of dateTypeList"
              :key="index"
              :label="item.name"
              :value="item.name"
              >{{ item.name }}</el-option
              v-for="shop in shopList"
              :key="shop.id"
              :label="shop.shopName"
              :value="shop.id"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
@@ -369,52 +278,18 @@
        >
          <el-select
            clearable
            v-model="dateType"
            v-model="form.applicableProcess"
            style="width: 160px"
            placeholder="请输入适用工序"
          >
            <el-option
              v-for="(item, index) of dateTypeList"
              :key="index"
              :label="item.name"
              :value="item.name"
              >{{ item.name }}</el-option
              v-for="process in processList"
              :key="process.id"
              :label="process.processName"
              :value="process.processName"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="创建者" prop="createBy" class="factory_use_item">
          <el-input type="text" v-model="form.createBy" placeholder="创建者" />
        </el-form-item>
        <el-form-item
          label="创建时间"
          prop="createTime"
          class="factory_use_item"
        >
          <el-date-picker
            clearable
            v-model="form.createTime"
            type="date"
            value-format="YYYY-MM-DD"
            placeholder="选择日期"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="更新者" prop="updateBy" class="factory_use_item">
          <el-input type="text" v-model="form.updateBy" placeholder="创建者" />
        </el-form-item>
        <el-form-item
          label="更新时间"
          prop="updateTime"
          class="factory_use_item"
        >
          <el-date-picker
            clearable
            v-model="form.updateTime"
            type="date"
            value-format="YYYY-MM-DD"
            placeholder="选择日期"
          >
          </el-date-picker>
        </el-form-item>
      </el-form>
      <template #footer>
@@ -428,6 +303,7 @@
</template>
<script setup name="Calendar">
import HxlhTable from "@/components/HxlhTable";
import {
  listCalendar,
  getCalendar,
@@ -435,9 +311,10 @@
  addCalendar,
  updateCalendar,
} from "@/api/basicData/calendar";
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 calendarList = ref([]);
const open = ref(false);
const loading = ref(true);
@@ -447,7 +324,6 @@
const multiple = ref(true);
const total = ref(0);
const title = ref("");
const data = reactive({
  form: {},
  queryParams: {
@@ -515,47 +391,157 @@
  {
    day: "Monday",
    chineseName: "星期一",
    work:"y"
    work: "y",
  },
  {
    day: "TuesDay",
    chineseName: "星期二",
    work:"y"
    work: "y",
  },
  {
    day: "Wednesday",
    chineseName: "星期三",
    work:"y"
    work: "y",
  },
  {
    day: "Thursday",
    chineseName: "星期四",
    work:"y"
    work: "y",
  },
  {
    day:"Friday",
    chineseName:"星期五",
    work:"y"
    day: "Friday",
    chineseName: "星期五",
    work: "y",
  },
  {
    day:"Saturday",
    chineseName:"星期六",
    work:"y"
    day: "Saturday",
    chineseName: "星期六",
    work: "y",
  },
  {
    day:"Sunday",
    chineseName:"星期日",
    work:"y"
  }
    day: "Sunday",
    chineseName: "星期日",
    work: "y",
  },
]);
const holidays = ref({
  startdate: "",
  enddate: "",
});
const plantList = ref([]);
const shopList = ref([]);
const allShopList = ref([]);
const processList = ref([]);
const height = ref(document.documentElement.clientHeight - 260 + "px;");
// 表格配置-列表
const columns = ref([
  { type: "checkbox", width: 60, align: "center" },
  {
    title: "日历描述",
    field: "description",
    width: 150,
    align: "center",
  },
  {
    title: "日历类型",
    field: "type",
    width: 150,
    align: "center",
    slots: { default: "status" },
  },
  {
    title: "日历生效时间",
    field: "effectiveDate",
    width: 100,
    align: "center",
  },
  {
    title: "日历失效时间",
    field: "expiringDate",
    width: 150,
    align: "center",
  },
  {
    title: "日历内容",
    field: "content",
    width: 200,
    align: "center",
    slots: { default: "content" },
  },
  {
    title: "适用工厂",
    field: "applicableFactory",
    width: 200,
    align: "center",
    formatter: ({ cellValue, row, column }) => {
      console.log(cellValue, "000hsudhwhuwhuhwu");
      for (let i = 0; i < plantList.value.length; i++) {
        console.log(
          cellValue,
          plantList.value[i].plantCode,
          plantList.value[i].plantName,
          "111hsudhwhuwhuhwu"
        );
        if (cellValue === plantList.value[i].plantCode) {
          return plantList.value[i].plantName;
        }
      }
    },
  },
  {
    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: "applicableProcess",
    width: 90,
    align: "center",
  },
  {
    title: "创建者",
    field: "createBy",
    width: 90,
    align: "center",
  },
  {
    title: "创建时间",
    field: "createTime",
    width: 90,
    align: "center",
  },
]);
// 分页属性
const page = ref({
  total: 0,
  current: 1,
  size: 10,
});
/** 查询日历管理列表 */
function getList() {
async function getList() {
  loading.value = true;
  listCalendar(queryParams.value).then((response) => {
    calendarList.value = response.rows;
    total.value = response.total;
    loading.value = false;
  });
  const res = await listAll_plant({});
  plantList.value = res.data;
}
// 取消按钮
@@ -604,12 +590,25 @@
}
/** 新增按钮操作 */
function handleAdd() {
async function handleAdd() {
  reset();
  open.value = true;
  title.value = "添加日历管理";
}
  const res = await listAll_plant({});
  plantList.value = res.data;
  console.log(res, "sjchhscwhciwhcwi");
}
/** 选择工厂后事件 加载车间 和 工序 **/
function changePlant(plant) {
  listAps_shop({ plantCode: plant }).then((response) => {
    console.log(response, "sbcsuhcuhscschsc");
    shopList.value = response.rows;
  });
  selectProcessNameList({ orgCode: plant }).then((response) => {
    processList.value = response.rows;
  });
}
/** 修改按钮操作 */
function handleUpdate(row) {
  reset();
@@ -632,11 +631,29 @@
          getList();
        });
      } else {
        addCalendar(form.value).then((response) => {
          proxy.$modal.msgSuccess("新增成功");
          open.value = false;
          getList();
        });
        if (typeRadioNumber.value === 1) {
          addCalendar({
            ...form.value,
            content: {
              weekdays: weekDaysSettingList.value,
            },
          }).then((response) => {
            proxy.$modal.msgSuccess("新增成功");
            open.value = false;
            getList();
          });
        }else if(typeRadioNumber.value === 2){
          addCalendar({
            ...form.value,
            content: {
              holidays: holidays.value,
            },
          }).then((response) => {
            proxy.$modal.msgSuccess("新增成功");
            open.value = false;
            getList();
          });
        }
      }
    }
  });
@@ -679,9 +696,29 @@
}
// 设置周工作日
function handleSetWorkDays(e) {
  console.log(weekDaysSettingList.value,"设置周工作日")
  console.log(weekDaysSettingList.value, "设置周工作日");
}
getList();
function changePageNo(currentPage) {
  queryParams.value.pageNum = currentPage;
  page.value.current = currentPage;
  getList();
}
function changePageSize(pageSize) {
  page.value.current = 1;
  queryParams.value.pageNum = 1;
  queryParams.value.pageSize = pageSize;
  getList();
}
// function formatType(type) {
//   if(type===1){
//     return "周工作"
//   }else{
//     return "节假日"
//   }
// }
onMounted(() => {
  getList();
});
</script>
<style lang="scss" scoped>
.column-with-margin {
@@ -710,8 +747,13 @@
  display: flex;
  justify-content: flex-start;
  align-content: center;
  color: #333;
  color: #606266;
  font-weight: 700;
  margin-left: 20px;
  &.mt20 {
    margin-top: 20px;
    margin-left: 0 !important;
  }
  .week_flex_item {
    &:nth-child(1) {
      margin-top: 5px;
src/views/basicData/processRoute/index.vue
@@ -262,6 +262,7 @@
    align:"center",
  }
]);
// 表格配置-弹窗
const exampleColumns = ref([
  { type: 'seq', title: '序号', width: 60 },