feat: voip/云盒业务

master
李小林 7 months ago
parent d625cd0434
commit 31b5532801
  1. 12
      src/api/craft-order/index.ts
  2. 0
      src/api/craft-order/types.ts
  3. 2
      src/plugins/permission.ts
  4. 10
      src/views/craft-order/broadband/delete-broadband-internet/index.vue
  5. 8
      src/views/craft-order/broadband/enable-broadband-internet/index.vue
  6. 9
      src/views/craft-order/broadband/update-broadband-internet-mode/index.vue
  7. 10
      src/views/craft-order/broadband/update-broadband-internet-password/index.vue
  8. 8
      src/views/craft-order/broadband/update-broadband-internet/index.vue
  9. 8
      src/views/craft-order/broadband/update-broadband-max-number/index.vue
  10. 440
      src/views/craft-order/cloud-box/delete-cloud/index.vue
  11. 476
      src/views/craft-order/cloud-box/enable-cloud/index.vue
  12. 23
      src/views/craft-order/cloud-box/index.vue
  13. 8
      src/views/craft-order/iptv/delete-iptv/index.vue
  14. 8
      src/views/craft-order/iptv/enable-iptv/index.vue
  15. 6
      src/views/craft-order/tyslzw/delete-tyslzw/index.vue
  16. 8
      src/views/craft-order/tyslzw/enable-tyslzw/index.vue
  17. 508
      src/views/craft-order/voip/delete-voip/index.vue
  18. 1231
      src/views/craft-order/voip/enable-voip/index.vue
  19. 23
      src/views/craft-order/voip/index.vue
  20. 479
      src/views/craft-order/voip/tree-diagram/index.vue
  21. 603
      src/views/craft-order/voip/update-voip-password/index.vue
  22. 2
      src/views/family/operate/order/components/MergeOrder.vue
  23. 2
      src/views/family/operate/remote-operation/components/RemoteOperateInfo.vue

