Преглед изворни кода

修复部门查询sql报错;新增资产条码展示资产信息;

LinWuTai пре 1 година
родитељ
комит
1d5d6d6287

+ 5 - 5
lab-admin/src/main/resources/application-druid.yml

@@ -6,13 +6,13 @@ spring:
         druid:
             # 主库数据源
             master:
-                username: root
                 # 本地
-                url: jdbc:mysql://127.0.0.1:3306/lab_equipment_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                password: Gzpj$100
+                # url: jdbc:mysql://127.0.0.1:3306/lab_equipment_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                # password: Gzpj$100
                 # 远程
-                # url: jdbc:mysql://114.116.114.108:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                # password: ydl@123456
+                url: jdbc:mysql://127.0.0.1:3306/lab_equipment_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                password: mysql@123456
+                username: root
             # 从库数据源
             slave:
                 # 从数据源开关/默认关闭

+ 3 - 3
lab-admin/src/main/resources/application.yml

@@ -18,7 +18,7 @@ ruoyi:
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8080
-  port: 8080
+  port: 16061
   servlet:
     # 应用的访问路径
     context-path: /
@@ -77,11 +77,11 @@ spring:
     # 地址
     host: 127.0.0.1
     # 密码
-    password:
+    password: redis@123456
     # 端口,默认为6379
     port: 6379
     # 数据库索引
-    database: 1
+    database: 5
     # 连接超时时间
     timeout: 10s
     lettuce:

+ 37 - 3
lab-ui/src/views/asset/asset/index.vue

@@ -79,7 +79,8 @@
           :options="deptList"
           :show-all-levels="false"
           filterable
-          clearable :props="{value: 'id'}"
+          clearable
+          :props="{value: 'id', checkStrictly: true, emitPath: false}"
           placeholder="请选择使用部门"
         ></el-cascader>
       </el-form-item>
@@ -209,7 +210,11 @@
     <el-table v-loading="loading" :data="assetList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="编号" align="center" prop="id" />
-      <el-table-column label="条形码" align="center" prop="barCode" />
+      <el-table-column label="条形码" align="center" prop="barCode" >
+        <template slot-scope="scope">
+          <a style="color: #409EFF" @click="openMore(scope.row)">{{scope.row.barCode}}</a>
+        </template>
+      </el-table-column>
       <el-table-column label="资产编号" align="center" prop="number" />
       <el-table-column label="资产图片" align="center" prop="img" width="90">
         <template slot-scope="scope">
@@ -447,6 +452,27 @@
       </div>
     </el-dialog>
 
+    <el-dialog title="资产信息" :visible.sync="assetShow">
+      <el-descriptions title="资产信息">
+        <el-descriptions-item label="资产编号">{{assetInfo.number}}</el-descriptions-item>
+        <el-descriptions-item label="资产名称">{{assetInfo.name}}</el-descriptions-item>
+        <el-descriptions-item label="资产种类">{{assetInfo.kind}}</el-descriptions-item>
+        <el-descriptions-item label="分类编号">{{assetInfo.categoryNumber}}</el-descriptions-item>
+        <el-descriptions-item label="资产原值">{{assetInfo.amount}}</el-descriptions-item>
+        <el-descriptions-item label="数量">{{assetInfo.quantity}}</el-descriptions-item>
+        <el-descriptions-item label="计量单位">{{assetInfo.quantityUnit}}</el-descriptions-item>
+        <el-descriptions-item label="取得时间">{{ parseTime(assetInfo.buildDate, '{y}-{m}-{d}') }}</el-descriptions-item>
+        <el-descriptions-item label="存放地点">{{assetInfo.placeName}}</el-descriptions-item>
+        <el-descriptions-item label="资产用途">{{assetInfo.purpose}}</el-descriptions-item>
+        <el-descriptions-item label="使用部门">{{getDeptName(assetInfo.deptId)}}</el-descriptions-item>
+        <el-descriptions-item label="登记人">{{assetInfo.registrant}}</el-descriptions-item>
+        <el-descriptions-item label="规格型号">{{assetInfo.specificationsModel}}</el-descriptions-item>
+        <el-descriptions-item label="生产厂商">{{assetInfo.manufacturer}}</el-descriptions-item>
+        <el-descriptions-item label="品牌型号">{{assetInfo.brand}}</el-descriptions-item>
+        <el-descriptions-item label="供应商">{{assetInfo.supplier}}</el-descriptions-item>
+      </el-descriptions>
+    </el-dialog>
+
     <!-- 批量添加设备视频对话框 -->
     <el-dialog :title="title" :visible.sync="openBanding" width="700px" append-to-body>
       <AssetVideoAdd v-if="openBanding" :assetData="assetData"/>
