add:增加近期的一些新增需求实现;

This commit is contained in:
2026-07-10 14:17:13 +08:00
parent 5364667e63
commit 343d183c56
32 changed files with 512 additions and 197 deletions

View File

@@ -320,7 +320,7 @@
<el-table-column prop="start_point_code2" :label="$t('TaskRecord.table.Starting_point_two')" :min-width="flexWidth('start_point_code2',crud.data,$t('TaskRecord.table.Starting_point_two'))" />
<el-table-column prop="next_point_code2" :label="$t('TaskRecord.table.Endpoint_two')" :min-width="flexWidth('next_point_code2',crud.data,$t('TaskRecord.table.Endpoint_two'))" />
<el-table-column prop="interaction_json" :label="$t('task.select.Interaction_json')" :show-overflow-tooltip="true" width="150px" />
<el-table-column prop="matarial" :label="$t('TaskRecord.table.Material')" />
<el-table-column prop="temperature" :label="$t('优先级修改记录')" width="135" />
<el-table-column prop="quantity" :label="$t('TaskRecord.table.Quantity')" />
<el-table-column prop="remark" :label="$t('task.select.Remark')" />
<el-table-column prop="create_by" :label="$t('task.select.Creator')" />

View File

@@ -123,6 +123,17 @@
>
{{ $t('auto.common.synchronous') }}
</el-button>
<el-button
slot="right"
v-permission="['admin','task:edit']"
class="filter-item"
size="mini"
type="warning"
icon="el-icon-edit"
@click="handlePriorityClick"
>
{{ $t('修改优先级') }}
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog :close-on-click-modal="false" :visible.sync="formDia" :title="crud.status.title" width="1100px">
@@ -133,22 +144,22 @@
<el-form-item v-if="false" label="任务标识" prop="task_id">
<el-input v-model="form.task_id" style="width: 240px;" />
</el-form-item>
<el-form-item :label="$t('task.txt_box.Material_type')">
<el-select
v-model="form.material"
style="width: 370px;"
filterable
:placeholder="$t('task.select.Placeholder')"
@change="isDisabled=false"
>
<el-option
v-for="item in dict.material_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item :label="$t('task.txt_box.Material_type')">-->
<!-- <el-select-->
<!-- v-model="form.material"-->
<!-- style="width: 370px;"-->
<!-- filterable-->
<!-- :placeholder="$t('task.select.Placeholder')"-->
<!-- @change="isDisabled=false"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in dict.material_type"-->
<!-- :key="item.id"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item :label="$t('task.txt_box.car_type')">
<el-select
v-model="form.car_type"
@@ -165,9 +176,9 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('task.txt_box.car_width')">
<el-input v-model="form.car_width" style="width: 370px;" @change="isDisabled=false" />
</el-form-item>
<!-- <el-form-item :label="$t('task.txt_box.car_width')">-->
<!-- <el-input v-model="form.car_width" style="width: 370px;" @change="isDisabled=false" />-->
<!-- </el-form-item>-->
<el-form-item :label="$t('task.txt_box.Task_type')">
<el-select
v-model="form.task_type"
@@ -200,40 +211,40 @@
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('task.txt_box.AGV_system')">
<el-select
v-model="form.agv_system_type"
style="width: 370px;"
filterable
clearable
:placeholder="$t('task.select.Placeholder')"
@change="isDisabled=false"
>
<el-option
v-for="item in dict.agv_system_type"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('task.txt_box.Routing_scheme')">
<el-select
v-model="form.route_plan_code"
style="width: 370px;"
filterable
:placeholder="$t('task.select.Placeholder')"
default-first-option
@change="isDisabled=false"
>
<el-option
v-for="item in routeList"
:key="item.plan_code"
:label="item.plan_name"
:value="item.plan_code"
/>
</el-select>
</el-form-item>
<!-- <el-form-item :label="$t('task.txt_box.AGV_system')">-->
<!-- <el-select-->
<!-- v-model="form.agv_system_type"-->
<!-- style="width: 370px;"-->
<!-- filterable-->
<!-- clearable-->
<!-- :placeholder="$t('task.select.Placeholder')"-->
<!-- @change="isDisabled=false"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in dict.agv_system_type"-->
<!-- :key="item.id"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="$t('task.txt_box.Routing_scheme')">-->
<!-- <el-select-->
<!-- v-model="form.route_plan_code"-->
<!-- style="width: 370px;"-->
<!-- filterable-->
<!-- :placeholder="$t('task.select.Placeholder')"-->
<!-- default-first-option-->
<!-- @change="isDisabled=false"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in routeList"-->
<!-- :key="item.plan_code"-->
<!-- :label="item.plan_name"-->
<!-- :value="item.plan_code"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item :label="$t('task.txt_box.agv_action_type')">
<el-select
v-model="form.agv_action_type"
@@ -350,9 +361,9 @@
/>
</el-select>
</el-form-item>
<el-form-item label="行架任务类型">
<el-input v-model="form.truss_type" style="width: 370px;" @change="isDisabled=false" />
</el-form-item>
<!-- <el-form-item label="行架任务类型">-->
<!-- <el-input v-model="form.truss_type" style="width: 370px;" @change="isDisabled=false" />-->
<!-- </el-form-item>-->
</el-col>
<el-col :span="12">
<div class="grid-content bg-purple-light" />
@@ -459,30 +470,30 @@
<el-form-item :label="$t('task.txt_box.Vehicle_number')">
<el-input v-model="form.vehicle_code" style="width: 370px;" @change="isDisabled=false" />
</el-form-item>
<el-form-item :label="$t('task.txt_box.empty_shaft_position')">
<el-select
v-model="form.empty_site"
style="width: 370px;"
filterable
clearable
:placeholder="$t('task.txt_box.empty_shaft_position')"
>
<el-option
v-for="item in dict.empty_shaft_position"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item :label="$t('task.txt_box.extension_field')">
<div>
<el-button @click="openDialog">{{ $t('task.select.Placeholder') }}</el-button>
</div>
</el-form-item>
<el-form-item :label="$t('task.select.Description')" prop="description">
<el-input v-model="form.remark" style="width: 370px;" type="textarea" @change="isDisabled=false" />
</el-form-item>
<!-- <el-form-item :label="$t('task.txt_box.empty_shaft_position')">-->
<!-- <el-select-->
<!-- v-model="form.empty_site"-->
<!-- style="width: 370px;"-->
<!-- filterable-->
<!-- clearable-->
<!-- :placeholder="$t('task.txt_box.empty_shaft_position')"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in dict.empty_shaft_position"-->
<!-- :key="item.id"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="$t('task.txt_box.extension_field')">-->
<!-- <div>-->
<!-- <el-button @click="openDialog">{{ $t('task.select.Placeholder') }}</el-button>-->
<!-- </div>-->
<!-- </el-form-item>-->
<!-- <el-form-item :label="$t('task.select.Description')" prop="description">-->
<!-- <el-input v-model="form.remark" style="width: 370px;" type="textarea" @change="isDisabled=false" />-->
<!-- </el-form-item>-->
</el-col>
</el-row>
</el-form>
@@ -543,6 +554,21 @@
</div>
</el-form>
</el-dialog>
<!-- 修改优先级弹框 -->
<el-dialog :close-on-click-modal="false" :visible.sync="priorityDialogVisible" title="修改优先级" width="500px">
<el-form ref="priorityForm" :model="priorityForm" :rules="priorityRules" size="small" label-width="120px">
<el-form-item label="任务号" prop="task_code">
<el-input v-model="priorityForm.task_code" style="width: 300px;" disabled />
</el-form-item>
<el-form-item label="优先级" prop="priority">
<el-input v-model.number="priorityForm.priority" style="width: 300px;" type="number" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="priorityDialogVisible=false">{{ $t('task.select.Cancel') }}</el-button>
<el-button type="primary" @click="submitPriority">{{ $t('task.select.Confirm') }}</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="25" />
@@ -653,7 +679,7 @@
</template>
<script>
import crudTask from '@/api/acs/task/task'
import crudTask, { updatePriority } from '@/api/acs/task/task'
import CRUD, { crud, header, presenter } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import rrOperation from '@crud/RR.operation'
@@ -800,6 +826,28 @@ export default {
value: ''
}],
dialogVisible: false,
priorityDialogVisible: false,
priorityForm: {
task_code: '',
priority: 1
},
priorityRules: {
priority: [
{ required: true, message: '请输入优先级', trigger: 'blur' },
{ type: 'number', message: '优先级必须为数字', trigger: 'blur' },
{ validator: (rule, value, callback) => {
if (value === '' || value === null) {
callback(new Error('请输入优先级'))
} else if (!Number.isInteger(value)) {
callback(new Error('优先级必须为整数'))
} else if (value < 0 || value >= 99) {
callback(new Error('优先级必须小于99'))
} else {
callback()
}
}, trigger: 'blur' }
]
},
rules: {
start_point_code: [
{ required: true, message: '起点不能为空', trigger: 'change' }
@@ -919,6 +967,63 @@ export default {
console.log(err.response.data.message)
})
},
handlePriorityClick() {
const selections = this.crud.selections
if (!selections || selections.length === 0) {
this.crud.notify('请至少选择一条待执行的任务', CRUD.NOTIFICATION_TYPE.WARNING)
return
}
// 校验所有选中的任务状态必须为 '0'(待执行)
const invalidSelections = selections.filter(item => item.task_status !== '0')
if (invalidSelections.length > 0) {
this.crud.notify('只能选择状态为"就绪"的任务', CRUD.NOTIFICATION_TYPE.WARNING)
return
}
// 取第一个选中任务的 task_code 展示
this.priorityForm.task_code = selections[0].task_code
this.priorityForm.priority = selections[0].priority ? Number(selections[0].priority) : 1
this.priorityDialogVisible = true
},
submitPriority() {
this.$refs.priorityForm.validate((valid) => {
if (!valid) return
const selections = this.crud.selections
const taskIds = selections.map(item => item.task_id)
const priority = this.priorityForm.priority
const firstTask = selections[0]
const doUpdate = (batchStartPointCode) => {
const params = { taskIds, priority }
if (batchStartPointCode) {
params.start_point_code = batchStartPointCode
}
updatePriority(params).then(res => {
this.crud.notify('修改成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.priorityDialogVisible = false
this.crud.toQuery()
}).catch(err => {
console.log(err)
})
}
// 检查是否为起点任务,询问是否批量更新同一排
const startDeviceCode = firstTask.start_device_code
const isStartTask = startDeviceCode &&
(startDeviceCode.includes('BCPRK') || startDeviceCode.includes('CPRK'))
if (isStartTask) {
const prefix = startDeviceCode.split('-')[0]
this.$confirm(
'检测该任务起点【' + prefix + '】的同一排存在多个任务,是否一起修改优先级?',
'提示',
{ confirmButtonText: '是,一起修改', cancelButtonText: '否,仅修改当前', type: 'warning' }
).then(() => {
doUpdate(startDeviceCode)
}).catch(() => {
doUpdate()
})
} else {
doUpdate()
}
})
},
reload() {
crudTask.reload().then(res => {
this.crud.toQuery()