@ -1,31 +1,31 @@
import request from "@/utils/request";
import { AxiosPromise } from "axios";
import { AddBroadbandForm, OrderBasicInfo } from "@/api/broadband/types";
import { AddBroadbandForm, OrderBasicInfo } from "@/api/craft-order/types";
export function getBasicInfo(): AxiosPromise<OrderBasicInfo> {
return request({
url: "/api/broadband/v1/basic-info",
url: "/api/craft-order/v1/basic-info",
method: "GET",
});
}
export function addBroadband(data: AddBroadbandForm) {
export function addCraftOrder(data: AddBroadbandForm) {
return request({
url: "/api/broadband/v1/add-broadband",
url: "/api/craft-order/v1/add",
method: "POST",
data,
});
}
export function updateBroadbandMode(data: AddBroadbandForm) {
return request({
url: "/api/broadband/v1/update-broadband-mode",
url: "/api/craft-order/v1/update-broadband-mode",
method: "POST",
data,
});
}
export function addTYSLZW(data: AddBroadbandForm) {
return request({
url: "/api/broadband/v1/add-tyslzw",
url: "/api/craft-order/v1/add-tyslzw",
method: "POST",
data,
});

@ -6,7 +6,7 @@ import NProgress from "@/utils/nprogress";
export function setupPermission() {
// 白名单路由
const whiteList = ["/login"];
const threeLevelCatalog = ["Operate", "Broadband", "Iptv"];
const threeLevelCatalog = ["Operate", "Broadband", "Iptv", "Voip"];
router.beforeEach(async (to, from, next) => {
NProgress.start();

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -395,9 +395,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, getBasicInfo } from "@/api/broadband";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
@ -459,7 +459,7 @@ const rulesParams = (): boolean => {
const copyRgPort2Form = () => {
formData.value.list[0].argsValue = rgPort.value.join(",");
};
function loadDomainOptions() {
function loadDomainOptions() {
getDomainOptions().then(({ data }) => {
domainOptions.value = data;
});
@ -478,7 +478,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (valid && flag) {
confirm("确认手动提交删除宽带上网工单吗", () => {
loading.value = true;
addBroadband(formData.value)
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -647,9 +647,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, getBasicInfo } from "@/api/broadband";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
@ -760,7 +760,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (valid && flag) {
confirm("确认手动提交开通宽带上网工单吗", () => {
loading.value = true;
addBroadband(formData.value)
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -351,7 +351,7 @@
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="PPPOE账号"
label="连接类型"
label-align="center"
align="center"
label-class-name="my-label"
@ -386,9 +386,10 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { getBasicInfo, updateBroadbandMode } from "@/api/broadband";
import { getBasicInfo, updateBroadbandMode } from
"@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -351,7 +351,7 @@
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="PPPOE账号"
label="PPPOE密码"
label-align="center"
align="center"
label-class-name="my-label"
@ -383,9 +383,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, getBasicInfo } from "@/api/broadband";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
@ -446,7 +446,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (valid && flag) {
confirm("确认手动提交修改宽带上网账号工单吗", () => {
loading.value = true;
addBroadband(formData.value)
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -383,9 +383,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, getBasicInfo } from "@/api/broadband";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
@ -446,7 +446,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (valid && flag) {
confirm("确认手动提交修改宽带上网账号工单吗", () => {
loading.value = true;
addBroadband(formData.value)
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -417,9 +417,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, getBasicInfo } from "@/api/broadband";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
@ -487,7 +487,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (valid && flag) {
confirm("确认手动提交修改最大连接数工单吗", () => {
loading.value = true;
addBroadband(formData.value)
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;

@ -0,0 +1,440 @@
<template>
<div class="app-container">
<el-scrollbar height="600">
<el-card shadow="never">
<el-form
:model="formData"
ref="ruleFormRef"
:rules="rules"
v-loading="loading"
>
<el-descriptions :column="3" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备IPTV业务删除工单</span
>
</div>
</template>
<template #extra>
<el-button
type="primary"
:icon="Position"
style="margin-right: 8px"
@click="submitForm(ruleFormRef)"
>保存</el-button
>
</template>
<el-descriptions-item
label="工单序号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderId">
<el-input
v-model="formData.receiveOrderId"
placeholder="请输入工单序号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单受理号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderLhs">
<el-input
v-model="formData.receiveOrderLhs"
placeholder="请输入工单受理号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="操作类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="operateRemark">
<dictionary
type-code="order_operate"
v-model="formData.operateRemark"
placeholder="请选择操作类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单业务类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderServiceType">
<dictionary
:disabled="true"
type-code="order_service_type"
v-model="formData.orderServiceType"
placeholder="请选择工单业务类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备接入类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<dictionary
type-code="device_access_type"
v-model="formData.remark3"
placeholder="请选择设备接入类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="系统管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
:data="domainOptions"
filterable
clearable
check-strictly
:render-after-expand="false"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="AD编号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="adNo">
<el-input v-model="formData.adNo" placeholder="请输入AD编号" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备标识"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="devSnoOui">
<el-input
v-model="formData.devSnoOui"
placeholder="请输入设备标识"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="光口逻辑号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="userSnNo">
<el-input
v-model="formData.userSnNo"
placeholder="请输入光口逻辑号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="PPPOE账号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="pppoeAccount">
<el-input
v-model="formData.pppoeAccount"
placeholder="请输入PPPOE账号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="虚拟标志"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="dummyFlag">
<dictionary
type-code="dummy_flag"
v-model="formData.dummyFlag"
placeholder="请选择虚拟标志"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="企业管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="corporation">
<el-input
v-model="formData.corporation"
placeholder="请输入企业管理域"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="3" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>客户信息</span
>
</div>
</template>
<el-descriptions-item
label="客户名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerNameNew">
<el-input
v-model="formData.customerNameNew"
placeholder="请输入客户名称"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户地址"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerAddrNew">
<el-input
v-model="formData.customerAddrNew"
placeholder="请输入客户地址"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人信息"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="contactPersonNew">
<el-input
v-model="formData.contactPersonNew"
placeholder="请输入联系人信息"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人电话"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="phone">
<el-input
v-model="formData.phone"
placeholder="请输入联系人电话"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderCustomerKind">
<dictionary
type-code="order_custom_type"
v-model="formData.orderCustomerKind"
placeholder="请选择客户类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="备注"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark">
<el-input v-model="formData.remark" />
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="2" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>
工单业务参数信息</span
>
</div>
</template>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceName">
<el-input readonly v-model="formData.serviceName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceFlag">
<dictionary
:disabled="true"
type-code="service_flag"
v-model="formData.serviceFlag"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
</el-scrollbar>
</div>
</template>
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addTYSLZW, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
defineOptions({
name: "DeleteCloud",
inheritAttrs: false,
});
const ruleFormRef = ref<FormInstance>();
const loading = ref<boolean>(false);
const formData = ref<AddBroadbandForm>({
operateRemark: "0",
remark3: "4",
dummyFlag: "1",
orderServiceType: "1",
serviceName: "YHITV",
serviceFlag: "D",
list: [],
});
const rules = reactive<FormRules<AddBroadbandForm>>({
userSnNo: [{ required: true, message: "请填写光口逻辑号", trigger: "blur" }],
systemDomain: [
{ required: true, message: "请选择系统管理域", trigger: "blur" },
],
orderCustomerKind: [
{ required: true, message: "请选择客户类型", trigger: "blur" },
],
});
const domainOptions = ref<OptionType[]>([]);
function loadDomainOptions() {
getDomainOptions().then(({ data }) => {
domainOptions.value = data;
});
}
const loadBasicInfo = () => {
getBasicInfo().then(({ data }) => {
formData.value.receiveOrderId = data.receiveOrderId;
formData.value.receiveOrderLhs = data.receiveOrderLhs;
formData.value.systemDomain = data.systemDomain;
});
};
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
if (valid) {
confirm("确认手动提交删除TYSLZW工单吗", () => {
loading.value = true;
addTYSLZW(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;
});
});
}
});
};
onMounted(() => {
loadDomainOptions();
loadBasicInfo();
});
</script>
<style scoped>
:deep(.my-label) {
width: 60px !important;
background: var(--el-color-white) !important;
}
:deep(.el-card__body) {
padding: 10px 5px;
}
:deep(.el-form-item--default) {
margin-bottom: 0;
}
</style>

@ -0,0 +1,476 @@
<template>
<div class="app-container">
<el-scrollbar height="600">
<el-card shadow="never">
<el-form
:model="formData"
ref="ruleFormRef"
:rules="rules"
v-loading="loading"
>
<el-descriptions :column="3" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>YHITV开通工单</span
>
</div>
</template>
<template #extra>
<el-button
type="primary"
:icon="Position"
style="margin-right: 8px"
@click="submitForm(ruleFormRef)"
>保存</el-button
>
</template>
<el-descriptions-item
label="工单序号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderId">
<el-input
v-model="formData.receiveOrderId"
placeholder="请输入工单序号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单受理号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderLhs">
<el-input
v-model="formData.receiveOrderLhs"
placeholder="请输入工单受理号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="操作类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="operateRemark">
<dictionary
type-code="order_operate"
v-model="formData.operateRemark"
placeholder="请选择操作类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单业务类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderServiceType">
<dictionary
:disabled="true"
type-code="order_service_type"
v-model="formData.orderServiceType"
placeholder="请选择工单业务类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备接入类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<dictionary
type-code="device_access_type"
v-model="formData.remark3"
placeholder="请选择设备接入类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="系统管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
:data="domainOptions"
filterable
clearable
check-strictly
:render-after-expand="false"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="AD编号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="adNo">
<el-input v-model="formData.adNo" placeholder="请输入AD编号" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备标识"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="devSnoOui">
<el-input
v-model="formData.devSnoOui"
placeholder="请输入设备标识"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="光口逻辑号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="userSnNo">
<el-input
v-model="formData.userSnNo"
placeholder="请输入光口逻辑号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="PPPOE账号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="pppoeAccount">
<el-input
v-model="formData.pppoeAccount"
placeholder="请输入PPPOE账号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="虚拟标志"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="dummyFlag">
<dictionary
type-code="dummy_flag"
v-model="formData.dummyFlag"
placeholder="请选择虚拟标志"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="企业管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="corporation">
<el-input
v-model="formData.corporation"
placeholder="请输入企业管理域"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="3" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>客户信息</span
>
</div>
</template>
<el-descriptions-item
label="客户名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerNameNew">
<el-input
v-model="formData.customerNameNew"
placeholder="请输入客户名称"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户地址"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerAddrNew">
<el-input
v-model="formData.customerAddrNew"
placeholder="请输入客户地址"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人信息"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="contactPersonNew">
<el-input
v-model="formData.contactPersonNew"
placeholder="请输入联系人信息"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人电话"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="phone">
<el-input
v-model="formData.phone"
placeholder="请输入联系人电话"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderCustomerKind">
<dictionary
type-code="order_custom_type"
v-model="formData.orderCustomerKind"
placeholder="请选择客户类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="备注"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark">
<el-input v-model="formData.remark" />
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="2" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>
工单业务参数信息</span
>
</div>
</template>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceName">
<el-input readonly v-model="formData.serviceName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceFlag">
<dictionary
:disabled="true"
type-code="service_flag"
v-model="formData.serviceFlag"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="VLAN"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[0].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="参数值"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsValue">
<el-input v-model="formData.list[0].argsValue" />
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
</el-scrollbar>
</div>
</template>
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addTYSLZW, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
defineOptions({
name: "EnableCloudBox",
inheritAttrs: false,
});
const ruleFormRef = ref<FormInstance>();
const loading = ref<boolean>(false);
const formData = ref<AddBroadbandForm>({
operateRemark: "0",
remark3: "4",
dummyFlag: "1",
orderServiceType: "0",
serviceName: "YHITV",
serviceFlag: "A",
list: [{ argsName: "lan_vlan" }],
});
const rules = reactive<FormRules<AddBroadbandForm>>({
userSnNo: [{ required: true, message: "请填写光口逻辑号", trigger: "blur" }],
systemDomain: [
{ required: true, message: "请选择系统管理域", trigger: "blur" },
],
orderCustomerKind: [
{ required: true, message: "请选择客户类型", trigger: "blur" },
],
});
const domainOptions = ref<OptionType[]>([]);
const rulesParams = (): boolean => {
let ipAddressArgsValue = formData.value.list[0].argsValue;
if (ipAddressArgsValue === undefined || ipAddressArgsValue === "") {
ElMessage({
message: "请输入VLAN的参数值",
duration: 1000,
type: "error",
});
return false;
}
return true;
};
function loadDomainOptions() {
getDomainOptions().then(({ data }) => {
domainOptions.value = data;
});
}
const loadBasicInfo = () => {
getBasicInfo().then(({ data }) => {
formData.value.receiveOrderId = data.receiveOrderId;
formData.value.receiveOrderLhs = data.receiveOrderLhs;
formData.value.systemDomain = data.systemDomain;
});
};
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
let flag = rulesParams();
if (valid && flag) {
confirm("确认手动提交开通TYSLZW工单吗", () => {
loading.value = true;
addTYSLZW(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;
});
});
}
});
};
onMounted(() => {
loadDomainOptions();
loadBasicInfo();
});
</script>
<style scoped>
:deep(.my-label) {
width: 60px !important;
background: var(--el-color-white) !important;
}
:deep(.el-card__body) {
padding: 10px 5px;
}
:deep(.el-form-item--default) {
margin-bottom: 0;
}
</style>

@ -0,0 +1,23 @@
<template>
<router-view>
<template #default="{ Component, route }">
<transition
enter-active-class="animate__animated animate__fadeIn"
mode="out-in"
>
<keep-alive :include="cachedViews">
<component :is="Component" :key="route.path" />
</keep-alive>
</transition>
</template>
</router-view>
</template>
<script setup lang="ts">
import { useTagsViewStore } from "@/store";
defineOptions({
name: "CloudBox",
inheritAttrs: false,
});
const cachedViews = computed(() => useTagsViewStore().cachedViews); // ;
</script>

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -395,9 +395,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, getBasicInfo } from "@/api/broadband";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
@ -476,7 +476,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (valid && flag) {
confirm("确认手动提交删除IPTV工单吗", () => {
loading.value = true;
addBroadband(formData.value)
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -545,9 +545,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, getBasicInfo } from "@/api/broadband";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
@ -670,7 +670,7 @@ const submitForm = async (formEl: FormInstance | undefined) => {
if (valid && flag) {
confirm("确认手动提交开通IPTV工单吗", () => {
loading.value = true;
addBroadband(formData.value)
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -359,9 +359,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, addTYSLZW, getBasicInfo } from "@/api/broadband";
import { addTYSLZW, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";

@ -113,7 +113,7 @@
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
@ -383,7 +383,7 @@
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[0].argsName" />
<el-input readonly v-model="formData.list[1].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
@ -407,9 +407,9 @@
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/broadband/types";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addBroadband, addTYSLZW, getBasicInfo } from "@/api/broadband";
import { addTYSLZW, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";

@ -0,0 +1,508 @@
<template>
<div class="app-container">
<el-scrollbar height="600">
<el-card shadow="never">
<el-form
:model="formData"
ref="ruleFormRef"
:rules="rules"
v-loading="loading"
>
<el-descriptions :column="3" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备VOIP业务删除工单</span
>
</div>
</template>
<template #extra>
<el-button
type="primary"
:icon="Position"
style="margin-right: 8px"
@click="submitForm(ruleFormRef)"
>保存</el-button
>
</template>
<el-descriptions-item
label="工单序号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderId">
<el-input
v-model="formData.receiveOrderId"
placeholder="请输入工单序号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单受理号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderLhs">
<el-input
v-model="formData.receiveOrderLhs"
placeholder="请输入工单受理号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="操作类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="operateRemark">
<dictionary
type-code="order_operate"
v-model="formData.operateRemark"
placeholder="请选择操作类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单业务类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderServiceType">
<dictionary
:disabled="true"
type-code="order_service_type"
v-model="formData.orderServiceType"
placeholder="请选择工单业务类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备接入类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<dictionary
type-code="device_access_type"
v-model="formData.remark3"
placeholder="请选择设备接入类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="系统管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
:data="domainOptions"
filterable
clearable
check-strictly
:render-after-expand="false"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="AD编号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="adNo">
<el-input v-model="formData.adNo" placeholder="请输入AD编号" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备标识"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="devSnoOui">
<el-input
v-model="formData.devSnoOui"
placeholder="请输入设备标识"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="光口逻辑号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="userSnNo">
<el-input
v-model="formData.userSnNo"
placeholder="请输入光口逻辑号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="PPPOE账号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="pppoeAccount">
<el-input
v-model="formData.pppoeAccount"
placeholder="请输入PPPOE账号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="虚拟标志"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="dummyFlag">
<dictionary
type-code="dummy_flag"
v-model="formData.dummyFlag"
placeholder="请选择虚拟标志"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="企业管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="corporation">
<el-input
v-model="formData.corporation"
placeholder="请输入企业管理域"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="3" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>客户信息</span
>
</div>
</template>
<el-descriptions-item
label="客户名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerNameNew">
<el-input
v-model="formData.customerNameNew"
placeholder="请输入客户名称"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户地址"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerAddrNew">
<el-input
v-model="formData.customerAddrNew"
placeholder="请输入客户地址"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人信息"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="contactPersonNew">
<el-input
v-model="formData.contactPersonNew"
placeholder="请输入联系人信息"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人电话"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="phone">
<el-input
v-model="formData.phone"
placeholder="请输入联系人电话"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderCustomerKind">
<dictionary
type-code="order_custom_type"
v-model="formData.orderCustomerKind"
placeholder="请选择客户类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="备注"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark">
<el-input v-model="formData.remark" />
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="2" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>
工单业务参数信息</span
>
</div>
</template>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceName">
<el-input readonly v-model="formData.serviceName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceFlag">
<dictionary
:disabled="true"
type-code="service_flag"
v-model="formData.serviceFlag"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="终端语音端口号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[0].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="参数值"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsValue">
<el-select
v-model="formData.list[0].argsValue"
placeholder="请选择终端语音端口号"
>
<el-option
v-for="item in voipOption"
:label="item.label"
:value="item.value"
:key="item.value"
/>
</el-select>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
</el-scrollbar>
</div>
</template>
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
defineOptions({
name: "UpdateVoipPassword",
inheritAttrs: false,
});
const ruleFormRef = ref<FormInstance>();
const loading = ref<boolean>(false);
const formData = ref<AddBroadbandForm>({
operateRemark: "0",
remark3: "4",
dummyFlag: "1",
orderServiceType: "1",
serviceName: "voip",
serviceFlag: "D",
list: [{ argsName: "user_tid" }],
});
const rules = reactive<FormRules<AddBroadbandForm>>({
userSnNo: [{ required: true, message: "请填写光口逻辑号", trigger: "blur" }],
systemDomain: [
{ required: true, message: "请选择系统管理域", trigger: "blur" },
],
orderCustomerKind: [
{ required: true, message: "请选择客户类型", trigger: "blur" },
],
});
const domainOptions = ref<OptionType[]>([]);
const voipOption: OptionType[] = [
{ label: "语音1", value: "1" },
{ label: "语音2", value: "2" },
{ label: "语音3", value: "3" },
{ label: "语音4", value: "4" },
{ label: "语音5", value: "5" },
{ label: "语音6", value: "6" },
{ label: "语音7", value: "7" },
{ label: "语音8", value: "8" },
{ label: "语音9", value: "9" },
{ label: "语音10", value: "10" },
{ label: "语音11", value: "11" },
{ label: "语音12", value: "12" },
{ label: "语音13", value: "13" },
{ label: "语音14", value: "14" },
{ label: "语音15", value: "15" },
{ label: "语音16", value: "16" },
{ label: "语音17", value: "17" },
{ label: "语音18", value: "18" },
{ label: "语音19", value: "19" },
{ label: "语音20", value: "20" },
];
const rulesParams = (): boolean => {
let argsValue0 = formData.value.list[0].argsValue;
if (argsValue0 === undefined || argsValue0 === "") {
ElMessage({
message: "请选择终端语音端口号的参数值",
duration: 2000,
type: "error",
});
return false;
}
return true;
};
function loadDomainOptions() {
getDomainOptions().then(({ data }) => {
domainOptions.value = data;
});
}
const loadBasicInfo = () => {
getBasicInfo().then(({ data }) => {
formData.value.receiveOrderId = data.receiveOrderId;
formData.value.receiveOrderLhs = data.receiveOrderLhs;
formData.value.systemDomain = data.systemDomain;
});
};
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
let flag = rulesParams();
if (valid && flag) {
confirm("确认手动提交删除VOIP工单吗", () => {
loading.value = true;
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;
});
});
}
});
};
onMounted(() => {
loadDomainOptions();
loadBasicInfo();
});
</script>
<style scoped>
:deep(.my-label) {
width: 75px !important;
background: var(--el-color-white) !important;
}
:deep(.el-card__body) {
padding: 10px 5px;
}
:deep(.el-form-item--default) {
margin-bottom: 0;
}
</style>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,23 @@
<template>
<router-view>
<template #default="{ Component, route }">
<transition
enter-active-class="animate__animated animate__fadeIn"
mode="out-in"
>
<keep-alive :include="cachedViews">
<component :is="Component" :key="route.path" />
</keep-alive>
</transition>
</template>
</router-view>
</template>
<script setup lang="ts">
import { useTagsViewStore } from "@/store";
defineOptions({
name: "Voip",
inheritAttrs: false,
});
const cachedViews = computed(() => useTagsViewStore().cachedViews); // ;
</script>

@ -0,0 +1,479 @@
<template>
<div class="app-container">
<el-scrollbar height="600">
<el-card shadow="never">
<el-form
:model="formData"
ref="ruleFormRef"
:rules="rules"
v-loading="loading"
>
<el-descriptions :column="3" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备VOIP业务删除工单</span
>
</div>
</template>
<template #extra>
<el-button
type="primary"
:icon="Position"
style="margin-right: 8px"
@click="submitForm(ruleFormRef)"
>保存</el-button
>
</template>
<el-descriptions-item
label="工单序号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderId">
<el-input
v-model="formData.receiveOrderId"
placeholder="请输入工单序号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单受理号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderLhs">
<el-input
v-model="formData.receiveOrderLhs"
placeholder="请输入工单受理号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="操作类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="operateRemark">
<dictionary
type-code="order_operate"
v-model="formData.operateRemark"
placeholder="请选择操作类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单业务类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderServiceType">
<dictionary
:disabled="true"
type-code="order_service_type"
v-model="formData.orderServiceType"
placeholder="请选择工单业务类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备接入类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<dictionary
type-code="device_access_type"
v-model="formData.remark3"
placeholder="请选择设备接入类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="系统管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
:data="domainOptions"
filterable
clearable
check-strictly
:render-after-expand="false"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="AD编号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="adNo">
<el-input v-model="formData.adNo" placeholder="请输入AD编号" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备标识"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="devSnoOui">
<el-input
v-model="formData.devSnoOui"
placeholder="请输入设备标识"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="光口逻辑号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="userSnNo">
<el-input
v-model="formData.userSnNo"
placeholder="请输入光口逻辑号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="PPPOE账号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="pppoeAccount">
<el-input
v-model="formData.pppoeAccount"
placeholder="请输入PPPOE账号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="虚拟标志"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="dummyFlag">
<dictionary
type-code="dummy_flag"
v-model="formData.dummyFlag"
placeholder="请选择虚拟标志"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="企业管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="corporation">
<el-input
v-model="formData.corporation"
placeholder="请输入企业管理域"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="3" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>客户信息</span
>
</div>
</template>
<el-descriptions-item
label="客户名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerNameNew">
<el-input
v-model="formData.customerNameNew"
placeholder="请输入客户名称"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户地址"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerAddrNew">
<el-input
v-model="formData.customerAddrNew"
placeholder="请输入客户地址"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人信息"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="contactPersonNew">
<el-input
v-model="formData.contactPersonNew"
placeholder="请输入联系人信息"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人电话"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="phone">
<el-input
v-model="formData.phone"
placeholder="请输入联系人电话"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderCustomerKind">
<dictionary
type-code="order_custom_type"
v-model="formData.orderCustomerKind"
placeholder="请选择客户类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="备注"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark">
<el-input v-model="formData.remark" />
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="2" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>
工单业务参数信息</span
>
</div>
</template>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceName">
<el-input readonly v-model="formData.serviceName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceFlag">
<dictionary
:disabled="true"
type-code="service_flag"
v-model="formData.serviceFlag"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="终端语音端口号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[0].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="参数值"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsValue">
<el-input
v-model="formData.list[0].argsValue"
placeholder="请输入数图参数"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
</el-scrollbar>
</div>
</template>
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
defineOptions({
name: "TreeDiagram",
inheritAttrs: false,
});
const ruleFormRef = ref<FormInstance>();
const loading = ref<boolean>(false);
const formData = ref<AddBroadbandForm>({
operateRemark: "0",
remark3: "4",
dummyFlag: "1",
orderServiceType: "3",
serviceName: "voip",
serviceFlag: "M",
list: [{ argsName: "voip_digitmap" }],
});
const rules = reactive<FormRules<AddBroadbandForm>>({
userSnNo: [{ required: true, message: "请填写光口逻辑号", trigger: "blur" }],
systemDomain: [
{ required: true, message: "请选择系统管理域", trigger: "blur" },
],
orderCustomerKind: [
{ required: true, message: "请选择客户类型", trigger: "blur" },
],
});
const domainOptions = ref<OptionType[]>([]);
const rulesParams = (): boolean => {
let argsValue0 = formData.value.list[0].argsValue;
if (argsValue0 === undefined || argsValue0 === "") {
ElMessage({
message: "请输入数图参数的参数值",
duration: 2000,
type: "error",
});
return false;
}
return true;
};
function loadDomainOptions() {
getDomainOptions().then(({ data }) => {
domainOptions.value = data;
});
}
const loadBasicInfo = () => {
getBasicInfo().then(({ data }) => {
formData.value.receiveOrderId = data.receiveOrderId;
formData.value.receiveOrderLhs = data.receiveOrderLhs;
formData.value.systemDomain = data.systemDomain;
});
};
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
let flag = rulesParams();
if (valid && flag) {
confirm("确认手动提交数图修改工单吗", () => {
loading.value = true;
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;
});
});
}
});
};
onMounted(() => {
loadDomainOptions();
loadBasicInfo();
});
</script>
<style scoped>
:deep(.my-label) {
width: 75px !important;
background: var(--el-color-white) !important;
}
:deep(.el-card__body) {
padding: 10px 5px;
}
:deep(.el-form-item--default) {
margin-bottom: 0;
}
</style>

@ -0,0 +1,603 @@
<template>
<div class="app-container">
<el-scrollbar height="600">
<el-card shadow="never">
<el-form
:model="formData"
ref="ruleFormRef"
:rules="rules"
v-loading="loading"
>
<el-descriptions :column="3" border>
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>设备VOIP业务修改密码工单</span
>
</div>
</template>
<template #extra>
<el-button
type="primary"
:icon="Position"
style="margin-right: 8px"
@click="submitForm(ruleFormRef)"
>保存</el-button
>
</template>
<el-descriptions-item
label="工单序号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderId">
<el-input
v-model="formData.receiveOrderId"
placeholder="请输入工单序号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单受理号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="receiveOrderLhs">
<el-input
v-model="formData.receiveOrderLhs"
placeholder="请输入工单受理号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="操作类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="operateRemark">
<dictionary
type-code="order_operate"
v-model="formData.operateRemark"
placeholder="请选择操作类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="工单业务类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderServiceType">
<dictionary
:disabled="true"
type-code="order_service_type"
v-model="formData.orderServiceType"
placeholder="请选择工单业务类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备接入类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark3">
<dictionary
type-code="device_access_type"
v-model="formData.remark3"
placeholder="请选择设备接入类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="系统管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="systemDomain">
<el-tree-select
v-model="formData.systemDomain"
placeholder="请选择所属管理域"
:data="domainOptions"
filterable
clearable
check-strictly
:render-after-expand="false"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="AD编号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="adNo">
<el-input v-model="formData.adNo" placeholder="请输入AD编号" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="设备标识"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="devSnoOui">
<el-input
v-model="formData.devSnoOui"
placeholder="请输入设备标识"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="光口逻辑号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="userSnNo">
<el-input
v-model="formData.userSnNo"
placeholder="请输入光口逻辑号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="PPPOE账号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="pppoeAccount">
<el-input
v-model="formData.pppoeAccount"
placeholder="请输入PPPOE账号"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="虚拟标志"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="dummyFlag">
<dictionary
type-code="dummy_flag"
v-model="formData.dummyFlag"
placeholder="请选择虚拟标志"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="企业管理域"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="corporation">
<el-input
v-model="formData.corporation"
placeholder="请输入企业管理域"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="3" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>客户信息</span
>
</div>
</template>
<el-descriptions-item
label="客户名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerNameNew">
<el-input
v-model="formData.customerNameNew"
placeholder="请输入客户名称"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户地址"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="customerAddrNew">
<el-input
v-model="formData.customerAddrNew"
placeholder="请输入客户地址"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人信息"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="contactPersonNew">
<el-input
v-model="formData.contactPersonNew"
placeholder="请输入联系人信息"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="联系人电话"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="phone">
<el-input
v-model="formData.phone"
placeholder="请输入联系人电话"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="客户类型"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="orderCustomerKind">
<dictionary
type-code="order_custom_type"
v-model="formData.orderCustomerKind"
placeholder="请选择客户类型"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="备注"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="remark">
<el-input v-model="formData.remark" />
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="2" border style="margin-top: 5px">
<template #title>
<div style="display: flex; align-items: center">
<el-icon size="15"> <Grid /> </el-icon>&nbsp;<span
style="font-weight: 700; font-size: 14px; line-height: 16px"
>
工单业务参数信息</span
>
</div>
</template>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceName">
<el-input readonly v-model="formData.serviceName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="业务名称"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="serviceFlag">
<dictionary
:disabled="true"
type-code="service_flag"
v-model="formData.serviceFlag"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="终端语音端口号"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[0].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="参数值"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsValue">
<el-select
v-model="formData.list[0].argsValue"
placeholder="请选择终端语音端口号"
>
<el-option
v-for="item in voipOption"
:label="item.label"
:value="item.value"
:key="item.value"
/>
</el-select>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="用户电话号码"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[1].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="参数值"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsValue">
<el-input
v-model="formData.list[1].argsValue"
placeholder="请输入用户电话号码"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="软交换用户名"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[2].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="参数值"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsValue">
<el-input
v-model="formData.list[2].argsValue"
placeholder="请输入软交换用户名"
/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="软交换密码"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsName">
<el-input readonly v-model="formData.list[3].argsName" />
</el-form-item>
</el-descriptions-item>
<el-descriptions-item
label="参数值"
label-align="center"
align="center"
label-class-name="my-label"
class-name="my-content"
width="150px"
>
<el-form-item prop="argsValue">
<el-input
v-model="formData.list[3].argsValue"
placeholder="请输入软交换密码"
/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</el-card>
</el-scrollbar>
</div>
</template>
<script setup lang="ts">
import { Grid, Position } from "@element-plus/icons-vue";
import { AddBroadbandForm } from "@/api/craft-order/types";
import { getDomainOptions } from "@/api/domain";
import { addCraftOrder, getBasicInfo } from "@/api/craft-order";
import { FormInstance, FormRules } from "element-plus";
import { confirm } from "@/utils/confirm";
defineOptions({
name: "UpdateVoipPassword",
inheritAttrs: false,
});
const ruleFormRef = ref<FormInstance>();
const loading = ref<boolean>(false);
const formData = ref<AddBroadbandForm>({
operateRemark: "0",
remark3: "4",
dummyFlag: "1",
orderServiceType: "3",
serviceName: "voip",
serviceFlag: "M",
list: [
{ argsName: "user_tid" },
{ argsName: "sip_uri" },
{ argsName: "auth_username" },
{ argsName: "auth_password" },
],
});
const rules = reactive<FormRules<AddBroadbandForm>>({
userSnNo: [{ required: true, message: "请填写光口逻辑号", trigger: "blur" }],
systemDomain: [
{ required: true, message: "请选择系统管理域", trigger: "blur" },
],
orderCustomerKind: [
{ required: true, message: "请选择客户类型", trigger: "blur" },
],
});
const domainOptions = ref<OptionType[]>([]);
const voipOption: OptionType[] = [
{ label: "语音1", value: "1" },
{ label: "语音2", value: "2" },
{ label: "语音3", value: "3" },
{ label: "语音4", value: "4" },
{ label: "语音5", value: "5" },
{ label: "语音6", value: "6" },
{ label: "语音7", value: "7" },
{ label: "语音8", value: "8" },
{ label: "语音9", value: "9" },
{ label: "语音10", value: "10" },
{ label: "语音11", value: "11" },
{ label: "语音12", value: "12" },
{ label: "语音13", value: "13" },
{ label: "语音14", value: "14" },
{ label: "语音15", value: "15" },
{ label: "语音16", value: "16" },
{ label: "语音17", value: "17" },
{ label: "语音18", value: "18" },
{ label: "语音19", value: "19" },
{ label: "语音20", value: "20" },
];
const rulesParams = (): boolean => {
let argsValue0 = formData.value.list[0].argsValue;
if (argsValue0 === undefined || argsValue0 === "") {
ElMessage({
message: "请选择终端语音端口号的参数值",
duration: 2000,
type: "error",
});
return false;
}
let argsValue3 = formData.value.list[3].argsValue;
if (argsValue3 === undefined || argsValue3 === "") {
ElMessage({
message: "请输入软交换密码的参数值",
duration: 2000,
type: "error",
});
return false;
}
return true;
};
function loadDomainOptions() {
getDomainOptions().then(({ data }) => {
domainOptions.value = data;
});
}
const loadBasicInfo = () => {
getBasicInfo().then(({ data }) => {
formData.value.receiveOrderId = data.receiveOrderId;
formData.value.receiveOrderLhs = data.receiveOrderLhs;
formData.value.systemDomain = data.systemDomain;
});
};
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
let flag = rulesParams();
if (valid && flag) {
confirm("确认手动提交修改VOIP密码工单吗", () => {
loading.value = true;
addCraftOrder(formData.value)
.then(() => {})
.finally(() => {
loading.value = false;
});
});
}
});
};
onMounted(() => {
loadDomainOptions();
loadBasicInfo();
});
</script>
<style scoped>
:deep(.my-label) {
width: 75px !important;
background: var(--el-color-white) !important;
}
:deep(.el-card__body) {
padding: 10px 5px;
}
:deep(.el-form-item--default) {
margin-bottom: 0;
}
</style>

@ -81,7 +81,7 @@ const open = () => {
openMergeFlag.value = true;
};
defineExpose({ open });
const emit = defineEmits("success");
const emit = defineEmits(["success"]);
const submitForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {

@ -394,6 +394,6 @@ onMounted(() => {
height: 2.2em !important;
}
:deep(.el-card__body) {
padding: 10px 5px;
padding: 10px 0;
}
</style>

Loading…
Cancel
Save