|
@@ -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 = () => {
|