| | |
| | | |
| | | <template #menu="{ row }"> |
| | | <div v-if="row.status == 1"> |
| | | <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleViewDetail(row)">审核</el-button> |
| | | <el-button v-if="hasPaddingBtnPermission()" type="text" icon="el-icon-view" @click="handleCheckDetail(row)">审核</el-button> |
| | | |
| | | </div> |
| | | |
| | |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | |
| | | <!-- 新建工单对话框 --> |
| | | <!-- 新建工单 --> |
| | | <el-dialog v-model="dialogVisible" title="新建工单" width="70%" :close-on-click-modal="false" @close="resetForm"> |
| | | |
| | | |
| | |
| | | </el-row> |
| | | </el-form> |
| | | </el-dialog> |
| | | |
| | | |
| | | |
| | | <!-- 工单详情 --> |
| | | <el-dialog v-model="detailVisibleCopy" title="工单详情" 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"> |
| | | <div class="custom-steps-container"> |
| | | <!-- 标题行 --> |
| | | <div class="steps-titles"> |
| | | <div v-for="(record, index) in form.record_list" :class="{ active: record.user_id >= 0 }" |
| | | :key="index" class="step-title"> |
| | | {{ record.status_str }} |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- Element Steps 组件 --> |
| | | <el-steps :active="form.active" align-center class="custom-steps"> |
| | | <el-step v-for="(record, index) in form.record_list" :key="index"> |
| | | <template #description> |
| | | <span class="step-description" style="position: relative; display: inline-block;"> |
| | | {{ record.user_name }} |
| | | </span> |
| | | <span style=" |
| | | position: absolute; |
| | | left: 80%; |
| | | top: 50%; |
| | | transform: translateY(-50%); |
| | | width: 100px; |
| | | margin-left: 4px; |
| | | color: #666; |
| | | font-size: 12px; |
| | | "> |
| | | {{ record.interval_time_str }} |
| | | </span> |
| | | <div class="step-description"> |
| | | {{ record.create_time_str }} |
| | | </div> |
| | | </template> |
| | | </el-step> |
| | | </el-steps> |
| | | </div> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工单名称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入工单名称" :disabled="true"></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="请选择航线" :disabled="true"> |
| | | <el-option v-for="item in wayLineList" :key="item.wayline_id" :label="item.name" |
| | | :value="item.wayline_id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="关联机巢" prop="device_sns"> |
| | | <el-select v-model="form.device_sns" placeholder="请选择机巢" multiple :disabled="true"> |
| | | <el-option |
| | | v-for="item in device_sns" |
| | | :key="item.device_sn" |
| | | :label="item.nickname" |
| | | :value="item.device_sn" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="关联算法" prop="ai_types"> |
| | | <el-select v-model="form.ai_types" placeholder="请选择关联算法" multiple :disabled="true"> |
| | | <el-option v-for="item in ai_types" :key="item.dictKey" :label="item.dictValue" |
| | | :value="item.dictKey" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12" prop="statusStr"> |
| | | |
| | | <el-form-item label="当前状态"> |
| | | {{statusStr}} |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | <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="结束日期" class="date-picker" :disabled="true"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-select v-model="form.rep_fre_type" placeholder="请选择频次" :disabled="true"> |
| | | <el-option v-for="item in cycles" :key="item" :label="item" :value="item" /> |
| | | </el-select> |
| | | </el-col> |
| | | |
| | | <el-col :span="3"> |
| | | <el-time-picker style="width: 100px" v-model="form.deal_time" prop="deal_time" :disabled="true" |
| | | value-format="HH:mm" :picker-options="{ |
| | | selectableRange: '00:00 - 23:59', |
| | | }" /> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工单内容" prop="content"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="form.content" |
| | | rows="2" |
| | | placeholder="请输入工单内容" |
| | | maxlength="255" |
| | | show-word-limit |
| | | :readonly="true" |
| | | :disabled="true" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | |
| | | <el-col :span="12"> |
| | | |
| | | |
| | | <el-button type="danger" |
| | | v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)" |
| | | @click="submitForm(1)">发布</el-button> |
| | | <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user" |
| | | @click="submitForm(0)">保存</el-button> --> |
| | | |
| | | <el-button type="primary" v-if="form.status == 1 && this.permission.orderLogpass" |
| | | @click="orderLogPass(form.id)">通过</el-button> |
| | | <el-button type="danger" v-if="form.status == 1 && hasRejectionBtnPermission()" |
| | | @click="orderLogReject(form.id)">驳回</el-button> |
| | | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | |
| | | <el-row :gutter="20" style="height: 400px"> |
| | | <el-col :span="24"> |
| | | <map-container v-if='detailVisible' ref="MapContainer"></map-container> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </el-dialog> |
| | | |
| | | |
| | | </basic-container> |
| | | </template> |
| | | |
| | |
| | | ai_types: [], |
| | | wayLineList: [], |
| | | detailTitle:"编辑工单", |
| | | detailVisibleCopy: false, |
| | | |
| | | statuses: [ |
| | | { label: '草稿', value: '0' }, |
| | |
| | | computed: { |
| | | ...mapGetters(['userInfo', 'permission']), |
| | | filteredTabs() { |
| | | // rejection_and_draft 权限控制“已驳回”和“草稿”tab |
| | | const canShowRejectAndDraft = this.permission?.rejection_and_draft === true; |
| | | return this.tabs.map(tab => { |
| | | if (tab.name === 'DRAFT') { |
| | |
| | | return { ...tab, isShow: true }; |
| | | }).filter(tab => tab.isShow); |
| | | }, |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | |
| | | } |
| | | }, |
| | | formatCycleTime(row) { |
| | | return row.begin_time + '-' + row.end_time + '<br/>' |
| | | + row.rep_rule_val |
| | | return row.cycle_time_value; |
| | | }, |
| | | |
| | | async fetchTableData() { |
| | |
| | | const statusMap = { |
| | | 1: 'warning', |
| | | 2: 'info', |
| | | 3: 'primary', |
| | | 3: 'primary', |
| | | 4: 'success', |
| | | 5: 'danger', |
| | | } |
| | |
| | | address: '', |
| | | content: '', |
| | | photos: [], |
| | | status : null, |
| | | } |
| | | if (this.$refs.testform) { |
| | | this.$refs.testform.resetFields() |
| | |
| | | return `${location[0].toFixed(6)}, ${location[1].toFixed(6)}` |
| | | }, |
| | | async handleViewDetail(row) { |
| | | console.log("工单名称1111:"); |
| | | const response = await orderLogDetails(row.id); |
| | | const data = response.data.data; |
| | | |
| | |
| | | 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) ? this.detailTitle="工单详情":this.detailTitle="编辑工单"; |
| | | console.log("工单名称:"+this.detailTitle); |
| | | }, |
| | | async handleCheckDetail(row) { |
| | | const response = await orderLogDetails(row.id); |
| | | const data = response.data.data; |
| | | |
| | | this.form = { |
| | | ...data, |
| | | }; |
| | | |
| | | this.detailVisibleCopy = true; |
| | | this.statusStr = this.mapStatus(data.status); |
| | | |
| | | // 更新机巢列表 |
| | | this.device_sns = data.device_list; |
| | | |
| | | }, |
| | | //导出 |
| | | async exportData() { |
| | |
| | | let response = await orderLogPass(id) |
| | | let data = response.data.data |
| | | this.$message.success('审核通过') |
| | | this.detailVisible = false |
| | | this.detailVisibleCopy = false |
| | | }, |
| | | /** |
| | | * 驳回 |
| | |
| | | }).then(async ({ value }) => { |
| | | let response = await orderLogReject(id, value) |
| | | let data = response.data.data |
| | | this.$message.success('驳回成果') |
| | | this.detailVisible = false |
| | | this.$message.success('驳回成功') |
| | | this.detailVisibleCopy = false |
| | | }) |
| | | }, |
| | | }, |
| | |
| | | color: #333; |
| | | } |
| | | </style> |
| | | ` |
| | | ``` |
| | | |