|
@@ -3,7 +3,7 @@
|
|
<ProTable ref="proTable" :columns="columns" row-key="id" :request-api="listOrderConfigApi" :init-param="initParam" :data-callback="dataCallback">
|
|
<ProTable ref="proTable" :columns="columns" row-key="id" :request-api="listOrderConfigApi" :init-param="initParam" :data-callback="dataCallback">
|
|
<!-- 表格 header 按钮 -->
|
|
<!-- 表格 header 按钮 -->
|
|
<template #tableHeader="scope">
|
|
<template #tableHeader="scope">
|
|
- <el-button type="primary" v-auth="['manage:orderConfig:add']" :icon="CirclePlus" @click="openDialog(1, '指令配置新增')"> 新增 </el-button>
|
|
|
|
|
|
+ <el-button type="primary" v-auth="['manage:orderConfig:add']" :icon="CirclePlus" @click="handleAdd()"> 新增 </el-button>
|
|
<el-button type="primary" v-auth="['manage:orderConfig:import']" :icon="Upload" plain @click="batchAdd"> 导入 </el-button>
|
|
<el-button type="primary" v-auth="['manage:orderConfig:import']" :icon="Upload" plain @click="batchAdd"> 导入 </el-button>
|
|
<el-button type="primary" v-auth="['manage:orderConfig:export']" :icon="Download" plain @click="downloadFile"> 导出 </el-button>
|
|
<el-button type="primary" v-auth="['manage:orderConfig:export']" :icon="Download" plain @click="downloadFile"> 导出 </el-button>
|
|
<el-button
|
|
<el-button
|
|
@@ -27,6 +27,41 @@
|
|
</el-button>
|
|
</el-button>
|
|
<el-button type="primary" link :icon="Delete" v-auth="['manage:orderConfig:remove']" @click="deleteOrderConfig(scope.row)"> 删除 </el-button>
|
|
<el-button type="primary" link :icon="Delete" v-auth="['manage:orderConfig:remove']" @click="deleteOrderConfig(scope.row)"> 删除 </el-button>
|
|
</template>
|
|
</template>
|
|
|
|
+
|
|
|
|
+ <el-dialog v-model="dialog.visible" :title="dialog.title" destroy-on-close append-to-body width="600px">
|
|
|
|
+ <el-form ref="orderFormRef" :model="form" :rules="rules" label-width="80px">
|
|
|
|
+ <el-form-item label="指令编码" prop="orderCode">
|
|
|
|
+ <el-input v-model="form.orderCode" placeholder="请输入指令编码" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="指令名称" prop="name">
|
|
|
|
+ <el-input v-model="form.name" placeholder="请输入指令名称" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="指令类型" prop="type">
|
|
|
|
+ <el-select v-model="form.type" placeholder="请选择指令类型">
|
|
|
|
+ <el-option v-for="item in types" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item v-if="form.type !== '10'" label="架次" prop="sortie">
|
|
|
|
+ <el-select v-model="form.sortie" placeholder="请选择架次">
|
|
|
|
+ <el-option v-for="item in sortieOptions" :key="item.sortieNumber" :label="item.sortieNumber" :value="item.sortieNumber" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item v-else label="维修内容" prop="instId">
|
|
|
|
+ <el-select v-model="form.instId" placeholder="请选择维修内容">
|
|
|
|
+ <el-option v-for="item in instOptions" :key="item.id" :label="item.label" :value="item.value" />
|
|
|
|
+ </el-select>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="备注" prop="description">
|
|
|
|
+ <el-input v-model="form.description" type="textarea" placeholder="请输入内容"></el-input>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ </el-form>
|
|
|
|
+ <template #footer>
|
|
|
|
+ <div class="dialog-footer">
|
|
|
|
+ <el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
|
+ <el-button @click="closeDialog">取 消</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-dialog>
|
|
</ProTable>
|
|
</ProTable>
|
|
<FormDialog ref="formDialogRef" />
|
|
<FormDialog ref="formDialogRef" />
|
|
<ImportExcel ref="dialogRef" />
|
|
<ImportExcel ref="dialogRef" />
|
|
@@ -35,10 +70,10 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup lang="tsx" name="OrderConfig">
|
|
<script setup lang="tsx" name="OrderConfig">
|
|
-import { ref, reactive } from 'vue'
|
|
|
|
|
|
+import { ref, reactive, onMounted } from 'vue'
|
|
import { useHandleData } from '@/hooks/useHandleData'
|
|
import { useHandleData } from '@/hooks/useHandleData'
|
|
import { useDownload } from '@/hooks/useDownload'
|
|
import { useDownload } from '@/hooks/useDownload'
|
|
-import { ElMessageBox } from 'element-plus'
|
|
|
|
|
|
+import { ElMessage, ElMessageBox } from 'element-plus'
|
|
import ProTable from '@/components/ProTable/index.vue'
|
|
import ProTable from '@/components/ProTable/index.vue'
|
|
import ImportExcel from '@/components/ImportExcel/index.vue'
|
|
import ImportExcel from '@/components/ImportExcel/index.vue'
|
|
import FormDialog from '@/components/DialogOld/form.vue'
|
|
import FormDialog from '@/components/DialogOld/form.vue'
|
|
@@ -58,13 +93,87 @@ import {
|
|
} from '@/api/modules/manage/orderConfig'
|
|
} from '@/api/modules/manage/orderConfig'
|
|
import { getDictsApi } from '@/api/modules/system/dictData'
|
|
import { getDictsApi } from '@/api/modules/system/dictData'
|
|
import { listSortieAllApi } from '@/api/modules/manage/sortie'
|
|
import { listSortieAllApi } from '@/api/modules/manage/sortie'
|
|
-
|
|
|
|
|
|
+import { listInstructionInfoApi } from '@/api/modules/manage/instructionInfo'
|
|
|
|
+import { generateOrderNumber } from '@/utils/common'
|
|
// ProTable 实例
|
|
// ProTable 实例
|
|
const proTable = ref<ProTableInstance>()
|
|
const proTable = ref<ProTableInstance>()
|
|
|
|
|
|
-// 如果表格需要初始化请求参数,直接定义传给 ProTable (之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
|
|
|
|
|
|
+let types = ref<any[]>([])
|
|
|
|
+onMounted(async () => {
|
|
|
|
+ getDictsApi('order_type').then(res => {
|
|
|
|
+ types.value = res.data
|
|
|
|
+ })
|
|
|
|
+ let sortie = await listSortieAllApi({})
|
|
|
|
+ sortieOptions.value = sortie.data
|
|
|
|
+ let inst = await listInstructionInfoApi({})
|
|
|
|
+ instOptions.value = inst.data.data.map(item => {
|
|
|
|
+ return { value: item.id, label: `${item.content}-` + (item.attribute == '1' ? '开' : '关') }
|
|
|
|
+ })
|
|
|
|
+ console.log('content', instOptions.value)
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+const initFormData = {
|
|
|
|
+ orderCode: generateOrderNumber('INST'),
|
|
|
|
+ name: '',
|
|
|
|
+ type: '',
|
|
|
|
+ instId: '',
|
|
|
|
+ sortie: '',
|
|
|
|
+ description: ''
|
|
|
|
+}
|
|
const initParam = reactive({})
|
|
const initParam = reactive({})
|
|
|
|
+const form = ref({ ...initFormData })
|
|
|
|
+const rules = reactive({
|
|
|
|
+ orderCode: [{ required: true, message: '指令编码不能为空', trigger: 'blur' }],
|
|
|
|
+ name: [{ required: true, message: '指令名称不能为空', trigger: 'blur' }],
|
|
|
|
+ type: [{ required: true, message: '指令类型不能为空', trigger: 'change' }],
|
|
|
|
+ sortie: [{ required: true, message: '架次不能为空', trigger: 'change' }],
|
|
|
|
+ instId: [{ required: true, message: '内容不能为空', trigger: 'change' }]
|
|
|
|
+})
|
|
|
|
+const dialog = reactive<DialogOption>({
|
|
|
|
+ visible: false,
|
|
|
|
+ title: ''
|
|
|
|
+})
|
|
|
|
|
|
|
|
+const orderFormRef = ref<ElFormInstance>()
|
|
|
|
+/** 新增按钮操作 */
|
|
|
|
+const handleAdd = () => {
|
|
|
|
+ form.value = { ...initFormData }
|
|
|
|
+ orderFormRef.value?.resetFields()
|
|
|
|
+ dialog.visible = true
|
|
|
|
+ dialog.title = '添加字典类型'
|
|
|
|
+}
|
|
|
|
+/** 提交按钮 */
|
|
|
|
+const submitForm = () => {
|
|
|
|
+ orderFormRef.value?.validate(async (valid: boolean) => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ addOrderConfigApi(form.value).then(res => {
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
+ ElMessage.success(res.msg)
|
|
|
|
+ dialog.visible = false
|
|
|
|
+ proTable.value?.getTableList()
|
|
|
|
+ } else {
|
|
|
|
+ ElMessage.error(res.msg)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 关闭用户弹窗
|
|
|
|
+ */
|
|
|
|
+const closeDialog = () => {
|
|
|
|
+ dialog.visible = false
|
|
|
|
+ resetForm()
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 重置表单
|
|
|
|
+ */
|
|
|
|
+const resetForm = () => {
|
|
|
|
+ orderFormRef.value?.resetFields()
|
|
|
|
+ orderFormRef.value?.clearValidate()
|
|
|
|
+}
|
|
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,可以在这里进行处理成这些字段
|
|
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total && pageNum && pageSize 这些字段,可以在这里进行处理成这些字段
|
|
const dataCallback = (data: any) => {
|
|
const dataCallback = (data: any) => {
|
|
const page = proTable.value!.pageable
|
|
const page = proTable.value!.pageable
|
|
@@ -122,6 +231,7 @@ const batchAdd = () => {
|
|
|
|
|
|
const formDialogRef = ref<InstanceType<typeof FormDialog> | null>(null)
|
|
const formDialogRef = ref<InstanceType<typeof FormDialog> | null>(null)
|
|
const sortieOptions = ref<any[]>([])
|
|
const sortieOptions = ref<any[]>([])
|
|
|
|
+const instOptions = ref<any[]>([])
|
|
// 打开弹框的功能
|
|
// 打开弹框的功能
|
|
const openDialog = async (type: number, title: string, row?: any) => {
|
|
const openDialog = async (type: number, title: string, row?: any) => {
|
|
let res = { data: {} }
|
|
let res = { data: {} }
|
|
@@ -150,10 +260,7 @@ const columns = reactive<ColumnProps<any>[]>([
|
|
{ type: 'selection', fixed: 'left', width: 70 },
|
|
{ type: 'selection', fixed: 'left', width: 70 },
|
|
{
|
|
{
|
|
prop: 'orderCode',
|
|
prop: 'orderCode',
|
|
- label: '指令编码',
|
|
|
|
- search: {
|
|
|
|
- el: 'input'
|
|
|
|
- }
|
|
|
|
|
|
+ label: '指令编码'
|
|
},
|
|
},
|
|
{
|
|
{
|
|
prop: 'name',
|
|
prop: 'name',
|
|
@@ -173,26 +280,30 @@ const columns = reactive<ColumnProps<any>[]>([
|
|
prop: 'type',
|
|
prop: 'type',
|
|
label: '指令类型',
|
|
label: '指令类型',
|
|
tag: true,
|
|
tag: true,
|
|
- enum: () => getDictsApi('order_type'),
|
|
|
|
|
|
+ enum: types,
|
|
search: {
|
|
search: {
|
|
el: 'select'
|
|
el: 'select'
|
|
},
|
|
},
|
|
fieldNames: { label: 'dictLabel', value: 'dictValue' }
|
|
fieldNames: { label: 'dictLabel', value: 'dictValue' }
|
|
},
|
|
},
|
|
{
|
|
{
|
|
- prop: 'sortie',
|
|
|
|
- label: '架次',
|
|
|
|
|
|
+ prop: 'instId',
|
|
|
|
+ label: '维修内容',
|
|
|
|
+ tag: true,
|
|
|
|
+ enum: instOptions,
|
|
search: {
|
|
search: {
|
|
- el: 'input'
|
|
|
|
|
|
+ el: 'select'
|
|
},
|
|
},
|
|
|
|
+ width: 220
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ prop: 'sortie',
|
|
|
|
+ label: '内容',
|
|
width: 120
|
|
width: 120
|
|
},
|
|
},
|
|
{
|
|
{
|
|
prop: 'description',
|
|
prop: 'description',
|
|
- label: '指令描述',
|
|
|
|
- search: {
|
|
|
|
- el: 'input'
|
|
|
|
- }
|
|
|
|
|
|
+ label: '指令描述'
|
|
},
|
|
},
|
|
{
|
|
{
|
|
prop: 'createTime',
|
|
prop: 'createTime',
|