commit
a1c43ed427
|
|
@ -111,14 +111,14 @@ const hasFestivalDay = computed(() => {
|
|||
<style scoped>
|
||||
/* 紧凑的班次标签:替代 el-button,减少纵向占用 */
|
||||
.shift-tag {
|
||||
width: 100%;
|
||||
padding: 1px 4px;
|
||||
overflow: hidden;
|
||||
font-size: 11px;
|
||||
line-height: 1.5;
|
||||
border-radius: 3px;
|
||||
color: #fff;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
border-radius: 3px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
</span>
|
||||
<span class="flex items-center gap-4px">
|
||||
<el-tag size="small" effect="dark" type="success" class="!text-11px !h-18px !px-4px"
|
||||
>休</el-tag
|
||||
>休</el-tag
|
||||
>
|
||||
= 节假日(不显示排班)
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -203,9 +203,9 @@ watch(
|
|||
|
||||
.member-card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.member-empty-tip {
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@
|
|||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
>
|
||||
<el-button @click="resetQuery"
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@
|
|||
</el-tabs>
|
||||
<template #footer>
|
||||
<el-button v-if="!isDetail" @click="submitForm" type="primary" :disabled="formLoading"
|
||||
>确 定</el-button
|
||||
>确 定</el-button
|
||||
>
|
||||
<el-button @click="dialogVisible = false">{{ isDetail ? '关 闭' : '取 消' }}</el-button>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -69,10 +69,10 @@
|
|||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
>
|
||||
<el-button @click="resetQuery"
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@
|
|||
class="text-28px font-700 leading-[1.2] color-[#7c3aed]"
|
||||
/>
|
||||
<span class="text-13px color-[var(--el-text-color-secondary)]"
|
||||
>/ {{ summary.machineryTotal }} 运行中</span
|
||||
>/ {{ summary.machineryTotal }} 运行中</span
|
||||
>
|
||||
</div>
|
||||
<div class="text-12px color-[var(--el-text-color-placeholder)] mt-4px">
|
||||
|
|
@ -177,12 +177,12 @@ const handleNavigate = (name: string) => {
|
|||
<style lang="scss" scoped>
|
||||
.kpi-card {
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
border: 1px solid var(--el-border-color);
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
|
||||
box-shadow: 0 8px 24px rgb(0 0 0 / 12%);
|
||||
}
|
||||
|
||||
:deep(.el-card__body) {
|
||||
|
|
|
|||
|
|
@ -54,10 +54,10 @@
|
|||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
>
|
||||
<el-button @click="resetQuery"
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
|
|
|
|||
|
|
@ -241,8 +241,8 @@
|
|||
<el-tabs
|
||||
v-if="
|
||||
formData.id &&
|
||||
formData.status !== MesProFeedbackStatusEnum.PREPARE &&
|
||||
formData.status !== MesProFeedbackStatusEnum.APPROVING
|
||||
formData.status !== MesProFeedbackStatusEnum.PREPARE &&
|
||||
formData.status !== MesProFeedbackStatusEnum.APPROVING
|
||||
"
|
||||
type="border-card"
|
||||
class="mt-10px"
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@
|
|||
v-hasPermi="['mes:pro-feedback:approve']"
|
||||
v-if="
|
||||
scope.row.status === MesProFeedbackStatusEnum.APPROVING &&
|
||||
scope.row.approveUserId === currentUserId
|
||||
scope.row.approveUserId === currentUserId
|
||||
"
|
||||
>
|
||||
审批
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@
|
|||
:span="8"
|
||||
v-if="
|
||||
formData.type === MesProWorkOrderTypeEnum.OUTSOURCE ||
|
||||
formData.type === MesProWorkOrderTypeEnum.PURCHASE
|
||||
formData.type === MesProWorkOrderTypeEnum.PURCHASE
|
||||
"
|
||||
>
|
||||
<el-form-item label="供应商" prop="vendorId">
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ defineOptions({ name: 'GanttChart' })
|
|||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
tasks: any[] // 甘特图任务数据
|
||||
tasks?: any[] // 甘特图任务数据
|
||||
readonly?: boolean // 是否只读
|
||||
height?: number // 甘特图高度
|
||||
}>(),
|
||||
|
|
@ -223,30 +223,36 @@ defineExpose({ loadData })
|
|||
<style>
|
||||
/* 今天标记线 */
|
||||
.gantt_marker.today {
|
||||
background-color: #ff4444;
|
||||
background-color: #f44;
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
.gantt_marker.today .gantt_marker_content {
|
||||
color: #ff4444;
|
||||
font-size: 12px;
|
||||
color: #f44;
|
||||
}
|
||||
|
||||
/* 工单(project)行样式 */
|
||||
.gantt-project-bar .gantt_task_progress {
|
||||
background: #7b68ee;
|
||||
}
|
||||
|
||||
/* 甘特条圆角 */
|
||||
.gantt_task_line {
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
/* 周末背景色 */
|
||||
.weekend {
|
||||
background: #f0f0f0 !important;
|
||||
}
|
||||
|
||||
/* 行悬浮高亮 */
|
||||
.gantt_grid_data .gantt_row:hover,
|
||||
.gantt_grid_data .gantt_row.odd:hover {
|
||||
background-color: #f3f1fe !important;
|
||||
}
|
||||
|
||||
/* 选中行高亮 */
|
||||
.gantt_grid_data .gantt_row.gantt_selected,
|
||||
.gantt_grid_data .gantt_row.odd.gantt_selected,
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@
|
|||
<el-button
|
||||
v-if="
|
||||
isConfirmed &&
|
||||
workOrder.type === MesProWorkOrderTypeEnum.SELF &&
|
||||
scope.row.itemOrProduct === 'PRODUCT'
|
||||
workOrder.type === MesProWorkOrderTypeEnum.SELF &&
|
||||
scope.row.itemOrProduct === 'PRODUCT'
|
||||
"
|
||||
link
|
||||
type="success"
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@
|
|||
:span="8"
|
||||
v-if="
|
||||
formData.type === MesProWorkOrderTypeEnum.OUTSOURCE ||
|
||||
formData.type === MesProWorkOrderTypeEnum.PURCHASE
|
||||
formData.type === MesProWorkOrderTypeEnum.PURCHASE
|
||||
"
|
||||
>
|
||||
<el-form-item label="供应商" prop="vendorId">
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@
|
|||
v-hasPermi="['mes:pro-work-order:create']"
|
||||
v-if="
|
||||
scope.row.status === MesProWorkOrderStatusEnum.CONFIRMED &&
|
||||
scope.row.type === MesProWorkOrderTypeEnum.SELF
|
||||
scope.row.type === MesProWorkOrderTypeEnum.SELF
|
||||
"
|
||||
>
|
||||
新增
|
||||
|
|
|
|||
|
|
@ -72,10 +72,10 @@
|
|||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
>
|
||||
<el-button @click="resetQuery"
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@
|
|||
<span
|
||||
v-if="
|
||||
scope.row.maintenPeriod != null &&
|
||||
scope.row.maintenType === MesMaintenTypeEnum.REGULAR
|
||||
scope.row.maintenType === MesMaintenTypeEnum.REGULAR
|
||||
"
|
||||
>
|
||||
{{ scope.row.maintenPeriod }} 天
|
||||
|
|
|
|||
|
|
@ -74,10 +74,10 @@
|
|||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
|
||||
>
|
||||
<el-button @click="resetQuery"
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
<div
|
||||
v-else-if="
|
||||
scope.row.responseMessageType === 'video' ||
|
||||
scope.row.responseMessageType === 'shortvideo'
|
||||
scope.row.responseMessageType === 'shortvideo'
|
||||
"
|
||||
>
|
||||
<WxVideoPlayer
|
||||
|
|
|
|||
|
|
@ -8,12 +8,12 @@
|
|||
target="_blank"
|
||||
:href="
|
||||
'https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&pointx=' +
|
||||
locationY +
|
||||
'&pointy=' +
|
||||
locationX +
|
||||
'&name=' +
|
||||
label +
|
||||
'&ref=yudao'
|
||||
locationY +
|
||||
'&pointy=' +
|
||||
locationX +
|
||||
'&name=' +
|
||||
label +
|
||||
'&ref=yudao'
|
||||
"
|
||||
>
|
||||
<el-col>
|
||||
|
|
@ -21,12 +21,12 @@
|
|||
<img
|
||||
:src="
|
||||
'https://apis.map.qq.com/ws/staticmap/v2/?zoom=10&markers=color:blue|label:A|' +
|
||||
locationX +
|
||||
',' +
|
||||
locationY +
|
||||
'&key=' +
|
||||
qqMapKey +
|
||||
'&size=250*180'
|
||||
locationX +
|
||||
',' +
|
||||
locationY +
|
||||
'&key=' +
|
||||
qqMapKey +
|
||||
'&size=250*180'
|
||||
"
|
||||
/>
|
||||
</el-row>
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@
|
|||
<el-table-column label="操作" align="center" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link @click="selectMaterialFun(scope.row)"
|
||||
>选择
|
||||
>选择
|
||||
<Icon icon="ep:plus" />
|
||||
</el-button>
|
||||
</template>
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
>
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link @click="selectMaterialFun(scope.row)"
|
||||
>选择
|
||||
>选择
|
||||
<Icon icon="akar-icons:circle-plus" />
|
||||
</el-button>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -12,10 +12,10 @@
|
|||
<div v-loading="loading"></div>
|
||||
<div v-if="!loading">
|
||||
<div class="el-table__empty-block" v-if="hasMore" @click="loadMore"
|
||||
><span class="el-table__empty-text">点击加载更多</span></div
|
||||
><span class="el-table__empty-text">点击加载更多</span></div
|
||||
>
|
||||
<div class="el-table__empty-block" v-if="!hasMore"
|
||||
><span class="el-table__empty-text">没有更多了</span></div
|
||||
><span class="el-table__empty-text">没有更多了</span></div
|
||||
>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ defineOptions({ name: 'WxNews' })
|
|||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
articles: any[] | null
|
||||
articles?: any[] | null
|
||||
}>(),
|
||||
{
|
||||
articles: null
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<el-button type="primary" link>本地上传</el-button>
|
||||
</template>
|
||||
<el-button type="primary" link @click="showDialog = true" style="margin-left: 5px"
|
||||
>素材库选择
|
||||
>素材库选择
|
||||
</el-button>
|
||||
</el-upload>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
</template>
|
||||
<template #tip>
|
||||
<span class="el-upload__tip" style="margin-left: 10px"
|
||||
>格式支持 MP4,文件大小不超过 10MB</span
|
||||
>格式支持 MP4,文件大小不超过 10MB</span
|
||||
>
|
||||
</template>
|
||||
</el-upload>
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@
|
|||
type="primary"
|
||||
plain
|
||||
@click="showCreateVideo = true"
|
||||
>新建视频</el-button
|
||||
>新建视频</el-button
|
||||
>
|
||||
<!-- 新建视频的弹窗 -->
|
||||
<UploadVideo v-model="showCreateVideo" />
|
||||
|
|
|
|||
|
|
@ -28,10 +28,10 @@
|
|||
</div>
|
||||
<div class="save_div">
|
||||
<el-button class="save_btn" type="success" @click="onSave" v-hasPermi="['mp:menu:save']"
|
||||
>保存并发布菜单</el-button
|
||||
>保存并发布菜单</el-button
|
||||
>
|
||||
<el-button class="save_btn" type="danger" @click="onClear" v-hasPermi="['mp:menu:delete']"
|
||||
>清空菜单</el-button
|
||||
>清空菜单</el-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
v-model="formData.data"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
placeholder='请输入模板数据(JSON 格式),例如:{"keyword1": {"value": "测试内容"}}'
|
||||
placeholder="请输入模板数据(JSON 格式),例如:{"keyword1": {"value": "测试内容"}}"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="跳转链接" prop="url">
|
||||
|
|
|
|||
|
|
@ -50,12 +50,12 @@
|
|||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" v-if="isDialog"/>
|
||||
<el-table-column type="selection" width="55" v-if="isDialog" />
|
||||
<el-table-column label="编号" align="center" prop="id" />
|
||||
<el-table-column label="用户标识" align="center" prop="openid" width="260" />
|
||||
<el-table-column label="用户头像" min-width="80px" prop="headImageUrl">
|
||||
<template #default="scope">
|
||||
<el-avatar :src="scope.row.headImageUrl"/>
|
||||
<el-avatar :src="scope.row.headImageUrl" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="昵称" align="center" prop="nickname" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue