Selaa lähdekoodia

试验,设备使用,导入

iZaiZaiA 2 vuotta sitten
vanhempi
commit
b7960a6c5b

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

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

+ 0 - 1
src/views/tentative/device/employ.vue

@@ -153,7 +153,6 @@ import {getContractUserList} from "~api/other";
 import {formValidate, getArrValue} from "vue-utils-plus"
 import dataApi from "~api/tentative/device/employ";
 import {getRowsValue, rowsToId} from "~uti/tools";
-import approachApi from "~api/tentative/device/approach";
 
 //初始变量
 const useAppState = useAppStore()

+ 196 - 63
src/views/tentative/device/overhaul.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>
             <!--左右拖动-->
@@ -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()
+        }
+    }
 }
 
 //下载导入模板