Răsfoiți Sursa

试验,设备进场,接口调试

iZaiZaiA 2 ani în urmă
părinte
comite
9b89ba62ff

+ 0 - 8
src/api/modules/tentative/device/approach.js

@@ -1,14 +1,6 @@
 import {httpApi} from "../../../request/httpApi";
 
 export default {
-    //分类列表
-    async getClassList(form, msg = true) {
-        return httpApi({
-            url: '/api/blade-business/device/class-list',
-            method: 'get',
-            params: form
-        }, msg);
-    },
     //分类新增或修改
     async getClassSubmit(form, msg = true) {
         return httpApi({

+ 44 - 0
src/api/modules/tentative/device/employ.js

@@ -0,0 +1,44 @@
+import {httpApi} from "../../../request/httpApi";
+
+export default {
+    //分页条件查询
+    async queryPage(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-business/device/use/page',
+            method: 'get',
+            params: form
+        }, msg);
+    },
+    //新增或修改
+    async submitForm(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-business/device/use/submit',
+            method: 'post',
+            data: form
+        }, msg);
+    },
+    //批量删除
+    async removeData(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-business/device/use/remove',
+            method: 'get',
+            params: form
+        }, msg);
+    },
+    //批量打印Pdf
+    async exportPdf(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-business/device/use/print-pdf',
+            method: 'post',
+            params: form
+        }, msg);
+    },
+    //导入数据保存
+    async samplingRecord(form, msg = true) {
+        return httpApi({
+            url: '/api/blade-business/device/use/import-batch',
+            method: 'post',
+            data: form
+        }, msg);
+    },
+}

+ 30 - 0
src/api/modules/tentative/index.js

@@ -0,0 +1,30 @@
+import {httpApi} from "../../request/httpApi";
+
+//分类列表
+export const getClassList = (form, msg = true) => httpApi({
+    url: '/api/blade-business/device/class-list',
+    method: 'get',
+    params: form
+}, msg);
+
+//项目树全加载
+export const getProjectTree = (form, msg = true) => httpApi({
+    url: '/api/blade-manager/projectInfo/tree',
+    method: 'get',
+    params: form
+}, msg);
+
+//使用-检修-根据设备分类id查询设备编号名称
+export const queryDeviceList = (form, msg = true) => httpApi({
+    url: '/api/blade-business/device/use/device-list',
+    method: 'get',
+    params: form
+}, msg);
+
+//使用-根据节点id查询样品编号名称
+export const querySampleList = (form, msg = true) => httpApi({
+    url: '/api/blade-business/device/use/sample-list',
+    method: 'get',
+    params: form
+}, msg);
+

+ 14 - 4
src/utils/tools.js

@@ -1,4 +1,4 @@
-import {toColor, clog} from "vue-utils-plus"
+import {toColor, clog, getIndex} from "vue-utils-plus"
 import {useAppStore} from "~src/store";
 const store = useAppStore()
 
@@ -32,20 +32,30 @@ export const HcLog = (name, tips, data) => {
     clog(name, tips, data, title)
 }
 
+//取数组中的值
+export const getRowsValue = (arr, key, key2, value) => {
+    if (value) {
+        const index = getIndex(arr, key, value)
+        return arr[index][key2]
+    } else {
+        return ''
+    }
+}
+
 //拼接ID
-const rowsToId = (rows) => {
+export const rowsToId = (rows) => {
     return rowsToKey(rows,'id')
 }
 
 //拼接字段
-const rowsToKey = (rows,key) => {
+export const rowsToKey = (rows,key) => {
     return rows.map((obj) => {
         return obj[key];
     }).join(",")
 }
 
 //删除提醒
-const delMessage = async () => {
+export const delMessage = async () => {
     window?.$messageBox?.alert('请谨慎考虑后,确认是否需要删除?', '删除提醒', {
         showCancelButton: true,
         confirmButtonText: '确认删除',

+ 3 - 2
src/views/data-fill/division.vue

@@ -402,10 +402,11 @@ const tableBasicData = ref([])
 
 //标记为隐蔽工程节点
 const concealedChange = async () => {
-    const { primaryKeyId } = treeItemInfo.value
+    const { primaryKeyId, isConcealedWorksNode } = treeItemInfo.value
     if (primaryKeyId) {
         const {error, code, msg} = await divisionApi.concealedWorksNnode({
-            pKeyId: primaryKeyId
+            pKeyId: primaryKeyId,
+            type: isConcealedWorksNode
         }, false)
         if (!error && code === 200) {
             window?.$message?.success(msg)

+ 8 - 2
src/views/tentative/device/approach.vue

@@ -122,7 +122,7 @@
                     </el-form-item>
                 </div>
                 <div class="hc-form-item">
-                    <el-form-item label="设备编号">
+                    <el-form-item label="设备编号" prop="deviceNumber">
                         <el-input v-model="addEditFormModel.deviceNumber"/>
                     </el-form-item>
                     <el-form-item label="精准度">
@@ -205,6 +205,7 @@ import HcDragUpload from "./components/HcDragUpload.vue"
 import approachApi from "~api/tentative/device/approach";
 import {formValidate, getArrValue} from "vue-utils-plus"
 import {getContractUserList} from "~api/other";
+import {getClassList} from "~api/tentative";
 
 //初始变量
 const useAppState = useAppStore()
@@ -247,7 +248,7 @@ const menusProps = ref({
 const menus = ref([]);
 const typeData = ref([]);
 const getClassListData = async () => {
-    const { data } = await approachApi.getClassList({
+    const { data } = await getClassList({
         contractId: contractId.value
     })
     const arr = getArrValue(data)
@@ -551,6 +552,11 @@ const addEditFormRules = {
         trigger: 'blur',
         message: "请选择设备分类"
     },
+    deviceNumber: {
+        required: true,
+        trigger: 'blur',
+        message: "请输入设备编号"
+    },
 }
 
 //新增 设备信息

+ 116 - 0
src/views/tentative/device/components/HcSelectTree.vue

@@ -0,0 +1,116 @@
+<template>
+    <el-popover :width="widths" :visible="visible" trigger="click">
+        <template #reference>
+            <div class="form-item-div" :id="uuid" @click="itemClick">
+                <div class="lable truncate" v-if="nodeId && nodeTitle">{{nodeTitle}}</div>
+                <div class="placeholder truncate" v-else>{{placeholder}}</div>
+                <HcIcon name="arrow-down-s"/>
+            </div>
+        </template>
+        <TestTree ui="hc-select-tree" :projectId="projectId" :contractId="contractId" :wbsId="wbsId" @nodeTap="testTreeClick"/>
+    </el-popover>
+</template>
+
+<script setup>
+import {ref, watch, onMounted, nextTick} from "vue";
+import {getRandom} from "vue-utils-plus"
+import TestTree from "./TestTree.vue"
+
+const props = defineProps({
+    modelValue: {
+        type: [String,Number],
+        default: ''
+    },
+    title: {
+        type: [String,Number],
+        default: ''
+    },
+    projectId: {
+        type: [String,Number],
+        default: ''
+    },
+    contractId: {
+        type: [String,Number],
+        default: ''
+    },
+    wbsId: {
+        type: [String,Number],
+        default: ''
+    },
+    placeholder: {
+        type: [String,Number],
+        default: '请选择一个树节点'
+    },
+})
+
+//变量
+const uuid = getRandom()
+const widths = ref(266)
+const nodeId = ref(props.modelValue)
+const nodeTitle = ref(props.title)
+
+const projectId = ref(props.projectId);
+const contractId = ref(props.contractId);
+const wbsId = ref(props.wbsId);
+
+const visible = ref(false)
+
+//加载完成
+nextTick(() => {
+    widths.value = document.getElementById(uuid).clientWidth - 20
+})
+
+//监听
+watch(() => [
+    props.modelValue,
+    props.title,
+    props.projectId,
+    props.contractId,
+    props.wbsId,
+], ([val, title, pid, cid, wbs_id]) => {
+    nodeId.value = val
+    nodeTitle.value = title
+    projectId.value = pid
+    contractId.value = cid
+    wbsId.value = wbs_id
+})
+
+//显示弹窗
+const itemClick = () => {
+    visible.value = true
+}
+
+//事件
+const emit = defineEmits(['update:modelValue', 'change'])
+
+//树被点击
+const testTreeClick = (data) => {
+    const {title, primaryKeyId} = data
+    nodeTitle.value = title
+    nodeId.value = primaryKeyId
+    visible.value = false
+    emit('update:modelValue', primaryKeyId)
+    emit('change', data)
+}
+</script>
+
+<style lang="scss" scoped>
+.form-item-div {
+    background-color: white;
+    cursor: pointer;
+    .lable, .placeholder {
+        flex: 1;
+    }
+    .placeholder {
+        color: #a9abb2;
+    }
+}
+</style>
+<style lang="scss">
+.form-item-div .hc-icon-i {
+    color: #a7abb2;
+}
+.hc-select-tree.el-tree.hc-tree-node {
+    margin-left: -12px;
+}
+</style>

+ 105 - 0
src/views/tentative/device/components/TestTree.vue

@@ -0,0 +1,105 @@
+<template>
+    <ElTree class="hc-tree-node tree-line" :class="ui" ref="treeRef" :props="treeProps" :data="treeData"
+            highlight-current accordion node-key="primaryKeyId" @node-click="treeClick" :indent="0">
+        <template #default="{ node, data }">
+            <div class="data-custom-tree-node" :id="`${idPrefix}${data['primaryKeyId']}`">
+                <div class="label">{{ node.label }}</div>
+            </div>
+        </template>
+    </ElTree>
+</template>
+
+<script setup>
+import {ref,nextTick,watch} from "vue";
+import {getArrValue} from "vue-utils-plus"
+import {getProjectTree} from "~api/tentative";
+
+//参数
+const props = defineProps({
+    projectId: {
+        type: [String,Number],
+        default: ''
+    },
+    contractId: {
+        type: [String,Number],
+        default: ''
+    },
+    wbsId: {
+        type: [String,Number],
+        default: ''
+    },
+    wbsType: {
+        type: [String,Number],
+        default: ''
+    },
+    idPrefix: {
+        type: String,
+        default: 'test-tree1-'
+    },
+    ui: {
+        type: String,
+        default: ''
+    },
+})
+
+//变量
+const treeRef = ref(null)
+const treeProps = ref({
+    label: 'title',
+    children: 'children',
+    isLeaf: 'hasChildren'
+})
+const treeData = ref([])
+const projectId = ref(props.projectId);
+const contractId = ref(props.contractId);
+const wbsId = ref(props.wbsId);
+//const tenantId = ref(props.tenantId);
+
+//监听
+watch(() => [
+    props.projectId,
+    props.contractId,
+    props.wbsId,
+], ([pid, cid, wbs_id]) => {
+    projectId.value = pid
+    contractId.value = cid
+    wbsId.value = wbs_id
+})
+
+//加载中
+nextTick(() => {
+    getTreeData()
+})
+
+//获取数据
+const isLoading = ref(false)
+const getTreeData = async () => {
+    isLoading.value = true
+    const { data } = await getProjectTree({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        wbsId: wbsId.value,
+    })
+    //处理数据
+    isLoading.value = false
+    treeData.value = getArrValue(data)
+    //最后一个,执行点击
+    /*if (clickKey) {
+        await nextTick(() => {
+            document.getElementById(`${idPrefix.value}${clickKey}`)?.click()
+        })
+    }*/
+}
+
+//事件
+const emit = defineEmits(['nodeTap'])
+
+//节点被点击
+const treeClick = async (data) => {
+    emit('nodeTap', data)
+}
+</script>
+
+<style lang="scss" scoped>
+@import "../../../../styles/app/tree.scss";
+</style>

+ 173 - 82
src/views/tentative/device/employ.vue

@@ -6,7 +6,7 @@
             </div>
             <div class="hc-menu-contents-box">
                 <el-scrollbar>
-                    <HcMenuSimple :datas="menus" :keys="menuKey" @change="menuChange"/>
+                    <HcMenuSimple :props="menusProps" :datas="menus" :keys="menuKey" @change="menuChange"/>
                 </el-scrollbar>
             </div>
             <!--左右拖动-->
@@ -72,76 +72,58 @@
             <el-form ref="addEditFormRef" :model="addEditFormModel" :rules="addEditFormRules" label-width="auto" size="large">
                 <div class="hc-form-item">
                     <el-form-item label="设备分类">
-                        <el-select v-model="addEditFormModel.key1" block>
-                            <el-option v-for="item in menus" :label="item.label" :value="item.key"/>
+                        <el-select :disabled="deviceFormLoading" v-model="addEditFormModel.deviceClassId" block @change="deviceClassIdChange">
+                            <el-option v-for="item in typeData" :label="item.className" :value="item.id"/>
                         </el-select>
                     </el-form-item>
                     <el-form-item label="检测项目">
-                        <el-select v-model="addEditFormModel.key2" block>
-                            <el-option label="土工" value="1"/>
-                            <el-option label="水泥" value="2"/>
-                        </el-select>
+                        <HcSelectTree v-model="addEditFormModel.nodeId" :title="addEditFormModel.nodeName" :projectId="projectId" :contractId="contractId" :wbsId="projectInfo?.referenceWbsTemplateId" @change="HcSelectTreeChange"/>
                     </el-form-item>
                 </div>
                 <div class="hc-form-item">
-                    <el-form-item class="flex-1" label="设备编号" style="margin-right: 24px;">
-                        <el-select v-model="addEditFormModel.key3" block>
-                            <el-option label="1" value="1"/>
-                            <el-option label="2" value="2"/>
+                    <el-form-item label="设备编号">
+                        <el-select :disabled="deviceFormLoading" v-model="addEditFormModel.deviceNumber" block @change="deviceNumberChange">
+                            <el-option v-for="item in deviceFormSelectData" :label="item.deviceNumber" :value="item.deviceNumber"/>
                         </el-select>
                     </el-form-item>
-                    <div class="flex flex-1">
-                        <el-form-item class="flex-1" label="样品名称" style="margin-right: 0;">
-                            <el-select v-model="addEditFormModel.key4" block>
-                                <el-option label="名称1" value="1"/>
-                                <el-option label="名称2" value="2"/>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item class="w-32" no-label style="margin-left: 10px; flex: initial;">
-                            <el-input v-model="addEditFormModel.key5" block/>
-                        </el-form-item>
-                    </div>
+                    <el-form-item label="样品名称">
+                        <hcAutoComplete v-model="addEditFormModel.materialName" :datas="nodeMaterialSelectData" keys="materialName" placeholder="请选择或输入样品名称"/>
+                    </el-form-item>
                 </div>
                 <div class="hc-form-item">
-                    <el-form-item class="flex-1" label="设备名称" style="margin-right: 24px;">
-                        <el-select v-model="addEditFormModel.key6" block>
-                            <el-option label="名称1" value="1"/>
-                            <el-option label="名称2" value="2"/>
+                    <el-form-item label="设备名称">
+                        <el-select :disabled="deviceFormLoading" v-model="addEditFormModel.deviceName" block @change="deviceNameChange">
+                            <el-option v-for="item in deviceFormSelectData" :label="item.deviceName" :value="item.deviceName"/>
                         </el-select>
                     </el-form-item>
-                    <div class="flex flex-1">
-                        <el-form-item class="flex-1" label="样品编号" style="margin-right: 0;">
-                            <el-select v-model="addEditFormModel.ke7" block>
-                                <el-option label="编号1" value="1"/>
-                                <el-option label="编号2" value="2"/>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item class="w-32" no-label style="margin-left: 10px; flex: initial;">
-                            <el-input v-model="addEditFormModel.key8" block/>
-                        </el-form-item>
-                    </div>
+                    <el-form-item label="样品编号">
+                        <hcAutoComplete v-model="addEditFormModel.specificationNumber" :datas="nodeMaterialSelectData" keys="specificationNumber" placeholder="请选择或输入样品编号"/>
+                    </el-form-item>
                 </div>
                 <div class="hc-form-item">
-                    <el-form-item label="使用日期(起)">
-                        <el-date-picker type="date" v-model="addEditFormModel.key9" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
+                    <el-form-item label="设备型号">
+                        <el-input v-model="addEditFormModel.deviceModel"/>
                     </el-form-item>
-                    <el-form-item label="使用日期(止)" prop="key10">
-                        <el-date-picker type="date" v-model="addEditFormModel.key10" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
+                    <el-form-item label="出厂编号">
+                        <el-input v-model="addEditFormModel.factoryNumber"/>
                     </el-form-item>
                 </div>
-                <div class="flex">
-                    <el-form-item class="flex-1" label="使用人员" style="margin-right: 16px;">
-                        <el-select v-model="addEditFormModel.ke11" block>
-                            <el-option label="人员1" value="1"/>
-                            <el-option label="人员2" value="2"/>
-                        </el-select>
+                <div class="hc-form-item">
+                    <el-form-item label="使用日期(起)">
+                        <el-date-picker type="date" v-model="addEditFormModel.startDate" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
                     </el-form-item>
-                    <el-form-item class="flex-1" no-label style="margin-left: 5px;">
-                        <el-input v-model="addEditFormModel.key12" block/>
+                    <el-form-item label="使用日期(止)">
+                        <el-date-picker type="date" v-model="addEditFormModel.endDate" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
+                    </el-form-item>
+                </div>
+                <div class="hc-form-item">
+                    <el-form-item label="使用人员">
+                        <hcAutoComplete v-model="addEditFormModel.managerName" :datas="userListData" keys="userName" placeholder="请选择或输入使用人员名称"/>
                     </el-form-item>
+                    <el-form-item/>
                 </div>
                 <el-form-item label="备注">
-                    <el-input v-model="addEditFormModel.desc" type="textarea" placeholder="备注" :autosize="{ minRows: 3}"/>
+                    <el-input v-model="addEditFormModel.remarks" type="textarea" placeholder="备注" :autosize="{ minRows: 3}"/>
                 </el-form-item>
             </el-form>
         </HcDialog>
@@ -165,13 +147,20 @@
 <script setup>
 import {ref, onMounted, watch} from "vue";
 import {useAppStore} from "~src/store";
-import {getArrValue, getIndex} from "vue-utils-plus"
 import HcDragUpload from "./components/HcDragUpload.vue"
+import HcSelectTree from "./components/HcSelectTree.vue"
+import {getClassList, queryDeviceList, querySampleList} from "~api/tentative";
+import {getContractUserList} from "~api/other";
+import {formValidate, getArrValue} from "vue-utils-plus"
+import dataApi from "~api/tentative/device/employ";
+import approachApi from "~api/tentative/device/approach";
+import {getRowsValue} from "~uti/tools";
 
 //初始变量
 const useAppState = useAppStore()
 const projectId = ref(useAppState.getProjectId);
 const contractId = ref(useAppState.getContractId);
+const projectInfo = ref(useAppState.getProjectInfo);
 const isCollapse = ref(useAppState.getCollapse)
 
 //监听
@@ -183,36 +172,63 @@ watch(() => [
 
 //渲染完成
 onMounted(() => {
-
+    getClassListData()
+    getTableData()
+    getUserListData()
 })
 
+
+//获取用户列表
+const userListData = ref([])
+const getUserListData = async () => {
+    const { data } = await getContractUserList({
+        contractId: contractId.value
+    })
+    userListData.value = getArrValue(data)
+}
+
 //左侧菜单
-const menuKey = ref('all')
+const menuKey = ref('0')
 const menuItem = ref({})
-const menus = ref([
-    {key: 'all', label: '全部'},
-    {key: 'key1', label: '力学室'},
-    {key: 'key2', label: '集料室'},
-    {key: 'key3', label: '水土室'},
-    {key: 'key4', label: '水泥室'},
-]);
+const menusProps = ref({
+    key: 'id',
+    label: 'className'
+})
+//获取菜单数据
+const menus = ref([]);
+const typeData = ref([]);
+const getClassListData = async () => {
+    const { data } = await getClassList({
+        contractId: contractId.value
+    })
+    const arr = getArrValue(data)
+    typeData.value = arr
+    menus.value = [{id: '0', className: '全部', isNoContextMenu: true}, ...arr]
+}
+
 //菜单被点击
 const menuChange = (item) => {
     menuItem.value = item
-    menuKey.value = item?.key
+    menuKey.value = item?.id
+    searchForm.value.deviceClassId = item?.id
+    searchForm.value.current = 1;
+    getTableData()
 }
 
 //搜索表单
 const searchForm = ref({
-    betweenTime: null, queryValue: null,
+    deviceClassId: '', startTime: null, endTime: null, queryValue: null,
     current: 1, size: 20, total: 0
 })
 
 //日期时间被选择
 const betweenTime = ref(null)
-const betweenTimeUpdate = ({arr,query}) => {
+const betweenTimeUpdate = ({arr}) => {
     betweenTime.value = arr
-    searchForm.value.betweenTime = query
+    if (arr.length > 0) {
+        searchForm.value.startTime = arr[0]
+        searchForm.value.endTime = arr[1]
+    }
 }
 
 //回车搜索
@@ -236,36 +252,49 @@ const pageChange = ({current, size}) => {
     getTableData()
 }
 
+
 //表格数据
 const tableRef = ref(null)
 const tableColumn = ref([
-    {key:'key1', name: '设备名称'},
-    {key:'key2', name: '设备分类'},
-    {key:'key3', name: '设备编号'},
-    {key:'key4', name: '设备型号'},
-    {key:'key5', name: '出厂编号'},
-    {key:'key6', name: '使用日期(起)'},
-    {key:'key7', name: '使用日期(止)'},
-    {key:'key8', name: '检测试验项目'},
-    {key:'key9', name: '样品编号'},
-    {key:'key10', name: '样品名称'},
-    {key:'key11', name: '使用人'},
-    {key:'key12', name: '备注'},
+    {key:'deviceName', name: '设备名称'},
+    {key:'deviceClassName', name: '设备分类'},
+    {key:'deviceNumber', name: '设备编号'},
+    {key:'deviceModel', name: '设备型号'},
+    {key:'factoryNumber', name: '出厂编号'},
+    {key:'startDate', name: '使用日期(起)'},
+    {key:'endDate', name: '使用日期(止)'},
+    {key:'nodeName', name: '检测试验项目'},
+    {key:'specificationNumber', name: '样品编号'},
+    {key:'materialName', name: '样品名称'},
+    {key:'managerName', name: '使用人'},
+    {key:'remarks', name: '备注'},
 ])
-const tableLoading = ref(false)
 const tableData = ref([])
 
 //获取数据
-const getTableData = () => {
-
+const tableLoading = ref(false)
+const getTableData = async () => {
+    tableLoading.value = true
+    const { error, code, data } = await dataApi.queryPage({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        ...searchForm.value,
+    })
+    //处理数据
+    tableLoading.value = false
+    if (!error && code === 200) {
+        tableData.value = getArrValue(data['records'])
+        searchForm.value.total = data.total || 0
+    } else {
+        tableData.value = []
+        searchForm.value.total = 0
+    }
 }
 
 //多选
 const tableCheckedKeys = ref([]);
 const tableSelection = (rows) => {
-    tableCheckedKeys.value = rows.filter((item) => {
-        return (item??'') !== '';
-    })
+    tableCheckedKeys.value = rows
 }
 
 //删除分类
@@ -344,6 +373,68 @@ const addEditFormRules = {
     },
 }
 
+//分类被选择
+const deviceFormLoading = ref(false)
+const deviceFormSelectData = ref([])
+const deviceClassIdChange = async (val) => {
+    deviceFormLoading.value = true
+    const {data} = await queryDeviceList({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        deviceClassId: val
+    })
+    //处理数据
+    const records = getArrValue(data)
+    deviceFormSelectData.value = records
+    if (records.length > 0) {
+        addEditFormModel.value.deviceNumber = records[0].deviceNumber
+        addEditFormModel.value.deviceName = records[0].deviceName
+    } else {
+        addEditFormModel.value.deviceNumber = ''
+        addEditFormModel.value.deviceName = ''
+    }
+    deviceFormLoading.value = false;
+}
+//设备编号
+const deviceNumberChange = (val) => {
+    addEditFormModel.value.deviceName = getRowsValue(deviceFormSelectData.value, 'deviceNumber', 'deviceName', val)
+}
+//设备名称
+const deviceNameChange = (val) => {
+    addEditFormModel.value.deviceNumber = getRowsValue(deviceFormSelectData.value, 'deviceName', 'deviceNumber', val)
+}
+
+//检测项目被选择
+const HcSelectTreeChange = ({title, primaryKeyId}) => {
+    addEditFormModel.value.nodeName = title
+    addEditFormModel.value.nodeId = primaryKeyId
+    nodeMaterialChange(primaryKeyId)
+}
+
+//分类被选择
+const nodeMaterialLoading = ref(false)
+const nodeMaterialSelectData = ref([])
+const nodeMaterialChange = async (val) => {
+    nodeMaterialLoading.value = true
+    const {data} = await querySampleList({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        nodeId: val
+    })
+    //处理数据
+    const records = getArrValue(data)
+    nodeMaterialSelectData.value = records
+    if (records.length > 0) {
+        addEditFormModel.value.specificationNumber = records[0].specificationNumber
+        addEditFormModel.value.materialName = records[0].materialName
+    } else {
+        addEditFormModel.value.specificationNumber = ''
+        addEditFormModel.value.materialName = ''
+    }
+    nodeMaterialLoading.value = false;
+}
+
+
 //新增/编辑 保存
 const addEditFormLoading = ref(false)
 const addEditFormClick = () => {

+ 9 - 1
src/views/tentative/material/components/TestTree.vue

@@ -43,6 +43,10 @@ const props = defineProps({
         type: [String,Number],
         default: ''
     },
+    wbsType: {
+        type: [String,Number],
+        default: ''
+    },
     autoExpandKeys: {
         type: Array,
         default: () => ([])
@@ -69,6 +73,7 @@ const projectId = ref(props.projectId);
 const contractId = ref(props.contractId);
 const wbsTempId = ref(props.wbsTempId);
 const tenantId = ref(props.tenantId);
+const wbsType = ref(props.wbsType);
 const idPrefix = ref(props.idPrefix);
 
 //监听
@@ -79,13 +84,15 @@ watch(() => [
     props.wbsTempId,
     props.tenantId,
     props.idPrefix,
-], ([expandKeys, UserProjectId, UserContractId, UserWbsTempId, UserTenantId, UserIdPrefix]) => {
+    props.wbsType,
+], ([expandKeys, UserProjectId, UserContractId, UserWbsTempId, UserTenantId, UserIdPrefix, wbs_type]) => {
     TreeExpandKey.value = expandKeys
     projectId.value = UserProjectId
     contractId.value = UserContractId
     wbsTempId.value = UserWbsTempId
     tenantId.value = UserTenantId
     idPrefix.value = UserIdPrefix
+    wbsType.value = wbs_type
 })
 
 //事件
@@ -104,6 +111,7 @@ const ElTreeLoadNode = async (node, resolve) => {
         tenantId: tenantId.value,
         projectId: projectId.value,
         parentId,
+        wbsType: wbsType.value
     })
     //处理数据
     if (!error && code === 200) {

+ 1 - 1
src/views/tentative/material/sampling.vue

@@ -12,7 +12,7 @@
             </div>
             <div class="hc-tree-box">
                 <el-scrollbar>
-                    <TestTree :autoExpandKeys="treeAutoExpandKeys" :projectId="projectId" :wbsTempId="projectInfo?.referenceWbsTemplateId" :tenantId="userInfo?.tenant_id" @nodeTap="wbsElTreeClick"/>
+                    <TestTree :autoExpandKeys="treeAutoExpandKeys" :projectId="projectId" :wbsTempId="projectInfo?.referenceWbsTemplateId" :wbsType="projectInfo?.wbsType" :tenantId="userInfo?.tenant_id" @nodeTap="wbsElTreeClick"/>
                 </el-scrollbar>
             </div>
             <!--左右拖动-->