|
@@ -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>
|
|
|
<!--左右拖动-->
|
|
@@ -22,19 +22,19 @@
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_device_overhaul_edit">
|
|
|
- <el-button hc-btn @click="editFormModalClick">
|
|
|
+ <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" @click="editFormModalClick">
|
|
|
<HcIcon name="edit"/>
|
|
|
<span>编辑</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_device_overhaul_del">
|
|
|
- <el-button hc-btn @click="delNodeModalClick">
|
|
|
+ <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" @click="delNodeModalClick">
|
|
|
<HcIcon name="delete-bin-2"/>
|
|
|
<span>删除</span>
|
|
|
</el-button>
|
|
|
</HcTooltip>
|
|
|
<HcTooltip keys="tentative_device_overhaul_printer">
|
|
|
- <el-button hc-btn>
|
|
|
+ <el-button hc-btn :disabled="tableCheckedKeys.length <= 0" :loading="printerLoading" @click="printerClick">
|
|
|
<HcIcon name="printer"/>
|
|
|
<span>打印</span>
|
|
|
</el-button>
|
|
@@ -72,44 +72,37 @@
|
|
|
<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-date-picker type="date" v-model="addEditFormModel.key2" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
|
|
|
+ <el-date-picker type="date" v-model="addEditFormModel.overhaulDate" class="block" value-format="YYYY-MM-DD" :clearable="false"/>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<div class="hc-form-item">
|
|
|
<el-form-item label="设备编号">
|
|
|
- <el-select v-model="addEditFormModel.key3" block>
|
|
|
- <el-option label="1" value="1"/>
|
|
|
- <el-option label="2" value="2"/>
|
|
|
+ <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>
|
|
|
- <el-form-item label="设备名称">
|
|
|
- <el-select v-model="addEditFormModel.ke4" block>
|
|
|
- <el-option label="名称1" value="1"/>
|
|
|
- <el-option label="名称2" value="2"/>
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="维修/检定人">
|
|
|
+ <hcAutoComplete v-model="addEditFormModel.managerName" :datas="userListData" keys="userName" placeholder="请选择或输入维修/检定人"/>
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
<div class="hc-form-item">
|
|
|
- <el-form-item label="维修/检定人">
|
|
|
- <el-select v-model="addEditFormModel.key5" 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>
|
|
|
- <el-form-item no-label>
|
|
|
- <el-input v-model="addEditFormModel.key6" block/>
|
|
|
- </el-form-item>
|
|
|
+ <el-form-item/>
|
|
|
</div>
|
|
|
<el-form-item label="维修/检定内容">
|
|
|
- <el-input v-model="addEditFormModel.desc" type="textarea" :autosize="{ minRows: 3}"/>
|
|
|
+ <el-input v-model="addEditFormModel.overhaulText" type="textarea" :autosize="{ minRows: 3}"/>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="备注">
|
|
|
- <el-input v-model="addEditFormModel.desc1" type="textarea" :autosize="{ minRows: 3}"/>
|
|
|
+ <el-input v-model="addEditFormModel.remarks" type="textarea" :autosize="{ minRows: 3}"/>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</HcDialog>
|
|
@@ -132,8 +125,13 @@
|
|
|
<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 {getClassList, queryDeviceList, querySampleList} from "~api/tentative";
|
|
|
+import {getContractUserList} from "~api/other";
|
|
|
+import {formValidate, getArrValue} from "vue-utils-plus"
|
|
|
+import dataApi from "~api/tentative/device/overhaul";
|
|
|
+import {getRowsValue, rowsToId} from "~uti/tools";
|
|
|
+
|
|
|
|
|
|
//初始变量
|
|
|
const useAppState = useAppStore()
|
|
@@ -150,36 +148,63 @@ watch(() => [
|
|
|
|
|
|
//渲染完成
|
|
|
onMounted(() => {
|
|
|
- //window?.$HcLog('name','tips','data')
|
|
|
+ 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]
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//回车搜索
|
|
@@ -206,33 +231,45 @@ const pageChange = ({current, size}) => {
|
|
|
//表格数据
|
|
|
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:'key12', name: '备注'},
|
|
|
+ {key:'deviceName', name: '设备名称'},
|
|
|
+ {key:'deviceClassName', name: '设备分类'},
|
|
|
+ {key:'deviceNumber', name: '设备编号'},
|
|
|
+ {key:'deviceModel', name: '设备型号'},
|
|
|
+ {key:'factoryNumber', name: '出厂编号'},
|
|
|
+ {key:'overhaulDate', name: '维修/检定日期'},
|
|
|
+ {key:'overhaulText', name: '维修/检定内容'},
|
|
|
+ {key:'managerName', name: '维修/检定人'},
|
|
|
+ {key:'remarks', name: '备注'},
|
|
|
])
|
|
|
const tableLoading = ref(false)
|
|
|
-const tableData = ref([])
|
|
|
|
|
|
//获取数据
|
|
|
-const getTableData = () => {
|
|
|
-
|
|
|
+const tableData = ref([])
|
|
|
+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
|
|
|
}
|
|
|
|
|
|
-//删除分类
|
|
|
+//删除
|
|
|
const delNodeModalClick = () => {
|
|
|
window?.$messageBox?.alert('请谨慎考虑后,确认是否需要删除?', '删除提醒', {
|
|
|
showCancelButton: true,
|
|
@@ -241,12 +278,51 @@ const delNodeModalClick = () => {
|
|
|
type: 'warning',
|
|
|
callback: (action) => {
|
|
|
if (action === 'confirm') {
|
|
|
- //removeContractTreeNode()
|
|
|
+ tableRemoveData()
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+//批量删除
|
|
|
+const tableRemoveData = async () => {
|
|
|
+ const rows = tableCheckedKeys.value
|
|
|
+ if (rows.length > 0 ) {
|
|
|
+ const ids = rowsToId(rows)
|
|
|
+ //删除请求
|
|
|
+ const { error, code } = await dataApi.removeData({
|
|
|
+ contractId: contractId.value,
|
|
|
+ ids: ids,
|
|
|
+ })
|
|
|
+ //处理数据
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success('操作成功')
|
|
|
+ searchClick()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+//打印
|
|
|
+const printerLoading = ref(false)
|
|
|
+const printerClick = async () => {
|
|
|
+ const rows = tableCheckedKeys.value
|
|
|
+ if (rows.length > 0 ) {
|
|
|
+ printerLoading.value = true
|
|
|
+ const ids = rowsToId(rows)
|
|
|
+ //删除请求
|
|
|
+ const { error, code, data } = await dataApi.exportPdf({
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value,
|
|
|
+ ids: ids,
|
|
|
+ })
|
|
|
+ //处理数据
|
|
|
+ printerLoading.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window.open(data,'_blank')
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
//导入
|
|
|
const importModal = ref(false)
|
|
@@ -273,23 +349,30 @@ const tableImportData = ref([])
|
|
|
//多选
|
|
|
const tableImportKeys = ref([]);
|
|
|
const tableImportSelection = (rows) => {
|
|
|
- tableImportKeys.value = rows.filter((item) => {
|
|
|
- return (item??'') !== '';
|
|
|
- })
|
|
|
+ tableImportKeys.value = rows
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-//新增/编辑 材料进场
|
|
|
+//新增
|
|
|
const addEditFormModal = ref(false)
|
|
|
const addFormModalClick = () => {
|
|
|
+ addEditFormModel.value = {}
|
|
|
addEditFormModal.value = true
|
|
|
}
|
|
|
+//编辑
|
|
|
const editFormModalClick = () => {
|
|
|
- addEditFormModal.value = true
|
|
|
+ const keys = tableCheckedKeys.value
|
|
|
+ if (keys.length === 1) {
|
|
|
+ addEditFormModel.value = keys[0]
|
|
|
+ addEditFormModal.value = true
|
|
|
+ } else if (keys.length > 1) {
|
|
|
+ window?.$message?.warning('只能选择一条数据编辑')
|
|
|
+ }
|
|
|
}
|
|
|
+//关闭
|
|
|
const addEditFormModalClose = () => {
|
|
|
addEditFormModal.value = false
|
|
|
+ addEditFormModel.value = {}
|
|
|
}
|
|
|
|
|
|
//新增/编辑 表单
|
|
@@ -308,10 +391,60 @@ 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
|
|
|
+ addEditFormModel.value.deviceInfoId = records[0].id
|
|
|
+ } else {
|
|
|
+ addEditFormModel.value.deviceNumber = ''
|
|
|
+ addEditFormModel.value.deviceName = ''
|
|
|
+ addEditFormModel.value.deviceInfoId = ''
|
|
|
+ }
|
|
|
+ deviceFormLoading.value = false;
|
|
|
+}
|
|
|
+//设备编号
|
|
|
+const deviceNumberChange = (val) => {
|
|
|
+ addEditFormModel.value.deviceName = getRowsValue(deviceFormSelectData.value, 'deviceNumber', 'deviceName', val)
|
|
|
+ addEditFormModel.value.deviceInfoId = getRowsValue(deviceFormSelectData.value, 'deviceNumber', 'id', val)
|
|
|
+}
|
|
|
+//设备名称
|
|
|
+const deviceNameChange = (val) => {
|
|
|
+ addEditFormModel.value.deviceNumber = getRowsValue(deviceFormSelectData.value, 'deviceName', 'deviceNumber', val)
|
|
|
+ addEditFormModel.value.deviceInfoId = getRowsValue(deviceFormSelectData.value, 'deviceName', 'id', val)
|
|
|
+}
|
|
|
+
|
|
|
//新增/编辑 保存
|
|
|
const addEditFormLoading = ref(false)
|
|
|
-const addEditFormClick = () => {
|
|
|
-
|
|
|
+const addEditFormClick = async () => {
|
|
|
+ const validate = await formValidate(addEditFormRef.value)
|
|
|
+ if (validate) {
|
|
|
+ addEditFormLoading.value = true
|
|
|
+ const { error, code } = await dataApi.submitForm({
|
|
|
+ ...addEditFormModel.value,
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value
|
|
|
+ })
|
|
|
+ //处理数据
|
|
|
+ addEditFormLoading.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window?.$message?.success('操作成功')
|
|
|
+ addEditFormModal.value = false
|
|
|
+ await getTableData()
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//下载导入模板
|