@@ -480,6 +506,10 @@ export default {
       total: 0,
       // 资产信息表格数据
       assetList: [],
+      // 是否显示设备信息
+      assetShow: false,
+      // 设备信息
+      assetInfo: {},
       // 资产分类数据
       assetCategoryList: [],
       // 部门数据
@@ -577,7 +607,6 @@ export default {
   mounted() {
     this.$bus.$on('bindingVideo', (val) => {
       if (val) {
-        console.log('订阅成功')
         this.openBanding = false
       }
     })
@@ -586,6 +615,11 @@ export default {
     this.$bus.$off('bindingVideo')
   },
   methods: {
+    /** 打开查看设备信息 */
+    openMore(row) {
+      this.assetShow = true
+      this.assetInfo = row
+    },
     /** 初始化数据 */
     initData() {
       this.loading = true;

+ 0 - 1
lab-ui/src/views/asset/assetVideo/index.vue

@@ -148,7 +148,6 @@
 
 <script>
 import { listAssetVideo, getAssetVideo, delAssetVideo, addAssetVideo, updateAssetVideo, batchAddAssetVideo } from "@/api/asset/assetVideo";
-
 export default {
   name: "AssetVideo",
   data() {

+ 2 - 2
lab-ui/src/views/asset/demoVideo/index.vue

@@ -155,12 +155,12 @@
         <el-form-item label="视频名称" prop="name">
           <el-input v-model="form.name" placeholder="请输入视频名称" />
         </el-form-item>
-        <el-form-item label="视频大小" prop="size">
+        <!-- <el-form-item label="视频大小" prop="size">
           <el-input v-model="form.size" placeholder="请输入视频大小" />
         </el-form-item>
         <el-form-item label="视频位置" prop="url">
           <el-input v-model="form.url" placeholder="请输入视频位置" />
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" placeholder="请输入备注" />
         </el-form-item>

+ 93 - 148
lab-ui/src/views/system/dept/index.vue

@@ -2,21 +2,11 @@
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
       <el-form-item label="部门名称" prop="deptName">
-        <el-input
-          v-model="queryParams.deptName"
-          placeholder="请输入部门名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <el-input v-model="queryParams.deptName" placeholder="请输入部门名称" clearable @keyup.enter.native="handleQuery" />
       </el-form-item>
       <el-form-item label="状态" prop="status">
         <el-select v-model="queryParams.status" placeholder="部门状态" clearable>
-          <el-option
-            v-for="dict in dict.type.sys_normal_disable"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
+          <el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -27,40 +17,20 @@
 
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['system:dept:add']"
-        >新增</el-button>
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:dept:add']">新增</el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button
-          type="info"
-          plain
-          icon="el-icon-sort"
-          size="mini"
-          @click="toggleExpandAll"
-        >展开/折叠</el-button>
+        <el-button type="info" plain icon="el-icon-sort" size="mini" @click="toggleExpandAll">展开/折叠</el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table
-      v-if="refreshTable"
-      v-loading="loading"
-      :data="deptList"
-      row-key="deptId"
-      :default-expand-all="isExpandAll"
-      :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
-    >
+    <el-table v-if="refreshTable" v-loading="loading" :data="deptList" row-key="deptId" :default-expand-all="isExpandAll" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
       <el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
-      <el-table-column prop="orderNum" label="排序" width="200"></el-table-column>
+      <el-table-column prop="deptId" label="部门ID" width="200"></el-table-column>
       <el-table-column prop="status" label="状态" width="100">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
+          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" />
         </template>
       </el-table-column>
       <el-table-column label="创建时间" align="center" prop="createTime" width="200">
@@ -70,28 +40,9 @@
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['system:dept:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-plus"
-            @click="handleAdd(scope.row)"
-            v-hasPermi="['system:dept:add']"
-          >新增</el-button>
-          <el-button
-            v-if="scope.row.parentId != 0"
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['system:dept:remove']"
-          >删除</el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:dept:edit']">修改</el-button>
+          <el-button size="mini" type="text" icon="el-icon-plus" @click="handleAdd(scope.row)" v-hasPermi="['system:dept:add']">新增</el-button>
+          <el-button v-if="scope.row.parentId != 0" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:dept:remove']">删除</el-button>
         </template>
       </el-table-column>
     </el-table>
@@ -139,11 +90,7 @@
           <el-col :span="12">
             <el-form-item label="部门状态">
               <el-radio-group v-model="form.status">
-                <el-radio
-                  v-for="dict in dict.type.sys_normal_disable"
-                  :key="dict.value"
-                  :label="dict.value"
-                >{{dict.label}}</el-radio>
+                <el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
@@ -158,12 +105,12 @@
 </template>
 
 <script>
-import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from "@/api/system/dept";
-import Treeselect from "@riophae/vue-treeselect";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from '@/api/system/dept'
+import Treeselect from '@riophae/vue-treeselect'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 
 export default {
-  name: "Dept",
+  name: 'Dept',
   dicts: ['sys_normal_disable'],
   components: { Treeselect },
   data() {
@@ -177,7 +124,7 @@ export default {
       // 部门树选项
       deptOptions: [],
       // 弹出层标题
-      title: "",
+      title: '',
       // 是否显示弹出层
       open: false,
       // 是否展开,默认全部展开
@@ -187,65 +134,59 @@ export default {
       // 查询参数
       queryParams: {
         deptName: undefined,
-        status: undefined
+        status: undefined,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
-        parentId: [
-          { required: true, message: "上级部门不能为空", trigger: "blur" }
-        ],
-        deptName: [
-          { required: true, message: "部门名称不能为空", trigger: "blur" }
-        ],
-        orderNum: [
-          { required: true, message: "显示排序不能为空", trigger: "blur" }
-        ],
+        parentId: [{ required: true, message: '上级部门不能为空', trigger: 'blur' }],
+        deptName: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }],
+        orderNum: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }],
         email: [
           {
-            type: "email",
-            message: "请输入正确的邮箱地址",
-            trigger: ["blur", "change"]
-          }
+            type: 'email',
+            message: '请输入正确的邮箱地址',
+            trigger: ['blur', 'change'],
+          },
         ],
         phone: [
           {
             pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
-            message: "请输入正确的手机号码",
-            trigger: "blur"
-          }
-        ]
-      }
-    };
+            message: '请输入正确的手机号码',
+            trigger: 'blur',
+          },
+        ],
+      },
+    }
   },
   created() {
-    this.getList();
+    this.getList()
   },
   methods: {
     /** 查询部门列表 */
     getList() {
-      this.loading = true;
-      listDept(this.queryParams).then(response => {
-        this.deptList = this.handleTree(response.data, "deptId");
-        this.loading = false;
-      });
+      this.loading = true
+      listDept(this.queryParams).then((response) => {
+        this.deptList = this.handleTree(response.data, 'deptId')
+        this.loading = false
+      })
     },
     /** 转换部门数据结构 */
     normalizer(node) {
       if (node.children && !node.children.length) {
-        delete node.children;
+        delete node.children
       }
       return {
         id: node.deptId,
         label: node.deptName,
-        children: node.children
-      };
+        children: node.children,
+      }
     },
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.reset();
+      this.open = false
+      this.reset()
     },
     // 表单重置
     reset() {
@@ -257,80 +198,84 @@ export default {
         leader: undefined,
         phone: undefined,
         email: undefined,
-        status: "0"
-      };
-      this.resetForm("form");
+        status: '0',
+      }
+      this.resetForm('form')
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.getList();
+      this.getList()
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
+      this.resetForm('queryForm')
+      this.handleQuery()
     },
     /** 新增按钮操作 */
     handleAdd(row) {
-      this.reset();
+      this.reset()
       if (row != undefined) {
-        this.form.parentId = row.deptId;
+        this.form.parentId = row.deptId
       }
-      this.open = true;
-      this.title = "添加部门";
-      listDept().then(response => {
-        this.deptOptions = this.handleTree(response.data, "deptId");
-      });
+      this.open = true
+      this.title = '添加部门'
+      listDept().then((response) => {
+        this.deptOptions = this.handleTree(response.data, 'deptId')
+      })
     },
     /** 展开/折叠操作 */
     toggleExpandAll() {
-      this.refreshTable = false;
-      this.isExpandAll = !this.isExpandAll;
+      this.refreshTable = false
+      this.isExpandAll = !this.isExpandAll
       this.$nextTick(() => {
-        this.refreshTable = true;
-      });
+        this.refreshTable = true
+      })
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.reset();
-      getDept(row.deptId).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改部门";
-      });
-      listDeptExcludeChild(row.deptId).then(response => {
-        this.deptOptions = this.handleTree(response.data, "deptId");
-      });
+      this.reset()
+      getDept(row.deptId).then((response) => {
+        this.form = response.data
+        this.open = true
+        this.title = '修改部门'
+      })
+      listDeptExcludeChild(row.deptId).then((response) => {
+        this.deptOptions = this.handleTree(response.data, 'deptId')
+      })
     },
     /** 提交按钮 */
-    submitForm: function() {
-      this.$refs["form"].validate(valid => {
+    submitForm: function () {
+      this.$refs['form'].validate((valid) => {
         if (valid) {
           if (this.form.deptId != undefined) {
-            updateDept(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
+            updateDept(this.form).then((response) => {
+              this.$modal.msgSuccess('修改成功')
+              this.open = false
+              this.getList()
+            })
           } else {
-            addDept(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
+            addDept(this.form).then((response) => {
+              this.$modal.msgSuccess('新增成功')
+              this.open = false
+              this.getList()
+            })
           }
         }
-      });
+      })
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      this.$modal.confirm('是否确认删除名称为"' + row.deptName + '"的数据项?').then(function() {
-        return delDept(row.deptId);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    }
-  }
-};
+      this.$modal
+        .confirm('是否确认删除名称为"' + row.deptName + '"的数据项?')
+        .then(function () {
+          return delDept(row.deptId)
+        })
+        .then(() => {
+          this.getList()
+          this.$modal.msgSuccess('删除成功')
+        })
+        .catch(() => {})
+    },
+  },
+}
 </script>

+ 2 - 2
lab-ui/vue.config.js

@@ -9,7 +9,7 @@ const CompressionPlugin = require('compression-webpack-plugin')
 
 const name = process.env.VUE_APP_TITLE || '设备管理系统' // 网页标题
 
-const port = process.env.port || process.env.npm_config_port || 16061 // 端口
+const port = process.env.port || process.env.npm_config_port || 80 // 端口
 
 // vue.config.js 配置说明
 //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
@@ -35,7 +35,7 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://localhost:16060`,
+        target: `http://127.0.0.1:16061`, // https://sylwt.top:8080/
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API]: ''

+ 10 - 0
pom.xml

@@ -51,6 +51,16 @@
             <dependency>
                 <groupId>com.alibaba</groupId>
                 <artifactId>druid-spring-boot-starter</artifactId>
+                <exclusions>
+                    <exclusion>
+                        <artifactId>tools</artifactId>
+                        <groupId>com.sun</groupId>
+                    </exclusion>
+                    <exclusion>
+                        <artifactId>jconsole</artifactId>
+                        <groupId>com.sun</groupId>
+                    </exclusion>
+                </exclusions>
                 <version>${druid.version}</version>
             </dependency>