huang_an 2 yıl önce
ebeveyn
işleme
8b47b2f1f9

+ 6 - 0
src/App.vue

@@ -33,3 +33,9 @@
     }
   };
 </script>
+<style scoped>
+  #app {
+    height: 100vh;
+    width: 100vw;
+  }
+</style>

+ 25 - 4
src/api/system/file/index.js

@@ -1,13 +1,13 @@
 import request from '@/utils/request';
+import httpBlob from '@/utils/httpBlob';
+import { download } from '@/utils/file';
 
 /**
  * 上传文件
  * @param file 文件
  */
-export async function uploadFile(file) {
-  const formData = new FormData();
-  formData.append('file', file);
-  const res = await request.post('/file/upload', formData);
+export async function uploadFile(data) {
+  const res = await request.post('/main/file/upload', data);
   if (res.data.code === 0) {
     return res.data.data;
   }
@@ -66,3 +66,24 @@ export async function removeFiles(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+/**
+ * 获取文件列表
+ */
+export async function getFileList(data) {
+  const res = await request.post('/main/file/list', data);
+  if (res.data.code === '0') {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 通过文件名获取文件流
+export async function getFile(params, fileName) {
+  const res = await request.get('/main/file/getFile', {
+    params,
+    responseType: 'blob'
+  });
+  const arr = params.objectName.split('/');
+  download(res.data, fileName || arr[arr.length - 1]);
+}

+ 223 - 0
src/components/selectTree/index.vue

@@ -0,0 +1,223 @@
+<template>
+  <div class="selectTree">
+    <el-select
+      filterable
+      ref="test"
+      :size="size"
+      :disabled="isBindPlan"
+      :value="valueTitle"
+      :clearable="clearable"
+      @clear="clearHandle"
+      :placeholder="placeholder"
+      :popper-append-to-body="false"
+    >
+      <el-option :value="valueTitle" :label="valueTitle" class="options">
+        <slot :pHandleNodeClick="handleNodeClick">
+          <el-tree
+            id="tree-option"
+            ref="selectTree"
+            :key="treeKey"
+            :accordion="accordion"
+            :data="options"
+            :props="props"
+            :node-key="props.value"
+            :default-expand-all="isAll"
+            :default-expanded-keys="defaultExpandedKey"
+            @node-click="handleNodeClick"
+          >
+          </el-tree>
+        </slot>
+      </el-option>
+    </el-select>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      // 配置项
+      props: {
+        type: Object,
+        default() {
+          return {
+            value: 'value', // ID字段名
+            label: 'label', // 显示名称
+            children: 'children' // 子级字段名
+          };
+        }
+      },
+      // 展开可不展开
+      isAll: { type: Boolean, default: true },
+      // 选项列表数据(树形结构的对象数组)
+      options: { type: Array, default: () => [] },
+      // 初始值
+      value: { type: [String, Number], default: null },
+      // 可清空选项
+      clearable: { type: Boolean, default: false },
+      // 自动收起
+      accordion: { type: Boolean, default: false },
+      // // 可清空选项
+      // disabled: { type: Boolean, default: false },
+      // 多选
+      multiple: { type: Boolean, default: false },
+      //
+
+      placeholder: {
+        type: String,
+        default: '请选择'
+      },
+      size: {
+        type: String,
+        default: 'mini'
+      },
+      dialogType: {
+        type: String,
+        default: ''
+      },
+      tableIndex: { type: Number, default: null },
+      initStr: {
+        type: String,
+        default: ''
+      },
+      isBindPlan: {
+        type: Boolean,
+        default: function () {
+          return false;
+        }
+      }
+    },
+    data() {
+      return {
+        valueId: null,
+        treeKey: true,
+        valueTitle: '',
+        defaultExpandedKey: []
+      };
+    },
+    watch: {
+      // 这个需要用深度监听,不然回显有时会失效
+      value: {
+        handler(val) {
+          this.valueId = this.value;
+          this.initHandle();
+        },
+        deep: true,
+        immediate: true
+      },
+      options: {
+        handler(val) {
+          this.initHandle();
+        },
+        deep: true,
+        immediate: true
+      },
+      initStr: {
+        handler(newVal, oldVal) {
+          if (this.initStr) {
+            // console.log(newVal);
+            this.valueTitle = newVal;
+          }
+        },
+        immediate: true
+      }
+    },
+    // mounted() {
+    //   this.valueId = this.value; // 初始值
+    //   setTimeout(() => {
+    //     this.initHandle();
+    //   },300)
+    // },
+    methods: {
+      // 初始化值
+      async initHandle() {
+        if (this.valueId) {
+          this.$nextTick(async () => {
+            const tempValue = await this.$refs.selectTree.getNode(this.valueId);
+            setTimeout(() => {
+              if (tempValue) {
+                this.valueTitle = tempValue.data[this.props.label]; // 初始化显示
+                this.$refs.selectTree.setCurrentKey(this.valueId); // 设置默认选中
+                this.defaultExpandedKey = [this.valueId]; // 设置默认展开
+              }
+            }, 300);
+          });
+        } else {
+          this.valueTitle = '';
+        }
+        this.initScroll();
+      },
+      // 初始化滚动条
+      initScroll() {
+        this.$nextTick(() => {
+          let scrollWrap = document.querySelectorAll(
+            '.el-scrollbar .el-select-dropdown__wrap'
+          )[0];
+          let scrollBar = document.querySelectorAll(
+            '.el-scrollbar .el-scrollbar__bar'
+          );
+          scrollWrap.style.cssText =
+            'margin: 0px; max-height: none; overflow: hidden;';
+          scrollBar.forEach((ele) => (ele.style.width = 0));
+        });
+      },
+      // 切换选项
+      handleNodeClick(node) {
+        // 多选
+        if (this.multiple) {
+          this.valueTitle += `${node[this.props.label]} , `;
+          this.valueId = node[this.props.value];
+          this.$emit('getValue', node);
+          this.defaultExpandedKey = [];
+          return;
+        }
+        this.valueTitle = node[this.props.label];
+        this.valueId = node[this.props.value];
+        this.$emit('getValue', node);
+        this.defaultExpandedKey = [];
+        this.$refs.test.handleClose();
+      },
+      // 清除选中
+      clearHandle() {
+        this.valueTitle = '';
+        this.valueId = null;
+        this.defaultExpandedKey = [];
+        // this.clearSelected()
+        this.treeKey = !this.treeKey;
+        this.$emit('getValue', null);
+      },
+      // 清空选中样式
+      clearSelected() {
+        let allNode = document.querySelectorAll('#tree-option .el-tree-node');
+        allNode.forEach((element) => element.classList.remove('is-current'));
+      }
+    }
+  };
+</script>
+<style lang="scss" scoped>
+  .el-scrollbar .el-scrollbar__view .el-select-dropdown__item {
+    height: auto;
+    padding: 0;
+  }
+  ::v-deep .el-scrollbar__wrap {
+    margin-right: 0px !important;
+    overflow: auto !important;
+  }
+  .el-select-dropdown__item.selected {
+    font-weight: normal;
+  }
+  ul li >>> .el-tree .el-tree-node__content {
+    height: auto;
+    padding: 0 20px;
+  }
+  .el-tree-node__label {
+    font-weight: normal;
+  }
+  .el-tree >>> .is-current .el-tree-node__label {
+    color: #1890ff;
+    font-weight: 700;
+  }
+  .el-tree >>> .is-current .el-tree-node__children .el-tree-node__label {
+    color: #606266;
+    font-weight: normal;
+  }
+</style>

+ 35 - 9
src/components/upload/fileUpload.vue

@@ -45,15 +45,25 @@
       </el-form>
       <ele-pro-table
         ref="table"
+        :initLoad="false"
         :current.sync="selectItem"
         :columns="columns"
         highlight-current-row
         :datasource="datasource"
-        :initLoad="false"
-        height="500px"
+        height="400px"
         class="dict-table"
         tool-class="ele-toolbar-actions"
       >
+        <template v-slot:action="{ row }">
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-download"
+            @click="download(row)"
+          >
+            下载
+          </el-link>
+        </template>
       </ele-pro-table>
       <div slot="footer" class="dialog-footer">
         <el-button size="small" @click="documentVisible = false"
@@ -71,7 +81,8 @@
   import {
     uploadFile,
     removeFile,
-    getFileList
+    getFileList,
+    getFile
   } from '@/api/system/file/index.js';
   import { getImageUrl, getImagePath } from '@/utils/file';
   export default {
@@ -140,7 +151,17 @@
           },
           {
             label: '上传时间',
-            prop: 'createTime'
+            prop: 'createTime',
+            minWidth: '180'
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 100,
+            align: 'left',
+            resizable: false,
+            slot: 'action',
+            fixed: 'right'
           }
         ]
       };
@@ -172,17 +193,22 @@
     },
 
     methods: {
+      // 下载文件
+      download(row) {
+        getFile({ objectName: row.storePath }, row.name);
+      },
       delFileList() {
         this.$emit('input', []);
       },
       handleOpenLib() {
         this.documentVisible = true;
         this.$nextTick(() => {
-          // this.reload();
+          this.reload();
         });
       },
       //图文档勾选
       submitDocument() {
+        console.log(this.selectItem);
         this.$emit('input', [
           { url: this.selectItem.storePath, ...this.selectItem }
         ]);
@@ -222,10 +248,10 @@
           this.$message.error(`最多上传 ${this.limit}个文件`);
           return false;
         }
-        return uploadFile({
-          module: this.module,
-          multiPartFile: file
-        }).then((res) => {
+        let formData = new FormData();
+        formData.append('module', this.module);
+        formData.append('multiPartFile', file);
+        return uploadFile(formData).then((res) => {
           if (res.data) {
             this.$emit('input', [
               ...(this.value || []),

+ 3 - 0
src/utils/request.js

@@ -13,6 +13,9 @@ const service = axios.create({
   baseURL: API_BASE_URL,
   transformResponse: [
     function (data) {
+      if (data instanceof Blob) {
+        return data;
+      }
       const json = JSONBIG({
         storeAsString: true
       });

+ 26 - 1
src/views/ledgerAssets/boat/components/boat-list.vue

@@ -29,6 +29,16 @@
           {{ row.code }}
         </el-link>
       </template>
+      <template v-slot:action="{ row }">
+        <el-link
+          type="primary"
+          :underline="false"
+          icon="el-icon-edit"
+          @click="handEdit(row)"
+        >
+          编辑
+        </el-link>
+      </template>
     </ele-pro-table>
   </div>
 </template>
@@ -81,7 +91,7 @@
             minWidth: 110
           },
           {
-            prop: 'codeNumber',
+            prop: 'code',
             label: '编号',
             showOverflowTooltip: true,
             minWidth: 110
@@ -151,6 +161,12 @@
             label: '总数量',
             showOverflowTooltip: true,
             minWidth: 110
+          },
+          {
+            columnKey: 'action',
+            slot: 'action',
+            label: '操作',
+            minWidth: 100
           }
         ]
       };
@@ -159,6 +175,15 @@
       this.requestDict('角度');
     },
     methods: {
+      /* 跳转到编辑 */
+      handEdit({ id }) {
+        this.$router.push({
+          path: '/ledgerAssets/boat/edit',
+          query: {
+            id
+          }
+        });
+      },
       /* 表格数据源 */
       datasource({ page, limit, where, order }) {
         return getBoatList({

+ 1220 - 0
src/views/ledgerAssets/components/assetInformation.vue

@@ -0,0 +1,1220 @@
+<template>
+  <div id="equipment_edit" class="ele-body baseinfo-container">
+    <el-card shadow="never">
+      <el-form
+        label-width="120px"
+        :model="{ ...form, ...positionInfo }"
+        ref="form"
+        :rules="rules"
+      >
+        <div class="content">
+          <div class="basic-details-title border-none">
+            <span class="border-span">资产信息</span>
+          </div>
+          <el-descriptions
+            title=""
+            :column="4"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 固资编码 </template>
+              <el-form-item label-width="0">
+                <el-input class="input" v-model="zcInfo.fixCode"></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 编号 </template>
+              <el-form-item label-width="0">
+                <el-input class="input" v-model="zcInfo.codeNumber"></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 颜色 </template>
+              <el-form-item label-width="0">
+                <el-input class="input" v-model="zcInfo.color"></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 级别 </template>
+              <el-form-item label-width="0">
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.level"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options.assetLevel"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 有效期开始 </template>
+              <el-form-item label-width="0">
+                <el-date-picker
+                  style="width: 100%"
+                  v-model="zcInfo.startTime"
+                  type="month"
+                  value-format="yyyy-MM"
+                  placeholder="选择有效期开始"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 有效期结束 </template>
+              <el-form-item label-width="0">
+                <el-date-picker
+                  style="width: 100%"
+                  v-model="zcInfo.endTime"
+                  @change="endTimeRules"
+                  value-format="yyyy-MM"
+                  type="month"
+                  placeholder="选择有效期结束"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 状态 </template>
+              <el-form-item label-width="0">
+                <el-input
+                  v-model="zcInfo.status"
+                  placeholder="请输入状态"
+                ></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="5"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 权属人 </template>
+              <el-form-item label-width="0">
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.ownershipUserId"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options.ownershipUserId"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 权属部门 </template>
+              <el-form-item label-width="0">
+                <div class="input">
+                  <DeptSelect
+                    v-model="zcInfo.ownershipGroupId"
+                    @input="getTenuredepartmentList"
+                  />
+                </div>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item :span="3">
+              <template slot="label"> 所属厂房 </template>
+              <el-form-item label-width="0">
+                <FactoryAreaSelect
+                  placeholder="请选择工厂"
+                  style="margin-right: 10px; width: 20%"
+                  v-model="zcInfo.factoryRoomId1"
+                  :augr="1"
+                />
+                <FactoryAreaSelect
+                  placeholder="请选择厂房"
+                  style="margin-right: 10px; width: 20%"
+                  v-model="zcInfo.factoryRoomId2"
+                  :augr="2"
+                  @returnItem="returnItem1"
+                />
+                <!-- <FactoryAreaSelect
+                  placeholder="请选择车间"
+                  style="margin-right: 10px; width: 20%"
+                  v-model="zcInfo.factoryRoomId3"
+                  :augr="3"
+                /> -->
+                <el-select
+                  style="width: 19%; margin-right: 10px"
+                  v-model="zcInfo.factoryRoomId3"
+                  placeholder="请选择"
+                  @change="getCxList"
+                >
+                  <el-option
+                    v-for="item in zjList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+                <!-- <FactoryAreaSelect
+                  style="margin-right: 10px; width: 20%"
+                  placeholder="请选择产线"
+                  v-model="zcInfo.factoryRoomId4"
+                  :augr="4"
+                /> -->
+                <el-select
+                  style="width: 19%; margin-right: 10px"
+                  v-model="zcInfo.factoryRoomId4"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in cxList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+                <FactoryAreaSelect
+                  style="margin-right: 10px; width: 15%"
+                  placeholder="请输入工位"
+                  v-model="zcInfo.factoryRoomId5"
+                  @returnItem="returnItem"
+                />
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 所属工序 </template>
+              <el-form-item label-width="0">
+                <WorkingProcedureSelect
+                  v-model="zcInfo.roteId"
+                ></WorkingProcedureSelect>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 设备位置 </template>
+              <el-form-item label-width="0" prop="location">
+                <div style="display: flex">
+                  <el-cascader
+                    clearable
+                    v-model="form.location"
+                    :options="options.cityDataLabel"
+                  ></el-cascader>
+                  <el-input
+                    style="width: 60%; margin-left: 10px"
+                    placeholder="详细地址"
+                    v-model="positionInfo.detailPosition"
+                  ></el-input>
+                </div>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 入账日期 </template>
+              <el-form-item label-width="0">
+                <el-date-picker
+                  style="width: 100%"
+                  v-model="zcInfo.entryDate"
+                  type="date"
+                  placeholder="选择入账日期"
+                  value-format="yyyy-MM-dd"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-descriptions-item>
+
+            <el-descriptions-item>
+              <template slot="label"> 周期 </template>
+              <el-form-item label-width="0">
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.cycle"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options.deliveryCycle"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="5"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 维护部门 </template>
+              <el-form-item label-width="0">
+                <div class="input">
+                  <DeptSelect
+                    v-model="zcInfo.repairGroupId"
+                    @input="geMaintainersList"
+                  />
+                </div>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 维护人 </template>
+              <el-form-item label-width="0">
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.repairUserId"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options.repairUserId"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="5"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 使用岗位 </template>
+              <el-form-item label-width="0">
+                <DeptSelect v-model="zcInfo.postId" @input="auditorDeptClick" />
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 使用人 </template>
+              <el-form-item label-width="0">
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.usePersonId"
+                  filterable
+                  placeholder="请选择使用人"
+                >
+                  <el-option
+                    v-for="item in userList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-descriptions-item>
+
+            <el-descriptions-item>
+              <template slot="label"> 负责人 </template>
+              <el-form-item label-width="0">
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.chargePersonId"
+                  filterable
+                  placeholder="请选择负责人"
+                >
+                  <el-option
+                    v-for="item in userList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="3"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 供应商 </template>
+              <el-form-item label-width="0">
+                <el-select
+                  v-model="zcInfo.supplierId"
+                  style="width: 100%"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in suppList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 品牌 </template>
+              <el-form-item label-width="0">
+                <el-input v-model="zcInfo.brand" class="input"></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 设备用途 </template>
+              <el-form-item label-width="0">
+                <el-input v-model="zcInfo.purpose" class="input"></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+
+            <el-descriptions-item>
+              <template slot="label"> 备注 </template>
+              <el-form-item label-width="0">
+                <el-input
+                  type="textarea"
+                  :rows="2"
+                  placeholder="请输入内容"
+                  v-model="zcInfo.remark"
+                ></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+          </el-descriptions>
+        </div>
+      </el-form>
+    </el-card>
+  </div>
+</template>
+
+<script>
+  import DeptSelect from '@/components/CommomSelect/dept-select.vue';
+  import WorkshopSelect from '@/components/CommomSelect/workshop-select.vue';
+  import FactoryAreaSelect from '@/components/CommomSelect/factory-area-select.vue';
+  import WorkingProcedureSelect from '@/components/CommomSelect/working-procedure-select.vue';
+  import factorySelect from '@/components/CommomSelect/factory-select.vue';
+  import fileUpload from '@/components/upload/fileUpload';
+  import WithView from '@/components/upload/WithView';
+  import imgUpload from '@/components/upload/imgUpload';
+  import { cityDataLabel } from 'ele-admin/packages/utils/regions';
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  import { getDetails } from '@/api/classifyManage/itemInformation';
+  import { sysDict, isExit } from '@/utils/sys';
+  // import selectUpload from "@/components/selectUpload";
+  // import UploadImg from "@/components/uploadImg/WithView.vue";
+  // import { parseTime } from "@/utils/ruoyi.js";
+  // import org from "@/api/main/org";
+  // import user from "@/api/main/user";
+  // import selectTree from "@/components/selectTree";
+  // import dict from "@/api/main/craft/dict";
+  // import { imageView } from "@/utils";
+  // import {
+  //   getPlants,
+  //   getfactoryInfo,
+  //   getFactorys,
+  //   getProductionLine,
+  //   // saveOrEdit,
+  //   getAssetNum,
+  //   getDetail,
+  //   getSupplier
+  // } from '@/api/ledgerAssets/equipment';
+  import {
+    saveOrEdit,
+    getAssetInfo,
+    factoryworkstation
+  } from '@/api/ledgerAssets';
+  import { getUserPage } from '@/api/system/organization';
+  import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
+  import { listWorkshopByParentId, listFactoryLine } from '@/api/factoryModel';
+  import { getByCode } from '@/api/system/dictionary-data';
+  export default {
+    components: {
+      WithView,
+      WorkshopSelect,
+      FactoryAreaSelect,
+      WorkingProcedureSelect,
+      fileUpload,
+      imgUpload,
+      factorySelect,
+      DeptSelect,
+      personSelect
+    },
+    data() {
+      // 设备地址校验规则
+      // var addressValidation = (rule, array, callback) => {
+      //   if (array?.length > 0) {
+      //     var filterArray = array.filter((item) => item && item.trim());
+      //     console.log(filterArray);
+      //     if (filterArray.length > 0) {
+      //       callback();
+      //     } else {
+      //       callback(new Error('地址不能为空'));
+      //     }
+      //   } else {
+      //     callback(new Error('地址不能为空'));
+      //   }
+      // };
+      return {
+        treeList: [], // 使用岗位树
+        userList: [], // 人员列表
+        labelStyle: {
+          'min-width': '100px'
+        },
+        isLink: true,
+        categoryObj: {},
+        dictType: {
+          1: '是',
+          0: '否'
+        },
+        dictPd: {
+          1: '逐个盘点',
+          2: '批量盘点'
+        },
+        categoryMes: {
+          isModify: '',
+          isRework: '',
+          isRematerial: '',
+          isByProduct: '',
+          isWaste: '',
+          isDefective: ''
+        },
+        categoryWms: {}, //仓储
+        title: '新建设备信息',
+        pageType: 'add',
+        btnLoading: false,
+        // 设备主键id
+        id: '',
+        form: {
+          extInfoSelf: [],
+          // 基本信息
+          code: '',
+          name: '',
+          productTime: ''
+        },
+        rules: {
+          name: [
+            { required: true, message: '请输入设备名称', trigger: 'blur' }
+          ],
+          // location: [{ validator: addressValidation, trigger: 'change' }],
+          code: [{ required: true, message: '请输入设备编码', trigger: 'blur' }]
+        },
+        // 基本信息
+        basicInfo: {},
+        assetInfo: {},
+        // 资产信息
+        zcInfo: {
+          factoryRoomId1: '',
+          factoryRoomId2: '',
+          factoryRoomId3: '',
+          factoryRoomId4: '',
+          factoryRoomId5: '',
+          factoryRoomName1: '',
+          factoryRoomName2: '',
+          factoryRoomName3: '',
+          factoryRoomName4: '',
+          factoryRoomName5: '',
+          // 	固定资产编码
+          fixCode: '',
+          // 颜色
+          color: '',
+          // 重量
+          weight: '',
+          // 维护部门code
+          repairGroupId: '',
+          repairDeptName: '',
+          repairUserId: '',
+          // 权属部门
+          ownershipGroupId: '',
+          ownershipUserId: '',
+          // 设备用途
+          purpose: '',
+          // 设备位置
+          location: '',
+          // 工序
+          roteId: '',
+          roteName: '',
+          //品牌
+          brand: '',
+          // 	供应商code
+          supplierId: '',
+          // 厂房
+          factoryRoomId: '',
+          roteCode: '',
+          codeNumber: '',
+          // 使用人
+          usePersonId: '',
+          // 有效期开始
+          startTime: '',
+          // 有效结束
+          endTime: '',
+          // 级别
+          level: '',
+          // 状态
+          status: '',
+          // 负责人
+          chargePersonId: '',
+          // 入账日期
+          entryDate: '',
+          // 周期
+          cycle: '',
+          // 备注
+          remark: '',
+          // 使用岗位
+          postId: ''
+        },
+        positionInfo: {
+          // 详细地址
+          detailPosition: '',
+          // 请选择产线
+          lineCode: '',
+          lineName: '',
+          // 请选择车间
+          workshopCode: '',
+          workshopName: '',
+          // 请选择工厂
+          factoryCode: '',
+          factoryName: ''
+        },
+        // 图片
+        imageUrl: null,
+        // 文档信息
+        attUrl: {
+          operatingManual: {
+            value: [],
+            sort: 1
+          },
+          productionLicence: {
+            value: [],
+            sort: 2
+          },
+          explosionProofCertificate: {
+            value: [],
+            sort: 3
+          },
+          surveyReport: {
+            value: [],
+            sort: 4
+          },
+          inspectionCycleManual: {
+            value: [],
+            sort: 5
+          },
+          informationDrawing: {
+            value: [],
+            sort: 6
+          },
+          productCertificate: {
+            value: [],
+            sort: 7
+          }
+        },
+        // 是否开始物联
+        isIotEnable: true,
+        // 物联ID
+        iotId: '',
+        // 回显过保时间
+        cbexpirationTime: '',
+        // 生命周期
+        sourceDICT: '',
+        // 网络状态
+        networkStatus: '',
+        options: {
+          deptList: [],
+          repairUserId: [],
+          ownershipUserId: [],
+          supplierId: [],
+          brand: [],
+          cityDataLabel,
+          assetLevel: [], // 资产级别
+          deliveryCycle: [] // 送检周期
+        },
+        depList: [],
+        warehouseList: [],
+        areaList: [],
+        shelvesList: [],
+        suppList: [],
+        zjList: [],
+        cxList: []
+      };
+    },
+    watch: {},
+    async created() {
+      // 获取资产级别下拉框
+      await this.getAssetLevelOptions();
+      // 获取部门岗位树
+      await this.getUsePostsTree();
+      // 获取送检周期下拉
+      await this.getDeliveryCycleOptions();
+      // 获取供应商下拉列表
+      await this.getSuppliersList();
+      if (this.$route.query.id) {
+        this.pageType = 'edit';
+        this.id = this.$route.query.id;
+        await this.getInfo();
+        this.title = '编辑设备信息';
+        // this.getgys();
+        // await this._getWarehouseChildren();
+      }
+    },
+    methods: {
+      // 限制结束时间
+      endTimeRules() {
+        if (this.zcInfo.startTime) {
+          console.log(this.zcInfo.startTime);
+          console.log(new Date(this.zcInfo.startTime).getTime());
+          let differenceTime =
+            new Date(this.zcInfo.endTime).getTime() -
+            new Date(this.zcInfo.startTime).getTime();
+          if (differenceTime <= 0) {
+            this.$message.error('请选择正确的有效结束时间');
+            this.zcInfo.endTime = '';
+          }
+        } else {
+          this.$message.error('请选择有效开始时间');
+          this.zcInfo.endTime = '';
+        }
+      },
+      // 获取资产级别下拉
+      async getAssetLevelOptions() {
+        let { data } = await getByCode('asset_level');
+        this.options.assetLevel =
+          data.length > 0
+            ? data.map((item) => {
+                return {
+                  name: Object.keys(item)[0],
+                  id: item[Object.keys(item)[0]]
+                };
+              })
+            : [];
+      },
+      // 获取送检周期下拉
+      async getDeliveryCycleOptions() {
+        let { data } = await getByCode('delivery_cycle');
+        console.log(data);
+        this.options.deliveryCycle =
+          data.length > 0
+            ? data.map((item) => {
+                return {
+                  name: item[Object.keys(item)[0]],
+                  id: +Object.keys(item)[0]
+                };
+              })
+            : [];
+      },
+      // 获取维护人下拉列表
+      async geMaintainersList() {
+        if (!this.zcInfo.repairGroupId) return;
+        let data = await getUserPage({
+          pageNum: 1,
+          size: 9999,
+          groupId: this.zcInfo.repairGroupId
+        });
+        this.options.repairUserId = data.list;
+      },
+      // 使用岗位点击事件
+      async auditorDeptClick(data) {
+        console.log(data);
+        if (data) {
+          this.getStaffList(data);
+        } else {
+          this.zcInfo.chargePersonId = '';
+          this.zcInfo.usePersonId = '';
+          this.userList = [];
+        }
+      },
+      // 获取供应商下拉列表
+      async getSuppliersList() {
+        const rep = await warehouseDefinition.eomContact({
+          type: 2,
+          status: 1,
+          size: -1,
+          pageNum: 1
+        });
+        this.suppList = rep.list;
+      },
+      // 获取使用岗位列表树
+      async getUsePostsTree() {
+        const res = await warehouseDefinition.tree();
+        this.treeList = this.$util.toTreeData({
+          data: res,
+          idField: 'id',
+          parentIdField: 'parentId'
+        });
+      },
+      // 通过部门岗位获取人员列表
+      async getStaffList(id) {
+        let res = await warehouseDefinition.getUserPage({
+          groupId: id,
+          size: 9999,
+          page: 1
+        });
+        this.userList = res.list;
+      },
+      // 获取权属部门下拉列表
+      async getTenuredepartmentList() {
+        if (!this.zcInfo.ownershipGroupId) return;
+        let data = await getUserPage({
+          pageNum: 1,
+          size: 9999,
+          groupId: this.zcInfo.ownershipGroupId
+        });
+        this.options.ownershipUserId = data.list;
+      },
+      async getCxList(e) {
+        this.zcInfo.factoryRoomId4 = '';
+        this.zcInfo.factoryRoomId5 = '';
+        const data = await listFactoryLine([e]);
+        this.cxList = data;
+      },
+      async returnItem1(item) {
+        this.zcInfo.factoryRoomId3 = '';
+        this.zcInfo.factoryRoomId4 = '';
+        this.zcInfo.factoryRoomId5 = '';
+        const data = await listWorkshopByParentId(item.id);
+        this.zjList = data;
+      },
+      async returnItem(item) {
+        const data = await factoryworkstation(item.id);
+        console.log(data);
+        if (data.workshopId) {
+          await this.returnItem1({ id: data.workshopId });
+        }
+        if (data.productionLineId) {
+          await this.getCxList(data.productionLineId);
+        }
+        this.zcInfo.factoryRoomId1 = data.factoryId;
+        this.zcInfo.factoryRoomName1 = data.factoryName;
+        this.zcInfo.factoryRoomId2 = data.workshopPlanId;
+        this.zcInfo.factoryRoomName2 = data.workshopPlanName;
+        this.zcInfo.factoryRoomId3 = data.workshopId;
+        this.zcInfo.factoryRoomName3 = data.workshopName;
+        this.zcInfo.factoryRoomId4 = data.productionLineId;
+        this.zcInfo.factoryRoomName4 = data.productionLineName;
+
+        this.zcInfo.roteId = data.taskList[0].id;
+        this.zcInfo.roteName = data.taskList[0].name;
+
+        this.zcInfo.ownershipGroupId = data.extInfo.principalDep;
+        await this.getTenuredepartmentList();
+        this.zcInfo.ownershipUserId = data.leaderId;
+      },
+      async twoClick(val) {
+        this.positionInfo.workshopName = val.name;
+        const res = await warehouseDefinition.getListByAreaId(val.id);
+        this.shelvesList = res;
+      },
+      async changeWarehouse(val) {
+        this.positionInfo.factoryName = val.name;
+        const res = await warehouseDefinition.getListByWarehouseId(val.id);
+        this.areaList = res;
+      },
+      async _getWarehouseChildren() {
+        const res = await warehouseDefinition.list({});
+        this.warehouseList = res.map((item) => {
+          return { ...item, name: item.factoryName + '-' + item.name };
+        });
+
+        if (this.positionInfo.factoryCode) {
+          const params = {
+            id: this.positionInfo.factoryCode,
+            name: this.positionInfo.factoryName
+          };
+          this.changeWarehouse(params);
+        }
+        if (this.positionInfo.workshopCode) {
+          const params = {
+            id: this.positionInfo.workshopCode,
+            name: this.positionInfo.workshopName
+          };
+          this.twoClick(params);
+        }
+
+        // const res = await getWarehouseChildren();
+        // if (res?.success) {
+        //
+        // }
+      },
+      isExit,
+      async cbDialogGoods(data) {
+        console.log(data);
+        this.basicInfo = data;
+        this.assetInfo = data;
+        this.form.rootCategoryLevelId =
+          this.basicInfo.categoryLevelPathId.split(',')[0];
+        this.form.categoryId = this.basicInfo.id;
+        this.form.name = this.basicInfo.name;
+        // let res = await getAssetNum({
+        //   assetCode: this.basicInfo.code,
+        //   num: 1
+        // });
+        this.form.code = data.code; //Date.now(); //res.data[0].onlyCode;
+        for (const key in this.depList) {
+          if (this.depList[key].id == data.deptId) {
+            this.basicInfo.name = this.depList[key].name;
+            this.basicInfo.groupName = this.depList[key].groupName;
+            return;
+          }
+        }
+      },
+      async seachDetail(id) {
+        this.isLink = false;
+        const res = await getDetails(id);
+        console.log('res==', res);
+        this.categoryWms = {
+          ...res.categoryWms,
+          warrantyWarnRefer: await sysDict(
+            '质保预警参考',
+            res.categoryWms.warrantyWarnRefer
+          ),
+          warrantyPeriodUnit: await sysDict(
+            '保质期单位',
+            res.categoryWms.warrantyPeriodUnit
+          )
+        };
+        this.categoryMes = {
+          ...res.categoryMes,
+          apsType: await sysDict('排程类型', res.categoryMes.apsType)
+        };
+        this.categoryObj = {
+          ...res.category,
+          fileName: res.category.remarkAttach
+            ? res.category.remarkAttach.map((item) => item.name).join(', ')
+            : ''
+        };
+        console.log(this.categoryObj);
+        this.isLink = true;
+      },
+      // 计算过保时间
+      setGbTime(basic, value, type) {
+        basic = Date.parse(basic);
+        let time;
+        switch (type) {
+          case 'minute':
+            time = value * 1000 * 60;
+            break;
+          case 'hour':
+            time = value * 1000 * 60 * 60;
+            break;
+          case 'day':
+            time = value * 1000 * 60 * 60 * 24;
+            break;
+          case 'month':
+            time = value * 1000 * 60 * 60 * 24 * 30;
+            break;
+          case 'year':
+            time = value * 1000 * 60 * 60 * 24 * 365;
+            break;
+          default:
+            break;
+        }
+
+        let num = basic + time;
+        return parseTime(num);
+      },
+      // 树形结构数据
+      getTreeList() {
+        org.tree().then((res) => {
+          this.options.deptList = res.data;
+        });
+      },
+      // 获取供应商、工序列表
+      async getgys() {
+        let muster = await getSupplier({
+          size: 999
+        });
+        this.options.supplierId = muster.data.items; //供应商
+      },
+
+      // 添加自定义参数
+      addItem() {
+        if (this.form.extInfoSelf.length < 10) {
+          let item = { key: '', value: '' };
+          this.form.extInfoSelf.push(item);
+        } else {
+          this.$message.warning('自定义参数最多添加10条');
+        }
+      },
+      // 删除自定义参数
+      delt(item, index) {
+        this.form.extInfoSelf.splice(index, 1);
+      },
+      // 提交
+      submit() {
+        if (!this.basicInfo && this.pageType == 'add') {
+          return this.$message.error('请选择物品编码');
+        }
+        this.$refs.form.validate((valid) => {
+          console.log(this.form);
+          if (valid) {
+            console.log('ppp', this.positionInfo);
+            let par = {
+              //基本信息
+              ...this.form,
+              assetType: 1,
+              // 资产信息
+              positionIds: '1,1,1,1',
+              ...this.zcInfo,
+              position: {
+                detailPosition: this.positionInfo.detailPosition,
+                pathIds: `${
+                  this.positionInfo.factoryCode
+                    ? this.positionInfo.factoryCode + ','
+                    : ''
+                }${
+                  this.positionInfo.workshopCode
+                    ? this.positionInfo.workshopCode + ','
+                    : ''
+                }${this.positionInfo.lineCode}`,
+                pathName: `${
+                  this.positionInfo.factoryName
+                    ? this.positionInfo.factoryName + ','
+                    : ''
+                }${
+                  this.positionInfo.workshopName
+                    ? this.positionInfo.workshopName + ','
+                    : ''
+                }${this.positionInfo.lineName}`,
+                type: '1',
+                num: 1
+              },
+              factoryRoomId: '',
+              factoryRoomName: '',
+              // 文档信息
+              attUrl: this.setWd() || [],
+              // // 设备图片
+              imageUrl: this.imageUrl || {},
+              // 是否启用物联
+              isIotEnable: this.isIotEnable
+              // // 扩展字段
+
+              // extInfoSelf: this.setKz()
+            };
+            const factoryRoomIds = [
+              this.zcInfo.factoryRoomId1,
+              this.zcInfo.factoryRoomId2,
+              this.zcInfo.factoryRoomId3,
+              this.zcInfo.factoryRoomId4,
+              this.zcInfo.factoryRoomId5
+            ];
+            const nonEmptyFactoryRoomIds = factoryRoomIds.filter((id) => id);
+            par.factoryRoomId = nonEmptyFactoryRoomIds.join(',');
+            //---
+            const factoryRoomNames = [
+              this.zcInfo.factoryRoomName1,
+              this.zcInfo.factoryRoomName2,
+              this.zcInfo.factoryRoomName3,
+              this.zcInfo.factoryRoomName4,
+              this.zcInfo.factoryRoomName5
+            ];
+            const nonEmptyFactoryRoomNames = factoryRoomNames.filter(
+              (id) => id
+            );
+            par.factoryRoomName = nonEmptyFactoryRoomNames.join(',');
+            //==
+
+            console.log(par);
+            par.deviceLocationName = par.location
+              ? par.location.toString()
+              : '';
+            // par.sss = par.position.detailPosition;
+            //==
+            //============================
+            par.extInfo = { ...this.zcInfo };
+            let obj = {};
+            par.extInfoSelf.forEach((item) => {
+              obj[item.key] = item.value;
+            });
+            par.extInfoSelf = obj;
+            //============================
+            if (this.pageType == 'edit') {
+              par.id = this.id;
+            }
+            this.btnLoading = true;
+            console.log('sasasasa', par);
+            saveOrEdit(par)
+              .then((res) => {
+                this.$message.success('操作成功');
+                this.$router.go(-1);
+              })
+              .finally(() => {
+                this.btnLoading = false;
+              });
+          } else {
+            console.log('error submit!!');
+            return false;
+          }
+        });
+      },
+      // 处理扩展字段
+      setKz() {
+        return this.form.extInfoSelf || [];
+      },
+      // 选择所属部门
+      async searchDeptNodeClick(id, ids) {
+        // 根据部门获取人员
+        const res = await getUserPage({
+          pageNum: 1,
+          size: -1,
+          executeGroupId: id
+        });
+        // const depId = res.list.find((item) => {
+        //   item.id == ids;
+        // });
+        // console.log('depId', depId);
+        this.depList = res.list;
+      },
+      // 获取设备详情
+      async getInfo() {
+        // 通过设备ID查询详情
+        const data = await getAssetInfo(this.id);
+        // 填充使用岗位
+        this.auditorDeptClick(data.postId);
+        // 填充资产信息列表
+        for (const key of Object.keys(this.zcInfo)) {
+          this.zcInfo[key] = data[key];
+        }
+        // 填充设备位置
+        this.zcInfo.location = data.deviceLocationName.split(',');
+        // 填充所属厂房
+        if (data.factoryRoomId) {
+          const pathIds = data.factoryRoomId.split(',');
+          this.zcInfo.factoryRoomId1 = pathIds[0];
+
+          this.zcInfo.factoryRoomId2 = pathIds[1];
+
+          this.zcInfo.factoryRoomId3 = pathIds[2];
+
+          this.zcInfo.factoryRoomId4 = pathIds[3];
+
+          this.zcInfo.factoryRoomId5 = pathIds[4];
+          if (this.zcInfo.factoryRoomId2) {
+            this.returnItem1({ id: pathIds[1] });
+          }
+          if (this.zcInfo.factoryRoomId3) {
+            this.getCxList(pathIds[2]);
+          }
+        }
+
+        if (data.detailPosition) {
+          this.positionInfo.detailPosition = data.detailPosition;
+        }
+      },
+      // 设置标准产能
+      setbzcn(val) {
+        if (!val) {
+          return '';
+        }
+        let item = JSON.parse(val);
+        return item.standardCapacity || '';
+      },
+      hanldFactoryCode(val, item) {
+        this.positionInfo.factoryName = item?.name;
+        // 重置
+        this.zcInfo.workshopCode = '';
+        this.zcInfo.lineCode = '';
+        this.options.workshopCode = [];
+        this.options.lineCode = [];
+        // 获取车间
+        this.$nextTick(() => {
+          // this.$refs.WorkshopSelectRef.getList();
+        });
+      },
+      hanldWorkshopCode(val, item) {
+        this.positionInfo.workshopName = item?.name;
+        // 重置
+        this.options.workshopCode = [];
+        this.options.lineCode = [];
+        // 获取产线
+        this.$nextTick(() => {
+          // this.$refs.FactoryLineSelectRef.getList();
+        });
+      },
+      hanldlineCodeCode(val, item) {
+        this.positionInfo.lineName = item?.name;
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  ::v-deep .descriptions {
+    margin-bottom: 10px;
+  }
+  ::v-deep .el-descriptions__table tbody:nth-child(4) {
+    .el-descriptions-row {
+      .el-descriptions-item__cell:last-child {
+      }
+    }
+  }
+  .baseinfo-container .basic-details-title {
+    font-size: 16px;
+    margin: 15px 0;
+  }
+  .upload-container {
+    display: flex;
+    justify-content: flex-start;
+    .file-list {
+      margin-left: 50px;
+      flex: 1;
+    }
+  }
+  .equipment-container {
+    // .content {
+    //   padding: 0 20px;
+    // }
+    .label-none {
+      .el-form-item__content {
+        margin-left: 0 !important;
+      }
+    }
+  }
+  .sbwz {
+    .item {
+      width: 120px !important;
+    }
+    .item + .item {
+      margin-left: 10px;
+    }
+    .item-input {
+      width: 350px !important;
+    }
+  }
+  .input {
+    width: 100%;
+  }
+  .kzzd {
+    width: 500px;
+    .add-col {
+      display: flex;
+      .col-input {
+        & + .col-input {
+          margin-left: 10px;
+        }
+      }
+      .del {
+        margin-left: 10px;
+      }
+    }
+  }
+  ::v-deep .el-descriptions {
+    .el-form-item {
+      margin-bottom: 0px;
+    }
+  }
+</style>

+ 2 - 3
src/views/ledgerAssets/equipment/components/equipment-list.vue

@@ -10,8 +10,8 @@
       ref="table"
       :columns="columns"
       :datasource="datasource"
-      height="calc(100vh - 265px - 102px)"
-      full-height="calc(100vh - 116px - 102px)"
+      height="calc(100vh - 440px)"
+      full-height="calc(100vh - 115px)"
       tool-class="ele-toolbar-form"
       cache-key="systemOrgUserTable"
       @select="selectChange"
@@ -328,7 +328,6 @@
           path: '/ledgerAssets/equipment/edit'
         });
       },
-
       exportFile() {
         let params = {
           ...this.$refs.search.where,

+ 125 - 7
src/views/ledgerAssets/equipment/components/equipment-search.vue

@@ -6,7 +6,108 @@
     @keyup.enter.native="search"
     @submit.native.prevent
   >
-    <el-row :gutter="15">
+    <el-row type="flex" :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="设备编码:" label-width="100px">
+          <el-input clearable v-model="where.code" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="固资编码:" label-width="100px">
+          <el-input clearable v-model="where.fixCode" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="设备名称:" label-width="100px">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="使用岗位:" label-width="100px">
+          <DeptSelect v-model="where.usePostId" @input="selectChange" />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row type="flex" :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="型号:" label-width="100px">
+          <el-input clearable v-model="where.module" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="规格:" label-width="100px">
+          <el-input clearable v-model="where.space" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="网络状态:" label-width="100px">
+          <DictSelection
+            dictName="网络状态"
+            clearable
+            v-model="where.networkStatus"
+          >
+          </DictSelection>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="生命周期:" label-width="100px">
+          <DictSelection
+            dictName="生命周期"
+            clearable
+            v-model="where.runStatus"
+          >
+          </DictSelection>
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row type="flex" :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="有效期结束" label-width="100px">
+          <el-date-picker
+            style="width: 100%"
+            v-model="where.endTime"
+            value-format="yyyy-MM"
+            type="month"
+            placeholder="选择有效期结束时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 18, md: 12 } : { span: 6 }">
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+            size="small"
+          >
+            查询
+          </el-button>
+          <el-button
+            @click="reset"
+            icon="el-icon-refresh-left"
+            size="small"
+            type="primary"
+            >重置</el-button
+          >
+        </div>
+      </el-col>
+    </el-row>
+    <el-row type="flex">
+      <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
+        <div class="ele-status">
+          <el-checkbox v-model="consumption">显示已消耗</el-checkbox>
+          <span class="op"
+            >在线:<span>{{ networkCounts.online }}</span></span
+          >
+          <span class="op"
+            >离线:<span>{{ networkCounts.offline }}</span></span
+          >
+        </div>
+      </el-col>
+    </el-row>
+    <!-- <el-row :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="设备编码:" label-width="100px">
           <el-input clearable v-model="where.code" placeholder="请输入" />
@@ -84,11 +185,12 @@
           </div>
         </div>
       </el-col>
-    </el-row>
+    </el-row> -->
   </el-form>
 </template>
 
 <script>
+  import DeptSelect from '@/components/CommomSelect/dept-select.vue';
   export default {
     props: ['networkCounts'],
     data() {
@@ -96,10 +198,13 @@
       const defaultWhere = {
         name: '',
         code: '',
+        endTime: '',
         networkStatus: '',
-        fixAssetCode: '',
+        fixCode: '',
         runStatus: '',
-        spaceModule: ''
+        module: '',
+        space: '',
+        usePostId: ''
       };
       return {
         // 表单数据
@@ -107,6 +212,9 @@
         consumption: false
       };
     },
+    components: {
+      DeptSelect
+    },
     computed: {
       // 是否开启响应式布局
       styleResponsive() {
@@ -114,6 +222,12 @@
       }
     },
     methods: {
+      /* 清空 */
+      selectChange(value) {
+        if (!value) {
+          this.where.usePostId = '';
+        }
+      },
       /* 搜索 */
       search() {
         this.$emit('search', this.where);
@@ -127,10 +241,14 @@
   };
 </script>
 <style lang="scss" scoped>
+  .ele-form-actions {
+    text-align: right;
+  }
   .ele-status {
-    float: right;
-    padding-right: 30px;
-    padding-top: 10px;
+    display: flex;
+    align-content: center;
+    justify-content: flex-end;
+    padding: 0 10px 10px 10px;
     .op {
       margin-left: 20px;
       span {

+ 386 - 96
src/views/ledgerAssets/equipment/edit.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="ele-body baseinfo-container">
+  <div id="equipment_edit" class="ele-body baseinfo-container">
     <el-card shadow="never">
       <div class="page-title">
         <el-page-header @back="$router.go(-1)">
@@ -153,11 +153,6 @@
                 :init="false"
               /> -->
             </el-descriptions-item>
-            <el-descriptions-item>
-              <template slot="label"> 负责人 </template>
-              <!-- {{ basicInfo.packingUnit }} -->
-              {{ basicInfo.name }}
-            </el-descriptions-item>
           </el-descriptions>
 
           <div class="basic-details-title border-none">
@@ -169,6 +164,8 @@
             size="medium"
             border
             style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
           >
             <el-descriptions-item>
               <template slot="label"> 固资编码 </template>
@@ -189,29 +186,79 @@
               </el-form-item>
             </el-descriptions-item>
             <el-descriptions-item>
-              <template slot="label"> 重量 </template>
+              <template slot="label"> 级别 </template>
               <el-form-item label-width="0">
-                <el-input class="input" v-model="zcInfo.weight"></el-input>
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.level"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options.assetLevel"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
               </el-form-item>
             </el-descriptions-item>
             <el-descriptions-item>
-              <template slot="label"> 维护部门 </template>
+              <template slot="label"> 有效期开始 </template>
               <el-form-item label-width="0">
-                <div class="input">
-                  <DeptSelect v-model="zcInfo.repairGroupId" @input="getwhbm" />
-                </div>
+                <el-date-picker
+                  style="width: 100%"
+                  v-model="zcInfo.startTime"
+                  type="month"
+                  value-format="yyyy-MM"
+                  placeholder="选择有效期开始"
+                >
+                </el-date-picker>
               </el-form-item>
             </el-descriptions-item>
             <el-descriptions-item>
-              <template slot="label"> 维护人 </template>
+              <template slot="label"> 有效期结束 </template>
+              <el-form-item label-width="0">
+                <el-date-picker
+                  style="width: 100%"
+                  v-model="zcInfo.endTime"
+                  @change="endTimeRules"
+                  value-format="yyyy-MM"
+                  type="month"
+                  placeholder="选择有效期结束"
+                >
+                </el-date-picker>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 状态 </template>
+              <el-form-item label-width="0">
+                <el-input
+                  v-model="zcInfo.status"
+                  placeholder="请输入状态"
+                ></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="5"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 权属人 </template>
               <el-form-item label-width="0">
                 <el-select
                   style="width: 100%"
-                  v-model="zcInfo.repairUserId"
+                  v-model="zcInfo.ownershipUserId"
                   placeholder="请选择"
                 >
                   <el-option
-                    v-for="item in options.repairUserId"
+                    v-for="item in options.ownershipUserId"
                     :key="item.id"
                     :label="item.name"
                     :value="item.id"
@@ -221,26 +268,90 @@
               </el-form-item>
             </el-descriptions-item>
             <el-descriptions-item>
-              <template slot="label"> 供应商 </template>
+              <template slot="label"> 权属部门 </template>
               <el-form-item label-width="0">
+                <div class="input">
+                  <DeptSelect
+                    v-model="zcInfo.ownershipGroupId"
+                    @input="getqsbm"
+                  />
+                </div>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item :span="3">
+              <template slot="label"> 所属厂房 </template>
+              <el-form-item label-width="0">
+                <FactoryAreaSelect
+                  placeholder="请选择工厂"
+                  style="margin-right: 10px; width: 20%"
+                  v-model="zcInfo.factoryRoomId1"
+                  :augr="1"
+                />
+                <FactoryAreaSelect
+                  placeholder="请选择厂房"
+                  style="margin-right: 10px; width: 20%"
+                  v-model="zcInfo.factoryRoomId2"
+                  :augr="2"
+                  @returnItem="returnItem1"
+                />
+                <!-- <FactoryAreaSelect
+                  placeholder="请选择车间"
+                  style="margin-right: 10px; width: 20%"
+                  v-model="zcInfo.factoryRoomId3"
+                  :augr="3"
+                /> -->
                 <el-select
-                  v-model="zcInfo.supplierId"
-                  style="width: 100%"
+                  style="width: 19%; margin-right: 10px"
+                  v-model="zcInfo.factoryRoomId3"
                   placeholder="请选择"
+                  @change="getCxList"
                 >
                   <el-option
-                    v-for="item in suppList"
+                    v-for="item in zjList"
                     :key="item.id"
                     :label="item.name"
                     :value="item.id"
                   >
                   </el-option>
                 </el-select>
+                <!-- <FactoryAreaSelect
+                  style="margin-right: 10px; width: 20%"
+                  placeholder="请选择产线"
+                  v-model="zcInfo.factoryRoomId4"
+                  :augr="4"
+                /> -->
+                <el-select
+                  style="width: 19%; margin-right: 10px"
+                  v-model="zcInfo.factoryRoomId4"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in cxList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+                <FactoryAreaSelect
+                  style="margin-right: 10px; width: 15%"
+                  placeholder="请输入工位"
+                  v-model="zcInfo.factoryRoomId5"
+                  @returnItem="returnItem"
+                />
               </el-form-item>
             </el-descriptions-item>
             <el-descriptions-item>
-              <template slot="label"> 设备位置 </template>
+              <template slot="label"> 所属工序 </template>
               <el-form-item label-width="0">
+                <WorkingProcedureSelect
+                  v-model="zcInfo.roteId"
+                ></WorkingProcedureSelect>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 设备位置 </template>
+              <el-form-item label-width="0" prop="location">
                 <div style="display: flex">
                   <!-- <div
                     class="location-warp"
@@ -337,49 +448,101 @@
                 </div>
               </el-form-item>
             </el-descriptions-item>
-
             <el-descriptions-item>
-              <template slot="label"> 设备用途 </template>
+              <template slot="label"> 入账日期 </template>
               <el-form-item label-width="0">
-                <el-input v-model="zcInfo.purpose" class="input"></el-input>
+                <el-date-picker
+                  style="width: 100%"
+                  v-model="zcInfo.entryDate"
+                  type="date"
+                  placeholder="选择入账日期"
+                  value-format="yyyy-MM-dd"
+                >
+                </el-date-picker>
               </el-form-item>
             </el-descriptions-item>
-            <!-- <el-descriptions-item>
-              <template slot="label"> 所属工序 </template>
+
+            <el-descriptions-item>
+              <template slot="label"> 周期 </template>
               <el-form-item label-width="0">
-                <WorkingProcedureSelect
-                  v-model="zcInfo.roteId"
-                ></WorkingProcedureSelect>
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.cycle"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options.deliveryCycle"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
               </el-form-item>
-            </el-descriptions-item> -->
-
+            </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="5"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
+          >
             <el-descriptions-item>
-              <template slot="label"> 品牌 </template>
+              <template slot="label"> 维护人 </template>
               <el-form-item label-width="0">
-                <el-input v-model="zcInfo.brand" class="input"></el-input>
+                <el-select
+                  style="width: 100%"
+                  v-model="zcInfo.repairUserId"
+                  placeholder="请选择"
+                >
+                  <el-option
+                    v-for="item in options.repairUserId"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
               </el-form-item>
             </el-descriptions-item>
             <el-descriptions-item>
-              <template slot="label"> 权属部门 </template>
+              <template slot="label"> 维护部门 </template>
               <el-form-item label-width="0">
                 <div class="input">
-                  <DeptSelect
-                    v-model="zcInfo.ownershipGroupId"
-                    @input="getqsbm"
-                  />
+                  <DeptSelect v-model="zcInfo.repairGroupId" @input="getwhbm" />
                 </div>
               </el-form-item>
             </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="5"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+            class="descriptions"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 使用岗位 </template>
+              <el-form-item label-width="0">
+                <DeptSelect v-model="zcInfo.postId" @input="auditorDeptClick" />
+              </el-form-item>
+            </el-descriptions-item>
             <el-descriptions-item>
-              <template slot="label"> 权属人 </template>
+              <template slot="label"> 使用人 </template>
               <el-form-item label-width="0">
                 <el-select
                   style="width: 100%"
-                  v-model="zcInfo.ownershipUserId"
-                  placeholder="请选择"
+                  v-model="zcInfo.usePersonId"
+                  filterable
+                  placeholder="请选择使用人"
                 >
                   <el-option
-                    v-for="item in options.ownershipUserId"
+                    v-for="item in userList"
                     :key="item.id"
                     :label="item.name"
                     :value="item.id"
@@ -389,80 +552,77 @@
               </el-form-item>
             </el-descriptions-item>
 
-            <el-descriptions-item :span="3">
-              <template slot="label"> 所属厂房 </template>
+            <el-descriptions-item>
+              <template slot="label"> 负责人 </template>
               <el-form-item label-width="0">
-                <FactoryAreaSelect
-                  placeholder="请选择工厂"
-                  style="margin-right: 10px; width: 20%"
-                  v-model="zcInfo.factoryRoomId1"
-                  :augr="1"
-                />
-                <FactoryAreaSelect
-                  placeholder="请选择厂房"
-                  style="margin-right: 10px; width: 20%"
-                  v-model="zcInfo.factoryRoomId2"
-                  :augr="2"
-                  @returnItem="returnItem1"
-                />
-                <!-- <FactoryAreaSelect
-                  placeholder="请选择车间"
-                  style="margin-right: 10px; width: 20%"
-                  v-model="zcInfo.factoryRoomId3"
-                  :augr="3"
-                /> -->
                 <el-select
-                  style="width: 19%; margin-right: 10px"
-                  v-model="zcInfo.factoryRoomId3"
-                  placeholder="请选择"
-                  @change="getCxList"
+                  style="width: 100%"
+                  v-model="zcInfo.chargePersonId"
+                  filterable
+                  placeholder="请选择负责人"
                 >
                   <el-option
-                    v-for="item in zjList"
+                    v-for="item in userList"
                     :key="item.id"
                     :label="item.name"
                     :value="item.id"
                   >
                   </el-option>
                 </el-select>
-                <!-- <FactoryAreaSelect
-                  style="margin-right: 10px; width: 20%"
-                  placeholder="请选择产线"
-                  v-model="zcInfo.factoryRoomId4"
-                  :augr="4"
-                /> -->
+              </el-form-item>
+            </el-descriptions-item>
+          </el-descriptions>
+          <el-descriptions
+            title=""
+            :column="3"
+            size="medium"
+            border
+            style="edit"
+            :label-style="labelStyle"
+          >
+            <el-descriptions-item>
+              <template slot="label"> 供应商 </template>
+              <el-form-item label-width="0">
                 <el-select
-                  style="width: 19%; margin-right: 10px"
-                  v-model="zcInfo.factoryRoomId4"
+                  v-model="zcInfo.supplierId"
+                  style="width: 100%"
                   placeholder="请选择"
                 >
                   <el-option
-                    v-for="item in cxList"
+                    v-for="item in suppList"
                     :key="item.id"
                     :label="item.name"
                     :value="item.id"
                   >
                   </el-option>
                 </el-select>
-                <FactoryAreaSelect
-                  style="margin-right: 10px; width: 15%"
-                  placeholder="请输入工位"
-                  v-model="zcInfo.factoryRoomId5"
-                  @returnItem="returnItem"
-                />
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 品牌 </template>
+              <el-form-item label-width="0">
+                <el-input v-model="zcInfo.brand" class="input"></el-input>
+              </el-form-item>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label"> 设备用途 </template>
+              <el-form-item label-width="0">
+                <el-input v-model="zcInfo.purpose" class="input"></el-input>
               </el-form-item>
             </el-descriptions-item>
 
             <el-descriptions-item>
-              <template slot="label"> 所属工序 </template>
+              <template slot="label"> 备注 </template>
               <el-form-item label-width="0">
-                <WorkingProcedureSelect
-                  v-model="zcInfo.roteId"
-                ></WorkingProcedureSelect>
+                <el-input
+                  type="textarea"
+                  :rows="2"
+                  placeholder="请输入内容"
+                  v-model="zcInfo.remark"
+                ></el-input>
               </el-form-item>
             </el-descriptions-item>
           </el-descriptions>
-
           <div class="basic-details-title border-none">
             <span class="border-span">仓储配置</span>
           </div>
@@ -747,6 +907,7 @@
 </template>
 
 <script>
+  import selectTree from '@/components/selectTree';
   import DeptSelect from '@/components/CommomSelect/dept-select.vue';
   import FactoryLineSelect from '@/components/CommomSelect/factory-line-select.vue';
   import WorkshopSelect from '@/components/CommomSelect/workshop-select.vue';
@@ -789,11 +950,13 @@
   import { getUserPage } from '@/api/system/organization';
   import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
   import { listWorkshopByParentId, listFactoryLine } from '@/api/factoryModel';
+  import { getByCode } from '@/api/system/dictionary-data';
   export default {
     components: {
       linkMsg,
       //selectUpload,
       //UploadImg,
+      selectTree,
       FactoryLineSelect,
       WithView,
       WorkshopSelect,
@@ -807,7 +970,26 @@
       personSelect
     },
     data() {
+      // 设备地址校验规则
+      // var addressValidation = (rule, array, callback) => {
+      //   if (array?.length > 0) {
+      //     var filterArray = array.filter((item) => item && item.trim());
+      //     console.log(filterArray);
+      //     if (filterArray.length > 0) {
+      //       callback();
+      //     } else {
+      //       callback(new Error('地址不能为空'));
+      //     }
+      //   } else {
+      //     callback(new Error('地址不能为空'));
+      //   }
+      // };
       return {
+        treeList: [], // 使用岗位树
+        userList: [], // 人员列表
+        labelStyle: {
+          'min-width': '100px'
+        },
         isLink: true,
         categoryObj: {},
         dictType: {
@@ -843,9 +1025,7 @@
           name: [
             { required: true, message: '请输入设备名称', trigger: 'blur' }
           ],
-          location: [
-            { required: true, message: '请输入设备位置', trigger: 'change' }
-          ],
+          // location: [{ validator: addressValidation, trigger: 'change' }],
           code: [{ required: true, message: '请输入设备编码', trigger: 'blur' }]
         },
         // 基本信息
@@ -888,7 +1068,27 @@
           // 厂房
           factoryRoomId: '',
           roteCode: '',
-          codeNumber: ''
+          codeNumber: '',
+          // 使用人
+          usePersonId: '',
+          // 有效期开始
+          startTime: '',
+          // 有效结束
+          endTime: '',
+          // 级别
+          level: '',
+          // 状态
+          status: '',
+          // 负责人
+          chargePersonId: '',
+          // 入账日期
+          entryDate: '',
+          // 周期
+          cycle: '',
+          // 备注
+          remark: '',
+          // 使用岗位
+          postId: ''
         },
         positionInfo: {
           // 详细地址
@@ -952,7 +1152,9 @@
           ownershipUserId: [],
           supplierId: [],
           brand: [],
-          cityDataLabel
+          cityDataLabel,
+          assetLevel: [], // 资产级别
+          deliveryCycle: [] // 送检周期
         },
         depList: [],
         warehouseList: [],
@@ -979,6 +1181,12 @@
       }
     },
     async created() {
+      // 获取资产级别下拉框
+      await this.getAssetLevelOptions();
+      // 获取部门岗位树
+      await this.getUsePostsTree();
+      //
+      await this.getDeliveryCycleOptions();
       if (this.$route.query.id) {
         this.pageType = 'edit';
         this.id = this.$route.query.id;
@@ -989,6 +1197,79 @@
       }
     },
     methods: {
+      // 限制结束时间
+      endTimeRules() {
+        if (this.zcInfo.startTime) {
+          console.log(this.zcInfo.startTime);
+          console.log(new Date(this.zcInfo.startTime).getTime());
+          let differenceTime =
+            new Date(this.zcInfo.endTime).getTime() -
+            new Date(this.zcInfo.startTime).getTime();
+          if (differenceTime <= 0) {
+            this.$message.error('请选择正确的有效结束时间');
+            this.zcInfo.endTime = '';
+          }
+        } else {
+          this.$message.error('请选择有效开始时间');
+          this.zcInfo.endTime = '';
+        }
+      },
+      // 获取资产级别下拉
+      async getAssetLevelOptions() {
+        let { data } = await getByCode('asset_level');
+        this.options.assetLevel =
+          data.length > 0
+            ? data.map((item) => {
+                return {
+                  name: Object.keys(item)[0],
+                  id: item[Object.keys(item)[0]]
+                };
+              })
+            : [];
+      },
+      // 获取送检周期下拉
+      async getDeliveryCycleOptions() {
+        let { data } = await getByCode('delivery_cycle');
+        console.log(data);
+        this.options.deliveryCycle =
+          data.length > 0
+            ? data.map((item) => {
+                return {
+                  name: item[Object.keys(item)[0]],
+                  id: +Object.keys(item)[0]
+                };
+              })
+            : [];
+      },
+      // 使用岗位点击事件
+      async auditorDeptClick(data) {
+        console.log(data);
+        if (data) {
+          this.getStaffList(data);
+        } else {
+          this.zcInfo.chargePersonId = '';
+          this.zcInfo.usePersonId = '';
+          this.userList = [];
+        }
+      },
+      // 获取使用岗位列表树
+      async getUsePostsTree() {
+        const res = await warehouseDefinition.tree();
+        this.treeList = this.$util.toTreeData({
+          data: res,
+          idField: 'id',
+          parentIdField: 'parentId'
+        });
+      },
+      // 通过部门岗位获取人员列表
+      async getStaffList(id) {
+        let res = await warehouseDefinition.getUserPage({
+          groupId: id,
+          size: 9999,
+          page: 1
+        });
+        this.userList = res.list;
+      },
       async getCxList(e) {
         this.zcInfo.factoryRoomId4 = '';
         this.zcInfo.factoryRoomId5 = '';
@@ -1225,6 +1506,8 @@
         //   return this.$message.error('请选择工位');
         // }
         this.$refs.form.validate((valid) => {
+          console.log('valid---------', valid);
+          console.log(this.form);
           if (valid) {
             console.log('ppp', this.positionInfo);
             let par = {
@@ -1291,7 +1574,11 @@
             );
             par.factoryRoomName = nonEmptyFactoryRoomNames.join(',');
             //==
-            par.deviceLocationName = par.location.toString();
+
+            console.log(par);
+            par.deviceLocationName = par.location
+              ? par.location.toString()
+              : '';
             // par.sss = par.position.detailPosition;
             //==
             //============================
@@ -1349,6 +1636,7 @@
       // 获取设备详情
       async getInfo() {
         const data = await getAssetInfo(this.id);
+        this.auditorDeptClick(data.postId);
         for (const key of Object.keys(this.zcInfo)) {
           this.zcInfo[key] = data[key];
         }
@@ -1381,9 +1669,8 @@
           }
         }
 
-        if (data.positionList?.length) {
-          this.positionInfo.detailPosition =
-            data.positionList[0].detailPosition;
+        if (data.detailPosition) {
+          this.positionInfo.detailPosition = data.detailPosition;
 
           const pathIds = data.positionList[0].pathIds.split(',');
           const pathName = data.positionList[0].pathName.split(',');
@@ -1498,6 +1785,9 @@
 </script>
 
 <style lang="scss" scoped>
+  ::v-deep .descriptions {
+    margin-bottom: 10px;
+  }
   ::v-deep .el-descriptions__table tbody:nth-child(4) {
     .el-descriptions-row {
       .el-descriptions-item__cell:last-child {

+ 1 - 0
src/views/ledgerAssets/equipment/index.vue

@@ -53,6 +53,7 @@
     computed: {},
     methods: {
       handleNodeClick(info) {
+        console.log(info);
         this.current = info;
         this.$nextTick(() => {
           this.$refs.listRef.sucesstion(false);

+ 1 - 1
src/views/ledgerAssets/meter/components/data-list.vue

@@ -7,7 +7,7 @@
       ref="table"
       :columns="columns"
       :datasource="datasource"
-      height="calc(100vh - 265px)"
+      height="calc(100vh - 410px)"
       full-height="calc(100vh - 116px)"
       tool-class="ele-toolbar-form"
       cache-key="systemOrgUserTable"

+ 108 - 28
src/views/ledgerAssets/meter/components/user-search.vue

@@ -6,17 +6,97 @@
     @keyup.enter.native="search"
     @submit.native.prevent
   >
-    <el-row :gutter="15">
+    <el-row type="flex" :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="编码:" label-width="50px">
+        <el-form-item label="设备编码:" label-width="100px">
           <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
-        <el-form-item label="型号:" label-width="50px">
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="固资编码:" label-width="100px">
+          <el-input clearable v-model="where.module" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="设备名称:" label-width="100px">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="使用岗位:" label-width="100px">
+          <ele-tree-select
+            clearable
+            :data="treeData"
+            v-model="where.ownershipGroupId"
+            placeholder="请选择"
+            default-expand-all
+            labelKey="name"
+            valueKey="id"
+          />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row type="flex" :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="型号:" label-width="100px">
+          <el-input clearable v-model="where.fixCode" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="规格:" label-width="100px">
           <el-input clearable v-model="where.module" placeholder="请输入" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="名称:" label-width="50px">
+        <el-form-item label="网络状态:" label-width="100px">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="生命周期:" label-width="100px">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+    </el-row>
+    <el-row type="flex" :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="有效期结束" label-width="100px">
+          <el-input clearable v-model="where.fixCode" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 18, md: 12 } : { span: 6 }">
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+            size="small"
+          >
+            查询
+          </el-button>
+          <el-button
+            @click="reset"
+            icon="el-icon-refresh-left"
+            size="small"
+            type="primary"
+            >重置</el-button
+          >
+        </div>
+      </el-col>
+    </el-row>
+
+    <!-- <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="编码:" label-width="100px">
+          <el-input clearable v-model="where.code" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="型号:" label-width="100px">
+          <el-input clearable v-model="where.module" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="名称:" label-width="100px">
           <el-input clearable v-model="where.name" placeholder="请输入" />
         </el-form-item>
         <el-form-item label="所在部门:">
@@ -53,44 +133,42 @@
         </div>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-         <el-form-item label="牌号:" label-width="50px">
+         <el-form-item label="牌号:" label-width="100px">
            <el-input clearable v-model="where.brandNum" placeholder="请输入" />
          </el-form-item>
       </el-col>
-    </el-row>
+    </el-row> -->
   </el-form>
 </template>
 
 <script>
   import { login } from '@/api/login';
-  import {
-    listOrganizations
-  } from '@/api/system/organization';
+  import { listOrganizations } from '@/api/system/organization';
   export default {
     props: {
-      isConsumer: Boolean,
+      isConsumer: Boolean
     },
     data() {
       // 默认表单数据
       const defaultWhere = {
         name: '',
         code: '',
-        fixCode:'',
-        module:'',
-        brandNum:'',
-        ownershipGroupId:''
+        fixCode: '',
+        module: '',
+        brandNum: '',
+        ownershipGroupId: ''
       };
       return {
         // 表单数据
         where: { ...defaultWhere },
-        treeData:[]
+        treeData: []
       };
     },
-    watch:{
-       isConsumer() {
-         this.where.isConsumer = this.isConsumer
-         this.search()
-       }
+    watch: {
+      isConsumer() {
+        this.where.isConsumer = this.isConsumer;
+        this.search();
+      }
     },
     computed: {
       // 是否开启响应式布局
@@ -98,8 +176,8 @@
         return this.$store.state.theme.styleResponsive;
       }
     },
-    created(){
-       this.query()
+    created() {
+      this.query();
     },
     methods: {
       /* 搜索 */
@@ -108,7 +186,7 @@
       },
       /*  重置 */
       reset() {
-        this.where = { ...this.defaultWhere  , isConsumer:this.isConsumer };
+        this.where = { ...this.defaultWhere, isConsumer: this.isConsumer };
         this.search();
       },
 
@@ -121,11 +199,13 @@
               parentIdField: 'parentId'
             });
           })
-          .catch((e) => {
-          });
-      },
-
-
+          .catch((e) => {});
+      }
     }
   };
 </script>
+<style scoped>
+  .ele-form-actions {
+    text-align: right;
+  }
+</style>

+ 19 - 2
src/views/ledgerAssets/mould/components/mould-list.vue

@@ -7,8 +7,8 @@
       ref="table"
       :columns="columns"
       :datasource="datasource"
-      height="calc(100vh - 265px)"
-      full-height="calc(100vh - 116px)"
+      height="calc(100vh - 360px)"
+      full-height="calc(100vh - 115px)"
       tool-class="ele-toolbar-form"
       cache-key="systemOrgUserTable"
     >
@@ -18,12 +18,23 @@
         <el-button
           size="small"
           type="primary"
+          icon="el-icon-plus"
+          class="ele-btn-icon"
+          @click="add"
+        >
+          新建
+        </el-button>
+        <el-button
+          size="small"
           icon="el-icon-download"
           class="ele-btn-icon"
           @click="btnExport"
         >
           导出
         </el-button>
+        <el-button size="small" icon="el-icon-set-up" class="ele-btn-icon">
+          打印条码
+        </el-button>
       </template>
 
       <!-- 编码列 -->
@@ -186,6 +197,12 @@
       this.requestDict('生命周期');
     },
     methods: {
+      // 跳转到详情页
+      add() {
+        this.$router.push({
+          path: '/ledgerAssets/mould/edit'
+        });
+      },
       /* 表格数据源 */
       datasource({ page, limit, where, order }) {
         return getAssetList({

+ 71 - 20
src/views/ledgerAssets/mould/components/mould-search.vue

@@ -6,35 +6,46 @@
     @keyup.enter.native="search"
     @submit.native.prevent
   >
-    <el-row :gutter="15">
+    <el-row type="flex" :gutter="15">
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="编码:" label-width="50px">
-          <el-input clearable v-model="where.code" placeholder="请输入" />
+        <el-form-item label="模具编号:" label-width="100px">
+          <el-input clearable v-model="where.codeNumber" placeholder="请输入" />
         </el-form-item>
-        <el-form-item label="型号:" label-width="50px">
-          <el-input clearable v-model="where.module" placeholder="请输入" />
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="模具编码:" label-width="100px">
+          <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="名称:" label-width="50px">
+        <el-form-item label="模具名称:" label-width="100px">
           <el-input clearable v-model="where.name" placeholder="请输入" />
         </el-form-item>
-        <el-form-item label="所在部门:">
-          <ele-tree-select
-            clearable
-            :data="treeData"
-            v-model="where.ownershipGroupId"
-            placeholder="请选择"
-            default-expand-all
-            labelKey="name"
-            valueKey="id"
-          />
-        </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
-        <el-form-item label="固编码:" label-width="100px">
+        <el-form-item label="固资编码:" label-width="100px">
           <el-input clearable v-model="where.fixCode" placeholder="请输入" />
         </el-form-item>
+      </el-col>
+    </el-row>
+
+    <el-row type="flex" :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="牌号:" label-width="100px">
+          <el-input clearable v-model="where.brandNum" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="型号:" label-width="100px">
+          <el-input clearable v-model="where.module" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="所在部门:" label-width="100px">
+          <DeptSelect v-model="where.usePostId" @input="selectChange" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <div class="ele-form-actions">
           <el-button
             type="primary"
@@ -54,17 +65,42 @@
           >
         </div>
       </el-col>
+    </el-row>
+
+    <!-- <el-row :gutter="15">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="编码:" label-width="50px">
+          <el-input clearable v-model="where.code" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="型号:" label-width="50px">
+          <el-input clearable v-model="where.module" placeholder="请输入" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="名称:" label-width="50px">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="所在部门:">
+          <DeptSelect v-model="where.usePostId" @input="selectChange" />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+        <el-form-item label="固定资产编码:" label-width="100px">
+          <el-input clearable v-model="where.fixCode" placeholder="请输入" />
+        </el-form-item>
+        
+      </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="牌号:" label-width="50px">
           <el-input clearable v-model="where.brand" placeholder="请输入" />
         </el-form-item>
       </el-col>
-    </el-row>
+    </el-row> -->
   </el-form>
 </template>
 
 <script>
-  import { login } from '@/api/login';
+  import DeptSelect from '@/components/CommomSelect/dept-select.vue';
   import { listOrganizations } from '@/api/system/organization';
   export default {
     props: {
@@ -86,6 +122,9 @@
         treeData: []
       };
     },
+    components: {
+      DeptSelect
+    },
     watch: {
       isConsumer() {
         this.where.isConsumer = this.isConsumer;
@@ -102,6 +141,12 @@
       this.query();
     },
     methods: {
+      /* 清空 */
+      selectChange(value) {
+        if (!value) {
+          this.where.usePostId = '';
+        }
+      },
       /* 搜索 */
       search() {
         const obj = {
@@ -130,3 +175,9 @@
     }
   };
 </script>
+
+<style lang="scss" scoped>
+  .ele-form-actions {
+    text-align: right;
+  }
+</style>

+ 1 - 1
src/views/ledgerAssets/mould/edit.vue

@@ -9,7 +9,7 @@
             </div>
           </el-page-header>
           <div>
-            <el-button size="small" @click="$router.go(-1)">取消</el-button>
+            <!-- <el-button size="small" @click="$router.go(-1)">取消</el-button> -->
             <el-button
               size="small"
               type="primary"

+ 1 - 1
vue.config.js

@@ -35,7 +35,7 @@ module.exports = {
         // target: 'http://124.71.68.31:50001',
         // target: 'http://192.168.1.139:18086', // 粟
         // target: 'http://192.168.1.132:18086', // 徐
-        target: 'http://192.168.1.108:18086', //本
+        target: 'http://192.168.1.176:18086', //本
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域
         pathRewrite: {
           '^/api': ''