|
@@ -1,86 +1,24 @@
|
|
|
<template>
|
|
|
- <el-dialog class="api-edit" v-model="showDialog" :title="`${formData.id ? '编辑设备档案' : '新增设备档案'}`" width="800px" :close-on-click-modal="false" :close-on-press-escape="false">
|
|
|
- <el-form class="inline-form" ref="formRef" :model="formData" :rules="ruleForm" label-width="120px">
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="选择产品" prop="productKey">
|
|
|
- <el-select v-model="formData.productKey" placeholder="请选择产品" class="w100" disabled>
|
|
|
- <el-option v-for="item in productData" :key="item.key" :label="item.name" :value="item.key">
|
|
|
- <span style="float: left">{{ item.name }}</span>
|
|
|
- <span style="float: right; font-size: 13px">{{ item.key }}</span>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="选择设备" prop="deviceKey">
|
|
|
- <el-select v-model="formData.deviceKey" placeholder="请选择设备" class="w100" filterable clearable @change="handleSelectionChange">
|
|
|
- <el-option v-for="item in deviceList" :key="item.key" :label="item.name" :value="item.key">
|
|
|
- <span style="float: left">{{ item.name }}</span>
|
|
|
- <span style="float: right; font-size: 13px">{{ item.key }}</span>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="设备名称" prop="deviceName">
|
|
|
- <el-input v-model.trim="formData.deviceName" placeholder="请输入设备名称" disabled />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="设备编码" prop="deviceNumber">
|
|
|
- <el-input v-model.trim="formData.deviceNumber" placeholder="请输入设备编码" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="所属区域" prop="area">
|
|
|
- <el-cascader :options="orgData" :props="{ checkStrictly: true, emitPath: false, value: 'id', label: 'name' }" placeholder="请选择区域" clearable class="w100" v-model="formData.area">
|
|
|
- <template #default="{ node, data }">
|
|
|
- <span>{{ data.name }}</span>
|
|
|
- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
|
- </template>
|
|
|
- </el-cascader>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="安装时间">
|
|
|
- <el-date-picker v-model="formData.installTime" type="date" value-format="YYYY-MM-DD" placeholder="请选择时间" class="w100" clearable />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="所属部门" prop="deptId">
|
|
|
- <el-cascader :options="deptData" :props="{ checkStrictly: true, emitPath: false, value: 'deptId', label: 'deptName' }" placeholder="请选择所属部门" clearable class="w100" v-model="formData.deptId">
|
|
|
- <template #default="{ node, data }">
|
|
|
- <span>{{ data.deptName }}</span>
|
|
|
- <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
|
- </template>
|
|
|
- </el-cascader>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="设备类型">
|
|
|
- <el-input v-model.trim="formData.deviceCategory" placeholder="请输入设备类型" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-divider content-position="left" v-if="Datalist">自定义属性</el-divider>
|
|
|
- <FromData :DataList="Datalist" @SetSaveData="SetSaveData" v-if="Datalist && Datalist.length > 0"></FromData>
|
|
|
-
|
|
|
+ <el-dialog class="api-edit" v-model="showDialog" :title="`${formData.id ? '编辑资产关系' : '新增资产关系'}`" width="400px" :close-on-click-modal="false" :close-on-press-escape="false">
|
|
|
+ <el-form class="inline-form" ref="formRef" :model="formData" :rules="ruleForm" label-width="auto">
|
|
|
+ <el-form-item label="选择角色" prop="roleId">
|
|
|
+ <el-cascader :options="roleData" :props="{
|
|
|
+ checkStrictly: true, multiple: false, emitPath: false, value: 'id', label: 'name', disabled: disabledFn
|
|
|
+ }" placeholder="请选择角色" clearable class="w100" v-model="formData.roleId">
|
|
|
+ <template #default="{ node, data }">
|
|
|
+ <span>{{ data.name }}</span>
|
|
|
+ <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
|
+ </template>
|
|
|
+ </el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="选择档案" prop="assetId" style="margin-bottom: 0;">
|
|
|
+ <el-select v-model="formData.assetId" placeholder="请选择" class="w100" filterable clearable>
|
|
|
+ <el-option v-for="item in assetList" :key="item.id" :label="item.deviceName" :value="item.id">
|
|
|
+ <!-- <span style="float: left">{{ item.name }}</span>
|
|
|
+ <span style="float: right; font-size: 13px">{{ item.key }}</span> -->
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
@@ -95,7 +33,6 @@
|
|
|
import { ref, reactive, nextTick } from 'vue';
|
|
|
import api from '/@/api/device'
|
|
|
import system from '/@/api/system';
|
|
|
-import FromData from './component/from.vue';
|
|
|
|
|
|
import { ruleRequired } from '/@/utils/validator';
|
|
|
import { ElMessage } from 'element-plus';
|
|
@@ -104,52 +41,27 @@ const emit = defineEmits(['getList']);
|
|
|
|
|
|
const showDialog = ref(false);
|
|
|
const formRef = ref();
|
|
|
-const orgData = ref();
|
|
|
-const deviceList = ref();
|
|
|
-const productData = ref();
|
|
|
-const deptData = ref();
|
|
|
-const Datalist = ref();
|
|
|
-const newData = ref([]);
|
|
|
+const assetList = ref();
|
|
|
+const roleData = ref();
|
|
|
const baseForm = {
|
|
|
id: undefined,
|
|
|
- productKey: '',
|
|
|
- deviceKey: '',
|
|
|
- deviceName: '',
|
|
|
- area: "",
|
|
|
- deviceNumber: '',
|
|
|
- deviceCategory: '',
|
|
|
- installTime: '',
|
|
|
- deptId: '',
|
|
|
- data: [],
|
|
|
-
|
|
|
+ roleId: '',
|
|
|
+ assetId: '',
|
|
|
};
|
|
|
|
|
|
|
|
|
-const SetSaveData = (data: any) => {
|
|
|
- formData.data = data;
|
|
|
-}
|
|
|
const formData = reactive({
|
|
|
...baseForm,
|
|
|
});
|
|
|
|
|
|
const ruleForm = {
|
|
|
- productKey: [ruleRequired('所属产品不能为空')],
|
|
|
- deviceName: [ruleRequired('设备名称不能为空')],
|
|
|
- deviceKey: [ruleRequired('设备不能为空')],
|
|
|
+ roleId: [ruleRequired('角色不能为空')],
|
|
|
+ assetId: [ruleRequired('档案不能为空')],
|
|
|
};
|
|
|
-const handleSelectionChange = (value: any) => {
|
|
|
- const selectedOption = deviceList.value.find(option => option.key === value);
|
|
|
- if (selectedOption) {
|
|
|
- formData.deviceName = selectedOption.name;
|
|
|
- } else {
|
|
|
- formData.deviceName = '';
|
|
|
- }
|
|
|
-}
|
|
|
|
|
|
const onSubmit = async () => {
|
|
|
await formRef.value.validate();
|
|
|
- const theApi = formData.id ? api.dev_asset.edit : api.dev_asset.add;
|
|
|
- await theApi(formData);
|
|
|
+ await api.assetRelationship.bind(formData);
|
|
|
ElMessage.success('操作成功');
|
|
|
resetForm();
|
|
|
showDialog.value = false;
|
|
@@ -158,75 +70,26 @@ const onSubmit = async () => {
|
|
|
|
|
|
const resetForm = async () => {
|
|
|
Object.assign(formData, { ...baseForm });
|
|
|
- Datalist.value = ''
|
|
|
formRef.value && formRef.value.resetFields();
|
|
|
};
|
|
|
|
|
|
-const getIdByKey = (key: string) => {
|
|
|
- for (let i = 0; i < productData.value.length; i++) {
|
|
|
- if (productData.value[i].key === key) {
|
|
|
- return productData.value[i].id;
|
|
|
- }
|
|
|
- }
|
|
|
- return null; // 如果没有找到匹配的key,则返回null(或者其他合适的值)
|
|
|
-}
|
|
|
|
|
|
const open = async (row: any, productInfo: any) => {
|
|
|
resetForm();
|
|
|
showDialog.value = true;
|
|
|
nextTick(() => {
|
|
|
- system.org.getList({ status: 1 }).then((res: any) => {
|
|
|
- res.forEach((item: any) => {
|
|
|
- item.id = item.id.toString();
|
|
|
- });
|
|
|
- orgData.value = res || [];
|
|
|
- });
|
|
|
|
|
|
- //获取 所有的产品
|
|
|
- api.product.getLists({}).then((resp: any) => {
|
|
|
- productData.value = resp.product;
|
|
|
- if (row.id) {
|
|
|
- productInfo = {
|
|
|
- id: getIdByKey(row.productKey),
|
|
|
- key: row.productKey,
|
|
|
- }
|
|
|
- }
|
|
|
- //根据产品ID获取设备列表
|
|
|
- api.device.allList({ productKey: productInfo.key }).then((resd: any) => {
|
|
|
- deviceList.value = resd.device || [];
|
|
|
- });
|
|
|
+ //获取所有的角色
|
|
|
+ system.role.getList({ status: 1 }).then((resp: any) => {
|
|
|
+ roleData.value = resp;
|
|
|
})
|
|
|
|
|
|
- //获取部门
|
|
|
- api.dept.getList({ status: -1 }).then((res: any) => {
|
|
|
- res.forEach((item: any) => {
|
|
|
- item.deptId = item.deptId.toString();
|
|
|
- });
|
|
|
- deptData.value = res || [];
|
|
|
- });
|
|
|
-
|
|
|
- if (row.id) {
|
|
|
-
|
|
|
- api.dev_asset.detail({ deviceKey: row.deviceKey }).then((resde: any) => {
|
|
|
- Object.assign(formData, { ...resde });
|
|
|
- formData.productKey = row.productKey
|
|
|
- const newArray = resde.data.map(obj => {
|
|
|
- const { name, value, ...rest } = obj;
|
|
|
- const newObj = { name, value, ...rest };
|
|
|
- newObj[name] = value ? value : '';
|
|
|
- return newObj;
|
|
|
- });
|
|
|
- Datalist.value = newArray
|
|
|
- });
|
|
|
- } else {
|
|
|
- //获取档案属性
|
|
|
- api.dev_asset_metadata.getList({ productKey: productInfo.key, pageSize: 50, pageNum: 1, status: -1, total: 0 }).then((res: any) => {
|
|
|
- const sortedArray = res.Data.sort((a, b) => a.id - b.id);
|
|
|
- Datalist.value = sortedArray || [];
|
|
|
- });
|
|
|
- formData.productKey = productInfo.key
|
|
|
+ //获取所有的档案
|
|
|
+ api.dev_asset.getList({}).then((resp: any) => {
|
|
|
+ console.log(resp)
|
|
|
+ assetList.value = resp.Data
|
|
|
+ })
|
|
|
|
|
|
- }
|
|
|
});
|
|
|
};
|
|
|
|