fix: 工单绑定设备

master
李小林 9 months ago
parent e5df40569f
commit 510bf01362
  1. 20
      src/api/order/index.ts
  2. 18
      src/api/order/types.ts
  3. 11
      src/api/resources-equipment/index.ts
  4. 114
      src/views/family/operate/order/components/BindingDevice.vue
  5. 14
      src/views/family/operate/order/components/ModifyServiceParameter.vue
  6. 26
      src/views/family/operate/order/components/OrderInfoEdit.vue
  7. 66
      src/views/family/operate/order/components/OrderLog.vue

@ -2,10 +2,10 @@ import { AxiosPromise } from "axios";
import {
ModifyOrderForm,
OrderInfoServicePageResult,
OrderInfoVO,
OrderInfoVO, OrderLogPageResult,
OrderPageResult,
OrderServicePageResult,
OrderServiceVO,
OrderServiceVO
} from "@/api/order/types";
import request from "@/utils/request";
@ -83,3 +83,19 @@ export function updateOrderServiceParameter(
data,
});
}
export function orderLogVOPage(
orderId: number,
data: PageQuery
): AxiosPromise<OrderLogPageResult> {
return request({
url: `/api/order-log/v1/page/${orderId}`,
method: "POST",
data,
});
}
export function bindingOuiSno(orderId: number, devOuiSno: string) {
return request({
url: `/api/order/v1/binding-dev-oui-sno/${orderId}/${devOuiSno}`,
method: "PUT",
});
}

@ -53,7 +53,7 @@ export interface OrderInfoVO {
devOnlineStatus?: string;
userSnKey?: string;
devAccessType?: string;
devSnoOui?: string;
domain?: string;
orderCustomerKind?: string;
orderDoneFlag?: string;
@ -97,3 +97,19 @@ export interface OrderServiceVO {
argsValueOld?: string;
}
export type OrderServicePageResult = PageResult<OrderServiceVO[]>;
export interface OrderLogVO {
orderId?: number;
logTime?: string;
logCode?: string;
logContent?: string;
}
export type OrderLogPageResult = PageResult<OrderLogVO[]>;
export interface DevOuiSnoSearchForm extends PageQuery {
devOuiSno?: string;
}
export type DevOuiSnoPageResult = PageResult<string[]>;

@ -7,6 +7,7 @@ import {
PrivateProfile,
} from "@/api/resources-equipment/types";
import request from "@/utils/request";
import { DevOuiSnoPageResult, DevOuiSnoSearchForm } from "@/api/order/types";
export function getEquipmentPage(
data: SelectForm
@ -75,3 +76,13 @@ export function unbindingCustomAPI(devId?: number) {
method: "PUT",
});
}
export function findDevOuiSnoPage(
data: DevOuiSnoSearchForm
): AxiosPromise<DevOuiSnoPageResult> {
return request({
url: `/api/equipment/v1/dev-oui-sno-page`,
method: "POST",
data,
});
}

@ -0,0 +1,114 @@
<template>
<div class="app-container">
<el-dialog v-model="bindingDeviceFlag" title="绑定设备" width="1000">
<div class="search-container">
<el-form :model="queryForm" :inline="true">
<el-form-item label="设备标识">
<el-input
v-model="queryForm.devOuiSno"
placeholder="请输入设备标识:xxx-xxx"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" :icon="Search" @click="handleSearch"
>搜索</el-button
>
<el-button type="primary" :icon="Position" @click="bindingDev"
>绑定</el-button
>
</el-form-item>
</el-form>
</div>
<div class="any-table mb">
<el-table
:data="tableData"
highlight-current-row
v-loading="loading"
@row-click="handleCurrentChange"
>
<el-table-column width="55">
<template #default="scope">
<el-radio :label="scope.row" v-model="devOuiSno">
{{ "" }}
</el-radio>
</template>
</el-table-column>
<el-table-column label="设备标识" align="center">
<template #default="scope">{{ scope.row }}</template>
</el-table-column>
</el-table>
<pagination
v-if="total > 0"
v-model:total="total"
v-model:page="queryForm.pageNum"
v-model:limit="queryForm.pageSize"
@pagination="handleSearch"
/>
</div>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { Position, Search } from "@element-plus/icons-vue";
import { DevOuiSnoSearchForm } from "@/api/order/types";
import { findDevOuiSnoPage } from "@/api/resources-equipment";
import { bindingOuiSno } from "@/api/order";
const queryForm = ref<DevOuiSnoSearchForm>({
pageNum: 1,
pageSize: 10,
});
const bindingDeviceFlag = ref<boolean>(false);
const orderId = ref<number>(0);
const devOuiSno = ref<string>("");
const total = ref<number>(0);
const loading = ref<boolean>(false);
const tableData = ref<string[]>([]);
const open = (orderId_: number) => {
orderId.value = orderId_;
bindingDeviceFlag.value = true;
};
defineExpose({ open });
const handleCurrentChange = (val: string) => {
devOuiSno.value = val;
};
const handleSearch = () => {
loading.value = true;
findDevOuiSnoPage(queryForm.value)
.then(({ data }) => {
tableData.value = data.list;
total.value = data.total;
})
.finally(() => {
loading.value = false;
});
};
const emit = defineEmits(["success"]);
const bindingDev = () => {
if (devOuiSno.value === "") {
ElMessage({
message: "请选择设备标识",
duration: 1500,
type: "error",
});
return;
}
loading.value = false;
bindingOuiSno(orderId.value, devOuiSno.value)
.then(() => {
ElMessage({
message: "操作成功",
duration: 1500,
type: "success",
});
emit("success");
bindingDeviceFlag.value = false;
})
.finally(() => {
loading.value = false;
});
};
</script>
<style scoped></style>

@ -81,7 +81,7 @@
import { OrderServiceVO } from "@/api/order/types";
import { orderServiceVOPage, updateOrderServiceParameter } from "@/api/order";
import { Delete, Plus } from "@element-plus/icons-vue";
import { FormInstance, FormRules } from "element-plus";
import { FormInstance } from "element-plus";
const ruleFormRef = ref<FormInstance>();
const modifyServiceFlag = ref<boolean>(false);
@ -101,9 +101,15 @@ const openModify = (
service_?: string,
serviceFlag_?: string
) => {
orderId.value = orderId_;
service.value = service_;
serviceFlag.value = serviceFlag_;
if (orderId_ != undefined) {
orderId.value = orderId_;
}
if (service_ != undefined) {
service.value = service_;
}
if (serviceFlag_ != undefined) {
serviceFlag.value = serviceFlag_;
}
modifyServiceFlag.value = true;
getOrderServicePage();
};

@ -31,7 +31,7 @@
<el-button type="primary" @click="skipModifyOrder">修改</el-button>
<el-button type="primary">设备操作维护</el-button>
<el-button type="primary">工单日志</el-button>
<el-button type="primary" @click="openOrderLog">工单日志</el-button>
</div>
<el-card shadow="never" v-loading="loading">
<el-scrollbar height="500">
@ -134,14 +134,22 @@
class-name="my-content"
width="150px"
>
<el-tag
<div
v-if="
orderInfo.orderStatus === '1' ||
orderInfo.orderStatus === '3' ||
orderInfo.orderStatus === '5'
"
>未绑定设备</el-tag
>
<el-tag>未绑定设备</el-tag>
</div>
<div v-else>
<el-button type="primary" link @click="openBindingDev">{{
orderInfo.devSnoOui === null
? "未绑定设备"
: orderInfo.devSnoOui
}}</el-button>
</div>
</el-descriptions-item>
<el-descriptions-item
label="工单状态"
@ -335,6 +343,8 @@
</el-scrollbar>
</el-card>
<order-service-parameter-table ref="serviceParameterRef" />
<order-log ref="orderLogRef" />
<binding-device @success="getData" ref="bindingDevRef" />
</div>
</template>
@ -348,6 +358,8 @@ import {
} from "@/api/order";
import { InfoFilled } from "@element-plus/icons-vue";
import OrderServiceParameterTable from "@/views/family/operate/order/components/OrderServiceParameterTable.vue";
import OrderLog from "@/views/family/operate/order/components/OrderLog.vue";
import BindingDevice from "@/views/family/operate/order/components/BindingDevice.vue";
const route = useRoute();
const router = useRouter();
@ -362,6 +374,8 @@ const queryPage = ref<PageQuery>({
const total = ref<number>(0);
const orderServiceList = ref<OrderInfoServiceVO[]>([]);
const serviceParameterRef = ref();
const orderLogRef = ref();
const bindingDevRef = ref();
const getData = () => {
loading.value = true;
findOrderInfoById(orderId)
@ -408,6 +422,12 @@ const skipModifyOrder = () => {
const openServiceList = (service: string) => {
serviceParameterRef.value.openParameter(orderId, service);
};
const openOrderLog = () => {
orderLogRef.value.open(orderId);
};
const openBindingDev = () => {
bindingDevRef.value.open(orderId);
};
onMounted(() => {
getData();
getOrderInfoServiceList();

@ -0,0 +1,66 @@
<template>
<el-dialog
class="com-dialog"
v-model="orderLogFlag"
title="工单日志"
width="1000"
>
<div class="any-table">
<el-table :data="tableData" v-loading="loading" border>
<el-table-column
label="操作时间"
prop="logTime"
width="200"
align="center"
/>
<el-table-column
label="执行结果"
prop="logCode"
width="100"
align="center"
/>
<el-table-column label="详细信息" prop="logContent" align="center" />
</el-table>
<pagination
v-if="total > 0"
v-model:total="total"
v-model:page="queryPage.pageNum"
v-model:limit="queryPage.pageSize"
@pagination="getOrderLogPage"
/>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { OrderLogVO } from "@/api/order/types";
import { orderLogVOPage } from "@/api/order";
const orderLogFlag = ref<boolean>(false);
const orderId = ref<number>(0);
const loading = ref<boolean>(false);
const tableData = ref<OrderLogVO[]>([]);
const queryPage = ref<PageQuery>({
pageNum: 1,
pageSize: 10,
});
const total = ref<number>(0);
const open = (orderId_: number) => {
orderId.value = orderId_;
orderLogFlag.value = true;
getOrderLogPage();
};
defineExpose({ open });
const getOrderLogPage = () => {
loading.value = true;
orderLogVOPage(orderId.value, queryPage.value)
.then(({ data }) => {
tableData.value = data.list;
total.value = data.total;
})
.finally(() => {
loading.value = false;
});
};
</script>
<style scoped></style>
Loading…
Cancel
Save