| | |
| | | </el-select> |
| | | </div> |
| | | |
| | | <div class="search-bar-box-item"> |
| | | <!-- <div class="search-bar-box-item"> |
| | | <el-select v-model="filters.type" placeholder="请选择工单类型" clearable> |
| | | <el-option v-for="item in types" :key="item.dictValue" :label="item.dictValue" |
| | | :value="item.dictKey" /> |
| | | </el-select> |
| | | </div> |
| | | </div> --> |
| | | |
| | | <div class="search-bar-box-item"> |
| | | <el-select v-model="filters.status" placeholder="请选择工单状态" clearable> |
| | |
| | | </div> |
| | | |
| | | <div class="search-bar-box-item"> |
| | | <el-select v-model="filters.rep_fre_type" placeholder="请选择频次"> |
| | | <el-select v-model="filters.rep_fre_type" placeholder="请选择频次" clearable> |
| | | <el-option v-for="item in cycles" :key="item" :label="item" :value="item" /> |
| | | </el-select> |
| | | </div> |
| | |
| | | <template #menu="{ row }"> |
| | | <div class="menu-custom-box"> |
| | | <template v-if="row.status == 1"> |
| | | <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" |
| | | @click="handleCheckDetail(row)">审核</el-button> |
| | | <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleCheckDetail(row)">审核</el-button> |
| | | </template> |
| | | <!-- v-if=" |
| | | (userInfo.user_id == row.create_user || hasRecallPaddingBtnPermission()) && |
| | |
| | | <!--待审核状态--> |
| | | <el-button type="text" icon="el-icon-warning" v-if="hasRecallPaddingBtnPermission()" |
| | | @click="orderLogRecall(row.id)">撤回</el-button> |
| | | <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button> |
| | | <!-- <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button> --> |
| | | </template> |
| | | <!--已驳回--> |
| | | <template v-if="row.status == 2"> |
| | | <el-button type="text" icon="el-icon-warning" @click="rejectDetail(row.id)">驳回原因</el-button> |
| | | <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button> |
| | | <el-button v-if="userInfo.user_id == row.create_user" type="text" icon="el-icon-view" @click="handleViewDetail(row)">编辑</el-button> |
| | | <el-button v-else type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button> |
| | | </template> |
| | | <!-- 已通过 --> |
| | | <template v-if="row.status == 3"> |
| | |
| | | <el-col :span="8"> |
| | | <el-form-item label="周期频次" prop="date_range"> |
| | | <el-date-picker v-model="form.date_range" type="daterange" range-separator="至" start-placeholder="开始日期" |
| | | end-placeholder="结束日期" /> |
| | | end-placeholder="结束日期" :disabled-date="disabledDate" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | |
| | | <div class="add-box-btns"> |
| | | <el-button type="danger" @click="submitForm(1)">发起</el-button> |
| | | <el-button type="primary" @click="submitForm(0)">存草稿</el-button> |
| | | <el-button @click="dialogVisible = false">取消</el-button> |
| | | </div> |
| | | </el-row> |
| | | </el-form> |
| | |
| | | <el-dialog v-model="detailVisible" :title="detailTitle" width="70%" :close-on-click-modal="false" |
| | | @close="resetForm"> |
| | | <div class="event-title-center">{{ form.name }}</div> |
| | | <el-form :model="form" ref="testform" label-width="100px"> |
| | | <el-form :model="form" :rules="rules" ref="testform" label-width="100px"> |
| | | <div class="custom-steps-container"> |
| | | <!-- 标题行 --> |
| | | <div class="steps-titles"> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工单名称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入工单名称"></el-input> |
| | | <el-input v-model="form.name" placeholder="请输入工单名称" :disabled="detailTitle === '工单详情'"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="关联航线" prop="file_id"> |
| | | <el-select v-model="form.file_id" placeholder="请选择航线" @change="getFlyingNestBy"> |
| | | <el-select v-model="form.file_id" placeholder="请选择航线" @change="getFlyingNestBy" :disabled="detailTitle === '工单详情'"> |
| | | <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name" |
| | | :value="item.wayline_id" /> |
| | | </el-select> |
| | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="关联机巢" prop="device_sns"> |
| | | <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple> |
| | | <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple :disabled="detailTitle === '工单详情'"> |
| | | <el-option v-for="item in device_sns" :key="item.device_sn" :label="item.nickname" |
| | | :value="item.device_sn" /> |
| | | </el-select> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="关联算法" prop="ai_types"> |
| | | <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple> |
| | | <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple :disabled="detailTitle === '工单详情'"> |
| | | <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey" /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | <el-col :span="6"> |
| | | <el-form-item label="周期频次" prop="date_range"> |
| | | <el-date-picker v-model="form.date_range" type="daterange" range-separator="至" start-placeholder="开始日期" |
| | | end-placeholder="结束日期" /> |
| | | end-placeholder="结束日期" :disabled-date="disabledDate" :disabled="detailTitle === '工单详情'" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | <el-col :span="3"> |
| | | <el-select v-model="form.rep_fre_type" placeholder="请选择频次"> |
| | | <el-select v-model="form.rep_fre_type" placeholder="请选择频次" :disabled="detailTitle === '工单详情'"> |
| | | <el-option v-for="item in cycles" :key="item" :label="item" :value="item" /> |
| | | </el-select> |
| | | </el-col> |
| | |
| | | <el-time-picker style="width: 100px" v-model="form.deal_time" prop="deal_time" value-format="HH:mm" |
| | | :picker-options="{ |
| | | selectableRange: '00:00 - 23:59', |
| | | }" /> |
| | | }" :disabled="detailTitle === '工单详情'"/> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="工单内容" prop="content"> |
| | | <el-input type="textarea" v-model="form.content" rows="4" placeholder="请输入工单内容" maxlength="255" |
| | | show-word-limit></el-input> |
| | | show-word-limit :disabled="detailTitle === '工单详情'"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | import { downloadXls } from '@/utils/util' |
| | | import 'nprogress/nprogress.css' |
| | | import { analyzeKmzFile, removeTextKey, XMLToJSON } from '@/utils/cesium/kmz' |
| | | import dayjs from 'dayjs'; |
| | | import 'dayjs/locale/zh-cn'; // 导入中文语言包 |
| | | import weekday from 'dayjs/plugin/weekday'; |
| | | |
| | | dayjs.extend(weekday); |
| | | dayjs.locale('zh-cn'); |
| | | |
| | | export default { |
| | | name: 'TicketPage', |
| | |
| | | { label: '已通过', value: '3' }, |
| | | ], |
| | | //周期 |
| | | cycles: ['周一', '周二', '周三', '周四', '周五', '周六', '周末', '周天', '工作日', '每天'], |
| | | cycles: ['每天', '周一', '周二', '周三', '周四', '周五', '周六', '周末', '周天', '工作日'], |
| | | |
| | | tableData: [], |
| | | option: { |
| | |
| | | showOverflowTooltip: true, |
| | | }, |
| | | { |
| | | label: '发起时间', prop: 'create_time', width: 144, ellipsis: true, |
| | | label: '创建时间', prop: 'create_time', width: 144, ellipsis: true, |
| | | showOverflowTooltip: true, |
| | | }, |
| | | { |
| | |
| | | ...mapGetters(['userInfo', 'permission']), |
| | | filteredTabs () { |
| | | // rejection_and_draft 权限控制“已驳回”和“草稿”tab |
| | | console.log(this.permission, '权限信息') |
| | | console.log(this.userInfo, '权限信息22') |
| | | const canShowRejectAndDraft = this.permission?.rejection_and_draft === true |
| | | return this.tabs |
| | | .map(tab => { |
| | |
| | | }, |
| | | |
| | | methods: { |
| | | disabledDate (time) { |
| | | return time.getTime() < Date.now() - 8.64e7 // 86400000 = 24 * 60 * 60 * 1000 |
| | | }, |
| | | searchChange (params, done) { |
| | | // console.log('searchChange') |
| | | this.query = params |
| | |
| | | |
| | | status: status, |
| | | } |
| | | // 判断该值this.form.date_range[0] 周几 和rep_fre_type 是不是相等 |
| | | // if (this.form.deal_time) { |
| | | // const weekday = dayjs(this.form.date_range[0]).format('dddd'); |
| | | // console.log('444', weekday) |
| | | // // form.rep_fre_type |
| | | // const now = new Date() |
| | | // const today = now.toDateString() |
| | | // const selectedDate = new Date(this.form.date_range[0]).toDateString() |
| | | |
| | | // if (today === selectedDate) { |
| | | // const [hours, minutes] = this.form.deal_time.split(':') |
| | | // const selectedTime = new Date() |
| | | // selectedTime.setHours(parseInt(hours), parseInt(minutes)) |
| | | |
| | | // if (selectedTime < now) { |
| | | // return this.$message.warning('任务时间不能小于当前时间') |
| | | |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | await saveUpdateOrderLog(submitData) |
| | | let id = this.form.id |
| | | if (id) { |
| | |
| | | this.form = { |
| | | ...response.data.data, |
| | | } |
| | | this.detailVisible = true |
| | | // this.detailVisible = true |
| | | this.handleViewDetail(data) |
| | | }) |
| | | }, |
| | | formatDate (date) { |
| | |
| | | this.device_sns = data.device_list |
| | | this.permission && |
| | | (this.permission.order_log_review || this.permission.order_log_recall) && |
| | | (data.status == 1 || data.status == 3 || data.status == 2) |
| | | (data.status == 1 || data.status == 3 || (data.status == 2 && this.userInfo.user_id !== this.form.create_user)) |
| | | ? (this.detailTitle = '工单详情') |
| | | : (this.detailTitle = '编辑工单') |
| | | |
| | |
| | | async getFlyingNestBy (waylineId) { |
| | | const that = this |
| | | |
| | | // 先清空 |
| | | that.form.device_sns = [] |
| | | that.device_sns = [] |
| | | |
| | | this.initMapLine({}, async (polygon) => { |
| | |
| | | polygon |
| | | } |
| | | var wayLineListResponse = await getFlyingNestBy(params) |
| | | // 再赋值 |
| | | that.device_sns = wayLineListResponse.data.data |
| | | }) |
| | | }, |
| | |
| | | width: 100%; // 确保所有输入框和选择框宽度一致 |
| | | } |
| | | |
| | | :deep(.el-textarea__inner) { |
| | | resize: none; |
| | | } |
| | | |
| | | .action-bar { |
| | | margin-bottom: 16px; |
| | | } |