| | |
| | | v-model="searchForm.device_sn" |
| | | placeholder="请选择" |
| | | clearable |
| | | @change="handleSearch" |
| | | > |
| | | <el-option |
| | | v-for="item in machineData" |
| | |
| | | <div class="more" v-if="isExpand" @click="toggleExpand">收起</div> |
| | | <div class="more" v-else @click="toggleExpand">更多</div> |
| | | <div class="search-btn" :style="{ bottom: isExpand ? '5px' : '-3px' }"> |
| | | <div class="btn clear" @click="handleReset"> |
| | | <img src="@/assets/images/task/clear.png" />重置 |
| | | </div> |
| | | <div class="btn search" @click="handleSearch"> |
| | | <img src="@/assets/images/task/search.png" />搜索 |
| | | </div> |
| | | <!-- <div class="btn add" @click="addTask"><img src="@/assets/images/task/add.png"/>新增</div> --> |
| | | |
| | | <el-button type="primary" icon="el-icon-search" @click="handleSearch">搜索</el-button> |
| | | <el-button icon="el-icon-refresh" @click="handleReset">清空</el-button> |
| | | </div> |
| | | <el-form-item label="任务算法:" v-if="isExpand" class="taskAlgorithm"> |
| | | <TaskAlgorithmBusiness |
| | | <!-- <TaskAlgorithmBusiness |
| | | ref="algorithmRef" |
| | | :setWidth="160" |
| | | :showAlgorithm="true" |
| | | @algorithmChange="algorithmChange" |
| | | /> --> |
| | | <el-tree-select |
| | | style="z-index: 1000" |
| | | :teleported="false" |
| | | class="custom-tree-select" |
| | | :style="{ width: pxToRem(186) }" |
| | | v-model="dictKey" |
| | | :data="dataList" |
| | | :default-expanded-keys="[dictKey]" |
| | | :props="treePropsSF" |
| | | :render-after-expand="false" |
| | | :default-checked-keys="checkedKeys" |
| | | node-key="id" |
| | | multiple |
| | | show-checkbox |
| | | collapse-tags |
| | | collapse-tags-tooltip |
| | | clearable |
| | | @node-click="handleNodeClick" |
| | | @check="handleCheck" |
| | | @clear="handleClear" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="所属部门:" v-if="isExpand"> |
| | | <!-- <el-form-item label="所属部门:" v-if="isExpand"> |
| | | <el-select |
| | | :teleported="false" |
| | | v-model="searchForm.create_dept" |
| | |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | <el-form-item label="任务状态:" v-if="isExpand"> |
| | | <el-select |
| | | style="z-index: 1000" |
| | | :teleported="false" |
| | | v-model="searchForm.status" |
| | | placeholder="请选择" |
| | |
| | | multiple |
| | | collapse-tags |
| | | collapse-tags-tooltip |
| | | @change="handleSearch" |
| | | > |
| | | <el-option |
| | | v-for="item in statusOptions" |
| | |
| | | v-model="searchForm.is_circle_job" |
| | | placeholder="请选择" |
| | | clearable |
| | | @change="handleSearch" |
| | | > |
| | | <el-option label="周期任务" :value="1" /> |
| | | <el-option label="临时任务" :value="0" /> |
| | |
| | | <script setup> |
| | | import { pxToRem } from '@/utils/rem'; |
| | | import { ElMessage } from 'element-plus'; |
| | | import { deptsByAreaCode } from '@/api/job/task'; |
| | | import TaskAlgorithmBusiness from './TaskAlgorithmBusiness.vue'; |
| | | import { deptsByAreaCode, getSFDictionaryTree } from '@/api/job/task'; |
| | | // import TaskAlgorithmBusiness from './TaskAlgorithmBusiness.vue'; |
| | | import dayjs from 'dayjs'; |
| | | import { useStore } from 'vuex'; |
| | | import { getRegionTreeAll } from '@/api/job/task'; |
| | |
| | | ai_types: [], // 算法类型 |
| | | area_code: userAreaCode.value, // 区域code |
| | | create_dept: '', // 创建部门 |
| | | date_enum: 'TODAY', // 日期枚举,可用值:TODAY,CURRENT_WEEK,CURRENT_MONTH,CURRENT_YEAR |
| | | date_enum: 'CURRENT_MONTH', // 日期枚举,可用值:TODAY,CURRENT_WEEK,CURRENT_MONTH,CURRENT_YEAR |
| | | device_sn: '', // 设备编号 |
| | | end_date: null, // 结束时间 |
| | | industry_type: '', // 行业key |
| | |
| | | |
| | | const algorithmChange = val => { |
| | | searchForm.ai_types = val; |
| | | handleSearch() |
| | | }; |
| | | |
| | | const businessChange = val => { |
| | |
| | | }); |
| | | }; |
| | | |
| | | // 算法 |
| | | const treePropsSF = { |
| | | label: 'dictValue', |
| | | value: 'id', |
| | | children: 'children', |
| | | } |
| | | const dictKey = ref('') |
| | | const dataList = ref([]) |
| | | function getAlgorithmList() { |
| | | getSFDictionaryTree({code:'SF'}).then((res) => { |
| | | if (res.data.code === 200) { |
| | | const result = res.data.data[0].children |
| | | // 过滤第一层数据 |
| | | const filteredData = result.map(item => { |
| | | // 过滤第二层数据 |
| | | const children = item.children?.map(child => ({ |
| | | ...child, |
| | | children: [] // 清空第三层数据 |
| | | })) |
| | | return { |
| | | ...item, |
| | | children: children || [] |
| | | } |
| | | }) |
| | | dataList.value = filteredData |
| | | } |
| | | }) |
| | | } |
| | | |
| | | function handleSFNodeClick(data) { |
| | | if (data.children && data.children.length) { |
| | | // 获取子节点dictKey |
| | | const childDictKeys = data.children.map(child => child.dictKey) |
| | | searchForm.ai_types = childDictKeys |
| | | } else { |
| | | searchForm.ai_types = [data.dictKey] |
| | | } |
| | | // 更新列表 |
| | | handleSearch() |
| | | } |
| | | function handleClear() { |
| | | dictKey.value = '' |
| | | searchForm.ai_types = [] |
| | | handleSearch() |
| | | } |
| | | |
| | | const handleNodeClick = async data => { |
| | | // 处理机巢数据 |
| | | searchForm.device_sn = ''; |
| | |
| | | searchForm.create_dept = ''; |
| | | deptData.value = []; |
| | | getDeptsByAreaCode(); |
| | | handleSearch(); |
| | | }; |
| | | |
| | | // 日期 和周期 |
| | | let timeList = ['today', 'week', 'month', 'year']; |
| | | let timeListStr = ['今日', '本周', '本月', '本年']; |
| | | let timeListEnum = ['TODAY', 'CURRENT_WEEK', 'CURRENT_MONTH', 'CURRENT_YEAR']; |
| | | let checked = ref('today'); |
| | | let checked = ref('month'); |
| | | |
| | | let timeClick = (item, index) => { |
| | | if (checked.value === item){ |
| | |
| | | const handleDateChange = val => { |
| | | checked.value = null |
| | | searchForm.date_enum = undefined |
| | | handleSearch() |
| | | }; |
| | | |
| | | // 重置 |
| | |
| | | searchForm[key] = ''; |
| | | }); |
| | | searchForm.ai_types = []; |
| | | searchForm.date_enum = 'TODAY'; |
| | | searchForm.date_enum = 'CURRENT_MONTH'; |
| | | searchForm.area_code = userAreaCode.value; |
| | | checked.value = 'today'; |
| | | checked.value = 'month'; |
| | | signDevice_sn.value = '' |
| | | algorithmRef.value?.clear() |
| | | // 清除算法 |
| | | dictKey.value = ''; |
| | | // algorithmRef.value?.clear() |
| | | handleNodeClick({ id: userAreaCode.value }); |
| | | handleSearch(); |
| | | }; |
| | |
| | | // { immediate: true, deep: true } |
| | | // ); |
| | | |
| | | const checkedKeys = ref([]) |
| | | |
| | | const handleCheck = (data, { checkedKeys, checkedNodes }) => { |
| | | dictKey.value = checkedKeys |
| | | // 获取所有选中节点的 dictKey |
| | | const selectedDictKeys = checkedNodes.map(node => node.dictKey).filter(Boolean) |
| | | searchForm.ai_types = selectedDictKeys |
| | | handleSearch() |
| | | } |
| | | |
| | | onBeforeUnmount(() => { |
| | | checked.value = 'today'; |
| | | searchForm.date_enum = 'TODAY'; |
| | |
| | | |
| | | onMounted(() => { |
| | | requestDockInfo(); |
| | | getAlgorithmList(); |
| | | // 日历传值 |
| | | const calendarday = ref(route.query.day); |
| | | |
| | |
| | | const dateArray = [date, date]; |
| | | |
| | | dateRange.value = dateArray; |
| | | const find = store.state.tags.bsTagList.find(i => i.path === '/job/jobstatistics') |
| | | find && (find.query = {}) |
| | | } |
| | | // 查询一次 |
| | | // 查询一次 |
| | | handleSearch() |
| | | }); |
| | | </script> |
| | |
| | | display: flex; |
| | | justify-content: space-between; |
| | | cursor: pointer; |
| | | font-size: 14px; |
| | | |
| | | font-size: 14px; |
| | | |
| | | .btn { |
| | | width: 80px; |
| | | height: 32px; |